$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r72156 - in sandbox/property: boost/property libs/property/test
From: eldiener_at_[hidden]
Date: 2011-05-25 10:49:39
Author: eldiener
Date: 2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
New Revision: 72156
URL: http://svn.boost.org/trac/boost/changeset/72156
Log:
Simplified and updated tests.
Added:
   sandbox/property/libs/property/test/test_auto_value.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_callable_value.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_data_predicate.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_data_value.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_function_value.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_functor_impl.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_functor_value.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_member_data_impl.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_member_data_predicate.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_member_data_value.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_member_function_impl.cpp   (contents, props changed)
   sandbox/property/libs/property/test/test_member_function_value.cpp   (contents, props changed)
Removed:
   sandbox/property/libs/property/test/test_auto_predicate_character.cpp
   sandbox/property/libs/property/test/test_auto_predicate_enum.cpp
   sandbox/property/libs/property/test/test_auto_predicate_floating_point.cpp
   sandbox/property/libs/property/test/test_auto_predicate_integer.cpp
   sandbox/property/libs/property/test/test_auto_value_bool.cpp
   sandbox/property/libs/property/test/test_auto_value_character.cpp
   sandbox/property/libs/property/test/test_auto_value_enum.cpp
   sandbox/property/libs/property/test/test_auto_value_floating_point.cpp
   sandbox/property/libs/property/test/test_auto_value_integer.cpp
   sandbox/property/libs/property/test/test_auto_value_pointer.cpp
   sandbox/property/libs/property/test/test_auto_value_user_defined.cpp
   sandbox/property/libs/property/test/test_callable_value_bool.cpp
   sandbox/property/libs/property/test/test_callable_value_character.cpp
   sandbox/property/libs/property/test/test_callable_value_enum.cpp
   sandbox/property/libs/property/test/test_callable_value_floating_point.cpp
   sandbox/property/libs/property/test/test_callable_value_integer.cpp
   sandbox/property/libs/property/test/test_callable_value_pointer.cpp
   sandbox/property/libs/property/test/test_callable_value_user_defined.cpp
   sandbox/property/libs/property/test/test_data_predicate_character.cpp
   sandbox/property/libs/property/test/test_data_predicate_enum.cpp
   sandbox/property/libs/property/test/test_data_predicate_floating_point.cpp
   sandbox/property/libs/property/test/test_data_predicate_integer.cpp
   sandbox/property/libs/property/test/test_data_value_bool.cpp
   sandbox/property/libs/property/test/test_data_value_character.cpp
   sandbox/property/libs/property/test/test_data_value_enum.cpp
   sandbox/property/libs/property/test/test_data_value_floating_point.cpp
   sandbox/property/libs/property/test/test_data_value_integer.cpp
   sandbox/property/libs/property/test/test_data_value_pointer.cpp
   sandbox/property/libs/property/test/test_data_value_user_defined.cpp
   sandbox/property/libs/property/test/test_function_value_bool.cpp
   sandbox/property/libs/property/test/test_function_value_character.cpp
   sandbox/property/libs/property/test/test_function_value_enum.cpp
   sandbox/property/libs/property/test/test_function_value_floating_point.cpp
   sandbox/property/libs/property/test/test_function_value_integer.cpp
   sandbox/property/libs/property/test/test_function_value_pointer.cpp
   sandbox/property/libs/property/test/test_function_value_user_defined.cpp
   sandbox/property/libs/property/test/test_functor_value_bool.cpp
   sandbox/property/libs/property/test/test_functor_value_character.cpp
   sandbox/property/libs/property/test/test_functor_value_enum.cpp
   sandbox/property/libs/property/test/test_functor_value_floating_point.cpp
   sandbox/property/libs/property/test/test_functor_value_integer.cpp
   sandbox/property/libs/property/test/test_functor_value_pointer.cpp
   sandbox/property/libs/property/test/test_functor_value_user_defined.cpp
   sandbox/property/libs/property/test/test_member_data_predicate_character.cpp
   sandbox/property/libs/property/test/test_member_data_predicate_enum.cpp
   sandbox/property/libs/property/test/test_member_data_predicate_floating_point.cpp
   sandbox/property/libs/property/test/test_member_data_predicate_integer.cpp
   sandbox/property/libs/property/test/test_member_data_value_bool.cpp
   sandbox/property/libs/property/test/test_member_data_value_character.cpp
   sandbox/property/libs/property/test/test_member_data_value_enum.cpp
   sandbox/property/libs/property/test/test_member_data_value_floating_point.cpp
   sandbox/property/libs/property/test/test_member_data_value_integer.cpp
   sandbox/property/libs/property/test/test_member_data_value_pointer.cpp
   sandbox/property/libs/property/test/test_member_data_value_user_defined.cpp
   sandbox/property/libs/property/test/test_member_function_value_bool.cpp
   sandbox/property/libs/property/test/test_member_function_value_character.cpp
   sandbox/property/libs/property/test/test_member_function_value_enum.cpp
   sandbox/property/libs/property/test/test_member_function_value_floating_point.cpp
   sandbox/property/libs/property/test/test_member_function_value_integer.cpp
   sandbox/property/libs/property/test/test_member_function_value_pointer.cpp
   sandbox/property/libs/property/test/test_member_function_value_user_defined.cpp
Text files modified: 
   sandbox/property/boost/property/property_callable_value.hpp              |    14 +++---                                  
   sandbox/property/boost/property/property_notification_boost_function.hpp |     5 ++                                      
   sandbox/property/libs/property/test/Jamfile.v2                           |    72 ++++++--------------------------------- 
   sandbox/property/libs/property/test/test_auto_value.hpp                  |     6 +-                                      
   sandbox/property/libs/property/test/test_callable_value.hpp              |     6 +-                                      
   sandbox/property/libs/property/test/test_data_impl.cpp                   |    36 +++++++------------                     
   sandbox/property/libs/property/test/test_data_impl.hpp                   |    12 +-----                                  
   sandbox/property/libs/property/test/test_data_predicate.hpp              |     9 ++--                                    
   sandbox/property/libs/property/test/test_data_value.hpp                  |    19 +++++-----                              
   sandbox/property/libs/property/test/test_function_impl.cpp               |    14 +++----                                 
   sandbox/property/libs/property/test/test_function_impl.hpp               |    12 +++---                                  
   sandbox/property/libs/property/test/test_function_value.hpp              |     8 ++--                                    
   sandbox/property/libs/property/test/test_functor_impl.hpp                |    56 +++++++++++++++++++++++++++++++         
   sandbox/property/libs/property/test/test_functor_value.hpp               |    36 +++++++++++++++++--                     
   sandbox/property/libs/property/test/test_member_data_impl.hpp            |     6 +-                                      
   sandbox/property/libs/property/test/test_member_data_predicate.hpp       |    15 ++++++++                                
   sandbox/property/libs/property/test/test_member_data_value.hpp           |    33 ++++++++++++++++-                       
   sandbox/property/libs/property/test/test_member_function_impl.hpp        |    12 +++---                                  
   sandbox/property/libs/property/test/test_member_function_value.hpp       |    34 ++++++++++++++++--                      
   sandbox/property/libs/property/test/test_pod.hpp                         |     9 +++++                                   
   20 files changed, 256 insertions(+), 158 deletions(-)
Modified: sandbox/property/boost/property/property_callable_value.hpp
==============================================================================
--- sandbox/property/boost/property/property_callable_value.hpp	(original)
+++ sandbox/property/boost/property/property_callable_value.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -36,7 +36,7 @@
 
     public:
   
-    explicit prop_callable(boost::function<T ()> g) : 
+    explicit prop_callable(const boost::function<T ()> & g) : 
       fg(g) 
       { 
       }
@@ -70,12 +70,12 @@
 
     public:
   
-    explicit prop_callable(boost::function<void (T)> s) : 
+    explicit prop_callable(const boost::function<void (T)> & s) : 
       fs(s) 
       { 
       }
       
-    prop_callable(boost::function<void (T)> s,T arg) : 
+    prop_callable(const boost::function<void (T)> & s,T arg) : 
       fs(s) 
       { 
       if (fs == 0) 
@@ -86,7 +86,7 @@
       }
       
     template<class U>
