$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r52178 - in sandbox/pinhole: boost/pinhole libs/pinhole/build libs/pinhole/src libs/pinhole/test
From: jmcintyre_at_[hidden]
Date: 2009-04-04 19:08:36
Author: jared
Date: 2009-04-04 19:08:35 EDT (Sat, 04 Apr 2009)
New Revision: 52178
URL: http://svn.boost.org/trac/boost/changeset/52178
Log:
Pinhole is now header only.
Removed:
   sandbox/pinhole/libs/pinhole/build/
   sandbox/pinhole/libs/pinhole/src/
Text files modified: 
   sandbox/pinhole/boost/pinhole/main.cpp                     |     4 ---                                     
   sandbox/pinhole/boost/pinhole/property_manager.hpp         |    44 +++++++++++++++++++-------------------- 
   sandbox/pinhole/libs/pinhole/test/Jamfile.v2               |     1                                         
   sandbox/pinhole/libs/pinhole/test/test_property_groups.cpp |     2                                         
   4 files changed, 22 insertions(+), 29 deletions(-)
Modified: sandbox/pinhole/boost/pinhole/main.cpp
==============================================================================
--- sandbox/pinhole/boost/pinhole/main.cpp	(original)
+++ sandbox/pinhole/boost/pinhole/main.cpp	2009-04-04 19:08:35 EDT (Sat, 04 Apr 2009)
@@ -14,10 +14,6 @@
 using namespace std;
 using namespace boost;
 using namespace boost::pinhole;
-        
-// I can hide these two line if I don't do everything in headers
-shared_ptr<property_manager> property_manager::m_instance(new property_manager);
-event_source* event_source::m_instance = 0;
 
 class SubGroup : public property_group
 {
Modified: sandbox/pinhole/boost/pinhole/property_manager.hpp
==============================================================================
--- sandbox/pinhole/boost/pinhole/property_manager.hpp	(original)
+++ sandbox/pinhole/boost/pinhole/property_manager.hpp	2009-04-04 19:08:35 EDT (Sat, 04 Apr 2009)
@@ -1,6 +1,6 @@
 // Pinhole property_manager.hpp file
 //
-// Copyright Jared McIntyre 2007.
+// Copyright Jared McIntyre 2007-2009.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
@@ -36,12 +36,14 @@
     public :
         static event_source* instance()
         {
-            if ( !m_instance )  // is it the first call?
+            static boost::shared_ptr<boost::pinhole::event_source> instance;
+            
+            if ( !instance )  // is it the first call?
             {  
-                m_instance.reset( new event_source ); // create sole instance
+                instance.reset( new event_source ); // create sole instance
             }
             
-            return m_instance.get(); // address of sole instance
+            return instance.get(); // address of sole instance
         }
         
         #if defined(BOOST_MSVC)
@@ -64,15 +66,6 @@
         }
         
     private :
-
-        #if defined(BOOST_MSVC)
-            #pragma warning(push)
-            #pragma warning( disable: 4251 )
-        #endif
-        static boost::shared_ptr<event_source> m_instance;
-        #if defined(BOOST_MSVC)
-            #pragma warning(pop)
-        #endif
         
         event_source(){};
         
@@ -96,25 +89,22 @@
         
         static instance_type instance()
         {
-            if ( !m_instance )  // is it the first call?
+            if ( !exists() )  // is it the first call?
             {  
-                m_instance.reset( new property_manager, property_manager::deleter ); // create sole instance
+                internal_instance().reset( new property_manager, property_manager::deleter ); // create sole instance
             }
             
-            return m_instance; // address of sole instance
+            return internal_instance(); // address of sole instance
         }
         
         static bool exists()
         {
-            return (m_instance != NULL);
+            return (internal_instance() != NULL);
         }
         
         static void delete_instance()
         {
-            if( m_instance )
-            {
-                m_instance.reset();
-            }
+            internal_instance().reset();
         }
         
     protected:
@@ -227,6 +217,16 @@
         }
 
     protected:
+        
+        /** Provides direct access to the shared_ptr that owns the property_manager singleton. */
+        static boost::shared_ptr<boost::pinhole::property_manager>& internal_instance()
+        {
+            static boost::shared_ptr<boost::pinhole::property_manager>
+            instance(new boost::pinhole::property_manager);
+            
+            return instance;
+        }
+        
         /**
          * Register's group with the property_manager.
          */
@@ -276,12 +276,10 @@
             }
         }
         
-    protected:
         #if defined(BOOST_MSVC)
             #pragma warning(push)
             #pragma warning( disable: 4251 )
         #endif
-            static std::tr1::shared_ptr<property_manager> m_instance;
             category_to_property_group_map m_property_group_collection;
             category_collection m_category_collection;
         #if defined(BOOST_MSVC)
Modified: sandbox/pinhole/libs/pinhole/test/Jamfile.v2
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/Jamfile.v2	(original)
+++ sandbox/pinhole/libs/pinhole/test/Jamfile.v2	2009-04-04 19:08:35 EDT (Sat, 04 Apr 2009)
@@ -15,7 +15,6 @@
     : requirements
       <library>/boost/test//boost_unit_test_framework/<link>static
       <library>/boost/signals//boost_signals/<link>static
-      <library>../build//boost_pinhole/<link>static
       <define>BOOST_ALL_NO_LIB=1
     ;
 {
Modified: sandbox/pinhole/libs/pinhole/test/test_property_groups.cpp
==============================================================================
--- sandbox/pinhole/libs/pinhole/test/test_property_groups.cpp	(original)
+++ sandbox/pinhole/libs/pinhole/test/test_property_groups.cpp	2009-04-04 19:08:35 EDT (Sat, 04 Apr 2009)
@@ -113,7 +113,7 @@
 public:
     TestPropertyManager() : property_manager()
     {
-        property_manager::m_instance.reset( this );
+        property_manager::internal_instance().reset( this );
             
         uiChildCount                       = 0;
         uiRegisterPropertyGroupCallCount   = 0;