$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: oryol_at_[hidden]
Date: 2008-04-10 02:10:48
Author: jeremypack
Date: 2008-04-10 02:10:47 EDT (Thu, 10 Apr 2008)
New Revision: 44144
URL: http://svn.boost.org/trac/boost/changeset/44144
Log:
Further simplifications to reflector.hpp.
Remove redundant functions.
Text files modified: 
   sandbox/boost/reflection/impl/reflector_free_functions.hpp      |     2 +-                                      
   sandbox/boost/reflection/impl/reflector_functions.hpp           |    36 +++++++++++++++++++-----------------    
   sandbox/boost/reflection/impl/reflector_parameter_functions.hpp |    19 +++++++++++++------                     
   sandbox/boost/reflection/reflector.hpp                          |    15 ++++++++-------                         
   sandbox/libs/extension/examples/Jamfile.v2                      |     2 +-                                      
   5 files changed, 42 insertions(+), 32 deletions(-)
Modified: sandbox/boost/reflection/impl/reflector_free_functions.hpp
==============================================================================
--- sandbox/boost/reflection/impl/reflector_free_functions.hpp	(original)
+++ sandbox/boost/reflection/impl/reflector_free_functions.hpp	2008-04-10 02:10:47 EDT (Thu, 10 Apr 2008)
@@ -17,7 +17,7 @@
 // This is a generic factory function to construct an instance of
 // a given class using a constructor with the given signature.
 template <class T BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, class Param)>
-instance construct_instance(BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p)) {
+static instance construct_instance(BOOST_PP_ENUM_BINARY_PARAMS(N, Param, p)) {
   // An instance is similar to boost::any. Initialize it with
   // a void ptr.
   return instance(static_cast<void*>(
Modified: sandbox/boost/reflection/impl/reflector_functions.hpp
==============================================================================
--- sandbox/boost/reflection/impl/reflector_functions.hpp	(original)
+++ sandbox/boost/reflection/impl/reflector_functions.hpp	2008-04-10 02:10:47 EDT (Thu, 10 Apr 2008)
@@ -13,13 +13,25 @@
 # define N BOOST_PP_ITERATION()
 
 
-  template <class ParamFirst BOOST_PP_COMMA_IF(N)
-  BOOST_PP_ENUM_PARAMS(N, class Param)>
+template <class ParamFirst BOOST_PP_COMMA_IF(N)
+          BOOST_PP_ENUM_PARAMS(N, class Param)>
 void reflect_constructor() {
-  add_constructor<ParamFirst BOOST_PP_COMMA_IF(N)
-  BOOST_PP_ENUM_PARAMS(N, Param)>(&impl::construct_instance<T, ParamFirst
-                                  BOOST_PP_COMMA_IF(N)
-                                  BOOST_PP_ENUM_PARAMS(N, Param)>);
+  instance (*ctor_func)(
+    ParamFirst BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, Param))
+      (&impl::construct_instance<T, ParamFirst
+                                 BOOST_PP_COMMA_IF(N)
+                                 BOOST_PP_ENUM_PARAMS(N, Param)>);
+  reflection_->constructors_.insert(std::make_pair<TypeInfo, FunctionPtr>(
+      reflections::type_info_handler
+      <TypeInfo, instance (*)(ParamFirst BOOST_PP_COMMA_IF(N)
+                              BOOST_PP_ENUM_PARAMS(N, Param))>
+        ::get_class_type(),
+      reinterpret_cast<FunctionPtr>(ctor_func)));
+
+ //  add_constructor<ParamFirst BOOST_PP_COMMA_IF(N)
+ // BOOST_PP_ENUM_PARAMS(N, Param)>(&impl::construct_instance<T, ParamFirst
+ //                                 BOOST_PP_COMMA_IF(N)
+ //                                 BOOST_PP_ENUM_PARAMS(N, Param)>);
 }
 template <class ReturnValue BOOST_PP_COMMA_IF(N)
           BOOST_PP_ENUM_PARAMS(N, class Param)>
@@ -39,16 +51,6 @@
     p2(f, p);
   reflection_->functions_.insert(p2);
 }
-template <class ParamFirst BOOST_PP_COMMA_IF(N)
-BOOST_PP_ENUM_PARAMS(N, class Param)>
-void add_constructor(instance (*func)(ParamFirst BOOST_PP_COMMA_IF(N)
-                                      BOOST_PP_ENUM_PARAMS(N, Param))) {
-  reflection_->constructors_.insert(std::make_pair<TypeInfo, FunctionPtr>(
-      reflections::type_info_handler
-      <TypeInfo, instance (*)(ParamFirst BOOST_PP_COMMA_IF(N)
-                              BOOST_PP_ENUM_PARAMS(N, Param))>
-        ::get_class_type(),
-      reinterpret_cast<FunctionPtr>(func)));
-}
+
 
 #undef N
\ No newline at end of file
Modified: sandbox/boost/reflection/impl/reflector_parameter_functions.hpp
==============================================================================
--- sandbox/boost/reflection/impl/reflector_parameter_functions.hpp	(original)
+++ sandbox/boost/reflection/impl/reflector_parameter_functions.hpp	2008-04-10 02:10:47 EDT (Thu, 10 Apr 2008)
@@ -29,12 +29,19 @@
 template <class ParamFirst BOOST_PP_COMMA_IF(N)
   BOOST_PP_ENUM_PARAMS(N, class Param)>
 void reflect_constructor(BOOST_PP_ENUM_PARAMS(N, ParameterInfo i)) {
-  add_constructor<ParamFirst BOOST_PP_COMMA_IF(N)
-  BOOST_PP_ENUM_PARAMS(N, Param)>(&impl::construct_instance<T, ParamFirst
-                                  BOOST_PP_COMMA_IF(N)
-                                  BOOST_PP_ENUM_PARAMS(N, Param)>
-                                  BOOST_PP_COMMA_IF(N)
-                                  BOOST_PP_ENUM_PARAMS(N, i));
+  instance (*ctor_func)(
+    ParamFirst BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, Param))
+      (&impl::construct_instance<T, ParamFirst
+                                 BOOST_PP_COMMA_IF(N)
+                                 BOOST_PP_ENUM_PARAMS(N, Param)>);
+
+  constructor_info f(reflections::type_info_handler
+      <TypeInfo, instance (*)(ParamFirst BOOST_PP_COMMA_IF(N)
+                              BOOST_PP_ENUM_PARAMS(N, Param))>
+        ::get_class_type());
+  BOOST_REFLECTION_PUSH_PARAMETER_INFO(f, N); 
+  reflection_->constructors_.insert(std::make_pair<TypeInfo, FunctionPtr>(
+      f, reinterpret_cast<FunctionPtr>(ctor_func)));
 }
 
 template <class ReturnValue BOOST_PP_COMMA_IF(N)
Modified: sandbox/boost/reflection/reflector.hpp
==============================================================================
--- sandbox/boost/reflection/reflector.hpp	(original)
+++ sandbox/boost/reflection/reflector.hpp	2008-04-10 02:10:47 EDT (Thu, 10 Apr 2008)
@@ -47,7 +47,10 @@
   typedef basic_function_info<Info, TypeInfo, ParameterInfo> function_info;
   typedef basic_constructor_info<TypeInfo, ParameterInfo> constructor_info;
   void reflect_constructor() {
-    add_constructor(&impl::construct_instance<T>);
+    instance (*ctor_func)()(&impl::construct_instance<T>);
+    reflection_->constructors_.insert(std::make_pair<TypeInfo, FunctionPtr>( 
+        reflections::type_info_handler<TypeInfo, instance (*)()>
+        ::get_class_type(), reinterpret_cast<FunctionPtr>(ctor_func)));
   }
 #define BOOST_PP_ITERATION_LIMITS (0, \
     BOOST_PP_INC(BOOST_REFLECTION_MAX_FUNCTOR_PARAMS) - 1)