-    prop_callable(boost::function<void (T)> s,U arg) : 
+    prop_callable(const boost::function<void (T)> & s,U arg) : 
       fs(s)
       { 
       if (fs == 0) 
@@ -139,20 +139,20 @@
       {
       }
     
-    prop_callable(boost::function<T ()> g,boost::function<void (T)> s) : 
+    prop_callable(const boost::function<T ()> & g,const boost::function<void (T)> & s) : 
       prop_callable<T,read_tag>(g),
       prop_callable<T,write_tag>(s) 
       { 
       }
       
-    prop_callable(boost::function<T ()> g,boost::function<void (T)> s,T arg) : 
+    prop_callable(const boost::function<T ()> & g,const boost::function<void (T)> & s,T arg) : 
       prop_callable<T,read_tag>(g),
       prop_callable<T,write_tag>(s,arg) 
       { 
       }
       
     template<class U>
-    prop_callable(boost::function<T ()> g,boost::function<void (T)> s,U arg) : 
+    prop_callable(const boost::function<T ()> & g,const boost::function<void (T)> & s,U arg) : 
       prop_callable<T,read_tag>(g),
       prop_callable<T,write_tag>(s,arg) 
       { 
Modified: sandbox/property/boost/property/property_notification_boost_function.hpp
==============================================================================
--- sandbox/property/boost/property/property_notification_boost_function.hpp	(original)
+++ sandbox/property/boost/property/property_notification_boost_function.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -19,7 +19,10 @@
       
     void property_changed(const i_property_write<T> & signaller,boost::optional<T> oldValue,T newValue)
       {
-      fun(signaller,oldValue,newValue);
+      if (fun)
+        {
+        fun(signaller,oldValue,newValue);
+        }
       }
     
     };
Modified: sandbox/property/libs/property/test/Jamfile.v2
==============================================================================
--- sandbox/property/libs/property/test/Jamfile.v2	(original)
+++ sandbox/property/libs/property/test/Jamfile.v2	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -9,6 +9,7 @@
 project property_tests : requirements <warnings>on
                                       <toolset>gcc:<warnings>all
                                       <toolset>gcc-4.5.0:<linkflags>"-Wl,--enable-auto-import"
+                                      <toolset>gcc-4.6.0:<cxxflags>"-Wno-address"
                                       <toolset>msvc:<warnings>all
                                       <toolset>msvc:<cxxflags>"-wd4512"
                                       <toolset>msvc-9.0:<define>"_SCL_SECURE_NO_WARNINGS"
@@ -17,72 +18,21 @@
 
 test-suite property
     : 
-        [ run test_auto_predicate_character.cpp ]
-        [ run test_auto_predicate_enum.cpp ]
-        [ run test_auto_predicate_floating_point.cpp ]
-        [ run test_auto_predicate_integer.cpp ]
+        [ run test_auto_predicate.cpp ]
         [ run test_auto_reference.cpp ]
-        [ run test_auto_value_bool.cpp ]
-        [ run test_auto_value_character.cpp ]
-        [ run test_auto_value_enum.cpp ]
-        [ run test_auto_value_floating_point.cpp ]
-        [ run test_auto_value_integer.cpp ]
-        [ run test_auto_value_pointer.cpp ]
-        [ run test_auto_value_user_defined.cpp ]
+        [ run test_auto_value.cpp ]
         [ run test_callable_reference.cpp ]
-        [ run test_callable_value_bool.cpp ]
-        [ run test_callable_value_character.cpp ]
-        [ run test_callable_value_enum.cpp ]
-        [ run test_callable_value_floating_point.cpp ]
-        [ run test_callable_value_integer.cpp ]
-        [ run test_callable_value_pointer.cpp ]
-        [ run test_callable_value_user_defined.cpp ]
-        [ run test_data_predicate_character.cpp ]
-        [ run test_data_predicate_enum.cpp ]
-        [ run test_data_predicate_floating_point.cpp ]
-        [ run test_data_predicate_integer.cpp ]
+        [ run test_callable_value.cpp ]
+        [ run test_data_predicate.cpp ]
         [ run test_data_reference.cpp ]
-        [ run test_data_value_bool.cpp ]
-        [ run test_data_value_character.cpp ]
-        [ run test_data_value_enum.cpp ]
-        [ run test_data_value_floating_point.cpp ]
-        [ run test_data_value_integer.cpp ]
-        [ run test_data_value_pointer.cpp ]
-        [ run test_data_value_user_defined.cpp ]
+        [ run test_data_value.cpp ]
         [ run test_function_reference.cpp ]
-        [ run test_function_value_bool.cpp ]
-        [ run test_function_value_character.cpp ]
-        [ run test_function_value_enum.cpp ]
-        [ run test_function_value_floating_point.cpp ]
-        [ run test_function_value_integer.cpp ]
-        [ run test_function_value_pointer.cpp ]
-        [ run test_function_value_user_defined.cpp ]
+        [ run test_function_value.cpp ]
         [ run test_functor_reference.cpp ]
-        [ run test_functor_value_bool.cpp ]
-        [ run test_functor_value_character.cpp ]
-        [ run test_functor_value_enum.cpp ]
-        [ run test_functor_value_floating_point.cpp ]
-        [ run test_functor_value_integer.cpp ]
-        [ run test_functor_value_pointer.cpp ]
-        [ run test_functor_value_user_defined.cpp ]
-        [ run test_member_data_predicate_character.cpp ]
-        [ run test_member_data_predicate_enum.cpp ]
-        [ run test_member_data_predicate_floating_point.cpp ]
-        [ run test_member_data_predicate_integer.cpp ]
+        [ run test_functor_value.cpp ]
+        [ run test_member_data_predicate.cpp ]
         [ run test_member_data_reference.cpp ]
-        [ run test_member_data_value_bool.cpp ]
-        [ run test_member_data_value_character.cpp ]
-        [ run test_member_data_value_enum.cpp ]
-        [ run test_member_data_value_floating_point.cpp ]
-        [ run test_member_data_value_integer.cpp ]
-        [ run test_member_data_value_pointer.cpp ]
-        [ run test_member_data_value_user_defined.cpp ]
+        [ run test_member_data_value.cpp ]
         [ run test_member_function_reference.cpp ]
-        [ run test_member_function_value_bool.cpp ]
-        [ run test_member_function_value_character.cpp ]
-        [ run test_member_function_value_enum.cpp ]
-        [ run test_member_function_value_floating_point.cpp ]
-        [ run test_member_function_value_integer.cpp ]
-        [ run test_member_function_value_pointer.cpp ]
-        [ run test_member_function_value_user_defined.cpp ]
+        [ run test_member_function_value.cpp ]
     ;
Deleted: sandbox/property/libs/property/test/test_auto_predicate_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_predicate_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_predicate_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_predicate_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_predicate_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_predicate_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_predicate_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_predicate_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Added: sandbox/property/libs/property/test/test_auto_value.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_auto_value.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+#include <boost/detail/lightweight_test.hpp>
+#include "test_auto_value.hpp"
+#include "test_global_data.hpp"
+
+prop_auto<char> p_gl_char;
+prop_auto<int,default_policy_tag,read_tag> p_gl_int_const(34662);
+prop_auto<double> p_gl_double;
+prop_auto<bool> p_gl_bool;
+prop_auto<int * const> p_gl_pointer_const(&gld_int);
+prop_auto<test_enum> p_gl_enum(e_test_third);
+prop_auto<test_pod,notification_boost_function> p_gl_pod_ntf;
+
+p_auto_value_class::p_auto_value_class() :
+  p_double_ntf(15),
+  p_bool(true),
+  p_enum_const(e_test_second)
+  {
+  }
+
+prop_auto<char> p_auto_value_class::p_st_char('T');
+prop_auto<int,default_policy_tag,read_tag> p_auto_value_class::p_st_int_const(34);
+prop_auto<double> p_auto_value_class::p_st_double;
+prop_auto<bool,notification_boost_function> p_auto_value_class::p_st_bool_ntf;
+prop_auto<int *> p_auto_value_class::p_st_pointer;
+prop_auto<test_enum,notification_boost_function> p_auto_value_class::p_st_enum_ntf;
+prop_auto<test_pod const> p_auto_value_class::p_st_pod_const(test_pod('y',45,32.6,true));
+
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+#include "test_global_data.cpp"
Modified: sandbox/property/libs/property/test/test_auto_value.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_value.hpp	(original)
+++ sandbox/property/libs/property/test/test_auto_value.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -14,7 +14,7 @@
 extern prop_auto<bool> p_gl_bool;
 extern prop_auto<int * const> p_gl_pointer_const;
 extern prop_auto<test_enum> p_gl_enum;
-extern prop_auto<test_pod,notification_boost_function> p_gl_class_ntf;
+extern prop_auto<test_pod,notification_boost_function> p_gl_pod_ntf;
 
 class p_auto_value_class
   {
@@ -29,7 +29,7 @@
   prop_auto<bool> p_bool;
   prop_auto<int *> p_pointer;
   prop_auto<test_enum,default_policy_tag,read_tag> p_enum_const;
-  prop_auto<test_pod> p_class;
+  prop_auto<test_pod> p_pod;
   
   static prop_auto<char> p_st_char;
   static prop_auto<int,default_policy_tag,read_tag> p_st_int_const;
@@ -37,7 +37,7 @@
   static prop_auto<bool,notification_boost_function> p_st_bool_ntf;
   static prop_auto<int *> p_st_pointer;
   static prop_auto<test_enum,notification_boost_function> p_st_enum_ntf;
-  static prop_auto<test_pod const> p_st_class_const;
+  static prop_auto<test_pod const> p_st_pod_const;
   
   };
   
Deleted: sandbox/property/libs/property/test/test_auto_value_bool.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_value_bool.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_value_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_value_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_value_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_value_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_value_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_value_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_value_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_value_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_value_pointer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_value_pointer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_auto_value_user_defined.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_auto_value_user_defined.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_auto_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Added: sandbox/property/libs/property/test/test_callable_value.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_callable_value.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,84 @@
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/bind.hpp>
+#include "test_callable_value.hpp"
+#include "test_function_impl.hpp"
+#include "test_functor_impl.hpp"
+#include "test_member_function_impl.hpp"
+
+p_member_function_impl_class p_member_function_impl_object;
+
+prop_callable<char> p_gl_char
+  (
+  (boost::bind(&p_member_function_impl_class::p_function_char_read,&p_member_function_impl_object)),
+  (boost::bind(&p_member_function_impl_class::p_function_char_write,&p_member_function_impl_object,_1))
+  );
+prop_callable<int> p_gl_int(&p_function_int_read,&p_function_int_write);
+prop_callable<double const> p_gl_double_const(&p_function_double_read);
+prop_callable<bool> p_gl_bool
+  (
+  (boost::bind(&p_member_function_impl_class::p_function_bool_read,&p_member_function_impl_object)),
+  (boost::bind(&p_member_function_impl_class::p_function_bool_write,&p_member_function_impl_object,_1))
+  );
+prop_callable<int *> p_gl_pointer(&p_function_pointer_read,&p_function_pointer_write);
+prop_callable<test_enum,read_tag> p_gl_enum_const((p_functor_class_enum()));
+prop_callable<test_pod const> p_gl_pod_const(&p_function_pod_read);
+
+p_callable_value_class::p_callable_value_class() :
+  p_char(&p_function_char_read,&p_function_char_write),
+  p_int_const(p_functor_class_int()),
+  p_double(p_functor_class_double(),p_functor_class_double()),
+  p_bool_const(p_functor_class_bool()),
+  p_pointer_const
+    (
+    boost::bind(&p_member_function_impl_class::p_function_pointer_read,&p_member_function_impl_object)
+    ),
+  p_enum_const(&p_function_enum_read),
+  p_pod(p_functor_class_pod(),p_functor_class_pod())
+  {
+  }
+  
+prop_callable<char> p_callable_value_class::p_st_char
+  (
+  (p_functor_class_char()),
+  (p_functor_class_char())
+  );
+prop_callable<int> p_callable_value_class::p_st_int
+  (
+  (boost::bind(&p_member_function_impl_class::p_function_int_read,&p_member_function_impl_object)),
+  (boost::bind(&p_member_function_impl_class::p_function_int_write,&p_member_function_impl_object,_1))
+  );
+prop_callable<double> p_callable_value_class::p_st_double
+  (
+  (boost::bind(&p_member_function_impl_class::p_function_double_read,&p_member_function_impl_object)),
+  (boost::bind(&p_member_function_impl_class::p_function_double_write,&p_member_function_impl_object,_1))
+  );
+prop_callable<bool> p_callable_value_class::p_st_bool
+  (
+  &p_function_bool_read,
+  &p_function_bool_write
+  );
+prop_callable<int * const> p_callable_value_class::p_st_pointer_const
+  (
+  (p_functor_class_pointer())
+  );
+prop_callable<test_enum> p_callable_value_class::p_st_enum
+  (
+  (boost::bind(&p_member_function_impl_class::p_function_enum_read,&p_member_function_impl_object)),
+  (boost::bind(&p_member_function_impl_class::p_function_enum_write,&p_member_function_impl_object,_1))
+  );
+prop_callable<test_pod const> p_callable_value_class::p_st_pod_const
+  (
+  (boost::bind(&p_member_function_impl_class::p_function_pod_read,&p_member_function_impl_object))
+  );
+  
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+#include "test_global_data.cpp"
+#include "test_function_impl.cpp"
+#include "test_functor_impl.cpp"
+#include "test_member_function_impl.cpp"
Modified: sandbox/property/libs/property/test/test_callable_value.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_callable_value.hpp	(original)
+++ sandbox/property/libs/property/test/test_callable_value.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -13,7 +13,7 @@
 extern prop_callable<bool> p_gl_bool;
 extern prop_callable<int *> p_gl_pointer;
 extern prop_callable<test_enum,read_tag> p_gl_enum_const;
-extern prop_callable<test_pod const> p_gl_class_const;
+extern prop_callable<test_pod const> p_gl_pod_const;
 
 class p_callable_value_class
   {
@@ -28,7 +28,7 @@
   prop_callable<bool,read_tag> p_bool_const;
   prop_callable<int * const> p_pointer_const;
   prop_callable<test_enum,read_tag> p_enum_const;
-  prop_callable<test_pod> p_class;
+  prop_callable<test_pod> p_pod;
   
   static prop_callable<char> p_st_char;
   static prop_callable<int> p_st_int;
@@ -36,7 +36,7 @@
   static prop_callable<bool> p_st_bool;
   static prop_callable<int * const> p_st_pointer_const;
   static prop_callable<test_enum> p_st_enum;
-  static prop_callable<test_pod const> p_st_class_const;
+  static prop_callable<test_pod const> p_st_pod_const;
   
   };
   
Deleted: sandbox/property/libs/property/test/test_callable_value_bool.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_callable_value_bool.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_callable_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_callable_value_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_callable_value_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_callable_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_callable_value_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_callable_value_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_callable_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_callable_value_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_callable_value_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_callable_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_callable_value_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_callable_value_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_callable_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_callable_value_pointer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_callable_value_pointer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_callable_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_callable_value_user_defined.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_callable_value_user_defined.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_callable_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Modified: sandbox/property/libs/property/test/test_data_impl.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_impl.cpp	(original)
+++ sandbox/property/libs/property/test/test_data_impl.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -1,25 +1,17 @@
 #include "test_data_impl.hpp"
 
-char p_data_char;
-int p_data_int;
-double p_data_double;
-bool p_data_bool;
-int * p_data_pointer;
-test_enum p_data_enum;
-test_pod p_data_class;
+char p_data_class::p_char(' ');
+int p_data_class::p_int(0);
+double p_data_class::p_double(0.0);
+bool p_data_class::p_bool(false);
+int * p_data_class::p_pointer(0);
+test_enum p_data_class::p_enum(e_test_default);
+test_pod p_data_class::p_pod;
 
-char p_data_class::p_char;
-int p_data_class::p_int;
-double p_data_class::p_double;
-bool p_data_class::p_bool;
-int * p_data_class::p_pointer;
-test_enum p_data_class::p_enum;
-test_pod p_data_class::p_class;
-
-char p_data_class::p_char_2;
-int p_data_class::p_int_2;
-double p_data_class::p_double_2;
-bool p_data_class::p_bool_2;
-int * p_data_class::p_pointer_2;
-test_enum p_data_class::p_enum_2;
-test_pod p_data_class::p_class_2;
+char p_data_class::p_char_2(' ');
+int p_data_class::p_int_2(0);
+double p_data_class::p_double_2(0.0);
+bool p_data_class::p_bool_2(false);
+int * p_data_class::p_pointer_2(0);
+test_enum p_data_class::p_enum_2(e_test_default);
+test_pod p_data_class::p_pod_2;
Modified: sandbox/property/libs/property/test/test_data_impl.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_impl.hpp	(original)
+++ sandbox/property/libs/property/test/test_data_impl.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -4,14 +4,6 @@
 #include "test_enum.hpp"
 #include "test_pod.hpp"
 
-extern char p_data_char;
-extern int p_data_int;
-extern double p_data_double;
-extern bool p_data_bool;
-extern int * p_data_pointer;
-extern test_enum p_data_enum;
-extern test_pod p_data_class;
-
 class p_data_class
   {
   
@@ -23,7 +15,7 @@
   static bool p_bool;
   static int * p_pointer;
   static test_enum p_enum;
-  static test_pod p_class;
+  static test_pod p_pod;
   
   static char p_char_2;
   static int p_int_2;
@@ -31,7 +23,7 @@
   static bool p_bool_2;
   static int * p_pointer_2;
   static test_enum p_enum_2;
-  static test_pod p_class_2;
+  static test_pod p_pod_2;
   
   };
   
Added: sandbox/property/libs/property/test/test_data_predicate.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_data_predicate.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/lambda/lambda.hpp>
+#include "test_data_predicate.hpp"
+
+using namespace boost::lambda;
+
+prop_data_predicate<char,&gld_char,notification_boost_function,predicate_failure_runtime_exception> p_gl_char_pred_ntf_err(_1 != '0');
+prop_data_predicate<int,&p_data_class::p_int_2,notification_boost_function> p_gl_int_pred_ntf(_1 < 1000 && _1 > 100);
+prop_data_predicate<double,&gld_double,default_policy_tag,predicate_failure_runtime_exception> p_gl_double_pred_err(_1 >= 11.0 && _1 <= 22.0);
+prop_data_predicate<test_enum,&gld_enum> p_gl_enum_pred(_1 != e_test_second);
+
+p_data_predicate_class::p_data_predicate_class() :
+  p_char_pred_ntf_err(_1 == 'f' || _1 == 'g' || _1 == 'h'),
+  p_int_pred(_1 >= 5000),
+  p_double_pred_ntf_err(_1 <= 300.0),
+  p_enum_pred_err(_1 != e_test_first)
+  {
+  }
+
+prop_data_predicate<char,&p_data_class::p_char> p_data_predicate_class::p_st_char_pred(_1 != 'i');
+prop_data_predicate<int,&gld_int,notification_boost_function,predicate_failure_runtime_exception> p_data_predicate_class::p_st_int_pred_ntf_err(_1 >= 35000);
+prop_data_predicate<double,&p_data_class::p_double_2,default_policy_tag,predicate_failure_runtime_exception> p_data_predicate_class::p_st_double_pred_err(_1 <= 5000.0);
+prop_data_predicate<test_enum,&p_data_class::p_enum_2,notification_boost_function> p_data_predicate_class::p_st_enum_pred_ntf(_1 != e_test_third);
+
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+#include "test_global_data.cpp"
+#include "test_data_impl.cpp"
Modified: sandbox/property/libs/property/test/test_data_predicate.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_predicate.hpp	(original)
+++ sandbox/property/libs/property/test/test_data_predicate.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -3,16 +3,17 @@
 
 #include "test_enum.hpp"
 #include "test_data_impl.hpp"
+#include "test_global_data.hpp"
 #include <boost/property/property_data_predicate.hpp>
 #include <boost/property/property_notification_boost_function.hpp>
 #include <boost/property/property_predicate_failure_runtime_exception.hpp>
 
 using namespace properties;
 
-extern prop_data_predicate<char,&p_data_char,notification_boost_function,predicate_failure_runtime_exception> p_gl_char_pred_ntf_err;
+extern prop_data_predicate<char,&gld_char,notification_boost_function,predicate_failure_runtime_exception> p_gl_char_pred_ntf_err;
 extern prop_data_predicate<int,&p_data_class::p_int_2,notification_boost_function> p_gl_int_pred_ntf;
-extern prop_data_predicate<double,&p_data_double,default_policy_tag,predicate_failure_runtime_exception> p_gl_double_pred_err;
-extern prop_data_predicate<test_enum,&p_data_enum> p_gl_enum_pred;
+extern prop_data_predicate<double,&gld_double,default_policy_tag,predicate_failure_runtime_exception> p_gl_double_pred_err;
+extern prop_data_predicate<test_enum,&gld_enum> p_gl_enum_pred;
 
 class p_data_predicate_class
   {
@@ -27,7 +28,7 @@
   prop_data_predicate<test_enum,&p_data_class::p_enum,default_policy_tag,predicate_failure_runtime_exception> p_enum_pred_err;
   
   static prop_data_predicate<char,&p_data_class::p_char> p_st_char_pred;
-  static prop_data_predicate<int,&p_data_int,notification_boost_function,predicate_failure_runtime_exception> p_st_int_pred_ntf_err;
+  static prop_data_predicate<int,&gld_int,notification_boost_function,predicate_failure_runtime_exception> p_st_int_pred_ntf_err;
   static prop_data_predicate<double,&p_data_class::p_double_2,default_policy_tag,predicate_failure_runtime_exception> p_st_double_pred_err;
   static prop_data_predicate<test_enum,&p_data_class::p_enum_2,notification_boost_function> p_st_enum_pred_ntf;
   
Deleted: sandbox/property/libs/property/test/test_data_predicate_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_predicate_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_predicate_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_predicate_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_predicate_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_predicate_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_predicate_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_predicate_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Added: sandbox/property/libs/property/test/test_data_value.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_data_value.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+#include <boost/detail/lightweight_test.hpp>
+#include "test_data_value.hpp"
+#include "test_global_data.hpp"
+
+prop_data<char const,&p_data_class::p_char_2> p_gl_char_const;
+prop_data<int,&gld_int> p_gl_int;
+prop_data<double const,&gld_double> p_gl_double_const;
+prop_data<bool,&p_data_class::p_bool,default_policy_tag,read_tag> p_gl_bool;
+prop_data<int *,&gld_pointer,notification_boost_function> p_gl_pointer_ntf;
+prop_data<test_enum,&p_data_class::p_enum_2,notification_boost_function> p_gl_enum_ntf;
+prop_data<test_pod,&gld_pod,notification_boost_function> p_gl_pod_ntf;
+
+p_data_value_class::p_data_value_class()
+  {
+  }
+
+prop_data<char,&p_data_class::p_char> p_data_value_class::p_st_char;
+prop_data<int,&p_data_class::p_int> p_data_value_class::p_st_int;
+prop_data<double const,&p_data_class::p_double_2> p_data_value_class::p_st_double_const;
+prop_data<bool,&gld_bool> p_data_value_class::p_st_bool;
+prop_data<int *,&p_data_class::p_pointer_2> p_data_value_class::p_st_pointer;
+prop_data<test_enum,&gld_enum> p_data_value_class::p_st_enum;
+prop_data<test_pod const,&p_data_class::p_pod_2> p_data_value_class::p_st_pod_const;
+
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+#include "test_global_data.cpp"
+#include "test_data_impl.cpp"
Modified: sandbox/property/libs/property/test/test_data_value.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_value.hpp	(original)
+++ sandbox/property/libs/property/test/test_data_value.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -4,18 +4,19 @@
 #include "test_enum.hpp"
 #include "test_pod.hpp"
 #include "test_data_impl.hpp"
+#include "test_global_data.hpp"
 #include <boost/property/property_data_value.hpp>
 #include <boost/property/property_notification_boost_function.hpp>
 
 using namespace properties;
 
 extern prop_data<char const,&p_data_class::p_char_2> p_gl_char_const;
-extern prop_data<int,&p_data_int> p_gl_int;
-extern prop_data<double const,&p_data_double> p_gl_double_const;
+extern prop_data<int,&gld_int> p_gl_int;
+extern prop_data<double const,&gld_double> p_gl_double_const;
 extern prop_data<bool,&p_data_class::p_bool,default_policy_tag,read_tag> p_gl_bool;
-extern prop_data<int *,&p_data_pointer,notification_boost_function> p_gl_pointer_ntf;
+extern prop_data<int *,&gld_pointer,notification_boost_function> p_gl_pointer_ntf;
 extern prop_data<test_enum,&p_data_class::p_enum_2,notification_boost_function> p_gl_enum_ntf;
-extern prop_data<test_pod,&p_data_class,notification_boost_function> p_gl_class_ntf;
+extern prop_data<test_pod,&gld_pod,notification_boost_function> p_gl_pod_ntf;
 
 class p_data_value_class
   {
@@ -24,21 +25,21 @@
   
   p_data_value_class();
   
-  prop_data<char,&p_data_char> p_char;
+  prop_data<char,&gld_char> p_char;
   prop_data<int,&p_data_class::p_int_2> p_int;
   prop_data<double,&p_data_class::p_double,notification_boost_function> p_double_ntf;
   prop_data<bool,&p_data_class::p_bool_2> p_bool;
   prop_data<int *,&p_data_class::p_pointer> p_pointer;
   prop_data<test_enum,&p_data_class::p_enum,default_policy_tag,read_tag> p_enum_const;
-  prop_data<test_pod,&p_data_class::p_class> p_class;
+  prop_data<test_pod,&p_data_class::p_pod> p_pod;
   
   static prop_data<char,&p_data_class::p_char> p_st_char;
   static prop_data<int,&p_data_class::p_int> p_st_int;
   static prop_data<double const,&p_data_class::p_double_2> p_st_double_const;
-  static prop_data<bool,&p_data_bool> p_st_bool;
+  static prop_data<bool,&gld_bool> p_st_bool;
   static prop_data<int *,&p_data_class::p_pointer_2> p_st_pointer;
-  static prop_data<test_enum,&p_data_enum> p_st_enum;
-  static prop_data<test_pod const,&p_data_class::p_class_2> p_st_class_const;
+  static prop_data<test_enum,&gld_enum> p_st_enum;
+  static prop_data<test_pod const,&p_data_class::p_pod_2> p_st_pod_const;
   
   };
   
Deleted: sandbox/property/libs/property/test/test_data_value_bool.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_value_bool.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_value_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_value_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_value_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_value_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_value_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_value_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_value_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_value_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_value_pointer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_value_pointer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_data_value_user_defined.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_data_value_user_defined.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Modified: sandbox/property/libs/property/test/test_function_impl.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_impl.cpp	(original)
+++ sandbox/property/libs/property/test/test_function_impl.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -61,12 +61,12 @@
   gld_enum = data;
   }
   
-test_pod p_function_class_read() 
+test_pod p_function_pod_read() 
   {
   return gld_pod;
   }
   
-void p_function_class_write(test_pod data) 
+void p_function_pod_write(test_pod data) 
   {
   gld_pod = data;
   }
@@ -131,12 +131,12 @@
   st_enum = data;
   }
   
