$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r52560 - in sandbox/memory: boost boost/memory boost/memory/container libs/memory/examples/pool libs/memory/examples/simplest
From: xushiweizh_at_[hidden]
Date: 2009-04-23 07:29:04
Author: xushiwei
Date: 2009-04-23 07:29:02 EDT (Thu, 23 Apr 2009)
New Revision: 52560
URL: http://svn.boost.org/trac/boost/changeset/52560
Log:
1. add region_alloc::get_alloc, fixed_alloc::get_alloc
2. remove constructor: region_alloc(region_alloc&);
Text files modified: 
   sandbox/memory/boost/memory.hpp                                  |    20 -------------------                     
   sandbox/memory/boost/memory/basic.hpp                            |    38 ++++++++++++++++++++++++++++-------     
   sandbox/memory/boost/memory/container/dcl_list.hpp               |     4 +++                                     
   sandbox/memory/boost/memory/fixed_alloc.hpp                      |    42 ++++++++++++++++++++++----------------- 
   sandbox/memory/boost/memory/region_alloc.hpp                     |    24 ++++++++--------------                  
   sandbox/memory/libs/memory/examples/pool/simple_examples.cpp     |     2 +                                       
   sandbox/memory/libs/memory/examples/simplest/simple_examples.cpp |     4 +-                                      
   7 files changed, 71 insertions(+), 63 deletions(-)
Modified: sandbox/memory/boost/memory.hpp
==============================================================================
--- sandbox/memory/boost/memory.hpp	(original)
+++ sandbox/memory/boost/memory.hpp	2009-04-23 07:29:02 EDT (Thu, 23 Apr 2009)
@@ -58,26 +58,6 @@
 NS_BOOST_MEMORY_END
 
 // -------------------------------------------------------------------------
-// function swap_object
-
-NS_BOOST_MEMORY_BEGIN
-
-inline void swap(void* a, void* b, size_t cb)
-{
-	void* t = _alloca(cb);
-	memcpy(t, a, cb);
-	memcpy(a, b, cb);
-	memcpy(b, t, cb);
-}
-
-template <class Type>
-void swap_object(Type* a, Type* b) {
-	swap(a, b, sizeof(Type));
-}
-
-NS_BOOST_MEMORY_END
-
-// -------------------------------------------------------------------------
 // class defragment
 
 NS_BOOST_MEMORY_BEGIN
Modified: sandbox/memory/boost/memory/basic.hpp
==============================================================================
--- sandbox/memory/boost/memory/basic.hpp	(original)
+++ sandbox/memory/boost/memory/basic.hpp	2009-04-23 07:29:02 EDT (Thu, 23 Apr 2009)
@@ -97,7 +97,7 @@
 
 NS_BOOST_MEMORY_BEGIN
 
-class _unmanaged
+class unmanaged_
 {
 public:
         template <class Type>
@@ -108,13 +108,13 @@
 };
 
 template <class AllocT>
-class _managed
+class managed_
 {
 private:
         AllocT& m_alloc;
 
 public:
-	explicit _managed(AllocT& alloc) : m_alloc(alloc) {}
+	explicit managed_(AllocT& alloc) : m_alloc(alloc) {}
 
         template <class Type>
         __forceinline Type* BOOST_MEMORY_CALL operator->*(Type* p) const
@@ -125,16 +125,16 @@
 };
 
 template <class AllocT>
-__forceinline _unmanaged BOOST_MEMORY_CALL _get_managed(AllocT& alloc, int fnZero)
+__forceinline unmanaged_ BOOST_MEMORY_CALL get_managed__(AllocT& alloc, int fnZero)
 {
-	return _unmanaged();
+	return unmanaged_();
 }
 
 template <class AllocT>
 __forceinline 
-_managed<AllocT> BOOST_MEMORY_CALL _get_managed(AllocT& alloc, destructor_t fn)
+managed_<AllocT> BOOST_MEMORY_CALL get_managed__(AllocT& alloc, destructor_t fn)
 {
-	return _managed<AllocT>(alloc);
+	return managed_<AllocT>(alloc);
 }
 
 NS_BOOST_MEMORY_END
@@ -159,7 +159,7 @@
         ::new((alloc).unmanaged_alloc(sizeof(Type), BOOST_MEMORY_DESTRUCTOR(Type))) Type
 
 #define BOOST_MEMORY_GET_MANAGED_(alloc, Type)			\
