mirror of
				https://github.com/boostorg/unordered.git
				synced 2025-10-31 07:41:36 +01:00 
			
		
		
		
	Merged revisions 46470-46592 via svnmerge from https://svn.boost.org/svn/boost/branches/unordered/trunk ................ r46589 | danieljames | 2008-06-21 21:37:42 +0100 (Sat, 21 Jun 2008) | 2 lines Fix some inspect errors (tabs and missing copyright/license). ................ r46591 | danieljames | 2008-06-21 21:47:51 +0100 (Sat, 21 Jun 2008) | 1 line Move memory.hpp into the helpers subdirectory. ................ r46592 | danieljames | 2008-06-21 22:08:53 +0100 (Sat, 21 Jun 2008) | 1 line Prevent inspect errors for unnamed namespaces in some of the test header files. ................ [SVN r46594]
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | |
| // Copyright 2008 Daniel James.
 | |
| // Distributed under the Boost Software License, Version 1.0. (See accompanying
 | |
| // file LICENSE_1_0.txt or move at http://www.boost.org/LICENSE_1_0.txt)
 | |
| 
 | |
| #if !defined(BOOST_UNORDERED_TEST_HELPERS_COUNT_HEAD)
 | |
| #define BOOST_UNORDERED_TEST_HELPERS_COUNT_HEAD
 | |
| 
 | |
| namespace test {
 | |
|     struct object_count {
 | |
|         int instances;
 | |
|         int constructions;
 | |
| 
 | |
|         object_count() : instances(0), constructions(0) {}
 | |
|         void reset() { *this = object_count(); }
 | |
| 
 | |
|         void construct() {
 | |
|             ++instances;
 | |
|             ++constructions;
 | |
|         }
 | |
| 
 | |
|         void destruct() {
 | |
|             if(instances == 0) {
 | |
|                 BOOST_ERROR("Unbalanced constructions.");
 | |
|             }
 | |
|             else {
 | |
|                 --instances;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         bool operator==(object_count const& x) const {
 | |
|             return instances == x.instances &&
 | |
|                 constructions == x.constructions;
 | |
|         }
 | |
| 
 | |
|         bool operator!=(object_count const& x) const {
 | |
|             return !(*this == x);
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     template <class T>
 | |
|     struct counted_object
 | |
|     {
 | |
|         static object_count count_;
 | |
| 
 | |
|         counted_object() { count_.construct(); }
 | |
|         counted_object(counted_object const&) { count_.construct(); }
 | |
|         ~counted_object() { count_.destruct(); }
 | |
|     };
 | |
| 
 | |
|     template <class T> object_count counted_object<T>::count_;
 | |
| 
 | |
|     struct globally_counted_object
 | |
|         : counted_object<globally_counted_object> {};
 | |
| 
 | |
|     // This won't be a problem as I'm only using a single compile unit
 | |
|     // in each test (this is actually require by the minimal test
 | |
|     // framework).
 | |
|     // 
 | |
|     // boostinspect:nounnamed
 | |
|     namespace {
 | |
|         object_count& global_object_count = globally_counted_object::count_;
 | |
|     }
 | |
| }
 | |
| 
 | |
| #endif
 |