-test_pod p_function_class::p_class_read() 
+test_pod p_function_class::p_pod_read() 
   {
   return st_pod;
   }
   
-void p_function_class::p_class_write(test_pod data) 
+void p_function_class::p_pod_write(test_pod data) 
   {
   st_pod = data;
   }
@@ -201,12 +201,12 @@
   st_enum_2 = data;
   }
   
-test_pod p_function_class::p_class_read_2() 
+test_pod p_function_class::p_pod_read_2() 
   {
   return st_pod_2;
   }
   
-void p_function_class::p_class_write_2(test_pod data) 
+void p_function_class::p_pod_write_2(test_pod data) 
   {
   st_pod_2 = data;
   }
@@ -226,5 +226,3 @@
 int * p_function_class::st_pointer_2(0);
 test_enum p_function_class::st_enum_2(e_test_first);
 test_pod p_function_class::st_pod_2;
-
-#include "test_global_data.cpp"
\ No newline at end of file
Modified: sandbox/property/libs/property/test/test_function_impl.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_impl.hpp	(original)
+++ sandbox/property/libs/property/test/test_function_impl.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -16,8 +16,8 @@
 extern void p_function_pointer_write(int *);
 extern test_enum p_function_enum_read();
 extern void p_function_enum_write(test_enum);
