You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2006/06/02 02:36:44 UTC
svn commit: r411007 - in /incubator/stdcxx/trunk/tests:
include/rw_allocator.h src/allocator.cpp
Author: sebor
Date: Thu Jun 1 17:36:44 2006
New Revision: 411007
URL: http://svn.apache.org/viewvc?rev=411007&view=rev
Log:
2006-06-01 Martin Sebor <se...@roguewave.com>
* rw_allocator.h (reset_call_counters, func_name): New functions.
* allocator.cpp (reset_call_counters, func_name): Implemented.
(instance): Made sure global instance always exists.
Modified:
incubator/stdcxx/trunk/tests/include/rw_allocator.h
incubator/stdcxx/trunk/tests/src/allocator.cpp
Modified: incubator/stdcxx/trunk/tests/include/rw_allocator.h
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/include/rw_allocator.h?rev=411007&r1=411006&r2=411007&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/include/rw_allocator.h (original)
+++ incubator/stdcxx/trunk/tests/include/rw_allocator.h Thu Jun 1 17:36:44 2006
@@ -99,6 +99,12 @@
// returns a unique id of this allocator object
int id () const { return id_; }
+ // resets the n_calls_ array to all zeros
+ void reset_call_counters ();
+
+ // returns the name of the member function
+ static const char* func_name (MemFun);
+
_RWSTD_SIZE_T max_bytes_; // memory pool size in bytes
_RWSTD_SIZE_T max_blocks_; // memory pool size in blocks
Modified: incubator/stdcxx/trunk/tests/src/allocator.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/src/allocator.cpp?rev=411007&r1=411006&r2=411007&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/src/allocator.cpp (original)
+++ incubator/stdcxx/trunk/tests/src/allocator.cpp Thu Jun 1 17:36:44 2006
@@ -38,19 +38,19 @@
/**************************************************************************/
static const char* const
-_rw_funnames[] = {
- "UserAlloc::UserAlloc ()",
- "UserAlloc::UserAlloc (const UserAlloc&)",
- "UserAlloc::UserAlloc (const UserAlloc<U>&)",
- "UserAlloc::~UserAlloc ()",
- "UserAlloc::operator= (const UserAlloc&)",
- "UserAlloc::operator=<U>(const UserAlloc<U>&)",
- "UserAlloc::allocate (size_type, void*)",
- "UserAlloc::deallocate (pointer, size_type)",
- "UserAlloc::construct (pointer, const_reference)",
- "UserAlloc::destroy (pointer)",
- "UserAlloc::address (reference) const",
- "UserAlloc::max_size () const"
+_rw_func_names[] = {
+ "UserAlloc ()",
+ "UserAlloc (const UserAlloc&)",
+ "UserAlloc (const UserAlloc<U>&)",
+ "~UserAlloc ()",
+ "operator= (const UserAlloc&)",
+ "operator=<U>(const UserAlloc<U>&)",
+ "allocate (size_type, void*)",
+ "deallocate (pointer, size_type)",
+ "construct (pointer, const_reference)",
+ "destroy (pointer)",
+ "address (reference) const",
+ "max_size () const"
};
static int _rw_id_gen; // generates unique ids
@@ -230,8 +230,8 @@
++n_throws_ [mf];
_rw_throw_exception (__FILE__, __LINE__,
- "%s: reached call limit of %zu",
- _rw_funnames [mf], throw_at_calls_);
+ "UserAlloc::%s: reached call limit of %zu",
+ _rw_func_names [mf], throw_at_calls_);
RW_ASSERT (!"logic error: should not reach");
}
@@ -242,20 +242,22 @@
instance (SharedAlloc *pinst /* = 0 */)
{
// get or a set a pointer to the global allocator object
- static size_t instbuf [sizeof (SharedAlloc) / sizeof (size_t) + 1];
static SharedAlloc* pglobal = 0;
+ if (0 == pglobal) {
+ // construct the global allocator object in the static buffer
+ static size_t instbuf [sizeof (SharedAlloc) / sizeof (size_t) + 1];
+ static SharedAlloc* const pbuf = new (instbuf) SharedAlloc ();
+
+ pglobal = pbuf;
+ }
+
if (pinst) {
- // set the global allocator object and return
- // a pointer to the old one (may be 0)
+ // set the global allocator object and return a pointer
+ // to the previous one
SharedAlloc* const tmp = pglobal;
pglobal = pinst;
- pinst = tmp;
- }
- else if (0 == pglobal) {
- // construct the global allocator object
- pglobal = new (instbuf) SharedAlloc ();
- pinst = pglobal;
+ pinst = tmp;
}
else
pinst = pglobal;
@@ -263,6 +265,20 @@
RW_ASSERT (0 != pinst);
return pinst;
+}
+
+
+void SharedAlloc::
+reset_call_counters ()
+{
+ memset (n_calls_, 0, sizeof n_calls_);
+}
+
+
+/* static */ const char* SharedAlloc::
+func_name (MemFun mf)
+{
+ return _rw_func_names [mf];
}
/**************************************************************************/