Boost logo

Boost Users :

From: Jeremy Pack (rostovpack_at_[hidden])
Date: 2008-04-22 15:13:40


David and Niels,

Thanks!
I've incorporated those fixes, as well as a few readability improvements.

Please let me know if you have any other problems (or even feature
requests).

Jeremy

On Tue, Apr 22, 2008 at 12:22 AM, David Matz <david.matz_at_[hidden]>
wrote:

> Thank you guys,
>
> the patch from Niels solved the problem! A good hint.
>
> I run in another problem when multiple files inside a project include the
> extension headers. The operators in typeinfo.hpp are compiled into different
> object files which produces errors at link time. To solve that I declared
> these functions as inline see patch below.
>
> Index: typeinfo.hpp
>
> ===================================================================
> --- typeinfo.hpp 2008-04-14 15:18:38.000000000 +0200
> +++ typeinfo_mod.hpp 2008-04-14 16:04:28.000000000 +0200
> @@ -42,17 +42,17 @@
> #if defined(__APPLE__) || defined(__GNUC__) ||
> defined(BOOST_EXTENSION_FORCE_FAST_TYPEINFO)
> namespace boost {
> namespace extensions {
> -bool operator<(const default_type_info& first,
> +inline bool operator<(const default_type_info& first,
> const default_type_info& second) {
> return &first.type < &second.type;
> }
>
> -bool operator==(const default_type_info& first,
> +inline bool operator==(const default_type_info& first,
> const default_type_info& second) {
> return &first.type == &second.type;
> }
>
> -bool operator>(const default_type_info& first,
> +inline bool operator>(const default_type_info& first,
> const default_type_info& second) {
> return &first.type > &second.type;
> }
> @@ -61,17 +61,17 @@
> #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
> #include <string>
> namespace boost { namespace extensions {
> -bool operator<(const default_type_info& first,
> +inline bool operator<(const default_type_info& first,
> const default_type_info& second) {
> return std::strcmp(first.type.raw_name(), second.type.raw_name()) < 0;
> }
>
> -bool operator==(const default_type_info& first,
> +inline bool operator==(const default_type_info& first,
> const default_type_info& second) {
> return std::strcmp(first.type.raw_name(), second.type.raw_name()) == 0;
> }
>
> -bool operator>(const default_type_info& first,
> +inline bool operator>(const default_type_info& first,
> const default_type_info& second) {
> return std::strcmp(first.type.raw_name(), second.type.raw_name()) > 0;
> }
> @@ -80,17 +80,17 @@
> #else // OTHER OS
> #include <string>
> namespace boost { namespace extensions {
> -bool operator<(const default_type_info& first,
> +inline bool operator<(const default_type_info& first,
> const default_type_info& second) {
> return std::strcmp(first.type.name(), second.type.name()) < 0;
> }
>
> -bool operator==(const default_type_info& first,
> +inline bool operator==(const default_type_info& first,
> const default_type_info& second) {
> return std::strcmp(first.type.name(), second.type.name()) == 0;
> }
>
> -bool operator>(const default_type_info& first,
> +inline bool operator>(const default_type_info& first,
> const default_type_info& second) {
> return std::strcmp(first.type.name(), second.type.name()) > 0;
>
> }
>
>
> Jeremy Pack wrote:
>
> > Thanks! That looks like it ought to fix it.
> >
> > I updated the Sandbox with the proposed fix, and was able to
> > successfully
> > build and run the tests and examples on MSVC 9 and GCC 4. Please let me
> > know
> > if that fixes the issue for MSVC 7.1.
> >
> > Jeremy
> >
> > On Sat, Apr 19, 2008 at 9:20 AM, Niels Dekker - mail address until
> > 2008-12-31 <nd_mail_address_valid_until_2008-12-31_at_[hidden]> wrote:
> >
> > David Matz wrote:
> > >
> > > > error: error C2039: 'boost::get': Ist kein Element von
> > > > 'boost::extensions::shared_library'
> > > >
> > > Jeremy Pack wrote:
> > >
> > > > Please add the command line option /P to your build - this will
> > > > output
> > > > the preprocessed version of your file
> > > > test_extension_and_optional.cpp.
> > > > Then send this to me - I might be able to figure out what is going
> > > > on.
> > > > It looks like one of the preprocessor macros used by
> > > > Boost.PreProcessor isn't working
> > > >
> > > It seems to me that the compile error isn't caused by
> > > Boost.PreProcessor.
> > > Actually I think I've found a workaround: Explicitly qualify the
> > > shared_library::get member function call in extension/convenience.hpp
> > > (line 29),
> > > (by adding the class name, "shared_library::") and the MSVC 7.1 error
> > > message
> > > disappears!
> > >
> > >
> > > HTH, Niels
> > >
> > > PS Here's the patch:
> > >
> > > Index: convenience.hpp
> > >
> > > ===================================================================
> > >
> > > --- convenience.hpp (revision 44584)
> > >
> > > +++ convenience.hpp (working copy)
> > >
> > > @@ -26,7 +26,7 @@
> > >
> > > return;
> > > }
> > > void (*func)(factory_map &) =
> > > - lib.get<void, factory_map &>(external_function_name);
> > > + lib.shared_library::get<void, factory_map
> > > &>(external_function_name);
> > > if (!func) {
> > > return;
> > >
> > >
> >
>
> --
> David Matz
> ----------------------------
> Spatial View GmbH
>
> mail: david.matz_at_[hidden]
> site: www.spatialview.com
>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net