-extern test_pod p_function_class_read();
-extern void p_function_class_write(test_pod);
+extern test_pod p_function_pod_read();
+extern void p_function_pod_write(test_pod);
 
 class p_function_class
   {
@@ -36,8 +36,8 @@
   static void p_pointer_write(int *);
   static test_enum p_enum_read();
   static void p_enum_write(test_enum);
-  static test_pod p_class_read();
-  static void p_class_write(test_pod);
+  static test_pod p_pod_read();
+  static void p_pod_write(test_pod);
   
   static char p_char_read_2();
   static void p_char_write_2(char);
@@ -51,8 +51,8 @@
   static void p_pointer_write_2(int *);
   static test_enum p_enum_read_2();
   static void p_enum_write_2(test_enum);
-  static test_pod p_class_read_2();
-  static void p_class_write_2(test_pod);
+  static test_pod p_pod_read_2();
+  static void p_pod_write_2(test_pod);
   
   static char st_char;
   static int st_int;
Added: sandbox/property/libs/property/test/test_function_value.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_function_value.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+#include <boost/detail/lightweight_test.hpp>
+#include "test_function_value.hpp"
+#include "test_global_data.hpp"
+
+prop_function<char,&p_function_class::p_char_read,&p_function_class::p_char_write> p_gl_char;
+prop_function<int,&p_function_class::p_int_read_2,&p_function_class::p_int_write_2> p_gl_int;
+prop_read_function<double,&p_function_double_read> p_gl_double_const;
+prop_write_function<bool,&p_function_bool_write> p_gl_bool_write;
+prop_function<int *,&p_function_pointer_read,&p_function_pointer_write> p_gl_pointer;
+prop_read_function<test_enum,&p_function_class::p_enum_read> p_gl_enum_const;
+prop_read_function<test_pod,&p_function_class::p_pod_read_2> p_gl_pod_const;
+
+p_function_value_class::p_function_value_class()
+  {
+  }
+
+prop_write_function<char,&p_function_class::p_char_write_2> p_function_value_class::p_st_char;
+prop_function<int,&p_function_int_read,&p_function_int_write> p_function_value_class::p_st_int;
+prop_function<double,&p_function_class::p_double_read_2,&p_function_class::p_double_write_2> p_function_value_class::p_st_double;
+prop_function<bool,&p_function_class::p_bool_read_2,&p_function_class::p_bool_write_2> p_function_value_class::p_st_bool;
+prop_function<int *,&p_function_class::p_pointer_read_2,&p_function_class::p_pointer_write_2> p_function_value_class::p_st_pointer;
+prop_read_function<test_enum,&p_function_enum_read> p_function_value_class::p_st_enum_const;
+prop_write_function<test_pod,&p_function_class::p_pod_write> p_function_value_class::p_st_pod_write;
+
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+#include "test_global_data.cpp"
+#include "test_function_impl.cpp"
Modified: sandbox/property/libs/property/test/test_function_value.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_value.hpp	(original)
+++ sandbox/property/libs/property/test/test_function_value.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -14,7 +14,7 @@
 extern prop_write_function<bool,&p_function_bool_write> p_gl_bool_write;
 extern prop_function<int *,&p_function_pointer_read,&p_function_pointer_write> p_gl_pointer;
 extern prop_read_function<test_enum,&p_function_class::p_enum_read> p_gl_enum_const;
-extern prop_read_function<test_pod,&p_function_class::p_class_read_2> p_gl_class_const;
+extern prop_read_function<test_pod,&p_function_class::p_pod_read_2> p_gl_pod_const;
 
 class p_function_value_class
   {
@@ -29,15 +29,15 @@
   prop_read_function<bool,&p_function_class::p_bool_read> p_bool_const;
   prop_read_function<int *,&p_function_class::p_pointer_read> p_pointer_const;
   prop_function<test_enum,&p_function_class::p_enum_read_2,&p_function_class::p_enum_write_2> p_enum;
-  prop_read_function<test_pod,&p_function_class_read> p_class_const;
+  prop_read_function<test_pod,&p_function_pod_read> p_pod_const;
 
   static prop_write_function<char,&p_function_class::p_char_write_2> p_st_char;
   static prop_function<int,&p_function_int_read,&p_function_int_write> p_st_int;
   static prop_function<double,&p_function_class::p_double_read_2,&p_function_class::p_double_write_2> p_st_double;
   static prop_function<bool,&p_function_class::p_bool_read_2,&p_function_class::p_bool_write_2> p_st_bool;
-  static prop_read_function<int *,&p_function_class::p_pointer_read_2> p_st_pointer_const;
+  static prop_function<int *,&p_function_class::p_pointer_read_2,&p_function_class::p_pointer_write_2> p_st_pointer;
   static prop_read_function<test_enum,&p_function_enum_read> p_st_enum_const;
-  static prop_write_function<test_pod,&p_function_class::p_class_write> p_st_class_write;
+  static prop_write_function<test_pod,&p_function_class::p_pod_write> p_st_pod_write;
   
   };
   
Deleted: sandbox/property/libs/property/test/test_function_value_bool.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_value_bool.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_function_value_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_value_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_function_value_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_value_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_function_value_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_value_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_function_value_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_value_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_function_value_pointer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_value_pointer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_function_value_user_defined.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_function_value_user_defined.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Added: sandbox/property/libs/property/test/test_functor_impl.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_functor_impl.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+#include "test_functor_impl.hpp"
+
+p_functor_class_char::p_functor_class_char() : data(' ') { }
+p_functor_class_char::p_functor_class_char(char c) : data(c) { }
+char p_functor_class_char::operator()() { return data; }
+void p_functor_class_char::operator()(char d) { data = d; }
+
+p_functor_class_int::p_functor_class_int() : data(0) { }
+p_functor_class_int::p_functor_class_int(int i) : data(i) { }
+int p_functor_class_int::operator()() { return data; }
+void p_functor_class_int::operator()(int d) { data = d; }
+
+p_functor_class_double::p_functor_class_double() : data(0.0) { }
+p_functor_class_double::p_functor_class_double(double d) : data(d) { }
+double p_functor_class_double::operator()() { return data; }
+void p_functor_class_double::operator()(double d) { data = d; }
+
+p_functor_class_bool::p_functor_class_bool() : data(false) { }
+p_functor_class_bool::p_functor_class_bool(bool b) : data(b) { }
+bool p_functor_class_bool::operator()() { return data; }
+void p_functor_class_bool::operator()(bool d) { data = d; }
+
+p_functor_class_pointer::p_functor_class_pointer() : data(0) { }
+p_functor_class_pointer::p_functor_class_pointer(int * p) : data(p) { }
+int * p_functor_class_pointer::operator()() { return data; }
+void p_functor_class_pointer::operator()(int * d) { data = d; }
+
+p_functor_class_enum::p_functor_class_enum() : data(e_test_default) { }
+p_functor_class_enum::p_functor_class_enum(test_enum e) : data(e) { }
+test_enum p_functor_class_enum::operator()() { return data; }
+void p_functor_class_enum::operator()(test_enum d) { data = d; }
+
+p_functor_class_pod::p_functor_class_pod() { }
+p_functor_class_pod::p_functor_class_pod(test_pod p) : data(p) { }
+test_pod p_functor_class_pod::operator()() { return data; }
+void p_functor_class_pod::operator()(test_pod d) { data = d; }
Modified: sandbox/property/libs/property/test/test_functor_impl.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_impl.hpp	(original)
+++ sandbox/property/libs/property/test/test_functor_impl.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -9,8 +9,16 @@
   
   public:
   
+  p_functor_class_char();
+  p_functor_class_char(char c);
+  
   char operator()();
   void operator()(char);
+  
+  private:
+  
+  char data;
+  
   };
 
 class p_functor_class_int
