
Hello, I would like to announce that a new version of 'mirror' library is available in the sandbox, at http://svn.boost.org/svn/boost/sandbox/mirror/ with several new features, including: - full_name() getter (returns the type or namespace name with nested name specifier), which works even for types like pointers etc. - meta-type for std::pair<> (a meta-class allowing to inspect the attributes will be comming soon) // this means that you can now define a type T like this: using namespace ::std; using namespace ::boost; using namespace ::boost::mirror; // typedef pair<const int*, double [321]> T1; typedef pair<float, const long&> T2; typedef pair<T1 const volatile, T2 volatile const> T3; typedef pair<T2, T1 volatile> T4; typedef pair<T3 const * volatile, const T4&> T; // get the meta data typedef BOOST_MIRROR_REFLECT_TYPE(T) meta_T; // and query the base name (without nested type specifiers) cout << meta_T::base_name(); /** printing out (newlines added): * pair< pair< pair< int const *, double [321] > const volatile, pair< float, long const & > const volatile > const * volatile, pair< pair< float, long const & >, pair< int const *, double [321] > volatile > const & > */ // or the full name cout << meta_T::full_name(); /** printing out (newlines added): * ::std::pair< ::std::pair< ::std::pair< int const *, double [321] > const volatile, ::std::pair< float, long const & > const volatile > const * volatile, ::std::pair< ::std::pair< float, long const & >, ::std::pair < int const *, double [321] > volatile > const & > */ Please see http://svn.boost.org/svn/boost/sandbox/mirror/libs/examples/special/std_pair... for a complete example. Since it has been tested only with MSVC++ 2008 there may be some problems compiling the samples with other compilers (mainly missing typename keywords here and there). Next week I'm going to fix this. There are still no jamfiles nor makefiles so you'll have to write some yourselves if you want to try the examples. Sorry, I hope this'll be fixed soon, too. Some of the other examples have been updated to show the using of the full_name() function. See http://svn.boost.org/svn/boost/sandbox/mirror/libs/examples/registering/ For those interested, there is also an example, showing how to use mirror with Boost.Serialization at: http://svn.boost.org/svn/boost/sandbox/mirror/libs/examples/serialization/cu... It is rather clumsy and currently it can't be compiled with gcc (I couldn't find the reason why yet). Note that it's just a first shot and most of the code ensuring the cooperation with Boost.Serialization will be rewritten and hidden in a header file in the future. Best, -- matus
participants (1)
-
Matus Chochlik