diff options
author | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-12-28 03:51:54 +0000 |
---|---|---|
committer | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-12-28 03:51:54 +0000 |
commit | 81f9fd2cd6ee09f31307ea583fcb5b6edd14ee7a (patch) | |
tree | a1b780004d2abe74bc4d4b6d43d5afbd08dc0fee | |
parent | 2ceafde70be1a680eb46bae97d9a57dc434f3f84 (diff) | |
download | ATCD-81f9fd2cd6ee09f31307ea583fcb5b6edd14ee7a.tar.gz |
*** empty log message ***
-rw-r--r-- | ChangeLog-98b | 277 |
1 files changed, 141 insertions, 136 deletions
diff --git a/ChangeLog-98b b/ChangeLog-98b index 481f48786bc..2dc5c5725f5 100644 --- a/ChangeLog-98b +++ b/ChangeLog-98b @@ -1,142 +1,147 @@ +Sun Dec 27 21:51:10 1998 David L. Levine <levine@cs.wustl.edu> + + * etc/purify.solaris2: added a couple of MIU suppressions for + SunOS 5.7's thread library. + Fri Dec 25 08:23:51 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ACE-INSTALL.html: Fixed a broken link to the ACE FAQ. Thanks to - Barry Hoggard <hoggardb@panix.com> for reporting this. + * ACE-INSTALL.html: Fixed a broken link to the ACE FAQ. Thanks to + Barry Hoggard <hoggardb@panix.com> for reporting this. Fri Dec 25 01:55:32 1998 Irfan Pyarali <irfan@cs.wustl.edu> - * ace/Hash_Map_Manager: There are two problems with the current - implementation of Hash_Map_Manager: - - (a) It requires a hash() method on the key type. If it is not - possible for the key type to have a hash() function (e.g., - the key is a primitive type such as an int, or is a pointer - type, or a three party class), the usual solution is to do - partial template specialization. - - This is usually not a very good option since some compilers - do not support partial template specialization. - - (b) The second problem is with comparing two keys. - Hash_Map_Manager assumes that keys can be compared using - operator==. This assumption causes problems in some cases, - e.g., when using char * as the key. Usually with char *, - you want to use strcmp and not compare pointers. - - Solution to these two problems is the new Hash_Map_Manager_Ex - class. Problem (a) is addressed by using a function object - the - type of which is specified by the user as an additional template - parameter. Problem (b) is addressed by using another function - object - the type of which is specified by the user as an - additional template parameter. So the new Hash_Map_Manager_Ex - takes five template parameters: - - <key, value, hash_key, compare_keys, mutex> - - Backward compatibility: Hash_Map_Manager now inherits from - Hash_Map_Manager_Ex, fixing the hash_key function object (which - simply calls key.hash()) and fixing compare_keys (which simply - uses operator== on the keys). - - There will be one problem: Users of compilers that do not - implicitly instantiate templates will have to update their list - of template instantiations. To help with this, please see + * ace/Hash_Map_Manager: There are two problems with the current + implementation of Hash_Map_Manager: + + (a) It requires a hash() method on the key type. If it is not + possible for the key type to have a hash() function (e.g., + the key is a primitive type such as an int, or is a pointer + type, or a three party class), the usual solution is to do + partial template specialization. + + This is usually not a very good option since some compilers + do not support partial template specialization. + + (b) The second problem is with comparing two keys. + Hash_Map_Manager assumes that keys can be compared using + operator==. This assumption causes problems in some cases, + e.g., when using char * as the key. Usually with char *, + you want to use strcmp and not compare pointers. + + Solution to these two problems is the new Hash_Map_Manager_Ex + class. Problem (a) is addressed by using a function object - the + type of which is specified by the user as an additional template + parameter. Problem (b) is addressed by using another function + object - the type of which is specified by the user as an + additional template parameter. So the new Hash_Map_Manager_Ex + takes five template parameters: + + <key, value, hash_key, compare_keys, mutex> + + Backward compatibility: Hash_Map_Manager now inherits from + Hash_Map_Manager_Ex, fixing the hash_key function object (which + simply calls key.hash()) and fixing compare_keys (which simply + uses operator== on the keys). + + There will be one problem: Users of compilers that do not + implicitly instantiate templates will have to update their list + of template instantiations. To help with this, please see $ACE_ROOT/bin/Hash_Map_Manager_Helper.csh - - Other miscellaneous changes: Added two new classes: ACE_Hash<T> - and ACE_Equal_To<T>. ACE_Hash assumes a hash() method on T. - ACE_Equal_To compares by using operator==. However, the - ACE_Hash class has been specialized to work with: - - char, signed char, unsigned char, - short, unsigned short, - int, unsigned int, - long, unsigned long, - const char *, char *, - const wchar_t *, wchar_t *, - const ACE_USHORT16 *, ACE_USHORT16 *, - - Also, ACE_Equal_To has been specialized to work with: - - const char *, char *, - const wchar_t *, wchar_t *, - const ACE_USHORT16 *, ACE_USHORT16 *, - - Remember, you don't have to use these specialization. You can - always create your own. - - If we had default template parameters, we could default hash_key - to ACE_Hash<key> and compare_keys could default to - ACE_Equal_To<key>. - - BTW, note that the specialization with ACE_Hash and ACE_Equal_To - is not partial template specialization. It is complete template - specialization, and we don't know of compilers that cannot - handle complete template specialization. - - Since we now have template specialization, Hash_Map_Manager_T.* - files were created. I also took this opportunity to inline most - of the Hash_Map_Manager functions. - - Also, update the makefiles and project files. - - BTW, these changes grossly simplified - tests/Hash_Map_Manager_Test.cpp and tests/Map_Manager_Test.cpp. - These tests will now work with compilers that do not support - partial template specialization. Maybe James can change - Filecache to take advantage of these changes. - - Updated the following files with the new template instantiations: - - ace/Filecache.cpp - ace/Local_Name_Space.cpp - ace/Template_Instantiations.cpp - tests/Conn_Test.cpp - tests/Hash_Map_Manager_Test.cpp - tests/Map_Manager_Test.cpp - TAO/examples/Callback_Quoter/Notifier_i.cpp - TAO/examples/POA/On_Demand_Loading/Servant_Manager.cpp - TAO/examples/Simple/bank/AccountManager_i.cpp - TAO/orbsvcs/orbsvcs/AV/AVStreams_i.cpp - TAO/orbsvcs/orbsvcs/Event/EC_Gateway_UDP.cpp - TAO/orbsvcs/orbsvcs/Log/Logger_i.cpp - TAO/orbsvcs/orbsvcs/Property/CosPropertyService_i.cpp - TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp - TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp - TAO/orbsvcs/orbsvcs/Trader/Trader.cpp - TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.cpp - TAO/tao/ORB.cpp - TAO/tao/ORB_Core.cpp - TAO/tao/Object_Table.cpp - TAO/tao/Operation_Table.cpp - TAO/tao/POA.cpp - examples/Map_Manager/test_hash_map_manager.cpp - - Thanks to Carlos for suggesting these changes. Most of these - were inspired by SGI's STL. - - If these changes are successful (i.e., nobody is hunting me down - for breaking their code ;-)), we should add a similar comparison - function object to Map_Manager, Collections in Containers_T that - require an operator==() (typically for remove() and find()) and - the RB_Tree. - - * ace/ACE (hash_pjw): hash_pjw is now available for char *, - wchar_t *, and ACE_UINT16 *. - - * ace/OS (strlen, strcpy, strcmp): These functions are now - available for char *, wchar_t *, and ACE_UINT16 *. - - * ace/SString.cpp (ACE_WString::strlen): Simply calls - ACE_OS::strlen. - - * ace/config-win32-common.h (ACE_HAS_WCHAR_TYPEDEFS_USHORT): Since - Win32 typedefs wchar_t as a 16 bit unsigned short, this can - potentially cause problems with function overloading. - Therefore, I added ACE_HAS_WCHAR_TYPEDEFS_USHORT to the Win32 - config file. This is very similar to - ACE_HAS_WCHAR_TYPEDEFS_CHAR. Thanks to David Levine for helping - with this. + + Other miscellaneous changes: Added two new classes: ACE_Hash<T> + and ACE_Equal_To<T>. ACE_Hash assumes a hash() method on T. + ACE_Equal_To compares by using operator==. However, the + ACE_Hash class has been specialized to work with: + + char, signed char, unsigned char, + short, unsigned short, + int, unsigned int, + long, unsigned long, + const char *, char *, + const wchar_t *, wchar_t *, + const ACE_USHORT16 *, ACE_USHORT16 *, + + Also, ACE_Equal_To has been specialized to work with: + + const char *, char *, + const wchar_t *, wchar_t *, + const ACE_USHORT16 *, ACE_USHORT16 *, + + Remember, you don't have to use these specialization. You can + always create your own. + + If we had default template parameters, we could default hash_key + to ACE_Hash<key> and compare_keys could default to + ACE_Equal_To<key>. + + BTW, note that the specialization with ACE_Hash and ACE_Equal_To + is not partial template specialization. It is complete template + specialization, and we don't know of compilers that cannot + handle complete template specialization. + + Since we now have template specialization, Hash_Map_Manager_T.* + files were created. I also took this opportunity to inline most + of the Hash_Map_Manager functions. + + Also, update the makefiles and project files. + + BTW, these changes grossly simplified + tests/Hash_Map_Manager_Test.cpp and tests/Map_Manager_Test.cpp. + These tests will now work with compilers that do not support + partial template specialization. Maybe James can change + Filecache to take advantage of these changes. + + Updated the following files with the new template instantiations: + + ace/Filecache.cpp + ace/Local_Name_Space.cpp + ace/Template_Instantiations.cpp + tests/Conn_Test.cpp + tests/Hash_Map_Manager_Test.cpp + tests/Map_Manager_Test.cpp + TAO/examples/Callback_Quoter/Notifier_i.cpp + TAO/examples/POA/On_Demand_Loading/Servant_Manager.cpp + TAO/examples/Simple/bank/AccountManager_i.cpp + TAO/orbsvcs/orbsvcs/AV/AVStreams_i.cpp + TAO/orbsvcs/orbsvcs/Event/EC_Gateway_UDP.cpp + TAO/orbsvcs/orbsvcs/Log/Logger_i.cpp + TAO/orbsvcs/orbsvcs/Property/CosPropertyService_i.cpp + TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp + TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp + TAO/orbsvcs/orbsvcs/Trader/Trader.cpp + TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.cpp + TAO/tao/ORB.cpp + TAO/tao/ORB_Core.cpp + TAO/tao/Object_Table.cpp + TAO/tao/Operation_Table.cpp + TAO/tao/POA.cpp + examples/Map_Manager/test_hash_map_manager.cpp + + Thanks to Carlos for suggesting these changes. Most of these + were inspired by SGI's STL. + + If these changes are successful (i.e., nobody is hunting me down + for breaking their code ;-)), we should add a similar comparison + function object to Map_Manager, Collections in Containers_T that + require an operator==() (typically for remove() and find()) and + the RB_Tree. + + * ace/ACE (hash_pjw): hash_pjw is now available for char *, + wchar_t *, and ACE_UINT16 *. + + * ace/OS (strlen, strcpy, strcmp): These functions are now + available for char *, wchar_t *, and ACE_UINT16 *. + + * ace/SString.cpp (ACE_WString::strlen): Simply calls + ACE_OS::strlen. + + * ace/config-win32-common.h (ACE_HAS_WCHAR_TYPEDEFS_USHORT): Since + Win32 typedefs wchar_t as a 16 bit unsigned short, this can + potentially cause problems with function overloading. + Therefore, I added ACE_HAS_WCHAR_TYPEDEFS_USHORT to the Win32 + config file. This is very similar to + ACE_HAS_WCHAR_TYPEDEFS_CHAR. Thanks to David Levine for helping + with this. Thu Dec 24 09:37:32 1998 Douglas C. Schmidt <schmidt@cs.wustl.edu> @@ -144,9 +149,9 @@ Thu Dec 24 09:37:32 1998 Douglas C. Schmidt <schmidt@cs.wustl.edu> Thu Dec 24 00:59:46 1998 Nanbor Wang <nanbor@cs.wustl.edu> - * ace/Thread_Manager.h (ACE_Thread_Manager): Added a more complete - documentation of the deprecated <at_exit> method. Thanks to - Keith Brown <kalbrown@ix.netcom.com> for reporting this. + * ace/Thread_Manager.h (ACE_Thread_Manager): Added a more complete + documentation of the deprecated <at_exit> method. Thanks to + Keith Brown <kalbrown@ix.netcom.com> for reporting this. Wed Dec 23 16:37:52 1998 David L. Levine <levine@cs.wustl.edu> |