@@ -18,8 +26,16 @@
   
   public:
   
+  p_functor_class_int();
+  p_functor_class_int(int i);
+  
   int operator()();
   void operator()(int);
+  
+  private:
+  
+  int data;
+  
   };
 
 class p_functor_class_double
@@ -27,8 +43,16 @@
   
   public:
   
+  p_functor_class_double();
+  p_functor_class_double(double d);
+  
   double operator()();
   void operator()(double);
+  
+  private:
+  
+  double data;
+  
   };
 
 class p_functor_class_bool
@@ -36,8 +60,16 @@
   
   public:
   
+  p_functor_class_bool();
+  p_functor_class_bool(bool b);
+  
   bool operator()();
   void operator()(bool);
+  
+  private:
+  
+  bool data;
+  
   };
 
 class p_functor_class_pointer
@@ -45,8 +77,16 @@
   
   public:
   
+  p_functor_class_pointer();
+  p_functor_class_pointer(int * p);
+  
   int * operator()();
   void operator()(int *);
+  
+  private:
+  
+  int * data;
+  
   };
 
 class p_functor_class_enum
@@ -54,8 +94,16 @@
   
   public:
   
+  p_functor_class_enum();
+  p_functor_class_enum(test_enum e);
+  
   test_enum operator()();
   void operator()(test_enum);
+  
+  private:
+  
+  test_enum data;
+  
   };
 
 class p_functor_class_pod
@@ -63,8 +111,16 @@
   
   public:
   
+  p_functor_class_pod();
+  p_functor_class_pod(test_pod p);
+  
   test_pod operator()();
   void operator()(test_pod);
+  
+  private:
+  
+  test_pod data;
+  
   };
   
 #endif
Added: sandbox/property/libs/property/test/test_functor_value.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_functor_value.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+#include <boost/detail/lightweight_test.hpp>
+#include "test_functor_value.hpp"
+#include "test_global_data.hpp"
+
+prop_functor<char,p_functor_class_char> p_gl_char(pf_gl_char);
+prop_functor<int,p_functor_class_int> p_gl_int(pf_gl_int);
+prop_functor<double,p_functor_class_double> p_gl_double(pf_gl_double);
+prop_functor<bool,p_functor_class_bool,write_tag> p_gl_bool_write(pf_gl_bool);
+prop_functor<int *,p_functor_class_pointer> p_gl_pointer(pf_gl_pointer);
+prop_functor<test_enum,p_functor_class_enum,read_tag> p_gl_enum_const(pf_gl_enum);
+prop_functor<test_pod const,p_functor_class_pod> p_gl_pod_const(pf_gl_pod);
+
+p_functor_value_class::p_functor_value_class() :
+  p_char(pf_char),
+  p_int(pf_int),
+  p_double_const(pf_double),
+  p_bool_const(pf_bool),
+  p_pointer_const(pf_pointer),
+  p_enum(pf_enum),
+  p_pod_const(pf_pod),
+  pf_double(672.56),
+  pf_bool(true),
+  pf_pointer(&pvalue),
+  pf_pod(test_pod('&',9872,98.763,true))
+  {
+  }
+
+prop_functor<char,p_functor_class_char> p_functor_value_class::p_st_char(pf_st_char);
+prop_functor<int,p_functor_class_int,read_tag> p_functor_value_class::p_st_int_const(pf_st_int);
+prop_functor<double,p_functor_class_double> p_functor_value_class::p_st_double(pf_st_double);
+prop_functor<bool,p_functor_class_bool> p_functor_value_class::p_st_bool(pf_st_bool);
+prop_functor<int *,p_functor_class_pointer> p_functor_value_class::p_st_pointer(pf_st_pointer);
+prop_functor<test_enum,p_functor_class_enum,read_tag> p_functor_value_class::p_st_enum_const(pf_st_enum);
+prop_functor<test_pod,p_functor_class_pod,write_tag> p_functor_value_class::p_st_pod_write(pf_st_pod);
+int p_functor_value_class::pvalue(801);
+
+
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+p_functor_class_char pf_gl_char;
+p_functor_class_int pf_gl_int;
+p_functor_class_double pf_gl_double;
+p_functor_class_bool pf_gl_bool;
+p_functor_class_pointer pf_gl_pointer;
+p_functor_class_enum pf_gl_enum(e_test_second);
+p_functor_class_pod pf_gl_pod((test_pod('Z',455,2.34,true)));
+
+p_functor_class_char p_functor_value_class::pf_st_char;
+p_functor_class_int p_functor_value_class::pf_st_int(89);
+p_functor_class_double p_functor_value_class::pf_st_double;
+p_functor_class_bool p_functor_value_class::pf_st_bool;
+p_functor_class_pointer p_functor_value_class::pf_st_pointer;
+p_functor_class_enum p_functor_value_class::pf_st_enum(e_test_third);
+p_functor_class_pod p_functor_value_class::pf_st_pod;
+  
+#include "test_global_data.cpp"
+#include "test_functor_impl.cpp"
Modified: sandbox/property/libs/property/test/test_functor_value.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_value.hpp	(original)
+++ sandbox/property/libs/property/test/test_functor_value.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -14,8 +14,16 @@
 extern prop_functor<bool,p_functor_class_bool,write_tag> p_gl_bool_write;
 extern prop_functor<int *,p_functor_class_pointer> p_gl_pointer;
 extern prop_functor<test_enum,p_functor_class_enum,read_tag> p_gl_enum_const;
-extern prop_functor<test_pod const,p_functor_class_pod> p_gl_class_const;
+extern prop_functor<test_pod const,p_functor_class_pod> p_gl_pod_const;
 
+extern p_functor_class_char pf_gl_char;
+extern p_functor_class_int pf_gl_int;
+extern p_functor_class_double pf_gl_double;
+extern p_functor_class_bool pf_gl_bool;
+extern p_functor_class_pointer pf_gl_pointer;
+extern p_functor_class_enum pf_gl_enum;
+extern p_functor_class_pod pf_gl_pod;
+  
 class p_functor_value_class
   {
   
@@ -29,15 +37,35 @@
   prop_functor<bool const,p_functor_class_bool> p_bool_const;
   prop_functor<int *,p_functor_class_pointer,read_tag> p_pointer_const;
   prop_functor<test_enum,p_functor_class_enum> p_enum;
-  prop_functor<test_pod,p_functor_class_pod,read_tag> p_class_const;
+  prop_functor<test_pod,p_functor_class_pod,read_tag> p_pod_const;
 
   static prop_functor<char,p_functor_class_char> p_st_char;
   static prop_functor<int,p_functor_class_int,read_tag> p_st_int_const;
   static prop_functor<double,p_functor_class_double> p_st_double;
   static prop_functor<bool,p_functor_class_bool> p_st_bool;
-  static prop_functor<int * const,p_functor_class_pointer> p_st_pointer_const;
+  static prop_functor<int *,p_functor_class_pointer> p_st_pointer;
   static prop_functor<test_enum,p_functor_class_enum,read_tag> p_st_enum_const;
-  static prop_functor<test_pod,p_functor_class_pod,write_tag> p_st_class_write;
+  static prop_functor<test_pod,p_functor_class_pod,write_tag> p_st_pod_write;
+  
+  private:
+  
+  p_functor_class_char pf_char;
+  p_functor_class_int pf_int;
+  p_functor_class_double pf_double;
+  p_functor_class_bool pf_bool;
+  p_functor_class_pointer pf_pointer;
+  p_functor_class_enum pf_enum;
+  p_functor_class_pod pf_pod;
+  
+  static p_functor_class_char pf_st_char;
+  static p_functor_class_int pf_st_int;
+  static p_functor_class_double pf_st_double;
+  static p_functor_class_bool pf_st_bool;
+  static p_functor_class_pointer pf_st_pointer;
+  static p_functor_class_enum pf_st_enum;
+  static p_functor_class_pod pf_st_pod;
+  
+  static int pvalue;
   
   };
   