-	NS_BOOST_MEMORY::_get_managed(alloc, BOOST_MEMORY_DESTRUCTOR(Type))
+	NS_BOOST_MEMORY::get_managed__(alloc, BOOST_MEMORY_DESTRUCTOR(Type))
 
 #define BOOST_MEMORY_NEW(alloc, Type)					\
         BOOST_MEMORY_GET_MANAGED_(alloc, Type) ->* BOOST_MEMORY_UNMANAGED_ALLOC_(alloc, Type)
@@ -170,6 +170,7 @@
         ::new((alloc).allocate(sizeof(Type))) Type
 
 // =========================================================================
+// function enableMemoryLeakCheck
 
 NS_BOOST_MEMORY_BEGIN
 
@@ -182,6 +183,27 @@
 
 NS_BOOST_MEMORY_END
 
+// -------------------------------------------------------------------------
+// function swap_object
+
+NS_BOOST_MEMORY_BEGIN
+
+inline void swap(void* a, void* b, size_t cb)
+{
+	void* t = _alloca(cb);
+	memcpy(t, a, cb);
+	memcpy(a, b, cb);
+	memcpy(b, t, cb);
+}
+
+template <class Type>
+void swap_object(Type* a, Type* b)
+{
+	swap(a, b, sizeof(Type));
+}
+
+NS_BOOST_MEMORY_END
+
 // =========================================================================
 // $Log: basic.hpp,v $
 
Modified: sandbox/memory/boost/memory/container/dcl_list.hpp
==============================================================================
--- sandbox/memory/boost/memory/container/dcl_list.hpp	(original)
+++ sandbox/memory/boost/memory/container/dcl_list.hpp	2009-04-23 07:29:02 EDT (Thu, 23 Apr 2009)
@@ -16,6 +16,10 @@
 #include "../basic.hpp"
 #endif
 
+#ifndef _ITERATOR_
+#include <iterator>
+#endif
+
 NS_BOOST_MEMORY_BEGIN
 
 // -------------------------------------------------------------------------
Modified: sandbox/memory/boost/memory/fixed_alloc.hpp
==============================================================================
--- sandbox/memory/boost/memory/fixed_alloc.hpp	(original)
+++ sandbox/memory/boost/memory/fixed_alloc.hpp	2009-04-23 07:29:02 EDT (Thu, 23 Apr 2009)
@@ -40,6 +40,9 @@
 private:
         typedef typename PolicyT::alloc_type AllocT;
 
+	fixed_alloc(const fixed_alloc&);
+	void operator=(const fixed_alloc&);
+
 public:
         enum { MemBlockSize = PolicyT::MemBlockBytes - AllocT::Padding };
 
@@ -99,22 +102,37 @@
         {
                 init_(cbElem);
         }
-
         fixed_alloc(AllocT alloc, size_type cbElem)
                 : m_alloc(alloc)
         {
                 init_(cbElem);
         }
 
-	fixed_alloc(fixed_alloc& owner, size_type cbElem)
-		: m_alloc(owner.m_alloc)
+	~fixed_alloc()
         {
-		init_(cbElem);
+		clear();
         }
 
-	~fixed_alloc()
+	alloc_type BOOST_MEMORY_CALL get_alloc() const
         {
-		clear();
+		return m_alloc;
+	}
+
+	void BOOST_MEMORY_CALL swap(fixed_alloc& o)
+	{
+		swap_object(this, &o);
+	}
+
+	void BOOST_MEMORY_CALL clear()
+	{
+		MemBlock* nextBlk;
+		for (MemBlock* blk = m_blks.first(); !m_blks.done(blk); blk = nextBlk)
+		{
+			nextBlk = blk->next();
+			m_alloc.deallocate(blk);
+		}
+		m_blks.clear();
+		m_freelist.clear();
         }
 
 private:
@@ -155,18 +173,6 @@
         }
 
 public:
