summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames H. Hill <hilljh82@gmail.com>2008-01-14 04:45:44 +0000
committerJames H. Hill <hilljh82@gmail.com>2008-01-14 04:45:44 +0000
commitaece6d5044cbb5d4f5586c5cf679204cdba2842a (patch)
tree9527f39318795ec12975ee5a1a1b4334636cb319
parent66fc98fb819a56b1a98ba5c9730dc68c17bc29e5 (diff)
downloadATCD-aece6d5044cbb5d4f5586c5cf679204cdba2842a.tar.gz
Mon Jan 14 04:41:29 UTC 2008 James H. Hill <hillj@isis.vanderbilt.edu>
-rw-r--r--ACE/ChangeLog21
-rw-r--r--ACE/ace/Hash_Map_Manager_T.h74
-rw-r--r--ACE/ace/Hash_Map_Manager_T.inl96
-rw-r--r--ACE/tests/Hash_Map_Manager_Test.cpp72
-rw-r--r--ACE/tests/STL_algorithm_Test_T.cpp41
-rw-r--r--ACE/tests/STL_algorithm_Test_T.h29
-rw-r--r--ACE/tests/tests.mpc7
7 files changed, 254 insertions, 86 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index dd1e421c208..d5479ff08f7 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,24 @@
+Mon Jan 14 04:41:29 UTC 2008 James H. Hill <hillj@isis.vanderbilt.edu>
+
+ * ace/Hash_Map_Manager_T.h:
+ * ace/Hash_Map_Manager_T.inl:
+
+ Implemented the ACE_Hash_Map_Const_Reverse_Iterator_Ex class,
+ which is the const_reverse_iterator for the
+ ACE_Hash_Map_Manager_Ex class.
+
+ * tests/Hash_Map_Manager_Test.cpp:
+ * tests/STL_algorithm_Test_T.h:
+ * tests/STL_algorithm_Test_T.cpp:
+
+ Generalized the STL algorithm test used in the hash map
+ manager test so that it can be used with any ACE container.
+
+ * tests/tests.mpc:
+
+ Added the STL_algorithm_Test_T.* files to the
+ Hash_Map_Manager_Test project.
+
Sun Jan 13 16:40:12 UTC 2008 Johnny Willemsen <jwillemsen@remedy.nl>
* include/makeinclude/platform_sunos5_sunc++.GNU:
diff --git a/ACE/ace/Hash_Map_Manager_T.h b/ACE/ace/Hash_Map_Manager_T.h
index 9395ab0f140..b421cfddba0 100644
--- a/ACE/ace/Hash_Map_Manager_T.h
+++ b/ACE/ace/Hash_Map_Manager_T.h
@@ -96,6 +96,10 @@ 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_Const_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.
@@ -124,6 +128,7 @@ public:
friend class ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>;
friend class ACE_Hash_Map_Const_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_Const_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
@@ -149,6 +154,8 @@ public:
const_iterator;
typedef ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
reverse_iterator;
+ typedef ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
+ const_reverse_iterator;
// = STL-style typedefs/traits.
typedef EXT_ID key_type;
@@ -410,8 +417,8 @@ public:
/// Return reverse iterator.
reverse_iterator rbegin (void);
reverse_iterator rend (void);
-// const_reverse_iterator rbegin (void) const;
-// const_reverse_iterator rend (void) const;
+ const_reverse_iterator rbegin (void) const;
+ const_reverse_iterator rend (void) const;
protected:
// = The following methods do the actual work.
@@ -579,9 +586,9 @@ private:
template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
class ACE_Hash_Map_Iterator_Base_Ex
{
-public:
+public:
// = STL-style typedefs/traits.
- typedef ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
+ typedef ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
container_type;
// = std::iterator_traits typedefs/traits.
@@ -895,7 +902,7 @@ class ACE_Hash_Map_Bucket_Iterator
{
public:
// = STL-style traits/typedefs
- typedef ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
+ typedef ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
container_type;
// = std::iterator traits/typedefs
@@ -1016,6 +1023,63 @@ public:
};
/**
+ * @class ACE_Hash_Map_Const_Reverse_Iterator_Ex
+ *
+ * @brief Const reverse iterator for the ACE_Hash_Map_Manager_Ex.
+ *
+ * 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.
+ */
+template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
+class ACE_Hash_Map_Const_Reverse_Iterator_Ex : public ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
+{
+public:
+ // = STL-style traits/typedefs
+ typedef typename ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::container_type
+ container_type;
+
+ // = std::iterator_traits typedefs
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef typename container_type::value_type value_type;
+ typedef typename container_type::reference reference;
+ typedef typename container_type::pointer pointer;
+ typedef typename container_type::difference_type difference_type;
+
+ // = Initialization method.
+ ACE_Hash_Map_Const_Reverse_Iterator_Ex (const ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &mm,
+ int head = 0);
+
+ // = Iteration methods.
+ /// Move forward by one element in the set. Returns 0 when all the
+ /// items in the set have been seen, else 1.
+ int advance (void);
+
+ /// Dump the state of an object.
+ void dump (void) const;
+
+ // = STL styled iteration, compare, and reference functions.
+
+ /// Prefix reverse.
+ ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &operator++ (void);
+
+ /// Postfix reverse.
+ ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> operator++ (int);
+
+ /// Prefix advance.
+ ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &operator-- (void);
+
+ /// Postfix advance.
+ ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> operator-- (int);
+
+ /// Declare the dynamic allocation hooks.
+ ACE_ALLOC_HOOK_DECLARE;
+};
+
+/**
* @class ACE_Hash_Map_Manager
*
* @brief Wrapper for backward compatibility.
diff --git a/ACE/ace/Hash_Map_Manager_T.inl b/ACE/ace/Hash_Map_Manager_T.inl
index 1174cd91c8b..1385ea3e5b2 100644
--- a/ACE/ace/Hash_Map_Manager_T.inl
+++ b/ACE/ace/Hash_Map_Manager_T.inl
@@ -415,19 +415,19 @@ ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::rend
return reverse_iterator (*this, 1);
}
-// template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE
-// typename ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::const_reverse_iterator
-// ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::rbegin (void) const
-// {
-// return const_reverse_iterator (*this);
-// }
-
-// template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE
-// typename ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::const_reverse_iterator
-// ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::rend (void) const
-// {
-// return const_reverse_iterator (*this, 1);
-// }
+ template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE
+ typename ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::const_reverse_iterator
+ ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::rbegin (void) const
+ {
+ return const_reverse_iterator (*this);
+ }
+
+ template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE
+ typename ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::const_reverse_iterator
+ ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::rend (void) const
+ {
+ return const_reverse_iterator (*this, 1);
+ }
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> *
@@ -1072,6 +1072,76 @@ ACE_Hash_Map_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOC
return retv;
}
+ACE_ALLOC_HOOK_DEFINE(ACE_Hash_Map_Const_Reverse_Iterator_Ex)
+
+template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE void
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::dump (void) const
+{
+#if defined (ACE_HAS_DUMP)
+ ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::dump");
+
+ this->dump_i ();
+#endif /* ACE_HAS_DUMP */
+}
+
+template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::ACE_Hash_Map_Const_Reverse_Iterator_Ex (const ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &mm, int head)
+ : ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> (mm, head)
+{
+ ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::ACE_Hash_Map_Const_Reverse_Iterator_Ex");
+ if (head == 0)
+ this->reverse_i ();
+}
+
+template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE int
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::advance (void)
+{
+ ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::advance");
+ return this->reverse_i ();
+}
+
+template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (void)
+{
+ ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex<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_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (int)
+{
+ ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (int)");
+
+ ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> retv (*this);
+ ++*this;
+ return retv;
+}
+
+template <class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK> ACE_INLINE
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> &
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (void)
+{
+ ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex<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_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>
+ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (int)
+{
+ ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (int)");
+
+ ACE_Hash_Map_Const_Reverse_Iterator_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> retv (*this);
+ --*this;
+ return retv;
+}
+
template <class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Hash_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::ACE_Hash_Map_Manager (ACE_Allocator *table_alloc,
ACE_Allocator *entry_alloc)
diff --git a/ACE/tests/Hash_Map_Manager_Test.cpp b/ACE/tests/Hash_Map_Manager_Test.cpp
index 88ba123400a..b8e6fbab9db 100644
--- a/ACE/tests/Hash_Map_Manager_Test.cpp
+++ b/ACE/tests/Hash_Map_Manager_Test.cpp
@@ -21,10 +21,10 @@
// ============================================================================
#include "test_config.h"
+#include "STL_algorithm_Test_T.h"
#include "ace/Hash_Map_Manager.h"
#include "ace/Malloc_T.h"
#include "ace/Null_Mutex.h"
-#include <algorithm>
ACE_RCSID(tests, Hash_Map_Manager_Test, "$Id$")
@@ -66,24 +66,6 @@ typedef ACE_Hash_Map_Reverse_Iterator_Ex<const ACE_TCHAR *,
ACE_Equal_To<const ACE_TCHAR *>,
ACE_Null_Mutex> HASH_STRING_REVERSE_ITER;
-
-struct Key_Equal_To
-{
- Key_Equal_To (const ACE_TCHAR * key)
- : key_ (key)
- {
-
- }
-
- bool operator () (const HASH_STRING_MAP::value_type & entry)
- {
- return ACE_OS::strcmp (entry.ext_id_, this->key_) == 0;
- }
-
- // Key of interest.
- const ACE_TCHAR * key_;
-};
-
struct String_Table
{
const ACE_TCHAR *key_;
@@ -211,52 +193,6 @@ print_value (const HASH_STRING_MAP::value_type & entry)
entry.int_id_));
}
-static int
-test_STL_algorithm (void)
-{
- // We are only validating that the container's iterators compile with
- // the <algorithm> header.
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("starting STL algorithm test\n")));
-
- // Initialize the hash map for the algorithm test(s).
- HASH_STRING_MAP hash;
- const HASH_STRING_MAP & chash = hash;
-
- for (size_t i = 0; string_table[i].key_ != 0; i ++)
- {
- if (hash.bind (string_table[i].key_, string_table[i].value_) == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("%p failed for %s \n"),
- ACE_TEXT ("bind"),
- string_table[i].key_),
- -1);
- }
-
- // Test the (reverse_)iterator using std::for_each.
- std::for_each (hash.begin (), hash.end (), &print_value);
- std::for_each (chash.begin (), chash.end (), &print_value);
- std::for_each (hash.rbegin (), hash.rend (), &print_value);
-
- // Test the find operation. Let's see if we can locate all the
- // keys in the hash map using std::find_if function.
- for (size_t i = 0; string_table[i].key_ != 0; i ++)
- {
- if (std::find_if (hash.begin (),
- hash.end (),
- Key_Equal_To (string_table[i].key_)) == hash.end ())
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("`%s' not found\n"),
- string_table[i].key_),
- -1);
- }
-
- // We are finish with the STL algorithm test(s).
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("finished STL algorithm test\n")));
- return 0;
-}
-
static int
run_test (void)
{
@@ -394,7 +330,11 @@ run_test (void)
test_two_allocators();
- test_STL_algorithm ();
+ // Run the STL algorithm test on the hash map.
+ const HASH_STRING_MAP & chash = hash;
+
+ test_STL_algorithm (hash);
+ test_STL_algorithm (chash);
return 0;
}
diff --git a/ACE/tests/STL_algorithm_Test_T.cpp b/ACE/tests/STL_algorithm_Test_T.cpp
new file mode 100644
index 00000000000..f12c0aba93b
--- /dev/null
+++ b/ACE/tests/STL_algorithm_Test_T.cpp
@@ -0,0 +1,41 @@
+// $Id$
+
+#ifndef ACE_TESTS_STL_ALGORITHM_TEST_T_CPP
+#define ACE_TESTS_STL_ALGORITHM_TEST_T_CPP
+
+#include "test_config.h"
+#include <algorithm>
+#include <typeinfo>
+
+template <typename ITEM>
+static void
+for_each_callback (ITEM & item)
+{
+ // do nothing; just testing compilation and execution
+
+ ACE_DEBUG ((LM_DEBUG,
+ "algorithm test: for_each_callback\n"));
+}
+
+template <typename T>
+int test_STL_algorithm (T & container)
+{
+ // We are only validating that the container's iterators compile with
+ // the <algorithm> header.
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("running STL algorithm test for `%s'\n"),
+ typeid (T).name ()));
+
+ // Test the (reverse) iterator using std::for_each.
+ std::for_each (container.begin (),
+ container.end (),
+ &for_each_callback <typename T::value_type>);
+
+ std::for_each (container.rbegin (),
+ container.rend (),
+ &for_each_callback <typename T::value_type>);
+
+ return 0;
+}
+
+#endif /* ACE_TESTS_STL_ALGORITHM_TEST_T_CPP */
diff --git a/ACE/tests/STL_algorithm_Test_T.h b/ACE/tests/STL_algorithm_Test_T.h
new file mode 100644
index 00000000000..1b045c12ba5
--- /dev/null
+++ b/ACE/tests/STL_algorithm_Test_T.h
@@ -0,0 +1,29 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file STL_algorithm_Test_T.h
+ *
+ * Test ACE containers compatibility with STL <algorithm> header.
+ *
+ * $Id$
+ *
+ * @author James H. Hill <j.hill@vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef ACE_TESTS_STL_ALGORITHM_TEST_T_H
+#define ACE_TESTS_STL_ALGORITHM_TEST_T_H
+
+template <typename T>
+int test_STL_algorithm (T & container);
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "STL_algorithm_Test_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("STL_algorithm_Test_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#endif /* ACE_TESTS_STL_ALGORITHM_TEST_T_H */
diff --git a/ACE/tests/tests.mpc b/ACE/tests/tests.mpc
index b34f1987a54..e9e60e7f6cc 100644
--- a/ACE/tests/tests.mpc
+++ b/ACE/tests/tests.mpc
@@ -457,6 +457,9 @@ project(Hash Map Manager Test) : acetest {
Source_Files {
Hash_Map_Manager_Test.cpp
}
+ Template_Files {
+ STL_algorithm_Test_T.cpp
+ }
}
project(Hash Multi Map Manager Test) : acetest {
@@ -1411,7 +1414,7 @@ project(SOCK_Dgram_Bcast_Test) : acetest {
avoids += ace_for_tao
exename = SOCK_Dgram_Bcast_Test
Source_Files {
- SOCK_Dgram_Bcast_Test.cpp
+ SOCK_Dgram_Bcast_Test.cpp
}
}
@@ -1419,7 +1422,7 @@ project(SOCK_SEQPACK_SCTP_Test) : acetest {
avoids += ace_for_tao
exename = SOCK_SEQPACK_SCTP_Test
Source_Files {
- SOCK_SEQPACK_SCTP_Test.cpp
+ SOCK_SEQPACK_SCTP_Test.cpp
}
}