Deleted: sandbox/property/libs/property/test/test_functor_value_bool.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_value_bool.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_functor_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_functor_value_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_value_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_functor_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_functor_value_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_value_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_functor_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_functor_value_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_value_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_functor_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_functor_value_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_value_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_functor_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_functor_value_pointer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_value_pointer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_functor_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_functor_value_user_defined.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_functor_value_user_defined.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_functor_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Added: sandbox/property/libs/property/test/test_member_data_impl.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_member_data_impl.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,23 @@
+#include "test_member_data_impl.hpp"
+
+p_member_data_class::p_member_data_class() :
+  p_data_char(' '),
+  p_data_int(0),
+  p_data_double(0.0),
+  p_data_bool(false),
+  p_data_pointer(0),
+  p_data_enum(e_test_default),
+  p_char(' '),
+  p_int(0),
+  p_double(0.0),
+  p_bool(false),
+  p_pointer(0),
+  p_enum(e_test_default),
+  p_char_2(' '),
+  p_int_2(0),
+  p_double_2(0.0),
+  p_bool_2(false),
+  p_pointer_2(0),
+  p_enum_2(e_test_default)
+  {
+  }
Modified: sandbox/property/libs/property/test/test_member_data_impl.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_impl.hpp	(original)
+++ sandbox/property/libs/property/test/test_member_data_impl.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -17,7 +17,7 @@
   bool p_data_bool;
   int * p_data_pointer;
   test_enum p_data_enum;
-  test_pod p_data_class;
+  test_pod p_data_pod;
   
   char p_char;
   int p_int;
@@ -25,7 +25,7 @@
   bool p_bool;
   int * p_pointer;
   test_enum p_enum;
-  test_pod p_class;
+  test_pod p_pod;
   
   char p_char_2;
   int p_int_2;
@@ -33,7 +33,7 @@
   bool p_bool_2;
   int * p_pointer_2;
   test_enum p_enum_2;
-  test_pod p_class_2;
+  test_pod p_pod_2;
   
   };
   
Added: sandbox/property/libs/property/test/test_member_data_predicate.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_member_data_predicate.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,43 @@
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/lambda/lambda.hpp>
+#include "test_member_data_predicate.hpp"
+
+using namespace boost::lambda;
+
+prop_member_data_predicate<char,p_member_data_class,&p_member_data_class::p_data_char,notification_boost_function,predicate_failure_runtime_exception> p_gl_char_pred_ntf_err(_1 != 'K',pmd_gl_char);
+prop_member_data_predicate<int,p_member_data_class,&p_member_data_class::p_int_2,notification_boost_function> p_gl_int_pred_ntf(_1 > 457,pmd_gl_int);
+prop_member_data_predicate<double,p_member_data_class,&p_member_data_class::p_data_double,default_policy_tag,predicate_failure_runtime_exception> p_gl_double_pred_err(_1 >= 3.0 && _1 < 7.0,pmd_gl_double);
+prop_member_data_predicate<test_enum,p_member_data_class,&p_member_data_class::p_data_enum> p_gl_enum_pred(_1 != e_test_first,pmd_gl_enum);
+
+p_member_data_predicate_class::p_member_data_predicate_class() :
+  p_char_pred_ntf_err(_1 == 'a' || _1 == 'b' || _1 == 'c',pmd_char),
+  p_int_pred(_1 > 20,pmd_int),
+  p_double_pred_ntf_err(_1 < 345.6,pmd_double),
+  p_enum_pred_err(_1 != e_test_third,pmd_enum)
+  {
+  }
+
+prop_member_data_predicate<char,p_member_data_class,&p_member_data_class::p_char> p_member_data_predicate_class::p_st_char_pred(_1 != 'W',pmd_st_char);
+prop_member_data_predicate<int,p_member_data_class,&p_member_data_class::p_data_int,notification_boost_function,predicate_failure_runtime_exception> p_member_data_predicate_class::p_st_int_pred_ntf_err(_1 >= 40000,pmd_st_int);
+prop_member_data_predicate<double,p_member_data_class,&p_member_data_class::p_double_2,default_policy_tag,predicate_failure_runtime_exception> p_member_data_predicate_class::p_st_double_pred_err(_1 <= 5.0,pmd_st_double);
+prop_member_data_predicate<test_enum,p_member_data_class,&p_member_data_class::p_enum_2,notification_boost_function> p_member_data_predicate_class::p_st_enum_pred_ntf(_1 != e_test_second,pmd_st_enum);
+
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+p_member_data_class pmd_gl_char;
+p_member_data_class pmd_gl_int;
+p_member_data_class pmd_gl_double;
+p_member_data_class pmd_gl_enum;
+
+p_member_data_class p_member_data_predicate_class::pmd_st_char;
+p_member_data_class p_member_data_predicate_class::pmd_st_int;
+p_member_data_class p_member_data_predicate_class::pmd_st_double;
+p_member_data_class p_member_data_predicate_class::pmd_st_enum;
+  
+#include "test_global_data.cpp"
+#include "test_member_data_impl.cpp"
Modified: sandbox/property/libs/property/test/test_member_data_predicate.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_predicate.hpp	(original)
+++ sandbox/property/libs/property/test/test_member_data_predicate.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -14,6 +14,11 @@
 extern prop_member_data_predicate<double,p_member_data_class,&p_member_data_class::p_data_double,default_policy_tag,predicate_failure_runtime_exception> p_gl_double_pred_err;
 extern prop_member_data_predicate<test_enum,p_member_data_class,&p_member_data_class::p_data_enum> p_gl_enum_pred;
 
+extern p_member_data_class pmd_gl_char;
+extern p_member_data_class pmd_gl_int;
+extern p_member_data_class pmd_gl_double;
+extern p_member_data_class pmd_gl_enum;
+
 class p_member_data_predicate_class
   {
   
@@ -26,11 +31,21 @@
   prop_member_data_predicate<double,p_member_data_class,&p_member_data_class::p_double,notification_boost_function,predicate_failure_runtime_exception> p_double_pred_ntf_err;
   prop_member_data_predicate<test_enum,p_member_data_class,&p_member_data_class::p_enum,default_policy_tag,predicate_failure_runtime_exception> p_enum_pred_err;
   
+  p_member_data_class pmd_char;
+  p_member_data_class pmd_int;
+  p_member_data_class pmd_double;
+  p_member_data_class pmd_enum;
+
   static prop_member_data_predicate<char,p_member_data_class,&p_member_data_class::p_char> p_st_char_pred;
   static prop_member_data_predicate<int,p_member_data_class,&p_member_data_class::p_data_int,notification_boost_function,predicate_failure_runtime_exception> p_st_int_pred_ntf_err;
   static prop_member_data_predicate<double,p_member_data_class,&p_member_data_class::p_double_2,default_policy_tag,predicate_failure_runtime_exception> p_st_double_pred_err;
   static prop_member_data_predicate<test_enum,p_member_data_class,&p_member_data_class::p_enum_2,notification_boost_function> p_st_enum_pred_ntf;
   
+  static p_member_data_class pmd_st_char;
+  static p_member_data_class pmd_st_int;
+  static p_member_data_class pmd_st_double;
+  static p_member_data_class pmd_st_enum;
+
   };
   
 #endif
Deleted: sandbox/property/libs/property/test/test_member_data_predicate_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_predicate_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_predicate_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_predicate_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_predicate_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_predicate_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_predicate_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_predicate_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_predicate.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Added: sandbox/property/libs/property/test/test_member_data_value.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_member_data_value.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+#include <boost/detail/lightweight_test.hpp>
+#include "test_member_data_value.hpp"
+
+prop_member_data<char const,p_member_data_class,&p_member_data_class::p_data_char> p_gl_char_const(pmd_gl_char);
+prop_member_data<int,p_member_data_class,&p_member_data_class::p_data_int> p_gl_int(pmd_gl_int);
+prop_member_data<double const,p_member_data_class,&p_member_data_class::p_double_2> p_gl_double_const(pmd_gl_double);
+prop_member_data<bool,p_member_data_class,&p_member_data_class::p_bool,default_policy_tag,read_tag> p_gl_bool(pmd_gl_bool);
+prop_member_data<int *,p_member_data_class,&p_member_data_class::p_data_pointer,notification_boost_function> p_gl_pointer_ntf(pmd_gl_pointer);
+prop_member_data<test_enum,p_member_data_class,&p_member_data_class::p_data_enum> p_gl_enum(pmd_gl_enum);
+prop_member_data<test_pod,p_member_data_class,&p_member_data_class::p_data_pod,notification_boost_function> p_gl_pod_ntf(pmd_gl_pod);
+
+p_member_data_value_class::p_member_data_value_class() :
+  p_char(pmd_char),
+  p_int(pmd_int),
+  p_double_ntf(pmd_double),
+  p_bool(pmd_bool),
+  p_pointer(pmd_pointer),
+  p_enum_ntf(pmd_enum),
+  p_pod_const(pmd_pod)
+  {
+  }
+
+prop_member_data<char,p_member_data_class,&p_member_data_class::p_char> p_member_data_value_class::p_st_char(pmd_st_char);
+prop_member_data<int,p_member_data_class,&p_member_data_class::p_int> p_member_data_value_class::p_st_int(pmd_st_int);
+prop_member_data<double const,p_member_data_class,&p_member_data_class::p_data_double> p_member_data_value_class::p_st_double_const(pmd_st_double);
+prop_member_data<bool,p_member_data_class,&p_member_data_class::p_data_bool> p_member_data_value_class::p_st_bool(pmd_st_bool);
+prop_member_data<int *,p_member_data_class,&p_member_data_class::p_pointer_2> p_member_data_value_class::p_st_pointer(pmd_st_pointer);
+prop_member_data<test_enum,p_member_data_class,&p_member_data_class::p_enum,default_policy_tag,read_tag> p_member_data_value_class::p_st_enum_const(pmd_st_enum);
+prop_member_data<test_pod,p_member_data_class,&p_member_data_class::p_pod> p_member_data_value_class::p_st_pod(pmd_st_pod);
+
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+p_member_data_class pmd_gl_char;
+p_member_data_class pmd_gl_int;
+p_member_data_class pmd_gl_double;
+p_member_data_class pmd_gl_bool;
+p_member_data_class pmd_gl_pointer;
+p_member_data_class pmd_gl_enum;
+p_member_data_class pmd_gl_pod;
+
+p_member_data_class p_member_data_value_class::pmd_st_char;
+p_member_data_class p_member_data_value_class::pmd_st_int;
+p_member_data_class p_member_data_value_class::pmd_st_double;
+p_member_data_class p_member_data_value_class::pmd_st_bool;
+p_member_data_class p_member_data_value_class::pmd_st_pointer;
+p_member_data_class p_member_data_value_class::pmd_st_enum;
+p_member_data_class p_member_data_value_class::pmd_st_pod;
+  
+#include "test_global_data.cpp"
+#include "test_member_data_impl.cpp"
Modified: sandbox/property/libs/property/test/test_member_data_value.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_value.hpp	(original)
+++ sandbox/property/libs/property/test/test_member_data_value.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -15,7 +15,15 @@
 extern prop_member_data<bool,p_member_data_class,&p_member_data_class::p_bool,default_policy_tag,read_tag> p_gl_bool;
 extern prop_member_data<int *,p_member_data_class,&p_member_data_class::p_data_pointer,notification_boost_function> p_gl_pointer_ntf;
 extern prop_member_data<test_enum,p_member_data_class,&p_member_data_class::p_data_enum> p_gl_enum;
