diff options
-rw-r--r-- | ChangeLog-99b | 11 | ||||
-rw-r--r-- | ace/Hash_Map_Manager_T.h | 94 | ||||
-rw-r--r-- | ace/Hash_Map_Manager_T.i | 121 | ||||
-rw-r--r-- | tests/Hash_Map_Bucket_Iterator_Test.cpp | 147 | ||||
-rw-r--r-- | tests/Hash_Map_Bucket_Iterator_Test.dsp | 230 | ||||
-rw-r--r-- | tests/Makefile | 1 | ||||
-rw-r--r-- | tests/Map_Manager_Test.cpp | 4 | ||||
-rwxr-xr-x | tests/run_pharlap_tests.bat | 1 | ||||
-rw-r--r-- | tests/run_tests.bat | 1 | ||||
-rwxr-xr-x | tests/run_tests.psosim | 4 | ||||
-rwxr-xr-x | tests/run_tests.sh | 6 | ||||
-rw-r--r-- | tests/run_tests.vxworks | 4 | ||||
-rw-r--r-- | tests/tests.dsw | 25 |
13 files changed, 628 insertions, 21 deletions
diff --git a/ChangeLog-99b b/ChangeLog-99b index 78899eef01d..28c9b812774 100644 --- a/ChangeLog-99b +++ b/ChangeLog-99b @@ -1,10 +1,19 @@ +Wed Jul 14 16:30:48 1999 Irfan Pyarali <irfan@cs.wustl.edu> + + * ace/Hash_Map_Manager_T.h (class ACE_Hash_Map_Bucket_Iterator): + Added a new class that allows the iteration over the entries of + a of a particular bucket in a hash map. + + * tests/Hash_Map_Bucket_Iterator_Test.cpp: A test for the new + ACE_Hash_Map_Bucket_Iterator class. + Wed Jul 14 16:37:33 1999 Ossama Othman <othman@cs.wustl.edu> * Makefile: Added Makefile.am and NEWS to the list of controlled files. The file `NEWS' will get generated when a release is made. - + * TODO: * acconfig.h: * configure.in: diff --git a/ace/Hash_Map_Manager_T.h b/ace/Hash_Map_Manager_T.h index 4752511f2d5..fbdeb9f5666 100644 --- a/ace/Hash_Map_Manager_T.h +++ b/ace/Hash_Map_Manager_T.h @@ -75,6 +75,10 @@ template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class class ACE_Hash_Map_Reverse_Iterator_Ex; // Forward decl. +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> +class ACE_Hash_Map_Bucket_Iterator; + +// Forward decl. class ACE_Allocator; template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> @@ -97,24 +101,25 @@ public: friend class ACE_Hash_Map_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>; friend class ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>; friend class ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>; + friend class ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>; - typedef EXT_ID + typedef EXT_ID KEY; - typedef INT_ID + typedef INT_ID VALUE; - typedef ACE_Hash_Map_Entry<EXT_ID, INT_ID> + typedef ACE_Hash_Map_Entry<EXT_ID, INT_ID> ENTRY; // = ACE-style iterator typedefs. - typedef ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> + typedef ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> ITERATOR; - typedef ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> + typedef ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> REVERSE_ITERATOR; // = STL-style iterator typedefs. - typedef ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> + typedef ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> iterator; - typedef ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> + typedef ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> reverse_iterator; // = Initialization and termination methods. @@ -506,6 +511,77 @@ public: }; template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> +class ACE_Hash_Map_Bucket_Iterator +{ + // = TITLE + // Forward iterator for the <ACE_Hash_Map_Manager_Ex> which only + // traverses a particular bucket. The particular bucket is + // specified by the <EXT_ID> parameter specified in the + // constructor. + // + // = DESCRIPTION + // This class does not perform any internal locking of the + // <ACE_Hash_Map_Manager_Ex> it is iterating upon since locking + // is inherently inefficient and/or error-prone within an + // STL-style iterator. If you require locking, you can + // explicitly use an <ACE_Guard> or <ACE_Read_Guard> on the + // <ACE_Hash_Map_Manager_Ex>'s internal lock, which is + // accessible via its <mutex> method. + // + // Note that this iterator cannot be created by calling a method + // on the map, since this would require +public: + // = Initialization method. + ACE_Hash_Map_Bucket_Iterator (ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &mm, + const EXT_ID &ext_id, + int tail = 0); + + // = STL styled iteration, compare, and reference functions. + + ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &operator++ (void); + // Prefix advance. + + ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> operator++ (int); + // Postfix advance. + + ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &operator-- (void); + // Prefix reverse. + + ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> operator-- (int); + // Postfix reverse. + + ACE_Hash_Map_Entry<EXT_ID, INT_ID>& operator* (void) const; + // Returns a reference to the interal element <this> is pointing to. + + ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>& map (void); + // Returns reference the Hash_Map_Manager_Ex that is being iterated + // over. + + int operator== (const ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &) const; + int operator!= (const ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &) const; + // Check if two iterators point to the same position + +protected: + int forward_i (void); + // Move forward by one element in the set. Returns 0 when there's + // no more item in the set after the current items, else 1. + + int reverse_i (void); + // Move backward by one element in the set. Returns 0 when there's + // no more item in the set before the current item, else 1. + + ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> *map_man_; + // Map we are iterating over. + + ssize_t index_; + // Keeps track of how far we've advanced in the table. + + ACE_Hash_Map_Entry<EXT_ID, INT_ID> *next_; + // Keeps track of how far we've advanced in a linked list in each + // table slot. +}; + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> class ACE_Hash_Map_Reverse_Iterator_Ex : public ACE_Hash_Map_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> { // = TITLE @@ -594,7 +670,7 @@ public: ACE_Hash_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK> & operator= (const ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, ACE_Hash<EXT_ID>, ACE_Equal_To<EXT_ID>, ACE_LOCK> &base); - // Assignment from base + // Assignment from base }; template <class EXT_ID, class INT_ID, class ACE_LOCK> @@ -613,7 +689,7 @@ public: ACE_Hash_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK> & operator= (const ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, ACE_Hash<EXT_ID>, ACE_Equal_To<EXT_ID>, ACE_LOCK> &base); - // Assignment from base + // Assignment from base }; #if defined (__ACE_INLINE__) diff --git a/ace/Hash_Map_Manager_T.i b/ace/Hash_Map_Manager_T.i index f4e86244358..a257b091f79 100644 --- a/ace/Hash_Map_Manager_T.i +++ b/ace/Hash_Map_Manager_T.i @@ -437,7 +437,7 @@ ACE_Hash_Map_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>: ACE_ALLOC_HOOK_DEFINE(ACE_Hash_Map_Iterator_Ex) - template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE void +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE void ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::dump (void) const { ACE_TRACE ("ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::dump"); @@ -505,9 +505,119 @@ ACE_Hash_Map_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::oper return retv; } +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::ACE_Hash_Map_Bucket_Iterator (ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &mm, + const EXT_ID &ext_id, + int tail) + : map_man_ (&mm) +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::ACE_Hash_Map_Bucket_Iterator"); + + this->index_ = this->map_man_->hash (ext_id) % this->map_man_->total_size_; + this->next_ = &this->map_man_->table_[this->index_]; + + if (tail == 0) + this->forward_i (); +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> & +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (void) +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (void)"); + + this->forward_i (); + return *this; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (int) +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (int)"); + + ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> retv (*this); + this->forward_i (); + return retv; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> & +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (void) +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (void)"); + + this->reverse_i (); + return *this; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (int) +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (int)"); + + ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> retv (*this); + this->reverse_i (); + return retv; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> int +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::forward_i (void) +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::forward_i"); + + this->next_ = this->next_->next_; + return this->next_ != &this->map_man_->table_[this->index_]; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> int +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::reverse_i (void) +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::reverse_i"); + + this->next_ = this->next_->prev_; + return this->next_ != &this->map_man_->table_[this->index_]; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE +ACE_Hash_Map_Entry<EXT_ID, INT_ID> & +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator* (void) const +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator*"); + + return *this->next_; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE +ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> & +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::map (void) +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::map"); + return *this->map_man_; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE int +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator== (const ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &rhs) const +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator=="); + return this->map_man_ == rhs.map_man_ + && this->index_ == rhs.index_ + && this->next_ == rhs.next_; +} + +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE int +ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator!= (const ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &rhs) const +{ + ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator!="); + return this->next_ != rhs.next_ + || this->index_ != rhs.index_ + || this->map_man_ != rhs.map_man_; +} + ACE_ALLOC_HOOK_DEFINE(ACE_Hash_Map_Reverse_Iterator_Ex) - template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE void +template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE void ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::dump (void) const { ACE_TRACE ("ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::dump"); @@ -582,7 +692,7 @@ ACE_Hash_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::ACE_Hash_Map_Manager (ACE_Alloca template <class EXT_ID, class INT_ID, class ACE_LOCK> ACE_Hash_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::ACE_Hash_Map_Manager (size_t size, ACE_Allocator *alloc) - : ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, ACE_Hash<EXT_ID>, ACE_Equal_To<EXT_ID>, ACE_LOCK> (size, + : ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, ACE_Hash<EXT_ID>, ACE_Equal_To<EXT_ID>, ACE_LOCK> (size, alloc) { } @@ -593,7 +703,7 @@ ACE_Hash_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::equal (const EXT_ID &id1, const return ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, ACE_Hash<EXT_ID>, ACE_Equal_To<EXT_ID>, ACE_LOCK>::equal (id1, id2); } -template <class EXT_ID, class INT_ID, class ACE_LOCK> u_long +template <class EXT_ID, class INT_ID, class ACE_LOCK> u_long ACE_Hash_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::hash (const EXT_ID &ext_id) { return ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, ACE_Hash<EXT_ID>, ACE_Equal_To<EXT_ID>, ACE_LOCK>::hash (ext_id); @@ -641,9 +751,8 @@ template <class EXT_ID, class INT_ID, class ACE_LOCK> ACE_Hash_Map_Reverse_Itera ACE_Hash_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK>::operator= (const ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, ACE_Hash<EXT_ID>, ACE_Equal_To<EXT_ID>, ACE_LOCK> &rhs) { ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, ACE_Hash<EXT_ID>, ACE_Equal_To<EXT_ID>, ACE_LOCK> &base = *this; - + base = rhs; return *this; } - diff --git a/tests/Hash_Map_Bucket_Iterator_Test.cpp b/tests/Hash_Map_Bucket_Iterator_Test.cpp new file mode 100644 index 00000000000..04458506c7b --- /dev/null +++ b/tests/Hash_Map_Bucket_Iterator_Test.cpp @@ -0,0 +1,147 @@ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// tests +// +// = FILENAME +// Hash_Map_Bucket_Iterator_Test.cpp +// +// = DESCRIPTION +// This is a simple test of the <Hash_Map_Bucket_Iterator>. +// +// = AUTHOR +// Irfan Pyarali +// +// ============================================================================ + +#include "test_config.h" +#include "ace/Hash_Map_Manager.h" +#include "ace/Synch.h" +#include "ace/Get_Opt.h" +#include "ace/Functor.h" + +ACE_RCSID(tests, Hash_Map_Bucket_Iterator_Test, "$Id$") + +#if defined(__BORLANDC__) && __BORLANDC__ >= 0x0530 +USELIB("..\ace\aced.lib"); +//--------------------------------------------------------------------------- +#endif /* defined(__BORLANDC__) && __BORLANDC__ >= 0x0530 */ + +//////////////////////////////////////////////////////////////////////////////// + +static ACE_UINT32 iterations = ACE_MAX_ITERATIONS * 10; +static ACE_UINT32 table_size = ACE_MAX_ITERATIONS; + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opt (argc, argv, "t:i:"); + + int cc; + + while ((cc = get_opt ()) != -1) + switch (cc) + { + case 't': + table_size = atoi (get_opt.optarg); + break; + case 'i': + iterations = atoi (get_opt.optarg); + break; + case '?': + case 'h': + default: + ACE_ERROR ((LM_ERROR, + ASYS_TEXT ("usage: %s ") + ASYS_TEXT ("[-i (iterations)] ") + ASYS_TEXT ("[-t (table size)] "), + argv[0])); + return -1; + } + + return 0; +} + +typedef ACE_Hash_Map_Manager_Ex<ACE_UINT32, + ACE_UINT32, + ACE_Hash<ACE_UINT32>, + ACE_Equal_To<ACE_UINT32>, + ACE_SYNCH_NULL_MUTEX> HASH_MAP; + +typedef ACE_Hash_Map_Bucket_Iterator<ACE_UINT32, + ACE_UINT32, + ACE_Hash<ACE_UINT32>, + ACE_Equal_To<ACE_UINT32>, + ACE_SYNCH_NULL_MUTEX> HASH_MAP_BUCKET_ITERATOR; + +int +main (int argc, ASYS_TCHAR *argv[]) +{ + // Validate options. + int result = parse_args (argc, argv); + if (result != 0) + return result; + + // Start the test only if options are valid. + ACE_START_TEST (ASYS_TEXT ("Hash_Map_Bucket_Iterator_Test")); + ACE_LOG_MSG->clr_flags (ACE_Log_Msg::VERBOSE_LITE); + + ACE_UINT32 i = 0; + HASH_MAP map (table_size); + + for (i = 0; i < iterations; ++i) + { + int result = map.bind (i, i); + ACE_ASSERT (result == 0); + ACE_UNUSED_ARG (result); + } + + for (i = 0; i < table_size; ++i) + { + HASH_MAP_BUCKET_ITERATOR iterator (map, + i); + + HASH_MAP_BUCKET_ITERATOR end (map, + i, + 1); + + for (; + iterator != end; + ++iterator) + { + ACE_UINT32 key = (*iterator).ext_id_; + ACE_ASSERT (((key - i) % table_size) == 0); + } + } + + ACE_LOG_MSG->set_flags (ACE_Log_Msg::VERBOSE_LITE); + ACE_END_TEST; + + return 0; +} + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + +template class ACE_Equal_To<ACE_UINT32>; +template class ACE_Hash<ACE_UINT32>; +template class ACE_Hash_Map_Entry<ACE_UINT32, ACE_UINT32>; +template class ACE_Hash_Map_Manager_Ex<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX>; +template class ACE_Hash_Map_Iterator_Base_Ex<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX>; +template class ACE_Hash_Map_Iterator_Ex<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX>; +template class ACE_Hash_Map_Reverse_Iterator_Ex<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX>; +template class ACE_Hash_Map_Bucket_Iterator<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX>; + +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) + +#pragma instantiate ACE_Equal_To<ACE_UINT32> +#pragma instantiate ACE_Hash<ACE_UINT32> +#pragma instantiate ACE_Hash_Map_Entry<ACE_UINT32, ACE_UINT32> +#pragma instantiate ACE_Hash_Map_Manager_Ex<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX> +#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX> +#pragma instantiate ACE_Hash_Map_Iterator_Ex<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX> +#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX> +#pragma instantiate ACE_Hash_Map_Bucket_Iterator<ACE_UINT32, ACE_UINT32, ACE_Hash<ACE_UINT32>, ACE_Equal_To<ACE_UINT32>, ACE_SYNCH_NULL_MUTEX> + +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/tests/Hash_Map_Bucket_Iterator_Test.dsp b/tests/Hash_Map_Bucket_Iterator_Test.dsp new file mode 100644 index 00000000000..8357f7ac33c --- /dev/null +++ b/tests/Hash_Map_Bucket_Iterator_Test.dsp @@ -0,0 +1,230 @@ +# Microsoft Developer Studio Project File - Name="Hash_Map_Bucket_Iterator_Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+# TARGTYPE "Win32 (ALPHA) Console Application" 0x0603
+
+CFG=Hash_Map_Bucket_Iterator_Test - Win32 PharLap ETS Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Hash_Map_Bucket_Iterator_Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Hash_Map_Bucket_Iterator_Test.mak" CFG="Hash_Map_Bucket_Iterator_Test - Win32 PharLap ETS Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Hash_Map_Bucket_Iterator_Test - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "Hash_Map_Bucket_Iterator_Test - Win32 Alpha Debug" (based on "Win32 (ALPHA) Console Application")
+!MESSAGE "Hash_Map_Bucket_Iterator_Test - Win32 PharLap ETS Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF "$(CFG)" == "Hash_Map_Bucket_Iterator_Test - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir ".\DLL\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\ace"
+
+!ELSEIF "$(CFG)" == "Hash_Map_Bucket_Iterator_Test - Win32 Alpha Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Hash_Map"
+# PROP BASE Intermediate_Dir "Hash_Map"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /Gt0 /W3 /GX /Zi /Od /I "..\\ /D " WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /MTd /c
+# ADD CPP /nologo /Gt0 /W3 /GX /Zi /Od /I "..\\ /D " WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /MDd /c
+# SUBTRACT CPP /YX
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 aced.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:ALPHA /pdbtype:sept /libpath:"..\ace"
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:ALPHA /pdbtype:sept /libpath:"..\ace"
+
+!ELSEIF "$(CFG)" == "Hash_Map_Bucket_Iterator_Test - Win32 PharLap ETS Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Hash_Map_Bucket_Iterator_Test___Win32_PharLap_ETS_Debug"
+# PROP BASE Intermediate_Dir "Hash_Map_Bucket_Iterator_Test___Win32_PharLap_ETS_Debug"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir ".\ETS_LIB\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# SUBTRACT BASE CPP /YX
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D ACE_HAS_DLL=0 /FD /c
+# SUBTRACT CPP /YX
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\ace"
+# ADD LINK32 acesd.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Hash_Map_Bucket_Iterator_Test_ETS.exe" /pdbtype:sept /libpath:"..\ace" /ETS:tests_pharlap_msvc.lnk
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "Hash_Map_Bucket_Iterator_Test - Win32 Debug"
+# Name "Hash_Map_Bucket_Iterator_Test - Win32 Alpha Debug"
+# Name "Hash_Map_Bucket_Iterator_Test - Win32 PharLap ETS Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=.\Hash_Map_Bucket_Iterator_Test.cpp
+
+!IF "$(CFG)" == "Hash_Map_Bucket_Iterator_Test - Win32 Debug"
+
+!ELSEIF "$(CFG)" == "Hash_Map_Bucket_Iterator_Test - Win32 Alpha Debug"
+
+DEP_CPP_HASH_=\
+ "..\ace\ACE.h"\
+ "..\ace\ACE.i"\
+ "..\ace\Atomic_Op.i"\
+ "..\ace\Auto_Ptr.cpp"\
+ "..\ace\Auto_Ptr.h"\
+ "..\ace\Auto_Ptr.i"\
+ "..\ace\config-win32-common.h"\
+ "..\ace\config-win32.h"\
+ "..\ace\config.h"\
+ "..\ace\Containers.cpp"\
+ "..\ace\Containers.h"\
+ "..\ace\Containers.i"\
+ "..\ace\Event_Handler.h"\
+ "..\ace\Event_Handler.i"\
+ "..\ace\Free_List.cpp"\
+ "..\ace\Free_List.h"\
+ "..\ace\Free_List.i"\
+ "..\ace\Handle_Set.h"\
+ "..\ace\Handle_Set.i"\
+ "..\ace\Hash_Map_Manager.cpp"\
+ "..\ace\Hash_Map_Manager.h"\
+ "..\ace\Log_Msg.h"\
+ "..\ace\Log_Priority.h"\
+ "..\ace\Log_Record.h"\
+ "..\ace\Log_Record.i"\
+ "..\ace\Malloc.h"\
+ "..\ace\Malloc.i"\
+ "..\ace\Malloc_T.cpp"\
+ "..\ace\Malloc_T.h"\
+ "..\ace\Malloc_T.i"\
+ "..\ace\Managed_Object.cpp"\
+ "..\ace\Managed_Object.h"\
+ "..\ace\Managed_Object.i"\
+ "..\ace\Mem_Map.h"\
+ "..\ace\Mem_Map.i"\
+ "..\ace\Memory_Pool.h"\
+ "..\ace\Memory_Pool.i"\
+ "..\ace\Object_Manager.h"\
+ "..\ace\Object_Manager.i"\
+ "..\ace\OS.h"\
+ "..\ace\OS.i"\
+ "..\ace\Reactor.h"\
+ "..\ace\Reactor.i"\
+ "..\ace\Reactor_Impl.h"\
+ "..\ace\Service_Config.h"\
+ "..\ace\Service_Config.i"\
+ "..\ace\Service_Object.h"\
+ "..\ace\Service_Object.i"\
+ "..\ace\Shared_Object.h"\
+ "..\ace\Shared_Object.i"\
+ "..\ace\Signal.h"\
+ "..\ace\Signal.i"\
+ "..\ace\SString.h"\
+ "..\ace\SString.i"\
+ "..\ace\SV_Semaphore_Complex.h"\
+ "..\ace\SV_Semaphore_Complex.i"\
+ "..\ace\SV_Semaphore_Simple.h"\
+ "..\ace\SV_Semaphore_Simple.i"\
+ "..\ace\Svc_Conf_Tokens.h"\
+ "..\ace\Synch.h"\
+ "..\ace\Synch.i"\
+ "..\ace\Synch_T.cpp"\
+ "..\ace\Synch_T.h"\
+ "..\ace\Synch_T.i"\
+ "..\ace\Thread.h"\
+ "..\ace\Thread.i"\
+ "..\ace\Timer_Queue.h"\
+ "..\ace\Timer_Queue_T.cpp"\
+ "..\ace\Timer_Queue_T.h"\
+ "..\ace\Timer_Queue_T.i"\
+ "..\ace\Trace.h"\
+ "..\ace\Version.h"\
+ "..\ace\ws2tcpip.h"\
+ ".\test_config.h"\
+
+NODEP_CPP_HASH_=\
+ "..\ace\stdcpp.h"\
+ ".\Hash_Map_Bucket_Iterator_Test.h"\
+
+
+!ELSEIF "$(CFG)" == "Hash_Map_Bucket_Iterator_Test - Win32 PharLap ETS Debug"
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/tests/Makefile b/tests/Makefile index 2ad4856561d..2abb1f11326 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -30,6 +30,7 @@ BIN = Aio_Platform_Test \ High_Res_Timer_Test \ OrdMultiSet_Test \ Hash_Map_Manager_Test \ + Hash_Map_Bucket_Iterator_Test \ IOStream_Test \ Map_Test \ Map_Manager_Test \ diff --git a/tests/Map_Manager_Test.cpp b/tests/Map_Manager_Test.cpp index 05a35c121eb..5c8b63813a3 100644 --- a/tests/Map_Manager_Test.cpp +++ b/tests/Map_Manager_Test.cpp @@ -934,7 +934,7 @@ main (int argc, ASYS_TCHAR *argv[]) #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Equal_To<TYPE>; -template class ACE_Pair<TYPE, ATTR >; +template class ACE_Pair<TYPE, ATTR>; template class ACE_Reference_Pair<TYPE, TYPE>; template class ACE_Hash_Map_Manager_Ex<TYPE, TYPE, HASH_KEY, COMPARE_KEYS, MUTEX>; template class ACE_Hash_Map_Iterator_Base_Ex<TYPE, TYPE, HASH_KEY, COMPARE_KEYS, MUTEX>; @@ -967,7 +967,7 @@ template class ACE_Cache_Map_Iterator<TYPE, TYPE, CACHE_ITER_IMPL, NULL_CACHING_ template class ACE_Cache_Map_Reverse_Iterator<TYPE,TYPE, CACHE_REV_ITER_IMPL, NULL_CACHING_STRATEGY, ATTR>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Equal_To<TYPE> -#pragma instantiate ACE_Pair<TYPE, ATTR > +#pragma instantiate ACE_Pair<TYPE, ATTR> #pragma instantiate ACE_Reference_Pair<TYPE, TYPE> #pragma instantiate ACE_Hash_Map_Manager_Ex<TYPE, TYPE, HASH_KEY, COMPARE_KEYS, MUTEX> #pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<TYPE, TYPE, HASH_KEY, COMPARE_KEYS, MUTEX> diff --git a/tests/run_pharlap_tests.bat b/tests/run_pharlap_tests.bat index aa06f245116..9f6da7b1293 100755 --- a/tests/run_pharlap_tests.bat +++ b/tests/run_pharlap_tests.bat @@ -31,6 +31,7 @@ call %0 Env_Value_Test call %0 Future_Test call %0 Handle_Set_Test call %0 Hash_Map_Manager_Test +call %0 Hash_Map_Bucket_Iterator_Test call %0 High_Res_Timer_Test call %0 IOStream_Test call %0 Map_Manager_Test diff --git a/tests/run_tests.bat b/tests/run_tests.bat index e16785e5d45..17f9b782920 100644 --- a/tests/run_tests.bat +++ b/tests/run_tests.bat @@ -77,6 +77,7 @@ call %run_cmd% %dopure% %platform% Future_Test call %run_cmd% %dopure% %platform% Future_Set_Test call %run_cmd% %dopure% %platform% Handle_Set_Test call %run_cmd% %dopure% %platform% Hash_Map_Manager_Test +call %run_cmd% %dopure% %platform% Hash_Map_Bucket_Iterator_Test call %run_cmd% %dopure% %platform% High_Res_Timer_Test call %run_cmd% %dopure% %platform% IOStream_Test call %run_cmd% %dopure% %platform% Map_Manager_Test diff --git a/tests/run_tests.psosim b/tests/run_tests.psosim index 966a1c9c85d..a788025b628 100755 --- a/tests/run_tests.psosim +++ b/tests/run_tests.psosim @@ -138,6 +138,10 @@ run Reverse_Lock_Test # uses ACE_Reverse_Lock run Map_Manager_Test # uses Map Manager and Hash Map Manager + Forward and Reverse Map Iterators. +run Hash_Map_Manager_Test # uses Hash Map Manager + Forward and Reverse Map Iterators. + +run Hash_Map_Bucket_Iterator_Test # uses Hash Map Bucket iterator. + run Cache_Map_Manager_Test # uses Cache Map Manager and Hash Cache Map Manager + Forward and Reverse Map Iterators. run Cached_Conn_Test # uses Cached connection management (with OneShot Acceptor). diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 2c107b1946b..a127575bae0 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -188,9 +188,11 @@ fi test $TOKEN && (test $chorus || test $Unicos || run Tokens_Test) # tests ACE_Token run Cache_Map_Manager_Test # tests ACE_Cache_Map_Manager and ACE_Hash_Cache_Manager and caching features. -#run Cached_Conn_Test # tests connection management features (with OneShot Acceptor). -#run Cached_Accept_Conn_Test # tests connection management features (with regular Acceptor). +#run Cached_Conn_Test # tests connection management features (with OneShot Acceptor). +#run Cached_Accept_Conn_Test # tests connection management features (with regular Acceptor). run Map_Manager_Test # tests ACE_Map Manager and ACE_Hash_Map_Manager + Forward and Reverse Map Iterators. +run Hash_Map_Manager_Test # tests ACE_Hash_Map_Manager + Forward and Reverse Map Iterators. +run Hash_Map_Bucket_Iterator_Test # tests ACE_Hash Map Bucket iterator. run Map_Test # tests ACE_Map + Forward and Reverse Map Iterators. run Message_Queue_Notifications_Test # tests ACE_Message_Queue + ACE_Reactor test $chorus || run Message_Queue_Test # tests ACE_Message_Queue + Forward and Reverse Message Queue Iterators. diff --git a/tests/run_tests.vxworks b/tests/run_tests.vxworks index 4ef3e694bd6..cbf03135b23 100644 --- a/tests/run_tests.vxworks +++ b/tests/run_tests.vxworks @@ -97,6 +97,10 @@ ld < Hash_Map_Manager_Test write 2, "Hash_Map_Manager_Test ", 22 ace_main; unld "Hash_Map_Manager_Test" +ld < Hash_Map_Bucket_Iterator_Test +write 2, "Hash_Map_Bucket_Iterator_Test ", 29 +ace_main; unld "Hash_Map_Bucket_Iterator_Test" + ld < Sigset_Ops_Test write 2, "Sigset_Ops_Test ", 16 ace_main; unld "Sigset_Ops_Test" diff --git a/tests/tests.dsw b/tests/tests.dsw index 8d3777c3250..52bb372ec27 100644 --- a/tests/tests.dsw +++ b/tests/tests.dsw @@ -99,6 +99,18 @@ Package=<4> ###############################################################################
+Project: "Cached_Accept_Conn_Test"=.\Cached_Accept_Conn_Test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "Collection_Test"=.\Collection_Test.dsp - Package Owner=<4>
Package=<5>
@@ -231,6 +243,18 @@ Package=<4> ###############################################################################
+Project: "Hash_Map_Bucket_Iterator_Test"=.\Hash_Map_Bucket_Iterator_Test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "High_Res_Timer_Test"=.\High_Res_Timer_Test.dsp - Package Owner=<4>
Package=<5>
@@ -890,4 +914,3 @@ Package=<3> }}}
###############################################################################
-
|