diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-09-08 02:53:31 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-09-08 02:53:31 +0000 |
commit | 95012743a8c2f734bae9327bed5127240e675c9f (patch) | |
tree | 9514ac9cfdc07c1feeb44a56f2379e5d2e2d2e33 | |
parent | 58b97baec866c98d9d6d75f32adf0a0ac8a671c9 (diff) | |
download | ATCD-95012743a8c2f734bae9327bed5127240e675c9f.tar.gz |
ChangeLogTag:Tue Sep 07 19:55:52 1999 Irfan Pyarali <irfan@cs.wustl.edu>
-rw-r--r-- | ChangeLog-99b | 35 | ||||
-rw-r--r-- | ace/Active_Map_Manager_T.i | 19 | ||||
-rw-r--r-- | ace/Map_Manager.cpp | 123 | ||||
-rw-r--r-- | ace/Map_Manager.h | 18 | ||||
-rw-r--r-- | ace/Map_Manager.i | 118 | ||||
-rw-r--r-- | ace/README | 3 | ||||
-rw-r--r-- | tests/Lazy_Map_Manager_Test.cpp | 385 | ||||
-rw-r--r-- | tests/Lazy_Map_Manager_Test.dsp | 194 | ||||
-rw-r--r-- | tests/Makefile | 1 | ||||
-rwxr-xr-x | tests/run_pharlap_tests.bat | 1 | ||||
-rw-r--r-- | tests/run_tests.bat | 1 | ||||
-rw-r--r-- | tests/run_tests.lst | 1 | ||||
-rwxr-xr-x | tests/run_tests.psosim | 2 | ||||
-rw-r--r-- | tests/tests.dsw | 12 | ||||
-rw-r--r-- | tests/version_tests/Lazy_Map_Manager_Test.dsp | 274 | ||||
-rw-r--r-- | tests/version_tests/version_tests.dsw | 12 |
16 files changed, 1176 insertions, 23 deletions
diff --git a/ChangeLog-99b b/ChangeLog-99b index 2ff961d5dc4..290ff6dc8f7 100644 --- a/ChangeLog-99b +++ b/ChangeLog-99b @@ -1,3 +1,38 @@ +Tue Sep 07 19:55:52 1999 Irfan Pyarali <irfan@cs.wustl.edu> + + * ace/Map_Manager.h (ACE_Map_Manager): The old map manager (the + one before the changes made to support the active map manager) + used to allow deletion of entries from the map during iteration + (note that this feature was accidental since typically changes + to container invalidates the iterators). The new design did not + support this "feature". However, some users had come to depend + on this feature. + + The solution was to delay the movement of freed slots from the + occupied list to the free list until we run out of free slots in + the free list when binding new entries into the map. However, + this change requires additional state in each entry that keeps + track of whether this entry has been freed. Also, the time + required for binding new entries is less predictable since the + bind may require moving of freed slots from the occupied list to + the free list because of the initial lazy unbind. + + Changes were also required to the Active_Map_Manager since it + directly depends on the internals of the Map_Manager. + + Since this lazy feature is not required in the majority of cases + and results in increased memory consumption, this feature is + only support if ACE_HAS_LAZY_MAP_MANAGER is defined. + + A new test Lazy_Map_Manager_Test.cpp was added to check the new + changes. + + Thanks for Dr. Schmidt for helping with this solution and to + Murphy Ivan <Ivan.Murphy@med.siemens.de> for pointing out this + problem. + + Bug fixed: id 228. + Tue Sep 7 15:19:33 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> * tests/Log_Msg_Test.cpp (test_ostream): NUL-terminated the buffer diff --git a/ace/Active_Map_Manager_T.i b/ace/Active_Map_Manager_T.i index 29197057d0c..58f485f4432 100644 --- a/ace/Active_Map_Manager_T.i +++ b/ace/Active_Map_Manager_T.i @@ -61,6 +61,9 @@ ACE_Active_Map_Manager<T>::find (const ACE_Active_Map_Manager_Key &key, size_t slot_generation = key.slot_generation (); if (slot_index > this->total_size_ || +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + this->search_structure_[slot_index].free_ || +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ this->search_structure_[slot_index].ext_id_.slot_generation () != slot_generation || this->search_structure_[slot_index].ext_id_.slot_index () == this->free_list_id ()) { @@ -167,9 +170,23 @@ ACE_Active_Map_Manager<T>::unbind (const ACE_Active_Map_Manager_Key &key, { size_t slot_index = key.slot_index (); - // Move from occupied list to free list +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + // + // In the case of lazy map managers, the movement of free slots + // from the occupied list to the free list is delayed until we + // run out of free slots in the free list. + // + + this->search_structure_[slot_index].free_ = 1; + +#else + + // Move from occupied list to free list. this->move_from_occupied_list_to_free_list (slot_index); +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + // Reset the slot_index. This will tell us that this entry is free. this->search_structure_[slot_index].ext_id_.slot_index (this->free_list_id ()); diff --git a/ace/Map_Manager.cpp b/ace/Map_Manager.cpp index 7bcec198a04..fe9286075d3 100644 --- a/ace/Map_Manager.cpp +++ b/ace/Map_Manager.cpp @@ -95,26 +95,86 @@ ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::bind_i (const EXT_ID &ext_id, template <class EXT_ID, class INT_ID, class ACE_LOCK> int ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::next_free (size_t &free_slot) { - // Find an empty slot. + // Look in the free list for an empty slot. free_slot = this->free_list_.next (); - // Make sure we haven't run out of free slots. + // If we do find a free slot, return successfully. if (free_slot != this->free_list_id ()) return 0; - else - { - // Resize the map. - int result = this->resize_i (this->new_size ()); - // Check for errors. - if (result == 0) - // New free slot. - free_slot = this->free_list_.next (); +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + // Move any free slots from occupied list to free list. + this->move_all_free_slots_from_occupied_list (); + + // Try again in case we found any free slots in the occupied list. + free_slot = this->free_list_.next (); + + // If we do find a free slot, return successfully. + if (free_slot != this->free_list_id ()) + return 0; + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + + // Resize the map. + int result = this->resize_i (this->new_size ()); + + // Check for errors. + if (result == 0) + // New free slot. + free_slot = this->free_list_.next (); + + return result; +} + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + +template <class EXT_ID, class INT_ID, class ACE_LOCK> void +ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::move_all_free_slots_from_occupied_list (void) +{ + // + // In the case of lazy map managers, the movement of free slots from + // the occupied list to the free list is delayed until we run out of + // free slots in the free list. + // + + // Go through the entire occupied list, moving free slots to the + // free list. Note that all free slots in the occupied list are + // moved in this loop. + for (size_t i = this->occupied_list_.next (); + i != this->occupied_list_id (); + ) + { + // + // Note the trick used here: Information about the current slot + // is first noted; <i> then moves to the next occupied slot; + // only after this is the slot (potentially) moved from the + // occupied list to the free list. This order of things, i.e., + // moving <i> before moving the free slot is necessary, + // otherwise we'll forget which our next occupied slot is. + // + + // Note information about current slot. + ACE_Map_Entry<EXT_ID, INT_ID> ¤t_slot = this->search_structure_[i]; + size_t position_of_current_slot = i; + + // Move <i> to next occupied slot. + i = this->search_structure_[i].next (); + + // If current slot is free + if (current_slot.free_) + { + // Reset free flag to zero before moving to free list. + current_slot.free_ = 0; - return result; + // Move from occupied list to free list. + this->move_from_occupied_list_to_free_list (position_of_current_slot); + } } } +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + template <class EXT_ID, class INT_ID, class ACE_LOCK> void ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::shared_move (size_t slot, ACE_Map_Entry<EXT_ID, INT_ID> ¤t_list, @@ -303,6 +363,14 @@ ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::find_and_return_index (const EXT_ID & i != this->occupied_list_id (); i = this->search_structure_[i].next ()) { + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + if (this->search_structure_[i].free_) + continue; + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + if (this->equal (this->search_structure_[i].ext_id_, ext_id)) { @@ -341,9 +409,24 @@ ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::unbind_and_return_index (const EXT_ID if (result == 0) { - // Move from occupied list to free list + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + // + // In the case of lazy map managers, the movement of free slots + // from the occupied list to the free list is delayed until we + // run out of free slots in the free list. + // + + this->search_structure_[slot].free_ = 1; + +#else + + // Move from occupied list to free list. this->move_from_occupied_list_to_free_list (slot); +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + // Update the current size. --this->cur_size_; } @@ -400,6 +483,17 @@ ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>::resize_i (size_t new_size) new (&(temp[i])) ENTRY; temp[i].next (i + 1); temp[i].prev (i - 1); + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + // Even though this slot is initially free, we need the <free_> + // flag to be zero so that we don't have to set it when the slot + // is moved to the occupied list. In addition, this flag has no + // meaning while this slot is in the free list. + temp[i].free_ = 0; + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + } // Add new entries to the free list. @@ -463,6 +557,11 @@ ACE_Map_Entry<EXT_ID, INT_ID>::dump (void) const ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this)); ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("next_ = %d"), this->next_)); ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("prev_ = %d"), this->prev_)); + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("free_ = %d"), this->free_)); +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP)); } diff --git a/ace/Map_Manager.h b/ace/Map_Manager.h index 0da265175f2..f684bcb7aad 100644 --- a/ace/Map_Manager.h +++ b/ace/Map_Manager.h @@ -68,6 +68,14 @@ public: size_t prev_; // Keeps track of the previous entry. + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + int free_; + // Is this entry free? + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + }; // Forward decl. @@ -327,6 +335,16 @@ protected: void move_from_occupied_list_to_free_list (size_t slot); // Move from occupied list to free list. +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + void move_all_free_slots_from_occupied_list (void); + // In the case of lazy map managers, the movement of free slots from + // the occupied list to the free list is delayed until we run out of + // free slots in the free list. This function goes through the + // entire occupied list, moving free slots to the free list. + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + void shared_move (size_t slot, ACE_Map_Entry<EXT_ID, INT_ID> ¤t_list, size_t current_list_id, diff --git a/ace/Map_Manager.i b/ace/Map_Manager.i index 940acbc10b1..5ab50a108a3 100644 --- a/ace/Map_Manager.i +++ b/ace/Map_Manager.i @@ -290,10 +290,30 @@ ACE_Map_Iterator_Base<EXT_ID, INT_ID, ACE_LOCK>::done (void) const template <class EXT_ID, class INT_ID, class ACE_LOCK> ACE_INLINE int ACE_Map_Iterator_Base<EXT_ID, INT_ID, ACE_LOCK>::forward_i (void) { - if (this->next_ == this->map_man_->occupied_list_id ()) - this->next_ = this->map_man_->occupied_list_.next (); - else - this->next_ = this->map_man_->search_structure_[this->next_].next (); + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + while (1) + { + // Go to the next item in the list. + this->next_ = this->map_man_->search_structure_[this->next_].next (); + + // Stop if we reach the end. + if (this->done ()) + break; + + // Break if we find a non-free slot. + if (!this->map_man_->search_structure_[this->next_].free_) + { + break; + } + } + +#else + + this->next_ = this->map_man_->search_structure_[this->next_].next (); + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ return this->next_ != this->map_man_->occupied_list_id (); } @@ -301,10 +321,30 @@ ACE_Map_Iterator_Base<EXT_ID, INT_ID, ACE_LOCK>::forward_i (void) template <class EXT_ID, class INT_ID, class ACE_LOCK> ACE_INLINE int ACE_Map_Iterator_Base<EXT_ID, INT_ID, ACE_LOCK>::reverse_i (void) { - if (this->next_ == this->map_man_->occupied_list_id ()) - this->next_ = this->map_man_->occupied_list_.prev (); - else - this->next_ = this->map_man_->search_structure_[this->next_].prev (); + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + while (1) + { + // Go to the prev item in the list. + this->next_ = this->map_man_->search_structure_[this->next_].prev (); + + // Stop if we reach the end. + if (this->done ()) + break; + + // Break if we find a non-free slot. + if (!this->map_man_->search_structure_[this->next_].free_) + { + break; + } + } + +#else + + this->next_ = this->map_man_->search_structure_[this->next_].prev (); + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ return this->next_ != this->map_man_->occupied_list_id (); } @@ -335,7 +375,36 @@ ACE_Map_Iterator<EXT_ID, INT_ID, ACE_LOCK>::ACE_Map_Iterator (ACE_Map_Manager<EX : ACE_Map_Iterator_Base<EXT_ID, INT_ID, ACE_LOCK> (mm) { if (!pass_end) - this->forward_i (); + { + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + // Start here. + this->next_ = this->map_man_->occupied_list_.next (); + + while (1) + { + // Stop if we reach the end. + if (this->done ()) + break; + + // Break if we find a non-free slot. + if (!this->map_man_->search_structure_[this->next_].free_) + { + break; + } + + // Go to the next item in the list. + this->next_ = this->map_man_->search_structure_[this->next_].next (); + } + +#else + + this->next_ = this->map_man_->occupied_list_.next (); + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + + } } template <class EXT_ID, class INT_ID, class ACE_LOCK> ACE_INLINE int @@ -384,7 +453,36 @@ ACE_Map_Reverse_Iterator<EXT_ID, INT_ID, ACE_LOCK>::ACE_Map_Reverse_Iterator (AC : ACE_Map_Iterator_Base<EXT_ID, INT_ID, ACE_LOCK> (mm) { if (!pass_end) - this->reverse_i (); + { + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + // Start here. + this->next_ = this->map_man_->occupied_list_.prev (); + + while (1) + { + // Stop if we reach the end. + if (this->done ()) + break; + + // Break if we find a non-free slot. + if (!this->map_man_->search_structure_[this->next_].free_) + { + break; + } + + // Go to the prev item in the list. + this->next_ = this->map_man_->search_structure_[this->next_].prev (); + } + +#else + + this->next_ = this->map_man_->occupied_list_.prev (); + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + +} } template <class EXT_ID, class INT_ID, class ACE_LOCK> ACE_INLINE int diff --git a/ace/README b/ace/README index 19a90b3c44e..7cc4e1fbfd4 100644 --- a/ace/README +++ b/ace/README @@ -558,6 +558,9 @@ ACE_HAS_TEMPLATE_TYPEDEFS Compiler implements templates class. ACE_HAS_TERM_IOCTLS Platform has terminal ioctl flags like TCGETS and TCSETS. +ACE_HAS_LAZY_MAP_MANAGER ACE supports lazy Map Managers + that allow deletion of entries + during active iteration. ACE_HAS_THREADS Platform supports threads ACE_HAS_THREAD_SAFE_ACCEPT Platform allows multiple threads to call accept() on diff --git a/tests/Lazy_Map_Manager_Test.cpp b/tests/Lazy_Map_Manager_Test.cpp new file mode 100644 index 00000000000..7cb94968e0b --- /dev/null +++ b/tests/Lazy_Map_Manager_Test.cpp @@ -0,0 +1,385 @@ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// tests +// +// = FILENAME +// Lazy_Map_Manager_Test.cpp +// +// = DESCRIPTION +// This is a simple test of the <ACE_Map_Manager> and +// <ACE_Active_Map_Manager> that illustrates how lazy map managers +// allow the deletion of entries while iterating over the map. +// +// = AUTHOR +// Irfan Pyarali <irfan@cs.wustl.edu>, +// ============================================================================ + +#include "test_config.h" +#include "ace/Map_Manager.h" +#include "ace/Active_Map_Manager.h" +#include "ace/Synch.h" +#include "ace/streams.h" + +ACE_RCSID(tests, Map_Manager_Test, "$Id$") + +#if defined(__BORLANDC__) && __BORLANDC__ >= 0x0530 +USELIB("..\ace\aced.lib"); +//--------------------------------------------------------------------------- +#endif /* defined(__BORLANDC__) && __BORLANDC__ >= 0x0530 */ + +// Simple map manager. +typedef ACE_Map_Manager<int, int, ACE_Null_Mutex> MAP; + +// +// Displaying the contents of a map manager. +// + +void +display_map (MAP &map) +{ + { + // Simple iteration printing the entries. + for (MAP::iterator iter = map.begin (); + iter != map.end (); + ++iter) + { + MAP::ENTRY &entry = *iter; + ACE_DEBUG ((LM_DEBUG, + ASYS_TEXT ("%d "), + entry.int_id_)); + } + + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n"))); + } + + { + // Simple reverse iteration printing the entries. + for (MAP::reverse_iterator iter = map.rbegin (); + iter != map.rend (); + ++iter) + { + MAP::ENTRY &entry = *iter; + ACE_DEBUG ((LM_DEBUG, + ASYS_TEXT ("%d "), + entry.int_id_)); + } + + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n"))); + } + + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n"))); +} + +// +// Test for map manager. +// + +void +map_test () +{ + // Map of size 3. + MAP map (3); + int i = 0; + + // Insert a few entries. + for (i = 0; i < 3; ++i) + map.bind (i, i); + + display_map (map); + + // Remove middle one. + map.unbind (1); + + display_map (map); + + // Remove the entry on one end. + map.unbind (0); + + display_map (map); + + // Remove the entry on the other end. + map.unbind (2); + + display_map (map); + + // If we have lazy map managers, we can delete entries while + // iterating over the map. + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + // Insert a few entries. + for (i = 0; i < 3; ++i) + map.bind (i, i); + + display_map (map); + + // Remove middle one. + { + // Deletion while iterating. + for (MAP::iterator iter = map.begin (); + iter != map.end (); + ++iter) + { + MAP::ENTRY &entry = *iter; + if (entry.int_id_ == 1) + { + map.unbind (1); + } + } + + display_map (map); + } + + // Remove the entry on one end. + { + // Deletion while iterating. + for (MAP::iterator iter = map.begin (); + iter != map.end (); + ++iter) + { + MAP::ENTRY &entry = *iter; + if (entry.int_id_ == 0) + { + map.unbind (0); + } + } + + display_map (map); + } + + // Remove the entry on the other end. + { + // Deletion while iterating. + for (MAP::iterator iter = map.begin (); + iter != map.end (); + ++iter) + { + MAP::ENTRY &entry = *iter; + if (entry.int_id_ == 2) + { + map.unbind (2); + } + } + + display_map (map); + } + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + + // Insert a few entries. This will force an increase in map size. + for (i = 0; i < 4; ++i) + map.bind (i, i); + + display_map (map); + + // Remove a few entries (in reverse order). + for (i = 3; i >= 0; --i) + map.unbind (i); + + display_map (map); +} + +// Simple active map manager. +typedef ACE_Active_Map_Manager<int> ACTIVE_MAP; + +// +// Displaying the contents of an active map manager. +// + +void +display_map (ACTIVE_MAP &map) +{ + { + // Simple iteration printing the entries. + for (ACTIVE_MAP::iterator iter = map.begin (); + iter != map.end (); + ++iter) + { + ACTIVE_MAP::ENTRY &entry = *iter; + ACE_DEBUG ((LM_DEBUG, + ASYS_TEXT ("%d "), + entry.int_id_)); + } + + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n"))); + } + + { + // Simple reverse iteration printing the entries. + for (ACTIVE_MAP::reverse_iterator iter = map.rbegin (); + iter != map.rend (); + ++iter) + { + ACTIVE_MAP::ENTRY &entry = *iter; + ACE_DEBUG ((LM_DEBUG, + ASYS_TEXT ("%d "), + entry.int_id_)); + } + + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n"))); + } + + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\n"))); +} + +// +// Test for active map manager. +// + +void +active_map_test () +{ + // Map of size 3. + ACTIVE_MAP map (3); + ACE_Active_Map_Manager_Key keys[4]; + int i = 0; + + // Insert a few entries. + for (i = 0; i < 3; ++i) + map.bind (i, keys[i]); + + display_map (map); + + // Remove middle one. + map.unbind (keys[1]); + + display_map (map); + + // Remove the entry on one end. + map.unbind (keys[0]); + + display_map (map); + + // Remove the entry on the other end. + map.unbind (keys[2]); + + display_map (map); + + // If we have lazy map managers, we can delete entries while + // iterating over the map. + +#if defined (ACE_HAS_LAZY_MAP_MANAGER) + + // Insert a few entries. + for (i = 0; i < 3; ++i) + map.bind (i, keys[i]); + + display_map (map); + + // Remove middle one. + { + // Deletion while iterating. + for (ACTIVE_MAP::iterator iter = map.begin (); + iter != map.end (); + ++iter) + { + ACTIVE_MAP::ENTRY &entry = *iter; + if (entry.int_id_ == 1) + { + map.unbind (keys[1]); + } + } + + display_map (map); + } + + // Remove the entry on one end. + { + // Deletion while iterating. + for (ACTIVE_MAP::iterator iter = map.begin (); + iter != map.end (); + ++iter) + { + ACTIVE_MAP::ENTRY &entry = *iter; + if (entry.int_id_ == 0) + { + map.unbind (keys[0]); + } + } + + display_map (map); + } + + // Remove the entry on the other end. + { + // Deletion while iterating. + for (ACTIVE_MAP::iterator iter = map.begin (); + iter != map.end (); + ++iter) + { + ACTIVE_MAP::ENTRY &entry = *iter; + if (entry.int_id_ == 2) + { + map.unbind (keys[2]); + } + } + + display_map (map); + } + +#endif /* ACE_HAS_LAZY_MAP_MANAGER */ + + // Insert a few entries. This will force an increase in map size. + for (i = 0; i < 4; ++i) + map.bind (i, keys[i]); + + display_map (map); + + // Remove a few entries (in reverse order). + for (i = 3; i >= 0; --i) + map.unbind (keys[i]); + + display_map (map); +} + +int +main (int argc, ASYS_TCHAR *argv[]) +{ + ACE_START_TEST (ASYS_TEXT ("Lazy_Map_Manager_Test")); + ACE_LOG_MSG->clr_flags (ACE_Log_Msg::VERBOSE_LITE); + + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\nMap Manager...\n\n"))); + map_test (); + + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("\nActive Map Manager...\n\n"))); + active_map_test (); + + 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_Map_Manager<int, int, ACE_Null_Mutex>; +template class ACE_Map_Iterator_Base<int, int, ACE_Null_Mutex>; +template class ACE_Map_Iterator<int, int, ACE_Null_Mutex>; +template class ACE_Map_Reverse_Iterator<int, int, ACE_Null_Mutex>; +template class ACE_Map_Entry<int, int>; + +template class ACE_Active_Map_Manager<int>; +template class ACE_Map_Manager<ACE_Active_Map_Manager_Key, int, ACE_Null_Mutex>; +template class ACE_Map_Iterator_Base<ACE_Active_Map_Manager_Key, int, ACE_Null_Mutex>; +template class ACE_Map_Iterator<ACE_Active_Map_Manager_Key, int, ACE_Null_Mutex>; +template class ACE_Map_Reverse_Iterator<ACE_Active_Map_Manager_Key, int, ACE_Null_Mutex>; +template class ACE_Map_Entry<ACE_Active_Map_Manager_Key, int>; + +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) + +#pragma instantiate ACE_Map_Manager<int, int, ACE_Null_Mutex> +#pragma instantiate ACE_Map_Iterator_Base<int, int, ACE_Null_Mutex> +#pragma instantiate ACE_Map_Iterator<int, int, ACE_Null_Mutex> +#pragma instantiate ACE_Map_Reverse_Iterator<int, int, ACE_Null_Mutex> +#pragma instantiate ACE_Map_Entry<int, int> + +#pragma instantiate ACE_Active_Map_Manager<int> +#pragma instantiate ACE_Map_Manager<ACE_Active_Map_Manager_Key, int, ACE_Null_Mutex> +#pragma instantiate ACE_Map_Iterator_Base<ACE_Active_Map_Manager_Key, int, ACE_Null_Mutex> +#pragma instantiate ACE_Map_Iterator<ACE_Active_Map_Manager_Key, int, ACE_Null_Mutex> +#pragma instantiate ACE_Map_Reverse_Iterator<ACE_Active_Map_Manager_Key, int, ACE_Null_Mutex> +#pragma instantiate ACE_Map_Entry<ACE_Active_Map_Manager_Key, int> + +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/tests/Lazy_Map_Manager_Test.dsp b/tests/Lazy_Map_Manager_Test.dsp new file mode 100644 index 00000000000..430d11aae72 --- /dev/null +++ b/tests/Lazy_Map_Manager_Test.dsp @@ -0,0 +1,194 @@ +# Microsoft Developer Studio Project File - Name="Lazy_Map_Manager_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=Lazy_Map_Manager_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 "Lazy_Map_Manager_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 "Lazy_Map_Manager_Test.mak" CFG="Lazy_Map_Manager_Test - Win32 PharLap ETS Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Lazy_Map_Manager_Test - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "Lazy_Map_Manager_Test - Win32 Alpha Debug" (based on "Win32 (ALPHA) Console Application")
+!MESSAGE "Lazy_Map_Manager_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)" == "Lazy_Map_Manager_Test - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Atomic_O"
+# PROP BASE Intermediate_Dir "Atomic_O"
+# 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)" == "Lazy_Map_Manager_Test - Win32 Alpha Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Atomic_O"
+# PROP BASE Intermediate_Dir "Atomic_O"
+# 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)" == "Lazy_Map_Manager_Test - Win32 PharLap ETS Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Atomic_O"
+# PROP BASE Intermediate_Dir "Atomic_O"
+# 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 /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 aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\ace"
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /out:"Lazy_Map_Manager_Test_ETS.exe" /pdbtype:sept /libpath:"..\ace" /ETS:tests_pharlap_msvc.lnk
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "Lazy_Map_Manager_Test - Win32 Debug"
+# Name "Lazy_Map_Manager_Test - Win32 Alpha Debug"
+# Name "Lazy_Map_Manager_Test - Win32 PharLap ETS Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\Lazy_Map_Manager_Test.cpp
+
+!IF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 Debug"
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 Alpha Debug"
+
+DEP_CPP_Lazy=\
+ "..\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\Event_Handler.h"\
+ "..\ace\Event_Handler.i"\
+ "..\ace\Log_Msg.h"\
+ "..\ace\Log_Priority.h"\
+ "..\ace\Log_Record.h"\
+ "..\ace\Log_Record.i"\
+ "..\ace\Managed_Object.cpp"\
+ "..\ace\Managed_Object.h"\
+ "..\ace\Managed_Object.i"\
+ "..\ace\Object_Manager.h"\
+ "..\ace\Object_Manager.i"\
+ "..\ace\OS.h"\
+ "..\ace\OS.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\Synch.h"\
+ "..\ace\Synch.i"\
+ "..\ace\Synch_T.cpp"\
+ "..\ace\Synch_T.h"\
+ "..\ace\Synch_T.i"\
+ "..\ace\Thread.h"\
+ "..\ace\Thread.i"\
+ "..\ace\Trace.h"\
+ "..\ace\Version.h"\
+ "..\ace\ws2tcpip.h"\
+ ".\test_config.h"\
+
+NODEP_CPP_Lazy=\
+ "..\ace\stdcpp.h"\
+
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 PharLap ETS Debug"
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ".h"
+# Begin Source File
+
+SOURCE=.\test_config.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tests/Makefile b/tests/Makefile index 04322352d96..aa9c5a7139d 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -33,6 +33,7 @@ BIN = Aio_Platform_Test \ Hash_Map_Manager_Test \ Hash_Map_Bucket_Iterator_Test \ IOStream_Test \ + Lazy_Map_Manager_Test \ Log_Msg_Test \ Malloc_Test \ Map_Test \ diff --git a/tests/run_pharlap_tests.bat b/tests/run_pharlap_tests.bat index 88e6ee8b575..910f2a678f5 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 Lazy_Map_Manager_Test call %0 Hash_Map_Bucket_Iterator_Test call %0 High_Res_Timer_Test call %0 IOStream_Test diff --git a/tests/run_tests.bat b/tests/run_tests.bat index e3bbaf467a4..5abad7cbaa4 100644 --- a/tests/run_tests.bat +++ b/tests/run_tests.bat @@ -82,6 +82,7 @@ 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 +call %run_cmd% %dopure% %platform% Lazy_Map_Manager_Test call %run_cmd% %dopure% %platform% Cache_Map_Manager_Test call %run_cmd% %dopure% %platform% Cached_Conn_Test call %run_cmd% %dopure% %platform% Cached_Accept_Conn_Test diff --git a/tests/run_tests.lst b/tests/run_tests.lst index 11c5de2b66a..372f984580b 100644 --- a/tests/run_tests.lst +++ b/tests/run_tests.lst @@ -59,6 +59,7 @@ Cached_Conn_Test Cached_Accept_Conn_Test Map_Manager_Test Hash_Map_Manager_Test +Lazy_Map_Manager_Test Hash_Map_Bucket_Iterator_Test Map_Test Message_Queue_Notifications_Test diff --git a/tests/run_tests.psosim b/tests/run_tests.psosim index dd274a9e239..26b4cb5870d 100755 --- a/tests/run_tests.psosim +++ b/tests/run_tests.psosim @@ -142,6 +142,8 @@ run Map_Manager_Test # uses Map Manager and Hash Map Manager run Hash_Map_Manager_Test # uses Hash Map Manager + Forward and Reverse Map Iterators. +run Lazy_Map_Manager_Test # uses Lazy 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. diff --git a/tests/tests.dsw b/tests/tests.dsw index 30c4eea17e8..41b38acf169 100644 --- a/tests/tests.dsw +++ b/tests/tests.dsw @@ -99,6 +99,18 @@ Package=<4> ###############################################################################
+Project: "Lazy_Map_Manager_Test"=.\Lazy_Map_Manager_Test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "Cached_Conn_Test"=.\Cached_Conn_Test.dsp - Package Owner=<4>
Package=<5>
diff --git a/tests/version_tests/Lazy_Map_Manager_Test.dsp b/tests/version_tests/Lazy_Map_Manager_Test.dsp new file mode 100644 index 00000000000..1cd0f007127 --- /dev/null +++ b/tests/version_tests/Lazy_Map_Manager_Test.dsp @@ -0,0 +1,274 @@ +# Microsoft Developer Studio Project File - Name="Lazy_Map_Manager_Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=Lazy_Map_Manager_Test - Win32 DLL 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 "Lazy_Map_Manager_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 "Lazy_Map_Manager_Test.mak" CFG="Lazy_Map_Manager_Test - Win32 DLL Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Lazy_Map_Manager_Test - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "Lazy_Map_Manager_Test - Win32 DLL Unicode Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "Lazy_Map_Manager_Test - Win32 static Unicode Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "Lazy_Map_Manager_Test - Win32 static Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "Lazy_Map_Manager_Test - Win32 DLL Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "Lazy_Map_Manager_Test - Win32 DLL Unicode Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "Lazy_Map_Manager_Test - Win32 static Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "Lazy_Map_Manager_Test - Win32 static Unicode Release" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Lazy_Map_Manager_Test\DLL Debug"
+# PROP BASE Intermediate_Dir ".\Lazy_Map_Manager_Test\DLL Debug"
+# PROP BASE Target_Dir ".\Lazy_Map_Manager_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\DLL Debug"
+# PROP Intermediate_Dir ".\DLL Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Lazy_Map_Manager_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=1 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# 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
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 DLL Unicode Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Lazy_Map_Manager_Test\DLL Unicode Debug"
+# PROP BASE Intermediate_Dir ".\Lazy_Map_Manager_Test\DLL Unicode Debug"
+# PROP BASE Target_Dir ".\Lazy_Map_Manager_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\DLL Unicode Debug"
+# PROP Intermediate_Dir ".\DLL Unicode Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Lazy_Map_Manager_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=1 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# 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
+# ADD LINK32 aceud.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 static Unicode Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Lazy_Map_Manager_Test\static Unicode Debug"
+# PROP BASE Intermediate_Dir ".\Lazy_Map_Manager_Test\static Unicode Debug"
+# PROP BASE Target_Dir ".\Lazy_Map_Manager_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\static Unicode Debug"
+# PROP Intermediate_Dir ".\static Unicode Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Lazy_Map_Manager_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=0 /D ACE_NO_INLINE /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# 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
+# ADD LINK32 acesud.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 static Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Lazy_Map_Manager_Test\static Debug"
+# PROP BASE Intermediate_Dir ".\Lazy_Map_Manager_Test\static Debug"
+# PROP BASE Target_Dir ".\Lazy_Map_Manager_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\static Debug"
+# PROP Intermediate_Dir ".\static Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Lazy_Map_Manager_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=0 /D ACE_NO_INLINE /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# 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
+# ADD LINK32 acesd.lib advapi32.lib user32.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Lazy_Map_Manager_Test\DLL Release"
+# PROP BASE Intermediate_Dir ".\Lazy_Map_Manager_Test\DLL Release"
+# PROP BASE Target_Dir ".\Lazy_Map_Manager_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\DLL Release"
+# PROP Intermediate_Dir ".\DLL Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Lazy_Map_Manager_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=1 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+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 /machine:I386
+# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 DLL Unicode Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Lazy_Map_Manager_Test\DLL Unicode Release"
+# PROP BASE Intermediate_Dir ".\Lazy_Map_Manager_Test\DLL Unicode Release"
+# PROP BASE Target_Dir ".\Lazy_Map_Manager_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\DLL Unicode Release"
+# PROP Intermediate_Dir ".\DLL Unicode Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Lazy_Map_Manager_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=1 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+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 /machine:I386
+# ADD LINK32 aceu.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 static Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Lazy_Map_Manager_Test\static Release"
+# PROP BASE Intermediate_Dir ".\Lazy_Map_Manager_Test\static Release"
+# PROP BASE Target_Dir ".\Lazy_Map_Manager_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\static Release"
+# PROP Intermediate_Dir ".\static Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Lazy_Map_Manager_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=0 /D ACE_NO_INLINE /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+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 /machine:I386
+# ADD LINK32 aces.lib advapi32.lib user32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Lazy_Map_Manager_Test - Win32 static Unicode Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Lazy_Map_Manager_Test\static Unicode Release"
+# PROP BASE Intermediate_Dir ".\Lazy_Map_Manager_Test\static Unicode Release"
+# PROP BASE Target_Dir ".\Lazy_Map_Manager_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\static Unicode Release"
+# PROP Intermediate_Dir ".\static Unicode Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Lazy_Map_Manager_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=0 /D ACE_NO_INLINE /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+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 /machine:I386
+# ADD LINK32 acesu.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Lazy_Map_Manager_Test - Win32 DLL Debug"
+# Name "Lazy_Map_Manager_Test - Win32 DLL Unicode Debug"
+# Name "Lazy_Map_Manager_Test - Win32 static Unicode Debug"
+# Name "Lazy_Map_Manager_Test - Win32 static Debug"
+# Name "Lazy_Map_Manager_Test - Win32 DLL Release"
+# Name "Lazy_Map_Manager_Test - Win32 DLL Unicode Release"
+# Name "Lazy_Map_Manager_Test - Win32 static Release"
+# Name "Lazy_Map_Manager_Test - Win32 static Unicode Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=..\Lazy_Map_Manager_Test.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# Begin Source File
+
+SOURCE=..\Lazy_Map_Manager_Test.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\test_config.h
+# End Source File
+# 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/version_tests/version_tests.dsw b/tests/version_tests/version_tests.dsw index 494d4377e17..56889916585 100644 --- a/tests/version_tests/version_tests.dsw +++ b/tests/version_tests/version_tests.dsw @@ -267,6 +267,18 @@ Package=<4> ###############################################################################
+Project: "Lazy_Map_Manager_Test"=.\Lazy_Map_Manager_Test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "High_Res_Timer_Test"=.\High_Res_Timer_Test.dsp - Package Owner=<4>
Package=<5>
|