-extern prop_member_data<test_pod,p_member_data_class,&p_member_data_class::p_data_class,notification_boost_function> p_gl_class_ntf;
+extern prop_member_data<test_pod,p_member_data_class,&p_member_data_class::p_data_pod,notification_boost_function> p_gl_pod_ntf;
+
+extern p_member_data_class pmd_gl_char;
+extern p_member_data_class pmd_gl_int;
+extern p_member_data_class pmd_gl_double;
+extern p_member_data_class pmd_gl_bool;
+extern p_member_data_class pmd_gl_pointer;
+extern p_member_data_class pmd_gl_enum;
+extern p_member_data_class pmd_gl_pod;
 
 class p_member_data_value_class
   {
@@ -30,7 +38,7 @@
   prop_member_data<bool,p_member_data_class,&p_member_data_class::p_bool_2> p_bool;
   prop_member_data<int *,p_member_data_class,&p_member_data_class::p_pointer> p_pointer;
   prop_member_data<test_enum,p_member_data_class,&p_member_data_class::p_enum_2,notification_boost_function> p_enum_ntf;
-  prop_member_data<test_pod const,p_member_data_class,&p_member_data_class::p_class_2> p_class_const;
+  prop_member_data<test_pod const,p_member_data_class,&p_member_data_class::p_pod_2> p_pod_const;
   
   static prop_member_data<char,p_member_data_class,&p_member_data_class::p_char> p_st_char;
   static prop_member_data<int,p_member_data_class,&p_member_data_class::p_int> p_st_int;
@@ -38,7 +46,26 @@
   static prop_member_data<bool,p_member_data_class,&p_member_data_class::p_data_bool> p_st_bool;
   static prop_member_data<int *,p_member_data_class,&p_member_data_class::p_pointer_2> p_st_pointer;
   static prop_member_data<test_enum,p_member_data_class,&p_member_data_class::p_enum,default_policy_tag,read_tag> p_st_enum_const;
-  static prop_member_data<test_pod,p_member_data_class,&p_member_data_class::p_class> p_st_class;
+  static prop_member_data<test_pod,p_member_data_class,&p_member_data_class::p_pod> p_st_pod;
+  
+  private:
+  
+  p_member_data_class pmd_char;
+  p_member_data_class pmd_int;
+  p_member_data_class pmd_double;
+  p_member_data_class pmd_bool;
+  p_member_data_class pmd_pointer;
+  p_member_data_class pmd_enum;
+  p_member_data_class pmd_pod;
+
+  static p_member_data_class pmd_st_char;
+  static p_member_data_class pmd_st_int;
+  static p_member_data_class pmd_st_double;
+  static p_member_data_class pmd_st_bool;
+  static p_member_data_class pmd_st_pointer;
+  static p_member_data_class pmd_st_enum;
+  static p_member_data_class pmd_st_pod;
+
   };
   
 #endif
Deleted: sandbox/property/libs/property/test/test_member_data_value_bool.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_value_bool.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_value_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_value_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_value_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_value_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_value_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_value_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_value_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_value_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_value_pointer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_value_pointer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_data_value_user_defined.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_data_value_user_defined.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_data_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Added: sandbox/property/libs/property/test/test_member_function_impl.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_member_function_impl.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,233 @@
+#include "test_member_function_impl.hpp"
+
+p_member_function_impl_class::p_member_function_impl_class() :
+  st_char(' '),
+  st_int(0),
+  st_double(0.0),
+  st_bool(false),
+  st_pointer(0),
+  st_enum(e_test_default),
+  st_char_2(' '),
+  st_int_2(0),
+  st_double_2(0.0),
+  st_bool_2(false),
+  st_pointer_2(0),
+  st_enum_2(e_test_default),
+  st_char_3(' '),
+  st_int_3(0),
+  st_double_3(0.0),
+  st_bool_3(false),
+  st_pointer_3(0),
+  st_enum_3(e_test_default)
+  {
+  }
+  
+char p_member_function_impl_class::p_function_char_read() 
+  {
+  return st_char;
+  }
+  
+void p_member_function_impl_class::p_function_char_write(char data)
+  {
+  st_char = data;
+  }
+  
+int p_member_function_impl_class::p_function_int_read() 
+  {
+  return st_int;
+  }
+  
+void p_member_function_impl_class::p_function_int_write(int data) 
+  {
+  st_int = data;
+  }
+  
+double p_member_function_impl_class::p_function_double_read() 
+  {
+  return st_double;
+  }
+  
+void p_member_function_impl_class::p_function_double_write(double data) 
+  {
+  st_double = data;
+  }
+  
+bool p_member_function_impl_class::p_function_bool_read() 
+  {
+  return st_bool;
+  }
+  
+void p_member_function_impl_class::p_function_bool_write(bool data) 
+  {
+  st_bool = data;
+  }
+  
+int * p_member_function_impl_class::p_function_pointer_read() 
+  {
+  return st_pointer;
+  }
+  
+void p_member_function_impl_class::p_function_pointer_write(int * data) 
+  {
+  st_pointer = data;
+  }
+  
+test_enum p_member_function_impl_class::p_function_enum_read() 
+  {
+  return st_enum;
+  }
+  
+void p_member_function_impl_class::p_function_enum_write(test_enum data) 
+  {
+  st_enum = data;
+  }
+  
+test_pod p_member_function_impl_class::p_function_pod_read() 
+  {
+  return st_pod;
+  }
+  
+void p_member_function_impl_class::p_function_pod_write(test_pod data) 
+  {
+  st_pod = data;
+  }
+  
+char p_member_function_impl_class::p_char_read() 
+  {
+  return st_char_3;
+  }
+  
+void p_member_function_impl_class::p_char_write(char data) 
+  {
+  st_char_3 = data;
+  }
+  
+int p_member_function_impl_class::p_int_read() 
+  {
+  return st_int_3;
+  }
+  
+void p_member_function_impl_class::p_int_write(int data) 
+  {
+  st_int_3 = data;
+  }
+  
+double p_member_function_impl_class::p_double_read() 
+  {
+  return st_double_3;
+  }
+  
+void p_member_function_impl_class::p_double_write(double data) 
+  {
+  st_double_3 = data;
+  }
+  
+bool p_member_function_impl_class::p_bool_read() 
+  {
+  return st_bool_3;
+  }
+  
+void p_member_function_impl_class::p_bool_write(bool data) 
+  {
+  st_bool_3 = data;
+  }
+  
+int * p_member_function_impl_class::p_pointer_read() 
+  {
+  return st_pointer_3;
+  }
+  
+void p_member_function_impl_class::p_pointer_write(int * data) 
+  {
+  st_pointer_3 = data;
+  }
+  
+test_enum p_member_function_impl_class::p_enum_read() 
+  {
+  return st_enum_3;
+  }
+  
+void p_member_function_impl_class::p_enum_write(test_enum data) 
+  {
+  st_enum_3 = data;
+  }
+  
+test_pod p_member_function_impl_class::p_pod_read() 
+  {
+  return st_pod_3;
+  }
+  
+void p_member_function_impl_class::p_pod_write(test_pod data) 
+  {
+  st_pod_3 = data;
+  }
+  
+char p_member_function_impl_class::p_char_read_2() 
+  {
+  return st_char_2;
+  }
+  
+void p_member_function_impl_class::p_char_write_2(char data) 
+  {
+  st_char_2 = data;
+  }
+  
+int p_member_function_impl_class::p_int_read_2() 
+  {
+  return st_int_2;
+  }
+  
+void p_member_function_impl_class::p_int_write_2(int data) 
+  {
+  st_int_2 = data;
+  }
+  
+double p_member_function_impl_class::p_double_read_2() 
+  {
+  return st_double_2;
+  }
+  
+void p_member_function_impl_class::p_double_write_2(double data) 
+  {
+  st_double_2 = data;
+  }
+  
+bool p_member_function_impl_class::p_bool_read_2() 
+  {
+  return st_bool_2;
+  }
+  
+void p_member_function_impl_class::p_bool_write_2(bool data) 
+  {
+  st_bool_2 = data;
+  }
+  
+int * p_member_function_impl_class::p_pointer_read_2() 
+  {
+  return st_pointer_2;
+  }
+  
+void p_member_function_impl_class::p_pointer_write_2(int * data) 
+  {
+  st_pointer_2 = data;
+  }
+  
+test_enum p_member_function_impl_class::p_enum_read_2() 
+  {
+  return st_enum_2;
+  }
+  
+void p_member_function_impl_class::p_enum_write_2(test_enum data) 
+  {
+  st_enum_2 = data;
+  }
+  
+test_pod p_member_function_impl_class::p_pod_read_2() 
+  {
+  return st_pod_2;
+  }
+  
+void p_member_function_impl_class::p_pod_write_2(test_pod data) 
+  {
+  st_pod_2 = data;
+  }
Modified: sandbox/property/libs/property/test/test_member_function_impl.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_impl.hpp	(original)
+++ sandbox/property/libs/property/test/test_member_function_impl.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -23,8 +23,8 @@
   void p_function_pointer_write(int *);
   test_enum p_function_enum_read();
   void p_function_enum_write(test_enum);
-  test_pod p_function_class_read();
-  void p_function_class_write(test_pod);
+  test_pod p_function_pod_read();
+  void p_function_pod_write(test_pod);
 
   char p_char_read();
   void p_char_write(char);
@@ -38,8 +38,8 @@
   void p_pointer_write(int *);
   test_enum p_enum_read();
   void p_enum_write(test_enum);
-  test_pod p_class_read();
-  void p_class_write(test_pod);
+  test_pod p_pod_read();
+  void p_pod_write(test_pod);
   
   char p_char_read_2();
   void p_char_write_2(char);
