summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog-99b11
-rw-r--r--ace/Hash_Map_Manager_T.h94
-rw-r--r--ace/Hash_Map_Manager_T.i121
-rw-r--r--tests/Hash_Map_Bucket_Iterator_Test.cpp147
-rw-r--r--tests/Hash_Map_Bucket_Iterator_Test.dsp230
-rw-r--r--tests/Makefile1
-rw-r--r--tests/Map_Manager_Test.cpp4
-rwxr-xr-xtests/run_pharlap_tests.bat1
-rw-r--r--tests/run_tests.bat1
-rwxr-xr-xtests/run_tests.psosim4
-rwxr-xr-xtests/run_tests.sh6
-rw-r--r--tests/run_tests.vxworks4
-rw-r--r--tests/tests.dsw25
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>
}}}
###############################################################################
-