-	void BOOST_MEMORY_CALL clear()
-	{
-		MemBlock* nextBlk;
-		for (MemBlock* blk = m_blks.first(); !m_blks.done(blk); blk = nextBlk)
-		{
-			nextBlk = blk->next();
-			m_alloc.deallocate(blk);
-		}
-		m_blks.clear();
-		m_freelist.clear();
-	}
-
         __forceinline void* BOOST_MEMORY_CALL allocate()
         {
                 if (m_freelist.empty())
Modified: sandbox/memory/boost/memory/region_alloc.hpp
==============================================================================
--- sandbox/memory/boost/memory/region_alloc.hpp	(original)
+++ sandbox/memory/boost/memory/region_alloc.hpp	2009-04-23 07:29:02 EDT (Thu, 23 Apr 2009)
@@ -16,10 +16,6 @@
 #include "basic.hpp"
 #endif
 
-#if !defined(_GLIBCXX_ALGORITHM) && !defined(_ALGORITHM)
-#include <algorithm> // std::swap
-#endif
-
 NS_BOOST_MEMORY_BEGIN
 
 // -------------------------------------------------------------------------
@@ -31,6 +27,9 @@
 private:
         typedef typename PolicyT::alloc_type AllocT;
 
+	region_alloc(const region_alloc&);
+	const region_alloc& operator=(const region_alloc&);
+
 public:
         enum { MemBlockSize = PolicyT::MemBlockBytes - AllocT::Padding };
 
@@ -59,8 +58,6 @@
         DestroyNode* m_destroyChain;
 
 private:
-	const region_alloc& operator=(const region_alloc&);
-
         __forceinline MemBlock* BOOST_MEMORY_CALL chainHeader_() const
         {
                 return (MemBlock*)(m_begin - HeaderSize);
@@ -83,23 +80,20 @@
         {
                 init_();
         }
-	explicit region_alloc(region_alloc& owner)
-		: m_alloc(owner.m_alloc), m_destroyChain(NULL)
-	{
-		init_();
-	}
 
         ~region_alloc()
         {
                 clear();
         }
 
+	alloc_type BOOST_MEMORY_CALL get_alloc() const
+	{
+		return m_alloc;
+	}
+
         void BOOST_MEMORY_CALL swap(region_alloc& o)
         {
-		std::swap(m_begin, o.m_begin);
-		std::swap(m_end, o.m_end);
-		std::swap(m_destroyChain, o.m_destroyChain);
-		m_alloc.swap(o.m_alloc);
+		swap_object(this, &o);
         }
 
         void BOOST_MEMORY_CALL clear()
Modified: sandbox/memory/libs/memory/examples/pool/simple_examples.cpp
==============================================================================
--- sandbox/memory/libs/memory/examples/pool/simple_examples.cpp	(original)
+++ sandbox/memory/libs/memory/examples/pool/simple_examples.cpp	2009-04-23 07:29:02 EDT (Thu, 23 Apr 2009)
@@ -21,6 +21,7 @@
 {
         int i;
         boost::memory::pool alloc(sizeof(int));
+	boost::memory::pool alloc2(sizeof(double));
 
         void* p[3000];
         for (i = 0; i < countof(p); ++i)
@@ -48,6 +49,7 @@
         int i;
         boost::memory::block_pool recycle;
         boost::memory::scoped_pool alloc(recycle, sizeof(int));
+	boost::memory::scoped_pool alloc2(alloc.get_alloc(), sizeof(double));
 
         void* p[3000];
         for (i = 0; i < countof(p); ++i)
Modified: sandbox/memory/libs/memory/examples/simplest/simple_examples.cpp
==============================================================================
--- sandbox/memory/libs/memory/examples/simplest/simple_examples.cpp	(original)
+++ sandbox/memory/libs/memory/examples/simplest/simple_examples.cpp	2009-04-23 07:29:02 EDT (Thu, 23 Apr 2009)
@@ -40,7 +40,7 @@
         int* intBuf = BOOST_MEMORY_ALLOC(alloc, int);
         int* intArrayBuf = BOOST_MEMORY_ALLOC_ARRAY(alloc, int, 100);
         
-	NS_BOOST_MEMORY::scoped_alloc* suballoc = BOOST_MEMORY_NEW(alloc, NS_BOOST_MEMORY::scoped_alloc)(alloc);
+	NS_BOOST_MEMORY::scoped_alloc* suballoc = BOOST_MEMORY_NEW(alloc, NS_BOOST_MEMORY::scoped_alloc)(alloc.get_alloc());
 
         int* e = BOOST_MEMORY_NEW(*suballoc, int);
 }
@@ -48,7 +48,7 @@
 void testTlsScopedAlloc()
 {
         NS_BOOST_MEMORY::scoped_alloc alloc;
-	// same as: NS_BOOST_MEMORY::scoped_alloc(boost::tls_block_pool::instance());
+	// same as: NS_BOOST_MEMORY::scoped_alloc(boost::memory::tls_block_pool::instance());
         
         int* intObj = BOOST_MEMORY_NEW(alloc, int);
         int* intObjWithArg = BOOST_MEMORY_NEW(alloc, int)(10);