@@ -53,8 +53,8 @@
   void p_pointer_write_2(int *);
   test_enum p_enum_read_2();
   void p_enum_write_2(test_enum);
-  test_pod p_class_read_2();
-  void p_class_write_2(test_pod);
+  test_pod p_pod_read_2();
+  void p_pod_write_2(test_pod);
   
   char st_char;
   int st_int;
Added: sandbox/property/libs/property/test/test_member_function_value.cpp
==============================================================================
--- (empty file)
+++ sandbox/property/libs/property/test/test_member_function_value.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -0,0 +1,56 @@
+#include <boost/detail/lightweight_test.hpp>
+#include "test_member_function_value.hpp"
+#include "test_global_data.hpp"
+
+prop_member_function<char,p_member_function_impl_class,&p_member_function_impl_class::p_char_read,&p_member_function_impl_class::p_char_write> p_gl_char(pmf_gl_char);
+prop_member_function<int,p_member_function_impl_class,&p_member_function_impl_class::p_int_read_2,&p_member_function_impl_class::p_int_write_2> p_gl_int(pmf_gl_int);
+prop_read_member_function<double,p_member_function_impl_class,&p_member_function_impl_class::p_function_double_read> p_gl_double_const(pmf_gl_double);
+prop_write_member_function<bool,p_member_function_impl_class,&p_member_function_impl_class::p_function_bool_write> p_gl_bool_write(pmf_gl_bool);
+prop_member_function<int *,p_member_function_impl_class,&p_member_function_impl_class::p_function_pointer_read,&p_member_function_impl_class::p_function_pointer_write> p_gl_pointer(pmf_gl_pointer);
+prop_read_member_function<test_enum,p_member_function_impl_class,&p_member_function_impl_class::p_enum_read> p_gl_enum_const(pmf_gl_enum);
+prop_read_member_function<test_pod,p_member_function_impl_class,&p_member_function_impl_class::p_pod_read_2> p_gl_pod_const(pmf_gl_pod);
+
+p_member_function_value_class::p_member_function_value_class() :
+  p_char(pmf_char),
+  p_int_const(pmf_int),
+  p_double(pmf_double),
+  p_bool_const(pmf_bool),
+  p_pointer_const(pmf_pointer),
+  p_enum(pmf_enum),
+  p_pod_const(pmf_pod)
+  {
+  }
+
+prop_write_member_function<char,p_member_function_impl_class,&p_member_function_impl_class::p_char_write_2> p_member_function_value_class::p_st_char(pmf_st_char);
+prop_member_function<int,p_member_function_impl_class,&p_member_function_impl_class::p_function_int_read,&p_member_function_impl_class::p_function_int_write> p_member_function_value_class::p_st_int(pmf_st_int);
+prop_member_function<double,p_member_function_impl_class,&p_member_function_impl_class::p_double_read_2,&p_member_function_impl_class::p_double_write_2> p_member_function_value_class::p_st_double(pmf_st_double);
+prop_member_function<bool,p_member_function_impl_class,&p_member_function_impl_class::p_bool_read_2,&p_member_function_impl_class::p_bool_write_2> p_member_function_value_class::p_st_bool(pmf_st_bool);
+prop_member_function<int *,p_member_function_impl_class,&p_member_function_impl_class::p_pointer_read_2,&p_member_function_impl_class::p_pointer_write_2> p_member_function_value_class::p_st_pointer(pmf_st_pointer);
+prop_read_member_function<test_enum,p_member_function_impl_class,&p_member_function_impl_class::p_function_enum_read> p_member_function_value_class::p_st_enum_const(pmf_st_enum);
+prop_write_member_function<test_pod,p_member_function_impl_class,&p_member_function_impl_class::p_pod_write> p_member_function_value_class::p_st_pod_write(pmf_st_pod);
+
+int main()
+  {
+  
+  return boost::report_errors();
+  
+  }
+
+p_member_function_impl_class pmf_gl_char;
+p_member_function_impl_class pmf_gl_int;
+p_member_function_impl_class pmf_gl_double;
+p_member_function_impl_class pmf_gl_bool;
+p_member_function_impl_class pmf_gl_pointer;
+p_member_function_impl_class pmf_gl_enum;
+p_member_function_impl_class pmf_gl_pod;
+
+p_member_function_impl_class p_member_function_value_class::pmf_st_char;
+p_member_function_impl_class p_member_function_value_class::pmf_st_int;
+p_member_function_impl_class p_member_function_value_class::pmf_st_double;
+p_member_function_impl_class p_member_function_value_class::pmf_st_bool;
+p_member_function_impl_class p_member_function_value_class::pmf_st_pointer;
+p_member_function_impl_class p_member_function_value_class::pmf_st_enum;
+p_member_function_impl_class p_member_function_value_class::pmf_st_pod;
+  
+#include "test_global_data.cpp"
+#include "test_member_function_impl.cpp"
Modified: sandbox/property/libs/property/test/test_member_function_value.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_value.hpp	(original)
+++ sandbox/property/libs/property/test/test_member_function_value.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -14,7 +14,15 @@
 extern prop_write_member_function<bool,p_member_function_impl_class,&p_member_function_impl_class::p_function_bool_write> p_gl_bool_write;
 extern prop_member_function<int *,p_member_function_impl_class,&p_member_function_impl_class::p_function_pointer_read,&p_member_function_impl_class::p_function_pointer_write> p_gl_pointer;
 extern prop_read_member_function<test_enum,p_member_function_impl_class,&p_member_function_impl_class::p_enum_read> p_gl_enum_const;
-extern prop_read_member_function<test_pod,p_member_function_impl_class,&p_member_function_impl_class::p_class_read_2> p_gl_class_const;
+extern prop_read_member_function<test_pod,p_member_function_impl_class,&p_member_function_impl_class::p_pod_read_2> p_gl_pod_const;
+
+extern p_member_function_impl_class pmf_gl_char;
+extern p_member_function_impl_class pmf_gl_int;
+extern p_member_function_impl_class pmf_gl_double;
+extern p_member_function_impl_class pmf_gl_bool;
+extern p_member_function_impl_class pmf_gl_pointer;
+extern p_member_function_impl_class pmf_gl_enum;
+extern p_member_function_impl_class pmf_gl_pod;
 
 class p_member_function_value_class
   {
@@ -29,16 +37,34 @@
   prop_read_member_function<bool,p_member_function_impl_class,&p_member_function_impl_class::p_bool_read> p_bool_const;
   prop_read_member_function<int *,p_member_function_impl_class,&p_member_function_impl_class::p_pointer_read> p_pointer_const;
   prop_member_function<test_enum,p_member_function_impl_class,&p_member_function_impl_class::p_enum_read_2,&p_member_function_impl_class::p_enum_write_2> p_enum;
-  prop_read_member_function<test_pod,p_member_function_impl_class,&p_member_function_impl_class::p_function_class_read> p_class_const;
+  prop_read_member_function<test_pod,p_member_function_impl_class,&p_member_function_impl_class::p_function_pod_read> p_pod_const;
 
   static prop_write_member_function<char,p_member_function_impl_class,&p_member_function_impl_class::p_char_write_2> p_st_char;
   static prop_member_function<int,p_member_function_impl_class,&p_member_function_impl_class::p_function_int_read,&p_member_function_impl_class::p_function_int_write> p_st_int;
   static prop_member_function<double,p_member_function_impl_class,&p_member_function_impl_class::p_double_read_2,&p_member_function_impl_class::p_double_write_2> p_st_double;
   static prop_member_function<bool,p_member_function_impl_class,&p_member_function_impl_class::p_bool_read_2,&p_member_function_impl_class::p_bool_write_2> p_st_bool;
-  static prop_read_member_function<int *,p_member_function_impl_class,&p_member_function_impl_class::p_pointer_read_2> p_st_pointer_const;
+  static prop_member_function<int *,p_member_function_impl_class,&p_member_function_impl_class::p_pointer_read_2,&p_member_function_impl_class::p_pointer_write_2> p_st_pointer;
   static prop_read_member_function<test_enum,p_member_function_impl_class,&p_member_function_impl_class::p_function_enum_read> p_st_enum_const;
-  static prop_write_member_function<test_pod,p_member_function_impl_class,&p_member_function_impl_class::p_class_write> p_st_class_write;
+  static prop_write_member_function<test_pod,p_member_function_impl_class,&p_member_function_impl_class::p_pod_write> p_st_pod_write;
+  
+  private:
   
+  p_member_function_impl_class pmf_char;
+  p_member_function_impl_class pmf_int;
+  p_member_function_impl_class pmf_double;
+  p_member_function_impl_class pmf_bool;
+  p_member_function_impl_class pmf_pointer;
+  p_member_function_impl_class pmf_enum;
+  p_member_function_impl_class pmf_pod;
+
+  static p_member_function_impl_class pmf_st_char;
+  static p_member_function_impl_class pmf_st_int;
+  static p_member_function_impl_class pmf_st_double;
+  static p_member_function_impl_class pmf_st_bool;
+  static p_member_function_impl_class pmf_st_pointer;
+  static p_member_function_impl_class pmf_st_enum;
+  static p_member_function_impl_class pmf_st_pod;
+
   };
   
 #endif
Deleted: sandbox/property/libs/property/test/test_member_function_value_bool.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_value_bool.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_function_value_character.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_value_character.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_function_value_enum.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_value_enum.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_function_value_floating_point.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_value_floating_point.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_function_value_integer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_value_integer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_function_value_pointer.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_value_pointer.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Deleted: sandbox/property/libs/property/test/test_member_function_value_user_defined.cpp
==============================================================================
--- sandbox/property/libs/property/test/test_member_function_value_user_defined.cpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
+++ (empty file)
@@ -1,9 +0,0 @@
-#include <boost/detail/lightweight_test.hpp>
-#include "test_member_function_value.hpp"
-
-int main()
-  {
-  
-  return boost::report_errors();
-  
-  }
Modified: sandbox/property/libs/property/test/test_pod.hpp
==============================================================================
--- sandbox/property/libs/property/test/test_pod.hpp	(original)
+++ sandbox/property/libs/property/test/test_pod.hpp	2011-05-25 10:49:31 EDT (Wed, 25 May 2011)
@@ -3,6 +3,7 @@
 
 struct test_pod
   {
+  
   test_pod() :
     a_char(' '),
     an_int(0),
@@ -10,6 +11,14 @@
     a_bool(false)
     {
     }
+    
+  test_pod(char c,int i,double d,bool b) :
+    a_char(c),
+    an_int(i),
+    a_double(d),
+    a_bool(b)
+    {
+    }
   
   char a_char;
   int an_int;