@@ -65,11 +68,6 @@
     reflection_->functions_.insert(out_pair);
   }
 private:
-  void add_constructor(instance (*func)()) {
-    reflection_->constructors_.insert(std::make_pair<TypeInfo, FunctionPtr>( 
-      reflections::type_info_handler<TypeInfo, instance (*)()>::get_class_type(),
-      reinterpret_cast<FunctionPtr>(func)));
-  }
   basic_reflection<Info, ParameterInfo, TypeInfo> * reflection_;
 };
 
@@ -85,7 +83,10 @@
   typedef basic_function_info<Info, TypeInfo> function_info;
   typedef basic_constructor_info<Info, TypeInfo> constructor_info;
   void reflect_constructor() {
-    add_constructor(&impl::construct_instance<T>);
+    instance (*ctor_func)()(&impl::construct_instance<T>);
+    reflection_->constructors_.insert(std::make_pair<TypeInfo, FunctionPtr>( 
+        reflections::type_info_handler<TypeInfo, instance (*)()>
+        ::get_class_type(), reinterpret_cast<FunctionPtr>(ctor_func)));
   }
 #define BOOST_PP_ITERATION_LIMITS (0, \
     BOOST_PP_INC(BOOST_REFLECTION_MAX_FUNCTOR_PARAMS) - 1)
Modified: sandbox/libs/extension/examples/Jamfile.v2
==============================================================================
--- sandbox/libs/extension/examples/Jamfile.v2	(original)
+++ sandbox/libs/extension/examples/Jamfile.v2	2008-04-10 02:10:47 EDT (Thu, 10 Apr 2008)
@@ -69,7 +69,7 @@
  # RegistryExample
   ;
 
-install ../test : 
+install ../test/ : 
   HelloWorld HelloWorldLib 
   Parameters ParametersLib
   MultilanguageWord MultilanguageHelloWorld