diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-08-01 23:39:29 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-08-01 23:39:29 +0000 |
commit | 78f15e9fef70e8500baf261258da62677e2340ff (patch) | |
tree | e57b699c9fbf526acfc5397696dfdf10e6c53a12 | |
parent | fab8d075109f2475f4423aed5743dd4c9635e6a9 (diff) | |
download | ATCD-78f15e9fef70e8500baf261258da62677e2340ff.tar.gz |
ChangeLogTag:Wed Aug 1 16:05:49 2001 Carlos O'Ryan <coryan@uci.edu>
-rw-r--r-- | ChangeLog | 500 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-02a | 500 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-03a | 500 | ||||
-rw-r--r-- | ace/Intrusive_List.cpp | 151 | ||||
-rw-r--r-- | ace/Intrusive_List.h | 131 | ||||
-rw-r--r-- | ace/Intrusive_List.inl | 19 | ||||
-rw-r--r-- | ace/Intrusive_List_Node.cpp | 25 | ||||
-rw-r--r-- | ace/Intrusive_List_Node.h | 81 | ||||
-rw-r--r-- | ace/Intrusive_List_Node.inl | 25 | ||||
-rw-r--r-- | ace/Makefile | 2 | ||||
-rw-r--r-- | ace/Makefile.am | 6 | ||||
-rw-r--r-- | ace/Makefile.bor | 2 |
12 files changed, 1243 insertions, 699 deletions
diff --git a/ChangeLog b/ChangeLog index 7fc95d97fe1..236b79768a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,111 +1,145 @@ +Wed Aug 1 16:05:49 2001 Carlos O'Ryan <coryan@uci.edu> + + * Merged changes from the fix_886 branch + + Tue Jul 31 09:17:49 2001 Carlos O'Ryan <coryan@uci.edu> + + * ace/Intrusive_List.h: + * ace/Intrusive_List.inl: + Add new methods to access the head and tail of the list. + + * ace/Intrusive_List.cpp: + Fixed the implementation of remove(), if the element to be + removed was the last on the list it wasn't removed at all. + Left some code to check invariants, have to find a way to keep + that code around with some optional compilation flags. + + Thu Jul 26 16:50:54 2001 Carlos O'Ryan <coryan@uci.edu> + + * ace/Makefile: + * ace/Makefile.am: + * ace/Makefile.bor: + * ace/Intrusive_List.h: + * ace/Intrusive_List.inl: + * ace/Intrusive_List.cpp: + Add new template to implement intrusive lists, i.e. lists that + assume their elements implement the next() and prev() methods. + + * ace/Intrusive_List_Node.h: + * ace/Intrusive_List_Node.inl: + * ace/Intrusive_List_Node.cpp: + Helper class to add the requirements of ACE_Intrusive_List to + any other class, simply do: + class Foo : public ACE_Intrusive_List_Node<Foo> + Wed Aug 1 15:57:35 2001 Ossama Othman <ossama@uci.edu> - * ace/Message_Block.cpp (release, release_i): + * ace/Message_Block.cpp (release, release_i): - Obtain the pointer to the allocator from the object that will be - destroyed before calling ACE_DES_FREE on the object. Previously - we were obtaining the allocator after the object was destroyed, - due to the way the ACE_DES_FREE macro works. Thanks to Hyman - Rosen <hyrosen@mail.com> for reporting the problem, and to - Carlos for suggesting a fix. [Bug 992] + Obtain the pointer to the allocator from the object that will be + destroyed before calling ACE_DES_FREE on the object. Previously + we were obtaining the allocator after the object was destroyed, + due to the way the ACE_DES_FREE macro works. Thanks to Hyman + Rosen <hyrosen@mail.com> for reporting the problem, and to + Carlos for suggesting a fix. [Bug 992] Wed Aug 1 15:00:21 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Log_Record.{h,i}: Changed msg_data_len() from a "setter" - to a "getter" method, which makes more sense. Thanks to Patrick - Rabau <Patrick.Rabau@htc.com> for reporting this. + * ace/Log_Record.{h,i}: Changed msg_data_len() from a "setter" + to a "getter" method, which makes more sense. Thanks to Patrick + Rabau <Patrick.Rabau@htc.com> for reporting this. Wed Aug 1 12:43:57 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_l.cpp: - Reintegreated Nanbor's change (Wed Jun 13 10:22:10 2001 Nanbor - Wang <nanbor@cs.wustl.edu>) that enables proper handling of - UNICODE Service Configurator directives. + Reintegreated Nanbor's change (Wed Jun 13 10:22:10 2001 Nanbor + Wang <nanbor@cs.wustl.edu>) that enables proper handling of + UNICODE Service Configurator directives. Wed Aug 1 07:14:42 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * include/makeinclude/platform_vxworks5.x_g++.GNU: Checked in a new - version of this file, which includes support for the Hitachi - chip. Thanks to Frank Wolf for this. + * include/makeinclude/platform_vxworks5.x_g++.GNU: Checked in a new + version of this file, which includes support for the Hitachi + chip. Thanks to Frank Wolf for this. - * ace/Log_Record.cpp (format_msg): Added a cast to fix a warning. - Thanks to Bala for reporting this. + * ace/Log_Record.cpp (format_msg): Added a cast to fix a warning. + Thanks to Bala for reporting this. Tue Jul 31 22:53:26 2001 Ossama Othman <ossama@uci.edu> - * tests/libService_Config_DLL.icc: + * tests/libService_Config_DLL.icc: - New Visual Age project file for the libService_Config_DLL - library. + New Visual Age project file for the libService_Config_DLL + library. - * tests/Makefile.am: + * tests/Makefile.am: - Added build targets/dependencies for the libService_Config_DLL - library. + Added build targets/dependencies for the libService_Config_DLL + library. Tue Jul 31 22:46:33 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_DLL.dsp: - * tests/Service_Config_Test.dsp: + * tests/Service_Config_DLL.dsp: + * tests/Service_Config_Test.dsp: - Removed the static library configurations. The - Service_Config_Test currently requires dynamically loadable - objects. Fixes Win32 "LIB" build failures. + Removed the static library configurations. The + Service_Config_Test currently requires dynamically loadable + objects. Fixes Win32 "LIB" build failures. Tue Jul 31 22:10:48 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_Test.cpp (run_test): + * tests/Service_Config_Test.cpp (run_test): - Wrap strings passed to ACE_ARGV::add() within an ACE_TEXT - macro. Fixes Unicode conversion problems. + Wrap strings passed to ACE_ARGV::add() within an ACE_TEXT + macro. Fixes Unicode conversion problems. Tue Jul 31 16:53:57 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf.h (ace_yyrestart, ace_yy_delete_parse_buffer, - ace_yydirective): + * ace/Svc_Conf.h (ace_yyrestart, ace_yy_delete_parse_buffer, + ace_yydirective): - Remove these global function and variable declarations. They - are no longer used. + Remove these global function and variable declarations. They + are no longer used. Tue Jul 31 16:43:33 2001 Ossama Othman <ossama@uci.edu> - * ace/Basic_Types.h: + * ace/Basic_Types.h: - If "__LITTLE_ENDIAN__" is defined then assume that the - architecture is little endian. Some compilers/platforms define - that macro. Suggested by Frank Wolf" <fwolf@gum.de>. + If "__LITTLE_ENDIAN__" is defined then assume that the + architecture is little endian. Some compilers/platforms define + that macro. Suggested by Frank Wolf" <fwolf@gum.de>. - * ace/Svc_Conf.h (yy_push_buffer): - * ace/Svc_Conf.l (yy_push_buffer): - * ace/Svc_Conf_l.cpp (ace_yy_push_buffer): - * ace/Svc_Conf_Lexer_Guard.cpp (ACE_Svc_Conf_Lexer_Guard): - * ace/Svc_Conf_Lexer_Guard.h (ACE_Svc_Conf_Lexer_Guard): + * ace/Svc_Conf.h (yy_push_buffer): + * ace/Svc_Conf.l (yy_push_buffer): + * ace/Svc_Conf_l.cpp (ace_yy_push_buffer): + * ace/Svc_Conf_Lexer_Guard.cpp (ACE_Svc_Conf_Lexer_Guard): + * ace/Svc_Conf_Lexer_Guard.h (ACE_Svc_Conf_Lexer_Guard): - The Service Configurator directive is an "ACE_TCHAR *" not a - "char *". Updated these method/function parameters to accept - the former. Fixes a compile-time problem on "wchar/Unicode" - builds. + The Service Configurator directive is an "ACE_TCHAR *" not a + "char *". Updated these method/function parameters to accept + the former. Fixes a compile-time problem on "wchar/Unicode" + builds. Tue Jul 31 05:34:48 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/OS.h: Removed a spurious WNOHANG definition. Thanks to - Christina Junru <junruli@lucent.com> for reporting this. + * ace/OS.h: Removed a spurious WNOHANG definition. Thanks to + Christina Junru <junruli@lucent.com> for reporting this. Mon Jul 30 15:31:42 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Log_Msg.{h,i,cpp}: Fixed this class so that all of its fields - are ACE_UINT32 or ACE_INT32 internally so that it'll always be - the same on all platforms. Thanks to Fabris - <fabris65@my-deja.com> for reporting this. + * ace/Log_Msg.{h,i,cpp}: Fixed this class so that all of its fields + are ACE_UINT32 or ACE_INT32 internally so that it'll always be + the same on all platforms. Thanks to Fabris + <fabris65@my-deja.com> for reporting this. Tue Jul 31 10:22:38 2001 Ossama Othman <ossama@uci.edu> - * tests/Makefile: + * tests/Makefile: - Only build the Service_Config_Test if shared libraries are - enabled, since it attempts to dynamically load a shared - library. + Only build the Service_Config_Test if shared libraries are + enabled, since it attempts to dynamically load a shared + library. Tue Jul 31 10:16:31 2001 Steve Huston <shuston@riverace.com> @@ -115,266 +149,266 @@ Tue Jul 31 10:16:31 2001 Steve Huston <shuston@riverace.com> Mon Jul 30 13:41:00 2001 Nanbor Wang <nanbor@cs.wustl.edu> - * ace/OS.cpp (ACE_Time_Value::FILETIME_to_timval_skew): Updated - docuementation to better explain the meaning of this constant. - Thanks to Mike Vitalo <mvitalo@sprynet.com> for motivating the - change. + * ace/OS.cpp (ACE_Time_Value::FILETIME_to_timval_skew): Updated + docuementation to better explain the meaning of this constant. + Thanks to Mike Vitalo <mvitalo@sprynet.com> for motivating the + change. Mon Jul 30 09:43:06 2001 Douglas C. Schmidt <schmidt@macarena.cs.wustl.edu> - * ace/OS.i (mutex_lock): Missing an argument to the ACE_OSCALL macro. - Thanks to Bala for reporting this. + * ace/OS.i (mutex_lock): Missing an argument to the ACE_OSCALL macro. + Thanks to Bala for reporting this. Mon Jul 30 05:43:23 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Synch.h (ACE_Semaphore): Corrected the comment on - how to get POSIX Pthreads "implementation" of semaphores (which - supports the timed acquire() option). Thanks to Grzegorz - Sikora <GSikora1@era.pl> for reporting this. + * ace/Synch.h (ACE_Semaphore): Corrected the comment on + how to get POSIX Pthreads "implementation" of semaphores (which + supports the timed acquire() option). Thanks to Grzegorz + Sikora <GSikora1@era.pl> for reporting this. Sun Jul 29 19:03:56 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * tests/Thread_Mutex_Test.cpp (test): Fixed this test to be - consistent wrt the errno for the timed acquire(), which should - now always be set to ETIME rather than ETIMEDOUT and EBUSY. + * tests/Thread_Mutex_Test.cpp (test): Fixed this test to be + consistent wrt the errno for the timed acquire(), which should + now always be set to ETIME rather than ETIMEDOUT and EBUSY. - * ace/Message_Queue_T.cpp (wait_not_full_cond, - wait_not_empty_cond): Fixed a nasty bug with the semaphore - version of ACE_Message_Queue that would have reared it's ugly - head if ACE_NULL_SYNCH were used when - ACE_HAS_OPTIMIZED_MESSAGE_QUEUE was enabled. Fixing this bug - also triggered the following changes. + * ace/Message_Queue_T.cpp (wait_not_full_cond, + wait_not_empty_cond): Fixed a nasty bug with the semaphore + version of ACE_Message_Queue that would have reared it's ugly + head if ACE_NULL_SYNCH were used when + ACE_HAS_OPTIMIZED_MESSAGE_QUEUE was enabled. Fixing this bug + also triggered the following changes. - * ace/OS.{h,i}: Added support for ACE_OS::sema_wait(), - ACE_OS::mutex_lock(), ACE_OS::thread_mutex_lock() that take - ACE_Time_Value *. + * ace/OS.{h,i}: Added support for ACE_OS::sema_wait(), + ACE_OS::mutex_lock(), ACE_OS::thread_mutex_lock() that take + ACE_Time_Value *. - * ace/OS.i: For some odd reason the timeouts for the timed version - of mutex_lock() were returning a random smattering of errnos. - I've changed them to all be consistent with the - ACE_Condition_Thread_Mutex::wait() errno, which is ETIME. + * ace/OS.i: For some odd reason the timeouts for the timed version + of mutex_lock() were returning a random smattering of errnos. + I've changed them to all be consistent with the + ACE_Condition_Thread_Mutex::wait() errno, which is ETIME. - * ace/Synch.h: Updated the documentation of all the timed - acquire() methods to explain what the various return values - mean. + * ace/Synch.h: Updated the documentation of all the timed + acquire() methods to explain what the various return values + mean. Sun Jul 29 22:10:40 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_DLL.cpp: - * tests/Service_Config_DLL.h: - * tests/Service_Config_DLL.dsp: - * tests/Service_Config_DLL_Export.h: - * tests/Service_Config_Test.conf: + * tests/Service_Config_DLL.cpp: + * tests/Service_Config_DLL.h: + * tests/Service_Config_DLL.dsp: + * tests/Service_Config_DLL_Export.h: + * tests/Service_Config_Test.conf: - New files associated with the existing Service_Config_Test. - They are used when testing the reentrance/thread-safety of the - Service Configurator, in addition to testing the Service - Configurator's ability to handle nested processing of Service - Configurator directives. + New files associated with the existing Service_Config_Test. + They are used when testing the reentrance/thread-safety of the + Service Configurator, in addition to testing the Service + Configurator's ability to handle nested processing of Service + Configurator directives. - * tests/Service_Config_Test.cpp (run_test): + * tests/Service_Config_Test.cpp (run_test): - Add arguments to the Service Configurator argument vector to - make it process the newly added `Service_Config_Test.conf' - file. + Add arguments to the Service Configurator argument vector to + make it process the newly added `Service_Config_Test.conf' + file. - (main): + (main): - Make the ACE_Thread_Manager wait for all running threads before - exiting the test. Processing the `Service_Config_Test.conf' - file causes some threads to be spawned. + Make the ACE_Thread_Manager wait for all running threads before + exiting the test. Processing the `Service_Config_Test.conf' + file causes some threads to be spawned. Sun Jul 29 19:19:20 2001 Ossama Othman <ossama@uci.edu> - * ace/Service_Config.cpp (process_directive, process_directives): + * ace/Service_Config.cpp (process_directive, process_directives): - Wrap the ACE_GUARD_RETURN macro within an ACE_MT block. The - ACE_Static_Object_Lock declaration is only visible if - ACE_HAS_THREADS is defined. This truly fixes the - single-threaded build problems. + Wrap the ACE_GUARD_RETURN macro within an ACE_MT block. The + ACE_Static_Object_Lock declaration is only visible if + ACE_HAS_THREADS is defined. This truly fixes the + single-threaded build problems. Sun Jul 29 19:06:11 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf.y (ace_obstack): - * ace/Svc_Conf_y.cpp: - * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf.y (ace_obstack): + * ace/Svc_Conf_y.cpp: + * ace/Svc_Conf_l.cpp: - UNICODE updates and fixes. + UNICODE updates and fixes. Sun Jul 29 10:50:45 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf_Lexer_Guard.cpp: + * ace/Svc_Conf_Lexer_Guard.cpp: - There is no longer any need to include "ace/Object_Manager.h" + There is no longer any need to include "ace/Object_Manager.h" - * ace/Service_Config.cpp: + * ace/Service_Config.cpp: - Include "ace/Object_Manager.h" to pull in the definition of - ACE_Static_Object_Lock. Fixes a problem found in Sun builds and - single-threaded builds. + Include "ace/Object_Manager.h" to pull in the definition of + ACE_Static_Object_Lock. Fixes a problem found in Sun builds and + single-threaded builds. Sat Jul 28 23:03:24 2001 Ossama Othman <ossama@uci.edu> - The following are changes that make the Service Configurator - reentrant and thread-safe. + The following are changes that make the Service Configurator + reentrant and thread-safe. - * ace/Svc_Conf.y: + * ace/Svc_Conf.y: - Generate a pure (reentrant) parser using Bison. BYACC doesn't - support generation of reentrant parsers. + Generate a pure (reentrant) parser using Bison. BYACC doesn't + support generation of reentrant parsers. - * ace/Svc_Conf.l: + * ace/Svc_Conf.l: - Implemented "buffer stack" support. This feature makes it - possible to process Service Configurator directives within a - Service Object's init() method, i.e. support nested directive - processing. + Implemented "buffer stack" support. This feature makes it + possible to process Service Configurator directives within a + Service Object's init() method, i.e. support nested directive + processing. - (ace_yyerrno): + (ace_yyerrno): - Moved declaration of ace_yyerrno from this file to - `Svc_Conf.y'. ace_yyerrno was not used in the generated - scanner. It was only used in the generated parser. + Moved declaration of ace_yyerrno from this file to + `Svc_Conf.y'. ace_yyerrno was not used in the generated + scanner. It was only used in the generated parser. - (yy_delete_parse_buffer): + (yy_delete_parse_buffer): - There is no longer any need for this function. The lexer buffer - stack implementation handles memory management of lexer buffers. + There is no longer any need for this function. The lexer buffer + stack implementation handles memory management of lexer buffers. - (yywrap): + (yywrap): - Do not call yy_delete_parse_buffer(). It is no longer necessary - to do so, in addition to the fact that that function was - removed (as described above). + Do not call yy_delete_parse_buffer(). It is no longer necessary + to do so, in addition to the fact that that function was + removed (as described above). - (<<EOF>>): + (<<EOF>>): - Do not call ACE_YY_NEW_FILE in this rule. The new buffer stack - implementation handles the buffer switching that ACE_YY_NEW_FILE - did, and more. + Do not call ACE_YY_NEW_FILE in this rule. The new buffer stack + implementation handles the buffer switching that ACE_YY_NEW_FILE + did, and more. - * ace/Svc_Conf_Tokens.h: - * ace/Svc_Conf_l.cpp: - * ace/Svc_Conf_y.cpp: + * ace/Svc_Conf_Tokens.h: + * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_y.cpp: - Regenerated these files using updated Bison/YACC and FLEX input - files to pull in support for reentrant parsing and nested - processing of Service Configurator directives. + Regenerated these files using updated Bison/YACC and FLEX input + files to pull in support for reentrant parsing and nested + processing of Service Configurator directives. - * ace/Svc_Conf.h (ace_yy_push_buffer, ace_yy_pop_buffer): + * ace/Svc_Conf.h (ace_yy_push_buffer, ace_yy_pop_buffer): - Added function prototypes for the newly implemented lexer buffer - stack manipulation functions. + Added function prototypes for the newly implemented lexer buffer + stack manipulation functions. - (ace_yylex): + (ace_yylex): - Added ACE_YYSTYPE parameter to this functions signature, as - required by the new reentrant parser support. + Added ACE_YYSTYPE parameter to this functions signature, as + required by the new reentrant parser support. - (ACE_SERVICE_DIRECTIVE_STACK_DEPTH): + (ACE_SERVICE_DIRECTIVE_STACK_DEPTH): - New symbolic constant that defines the maximum supported depth - for nested Service Configurator processing. The current default - is 8. + New symbolic constant that defines the maximum supported depth + for nested Service Configurator processing. The current default + is 8. - (ACE_YY_INPUT): + (ACE_YY_INPUT): - No longer any need to redefine this macro to support scanning of - Service Configurator directive strings. The new lexer buffer - stack implementation provides support for lexer buffer scanning - from a string instead of a pointer to "FILE." + No longer any need to redefine this macro to support scanning of + Service Configurator directive strings. The new lexer buffer + stack implementation provides support for lexer buffer scanning + from a string instead of a pointer to "FILE." - (ace_yydirective): + (ace_yydirective): - This global variable is no longer needed due to the fact that - the new buffer stack implementation handles directives read from - both a string and a file. + This global variable is no longer needed due to the fact that + the new buffer stack implementation handles directives read from + both a string and a file. - * ace/Service_Config.cpp: + * ace/Service_Config.cpp: - (process_directive, process_directives): + (process_directive, process_directives): - Obtain a recursive lock before manipulating the lexer buffer - stack, and invoking the parser and scanner. This makes - invocation of the scanner thread-safe. + Obtain a recursive lock before manipulating the lexer buffer + stack, and invoking the parser and scanner. This makes + invocation of the scanner thread-safe. - The new lexer buffer stack implemenation obviates the need to - call yyrestart() since buffer switching is handled by the stack - implementation. + The new lexer buffer stack implemenation obviates the need to + call yyrestart() since buffer switching is handled by the stack + implementation. - (open_i, close): + (open_i, close): - No need to deallocate the lexer buffer since the buffer stack - implementation handles that. + No need to deallocate the lexer buffer since the buffer stack + implementation handles that. - * ace/Svc_Conf_Lexer_Guard.h: - * ace/Svc_Conf_Lexer_Guard.cpp: + * ace/Svc_Conf_Lexer_Guard.h: + * ace/Svc_Conf_Lexer_Guard.cpp: - New "guard" class that makes lexer buffer stack pushing and - popping exception-safe. + New "guard" class that makes lexer buffer stack pushing and + popping exception-safe. - * ace/Makefile: - * ace/Makefile.am: - * ace/Makefile.bor: - * ace/ace.icc: - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: + * ace/Makefile: + * ace/Makefile.am: + * ace/Makefile.bor: + * ace/ace.icc: + * ace/ace_dll.dsp: + * ace/ace_lib.dsp: - Added Svc_Conf_Lexer_Guard.* sources to these Makefiles and - project files. + Added Svc_Conf_Lexer_Guard.* sources to these Makefiles and + project files. Sat Jul 28 14:58:30 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Svc_Conf_l.cpp: - * ace/Svc_Conf_y.cpp: Reran BYACC and FLEX on the Svc_Conf.l and - Svc_Conf.y files to regenerate them. Thanks to Bala for - motivating this. - - * netsvcs/clients/Tokens/collection/Makefile, - netsvcs/clients/Tokens/deadlock/Makefile, - netsvcs/clients/Tokens/invariant/Makefile, - netsvcs/clients/Tokens/mutex/Makefile, - netsvcs/clients/Tokens/rw_lock/Makefile, - examples/ASX/CCM_App/Makefile, - examples/Logger/Acceptor-server/Makefile, - examples/Reactor/Multicast/Makefile, - examples/Reactor/Ntalker/Makefile, - examples/Shared_Malloc/Makefile, - performance-tests/TCP/Makefile, - performance-tests/UDP/Makefile: Removed the line - include $(ACE_ROOT)/include/makeinclude/rules.LIB.GNU - so that these projects will build correctly on VxWorks with - Make 3.79.1. Thanks to Frank Wolf for reporting this. + * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_y.cpp: Reran BYACC and FLEX on the Svc_Conf.l and + Svc_Conf.y files to regenerate them. Thanks to Bala for + motivating this. + + * netsvcs/clients/Tokens/collection/Makefile, + netsvcs/clients/Tokens/deadlock/Makefile, + netsvcs/clients/Tokens/invariant/Makefile, + netsvcs/clients/Tokens/mutex/Makefile, + netsvcs/clients/Tokens/rw_lock/Makefile, + examples/ASX/CCM_App/Makefile, + examples/Logger/Acceptor-server/Makefile, + examples/Reactor/Multicast/Makefile, + examples/Reactor/Ntalker/Makefile, + examples/Shared_Malloc/Makefile, + performance-tests/TCP/Makefile, + performance-tests/UDP/Makefile: Removed the line + include $(ACE_ROOT)/include/makeinclude/rules.LIB.GNU + so that these projects will build correctly on VxWorks with + Make 3.79.1. Thanks to Frank Wolf for reporting this. Fri Jul 27 11:24:50 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Svc_Conf.y: Allow quoted strings as the pathname. Thanks - to Kevin Burge <kcburge@systemware-inc.com> for suggesting this - and providing the fix. + * ace/Svc_Conf.y: Allow quoted strings as the pathname. Thanks + to Kevin Burge <kcburge@systemware-inc.com> for suggesting this + and providing the fix. - * ace/Svc_Conf.l: Added support for "~" in pathnames to support - Win32isms. Thanks to Kevin Burge <kcburge@systemware-inc.com> - for suggesting this and providing the fix. + * ace/Svc_Conf.l: Added support for "~" in pathnames to support + Win32isms. Thanks to Kevin Burge <kcburge@systemware-inc.com> + for suggesting this and providing the fix. - * ace/Refcounted_Auto_Ptr.i (assign): Fixed the code to avoid a - race condition. Thanks to Charlie Duke for this fix. + * ace/Refcounted_Auto_Ptr.i (assign): Fixed the code to avoid a + race condition. Thanks to Charlie Duke for this fix. Thu Jul 26 08:15:36 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * include/makeinclude/platform_vxworks5.x_g++.GNU: Changed - $PATH to $(PATH). Thanks to Frank Wolf for reporting this. + * include/makeinclude/platform_vxworks5.x_g++.GNU: Changed + $PATH to $(PATH). Thanks to Frank Wolf for reporting this. Wed Jul 25 17:46:58 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Asynch_Acceptor.{h,cpp}: Added an asynch_accept() accessor - method. Thanks to Craig L. Ching <cching@mqsoftware.com> for - reporting this. + * ace/Asynch_Acceptor.{h,cpp}: Added an asynch_accept() accessor + method. Thanks to Craig L. Ching <cching@mqsoftware.com> for + reporting this. Wed Jul 25 17:36:09 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Refcounted_Auto_Ptr.i: Added a lock for the reference count - to the assign() method. Thanks to Charlie Duke - <cduke@cuseeme.com> for reporting this. + * ace/Refcounted_Auto_Ptr.i: Added a lock for the reference count + to the assign() method. Thanks to Charlie Duke + <cduke@cuseeme.com> for reporting this. Fri Jul 27 23:17:31 2001 Steve Huston <shuston@riverace.com> @@ -393,8 +427,8 @@ Fri Jul 27 23:17:31 2001 Steve Huston <shuston@riverace.com> Fri Jul 27 21:52:48 2001 Balachandran Natarajan <bala@cs.wustl.edu> - * bin/auto_run_tests.lst: Added the IDL_Cubut test with GIOP Lite - script, to our daily builds. + * bin/auto_run_tests.lst: Added the IDL_Cubut test with GIOP Lite + script, to our daily builds. Fri Jul 27 16:50:49 2001 Steve Huston <shuston@riverace.com> diff --git a/ChangeLogs/ChangeLog-02a b/ChangeLogs/ChangeLog-02a index 7fc95d97fe1..236b79768a7 100644 --- a/ChangeLogs/ChangeLog-02a +++ b/ChangeLogs/ChangeLog-02a @@ -1,111 +1,145 @@ +Wed Aug 1 16:05:49 2001 Carlos O'Ryan <coryan@uci.edu> + + * Merged changes from the fix_886 branch + + Tue Jul 31 09:17:49 2001 Carlos O'Ryan <coryan@uci.edu> + + * ace/Intrusive_List.h: + * ace/Intrusive_List.inl: + Add new methods to access the head and tail of the list. + + * ace/Intrusive_List.cpp: + Fixed the implementation of remove(), if the element to be + removed was the last on the list it wasn't removed at all. + Left some code to check invariants, have to find a way to keep + that code around with some optional compilation flags. + + Thu Jul 26 16:50:54 2001 Carlos O'Ryan <coryan@uci.edu> + + * ace/Makefile: + * ace/Makefile.am: + * ace/Makefile.bor: + * ace/Intrusive_List.h: + * ace/Intrusive_List.inl: + * ace/Intrusive_List.cpp: + Add new template to implement intrusive lists, i.e. lists that + assume their elements implement the next() and prev() methods. + + * ace/Intrusive_List_Node.h: + * ace/Intrusive_List_Node.inl: + * ace/Intrusive_List_Node.cpp: + Helper class to add the requirements of ACE_Intrusive_List to + any other class, simply do: + class Foo : public ACE_Intrusive_List_Node<Foo> + Wed Aug 1 15:57:35 2001 Ossama Othman <ossama@uci.edu> - * ace/Message_Block.cpp (release, release_i): + * ace/Message_Block.cpp (release, release_i): - Obtain the pointer to the allocator from the object that will be - destroyed before calling ACE_DES_FREE on the object. Previously - we were obtaining the allocator after the object was destroyed, - due to the way the ACE_DES_FREE macro works. Thanks to Hyman - Rosen <hyrosen@mail.com> for reporting the problem, and to - Carlos for suggesting a fix. [Bug 992] + Obtain the pointer to the allocator from the object that will be + destroyed before calling ACE_DES_FREE on the object. Previously + we were obtaining the allocator after the object was destroyed, + due to the way the ACE_DES_FREE macro works. Thanks to Hyman + Rosen <hyrosen@mail.com> for reporting the problem, and to + Carlos for suggesting a fix. [Bug 992] Wed Aug 1 15:00:21 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Log_Record.{h,i}: Changed msg_data_len() from a "setter" - to a "getter" method, which makes more sense. Thanks to Patrick - Rabau <Patrick.Rabau@htc.com> for reporting this. + * ace/Log_Record.{h,i}: Changed msg_data_len() from a "setter" + to a "getter" method, which makes more sense. Thanks to Patrick + Rabau <Patrick.Rabau@htc.com> for reporting this. Wed Aug 1 12:43:57 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_l.cpp: - Reintegreated Nanbor's change (Wed Jun 13 10:22:10 2001 Nanbor - Wang <nanbor@cs.wustl.edu>) that enables proper handling of - UNICODE Service Configurator directives. + Reintegreated Nanbor's change (Wed Jun 13 10:22:10 2001 Nanbor + Wang <nanbor@cs.wustl.edu>) that enables proper handling of + UNICODE Service Configurator directives. Wed Aug 1 07:14:42 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * include/makeinclude/platform_vxworks5.x_g++.GNU: Checked in a new - version of this file, which includes support for the Hitachi - chip. Thanks to Frank Wolf for this. + * include/makeinclude/platform_vxworks5.x_g++.GNU: Checked in a new + version of this file, which includes support for the Hitachi + chip. Thanks to Frank Wolf for this. - * ace/Log_Record.cpp (format_msg): Added a cast to fix a warning. - Thanks to Bala for reporting this. + * ace/Log_Record.cpp (format_msg): Added a cast to fix a warning. + Thanks to Bala for reporting this. Tue Jul 31 22:53:26 2001 Ossama Othman <ossama@uci.edu> - * tests/libService_Config_DLL.icc: + * tests/libService_Config_DLL.icc: - New Visual Age project file for the libService_Config_DLL - library. + New Visual Age project file for the libService_Config_DLL + library. - * tests/Makefile.am: + * tests/Makefile.am: - Added build targets/dependencies for the libService_Config_DLL - library. + Added build targets/dependencies for the libService_Config_DLL + library. Tue Jul 31 22:46:33 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_DLL.dsp: - * tests/Service_Config_Test.dsp: + * tests/Service_Config_DLL.dsp: + * tests/Service_Config_Test.dsp: - Removed the static library configurations. The - Service_Config_Test currently requires dynamically loadable - objects. Fixes Win32 "LIB" build failures. + Removed the static library configurations. The + Service_Config_Test currently requires dynamically loadable + objects. Fixes Win32 "LIB" build failures. Tue Jul 31 22:10:48 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_Test.cpp (run_test): + * tests/Service_Config_Test.cpp (run_test): - Wrap strings passed to ACE_ARGV::add() within an ACE_TEXT - macro. Fixes Unicode conversion problems. + Wrap strings passed to ACE_ARGV::add() within an ACE_TEXT + macro. Fixes Unicode conversion problems. Tue Jul 31 16:53:57 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf.h (ace_yyrestart, ace_yy_delete_parse_buffer, - ace_yydirective): + * ace/Svc_Conf.h (ace_yyrestart, ace_yy_delete_parse_buffer, + ace_yydirective): - Remove these global function and variable declarations. They - are no longer used. + Remove these global function and variable declarations. They + are no longer used. Tue Jul 31 16:43:33 2001 Ossama Othman <ossama@uci.edu> - * ace/Basic_Types.h: + * ace/Basic_Types.h: - If "__LITTLE_ENDIAN__" is defined then assume that the - architecture is little endian. Some compilers/platforms define - that macro. Suggested by Frank Wolf" <fwolf@gum.de>. + If "__LITTLE_ENDIAN__" is defined then assume that the + architecture is little endian. Some compilers/platforms define + that macro. Suggested by Frank Wolf" <fwolf@gum.de>. - * ace/Svc_Conf.h (yy_push_buffer): - * ace/Svc_Conf.l (yy_push_buffer): - * ace/Svc_Conf_l.cpp (ace_yy_push_buffer): - * ace/Svc_Conf_Lexer_Guard.cpp (ACE_Svc_Conf_Lexer_Guard): - * ace/Svc_Conf_Lexer_Guard.h (ACE_Svc_Conf_Lexer_Guard): + * ace/Svc_Conf.h (yy_push_buffer): + * ace/Svc_Conf.l (yy_push_buffer): + * ace/Svc_Conf_l.cpp (ace_yy_push_buffer): + * ace/Svc_Conf_Lexer_Guard.cpp (ACE_Svc_Conf_Lexer_Guard): + * ace/Svc_Conf_Lexer_Guard.h (ACE_Svc_Conf_Lexer_Guard): - The Service Configurator directive is an "ACE_TCHAR *" not a - "char *". Updated these method/function parameters to accept - the former. Fixes a compile-time problem on "wchar/Unicode" - builds. + The Service Configurator directive is an "ACE_TCHAR *" not a + "char *". Updated these method/function parameters to accept + the former. Fixes a compile-time problem on "wchar/Unicode" + builds. Tue Jul 31 05:34:48 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/OS.h: Removed a spurious WNOHANG definition. Thanks to - Christina Junru <junruli@lucent.com> for reporting this. + * ace/OS.h: Removed a spurious WNOHANG definition. Thanks to + Christina Junru <junruli@lucent.com> for reporting this. Mon Jul 30 15:31:42 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Log_Msg.{h,i,cpp}: Fixed this class so that all of its fields - are ACE_UINT32 or ACE_INT32 internally so that it'll always be - the same on all platforms. Thanks to Fabris - <fabris65@my-deja.com> for reporting this. + * ace/Log_Msg.{h,i,cpp}: Fixed this class so that all of its fields + are ACE_UINT32 or ACE_INT32 internally so that it'll always be + the same on all platforms. Thanks to Fabris + <fabris65@my-deja.com> for reporting this. Tue Jul 31 10:22:38 2001 Ossama Othman <ossama@uci.edu> - * tests/Makefile: + * tests/Makefile: - Only build the Service_Config_Test if shared libraries are - enabled, since it attempts to dynamically load a shared - library. + Only build the Service_Config_Test if shared libraries are + enabled, since it attempts to dynamically load a shared + library. Tue Jul 31 10:16:31 2001 Steve Huston <shuston@riverace.com> @@ -115,266 +149,266 @@ Tue Jul 31 10:16:31 2001 Steve Huston <shuston@riverace.com> Mon Jul 30 13:41:00 2001 Nanbor Wang <nanbor@cs.wustl.edu> - * ace/OS.cpp (ACE_Time_Value::FILETIME_to_timval_skew): Updated - docuementation to better explain the meaning of this constant. - Thanks to Mike Vitalo <mvitalo@sprynet.com> for motivating the - change. + * ace/OS.cpp (ACE_Time_Value::FILETIME_to_timval_skew): Updated + docuementation to better explain the meaning of this constant. + Thanks to Mike Vitalo <mvitalo@sprynet.com> for motivating the + change. Mon Jul 30 09:43:06 2001 Douglas C. Schmidt <schmidt@macarena.cs.wustl.edu> - * ace/OS.i (mutex_lock): Missing an argument to the ACE_OSCALL macro. - Thanks to Bala for reporting this. + * ace/OS.i (mutex_lock): Missing an argument to the ACE_OSCALL macro. + Thanks to Bala for reporting this. Mon Jul 30 05:43:23 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Synch.h (ACE_Semaphore): Corrected the comment on - how to get POSIX Pthreads "implementation" of semaphores (which - supports the timed acquire() option). Thanks to Grzegorz - Sikora <GSikora1@era.pl> for reporting this. + * ace/Synch.h (ACE_Semaphore): Corrected the comment on + how to get POSIX Pthreads "implementation" of semaphores (which + supports the timed acquire() option). Thanks to Grzegorz + Sikora <GSikora1@era.pl> for reporting this. Sun Jul 29 19:03:56 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * tests/Thread_Mutex_Test.cpp (test): Fixed this test to be - consistent wrt the errno for the timed acquire(), which should - now always be set to ETIME rather than ETIMEDOUT and EBUSY. + * tests/Thread_Mutex_Test.cpp (test): Fixed this test to be + consistent wrt the errno for the timed acquire(), which should + now always be set to ETIME rather than ETIMEDOUT and EBUSY. - * ace/Message_Queue_T.cpp (wait_not_full_cond, - wait_not_empty_cond): Fixed a nasty bug with the semaphore - version of ACE_Message_Queue that would have reared it's ugly - head if ACE_NULL_SYNCH were used when - ACE_HAS_OPTIMIZED_MESSAGE_QUEUE was enabled. Fixing this bug - also triggered the following changes. + * ace/Message_Queue_T.cpp (wait_not_full_cond, + wait_not_empty_cond): Fixed a nasty bug with the semaphore + version of ACE_Message_Queue that would have reared it's ugly + head if ACE_NULL_SYNCH were used when + ACE_HAS_OPTIMIZED_MESSAGE_QUEUE was enabled. Fixing this bug + also triggered the following changes. - * ace/OS.{h,i}: Added support for ACE_OS::sema_wait(), - ACE_OS::mutex_lock(), ACE_OS::thread_mutex_lock() that take - ACE_Time_Value *. + * ace/OS.{h,i}: Added support for ACE_OS::sema_wait(), + ACE_OS::mutex_lock(), ACE_OS::thread_mutex_lock() that take + ACE_Time_Value *. - * ace/OS.i: For some odd reason the timeouts for the timed version - of mutex_lock() were returning a random smattering of errnos. - I've changed them to all be consistent with the - ACE_Condition_Thread_Mutex::wait() errno, which is ETIME. + * ace/OS.i: For some odd reason the timeouts for the timed version + of mutex_lock() were returning a random smattering of errnos. + I've changed them to all be consistent with the + ACE_Condition_Thread_Mutex::wait() errno, which is ETIME. - * ace/Synch.h: Updated the documentation of all the timed - acquire() methods to explain what the various return values - mean. + * ace/Synch.h: Updated the documentation of all the timed + acquire() methods to explain what the various return values + mean. Sun Jul 29 22:10:40 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_DLL.cpp: - * tests/Service_Config_DLL.h: - * tests/Service_Config_DLL.dsp: - * tests/Service_Config_DLL_Export.h: - * tests/Service_Config_Test.conf: + * tests/Service_Config_DLL.cpp: + * tests/Service_Config_DLL.h: + * tests/Service_Config_DLL.dsp: + * tests/Service_Config_DLL_Export.h: + * tests/Service_Config_Test.conf: - New files associated with the existing Service_Config_Test. - They are used when testing the reentrance/thread-safety of the - Service Configurator, in addition to testing the Service - Configurator's ability to handle nested processing of Service - Configurator directives. + New files associated with the existing Service_Config_Test. + They are used when testing the reentrance/thread-safety of the + Service Configurator, in addition to testing the Service + Configurator's ability to handle nested processing of Service + Configurator directives. - * tests/Service_Config_Test.cpp (run_test): + * tests/Service_Config_Test.cpp (run_test): - Add arguments to the Service Configurator argument vector to - make it process the newly added `Service_Config_Test.conf' - file. + Add arguments to the Service Configurator argument vector to + make it process the newly added `Service_Config_Test.conf' + file. - (main): + (main): - Make the ACE_Thread_Manager wait for all running threads before - exiting the test. Processing the `Service_Config_Test.conf' - file causes some threads to be spawned. + Make the ACE_Thread_Manager wait for all running threads before + exiting the test. Processing the `Service_Config_Test.conf' + file causes some threads to be spawned. Sun Jul 29 19:19:20 2001 Ossama Othman <ossama@uci.edu> - * ace/Service_Config.cpp (process_directive, process_directives): + * ace/Service_Config.cpp (process_directive, process_directives): - Wrap the ACE_GUARD_RETURN macro within an ACE_MT block. The - ACE_Static_Object_Lock declaration is only visible if - ACE_HAS_THREADS is defined. This truly fixes the - single-threaded build problems. + Wrap the ACE_GUARD_RETURN macro within an ACE_MT block. The + ACE_Static_Object_Lock declaration is only visible if + ACE_HAS_THREADS is defined. This truly fixes the + single-threaded build problems. Sun Jul 29 19:06:11 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf.y (ace_obstack): - * ace/Svc_Conf_y.cpp: - * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf.y (ace_obstack): + * ace/Svc_Conf_y.cpp: + * ace/Svc_Conf_l.cpp: - UNICODE updates and fixes. + UNICODE updates and fixes. Sun Jul 29 10:50:45 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf_Lexer_Guard.cpp: + * ace/Svc_Conf_Lexer_Guard.cpp: - There is no longer any need to include "ace/Object_Manager.h" + There is no longer any need to include "ace/Object_Manager.h" - * ace/Service_Config.cpp: + * ace/Service_Config.cpp: - Include "ace/Object_Manager.h" to pull in the definition of - ACE_Static_Object_Lock. Fixes a problem found in Sun builds and - single-threaded builds. + Include "ace/Object_Manager.h" to pull in the definition of + ACE_Static_Object_Lock. Fixes a problem found in Sun builds and + single-threaded builds. Sat Jul 28 23:03:24 2001 Ossama Othman <ossama@uci.edu> - The following are changes that make the Service Configurator - reentrant and thread-safe. + The following are changes that make the Service Configurator + reentrant and thread-safe. - * ace/Svc_Conf.y: + * ace/Svc_Conf.y: - Generate a pure (reentrant) parser using Bison. BYACC doesn't - support generation of reentrant parsers. + Generate a pure (reentrant) parser using Bison. BYACC doesn't + support generation of reentrant parsers. - * ace/Svc_Conf.l: + * ace/Svc_Conf.l: - Implemented "buffer stack" support. This feature makes it - possible to process Service Configurator directives within a - Service Object's init() method, i.e. support nested directive - processing. + Implemented "buffer stack" support. This feature makes it + possible to process Service Configurator directives within a + Service Object's init() method, i.e. support nested directive + processing. - (ace_yyerrno): + (ace_yyerrno): - Moved declaration of ace_yyerrno from this file to - `Svc_Conf.y'. ace_yyerrno was not used in the generated - scanner. It was only used in the generated parser. + Moved declaration of ace_yyerrno from this file to + `Svc_Conf.y'. ace_yyerrno was not used in the generated + scanner. It was only used in the generated parser. - (yy_delete_parse_buffer): + (yy_delete_parse_buffer): - There is no longer any need for this function. The lexer buffer - stack implementation handles memory management of lexer buffers. + There is no longer any need for this function. The lexer buffer + stack implementation handles memory management of lexer buffers. - (yywrap): + (yywrap): - Do not call yy_delete_parse_buffer(). It is no longer necessary - to do so, in addition to the fact that that function was - removed (as described above). + Do not call yy_delete_parse_buffer(). It is no longer necessary + to do so, in addition to the fact that that function was + removed (as described above). - (<<EOF>>): + (<<EOF>>): - Do not call ACE_YY_NEW_FILE in this rule. The new buffer stack - implementation handles the buffer switching that ACE_YY_NEW_FILE - did, and more. + Do not call ACE_YY_NEW_FILE in this rule. The new buffer stack + implementation handles the buffer switching that ACE_YY_NEW_FILE + did, and more. - * ace/Svc_Conf_Tokens.h: - * ace/Svc_Conf_l.cpp: - * ace/Svc_Conf_y.cpp: + * ace/Svc_Conf_Tokens.h: + * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_y.cpp: - Regenerated these files using updated Bison/YACC and FLEX input - files to pull in support for reentrant parsing and nested - processing of Service Configurator directives. + Regenerated these files using updated Bison/YACC and FLEX input + files to pull in support for reentrant parsing and nested + processing of Service Configurator directives. - * ace/Svc_Conf.h (ace_yy_push_buffer, ace_yy_pop_buffer): + * ace/Svc_Conf.h (ace_yy_push_buffer, ace_yy_pop_buffer): - Added function prototypes for the newly implemented lexer buffer - stack manipulation functions. + Added function prototypes for the newly implemented lexer buffer + stack manipulation functions. - (ace_yylex): + (ace_yylex): - Added ACE_YYSTYPE parameter to this functions signature, as - required by the new reentrant parser support. + Added ACE_YYSTYPE parameter to this functions signature, as + required by the new reentrant parser support. - (ACE_SERVICE_DIRECTIVE_STACK_DEPTH): + (ACE_SERVICE_DIRECTIVE_STACK_DEPTH): - New symbolic constant that defines the maximum supported depth - for nested Service Configurator processing. The current default - is 8. + New symbolic constant that defines the maximum supported depth + for nested Service Configurator processing. The current default + is 8. - (ACE_YY_INPUT): + (ACE_YY_INPUT): - No longer any need to redefine this macro to support scanning of - Service Configurator directive strings. The new lexer buffer - stack implementation provides support for lexer buffer scanning - from a string instead of a pointer to "FILE." + No longer any need to redefine this macro to support scanning of + Service Configurator directive strings. The new lexer buffer + stack implementation provides support for lexer buffer scanning + from a string instead of a pointer to "FILE." - (ace_yydirective): + (ace_yydirective): - This global variable is no longer needed due to the fact that - the new buffer stack implementation handles directives read from - both a string and a file. + This global variable is no longer needed due to the fact that + the new buffer stack implementation handles directives read from + both a string and a file. - * ace/Service_Config.cpp: + * ace/Service_Config.cpp: - (process_directive, process_directives): + (process_directive, process_directives): - Obtain a recursive lock before manipulating the lexer buffer - stack, and invoking the parser and scanner. This makes - invocation of the scanner thread-safe. + Obtain a recursive lock before manipulating the lexer buffer + stack, and invoking the parser and scanner. This makes + invocation of the scanner thread-safe. - The new lexer buffer stack implemenation obviates the need to - call yyrestart() since buffer switching is handled by the stack - implementation. + The new lexer buffer stack implemenation obviates the need to + call yyrestart() since buffer switching is handled by the stack + implementation. - (open_i, close): + (open_i, close): - No need to deallocate the lexer buffer since the buffer stack - implementation handles that. + No need to deallocate the lexer buffer since the buffer stack + implementation handles that. - * ace/Svc_Conf_Lexer_Guard.h: - * ace/Svc_Conf_Lexer_Guard.cpp: + * ace/Svc_Conf_Lexer_Guard.h: + * ace/Svc_Conf_Lexer_Guard.cpp: - New "guard" class that makes lexer buffer stack pushing and - popping exception-safe. + New "guard" class that makes lexer buffer stack pushing and + popping exception-safe. - * ace/Makefile: - * ace/Makefile.am: - * ace/Makefile.bor: - * ace/ace.icc: - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: + * ace/Makefile: + * ace/Makefile.am: + * ace/Makefile.bor: + * ace/ace.icc: + * ace/ace_dll.dsp: + * ace/ace_lib.dsp: - Added Svc_Conf_Lexer_Guard.* sources to these Makefiles and - project files. + Added Svc_Conf_Lexer_Guard.* sources to these Makefiles and + project files. Sat Jul 28 14:58:30 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Svc_Conf_l.cpp: - * ace/Svc_Conf_y.cpp: Reran BYACC and FLEX on the Svc_Conf.l and - Svc_Conf.y files to regenerate them. Thanks to Bala for - motivating this. - - * netsvcs/clients/Tokens/collection/Makefile, - netsvcs/clients/Tokens/deadlock/Makefile, - netsvcs/clients/Tokens/invariant/Makefile, - netsvcs/clients/Tokens/mutex/Makefile, - netsvcs/clients/Tokens/rw_lock/Makefile, - examples/ASX/CCM_App/Makefile, - examples/Logger/Acceptor-server/Makefile, - examples/Reactor/Multicast/Makefile, - examples/Reactor/Ntalker/Makefile, - examples/Shared_Malloc/Makefile, - performance-tests/TCP/Makefile, - performance-tests/UDP/Makefile: Removed the line - include $(ACE_ROOT)/include/makeinclude/rules.LIB.GNU - so that these projects will build correctly on VxWorks with - Make 3.79.1. Thanks to Frank Wolf for reporting this. + * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_y.cpp: Reran BYACC and FLEX on the Svc_Conf.l and + Svc_Conf.y files to regenerate them. Thanks to Bala for + motivating this. + + * netsvcs/clients/Tokens/collection/Makefile, + netsvcs/clients/Tokens/deadlock/Makefile, + netsvcs/clients/Tokens/invariant/Makefile, + netsvcs/clients/Tokens/mutex/Makefile, + netsvcs/clients/Tokens/rw_lock/Makefile, + examples/ASX/CCM_App/Makefile, + examples/Logger/Acceptor-server/Makefile, + examples/Reactor/Multicast/Makefile, + examples/Reactor/Ntalker/Makefile, + examples/Shared_Malloc/Makefile, + performance-tests/TCP/Makefile, + performance-tests/UDP/Makefile: Removed the line + include $(ACE_ROOT)/include/makeinclude/rules.LIB.GNU + so that these projects will build correctly on VxWorks with + Make 3.79.1. Thanks to Frank Wolf for reporting this. Fri Jul 27 11:24:50 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Svc_Conf.y: Allow quoted strings as the pathname. Thanks - to Kevin Burge <kcburge@systemware-inc.com> for suggesting this - and providing the fix. + * ace/Svc_Conf.y: Allow quoted strings as the pathname. Thanks + to Kevin Burge <kcburge@systemware-inc.com> for suggesting this + and providing the fix. - * ace/Svc_Conf.l: Added support for "~" in pathnames to support - Win32isms. Thanks to Kevin Burge <kcburge@systemware-inc.com> - for suggesting this and providing the fix. + * ace/Svc_Conf.l: Added support for "~" in pathnames to support + Win32isms. Thanks to Kevin Burge <kcburge@systemware-inc.com> + for suggesting this and providing the fix. - * ace/Refcounted_Auto_Ptr.i (assign): Fixed the code to avoid a - race condition. Thanks to Charlie Duke for this fix. + * ace/Refcounted_Auto_Ptr.i (assign): Fixed the code to avoid a + race condition. Thanks to Charlie Duke for this fix. Thu Jul 26 08:15:36 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * include/makeinclude/platform_vxworks5.x_g++.GNU: Changed - $PATH to $(PATH). Thanks to Frank Wolf for reporting this. + * include/makeinclude/platform_vxworks5.x_g++.GNU: Changed + $PATH to $(PATH). Thanks to Frank Wolf for reporting this. Wed Jul 25 17:46:58 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Asynch_Acceptor.{h,cpp}: Added an asynch_accept() accessor - method. Thanks to Craig L. Ching <cching@mqsoftware.com> for - reporting this. + * ace/Asynch_Acceptor.{h,cpp}: Added an asynch_accept() accessor + method. Thanks to Craig L. Ching <cching@mqsoftware.com> for + reporting this. Wed Jul 25 17:36:09 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Refcounted_Auto_Ptr.i: Added a lock for the reference count - to the assign() method. Thanks to Charlie Duke - <cduke@cuseeme.com> for reporting this. + * ace/Refcounted_Auto_Ptr.i: Added a lock for the reference count + to the assign() method. Thanks to Charlie Duke + <cduke@cuseeme.com> for reporting this. Fri Jul 27 23:17:31 2001 Steve Huston <shuston@riverace.com> @@ -393,8 +427,8 @@ Fri Jul 27 23:17:31 2001 Steve Huston <shuston@riverace.com> Fri Jul 27 21:52:48 2001 Balachandran Natarajan <bala@cs.wustl.edu> - * bin/auto_run_tests.lst: Added the IDL_Cubut test with GIOP Lite - script, to our daily builds. + * bin/auto_run_tests.lst: Added the IDL_Cubut test with GIOP Lite + script, to our daily builds. Fri Jul 27 16:50:49 2001 Steve Huston <shuston@riverace.com> diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a index 7fc95d97fe1..236b79768a7 100644 --- a/ChangeLogs/ChangeLog-03a +++ b/ChangeLogs/ChangeLog-03a @@ -1,111 +1,145 @@ +Wed Aug 1 16:05:49 2001 Carlos O'Ryan <coryan@uci.edu> + + * Merged changes from the fix_886 branch + + Tue Jul 31 09:17:49 2001 Carlos O'Ryan <coryan@uci.edu> + + * ace/Intrusive_List.h: + * ace/Intrusive_List.inl: + Add new methods to access the head and tail of the list. + + * ace/Intrusive_List.cpp: + Fixed the implementation of remove(), if the element to be + removed was the last on the list it wasn't removed at all. + Left some code to check invariants, have to find a way to keep + that code around with some optional compilation flags. + + Thu Jul 26 16:50:54 2001 Carlos O'Ryan <coryan@uci.edu> + + * ace/Makefile: + * ace/Makefile.am: + * ace/Makefile.bor: + * ace/Intrusive_List.h: + * ace/Intrusive_List.inl: + * ace/Intrusive_List.cpp: + Add new template to implement intrusive lists, i.e. lists that + assume their elements implement the next() and prev() methods. + + * ace/Intrusive_List_Node.h: + * ace/Intrusive_List_Node.inl: + * ace/Intrusive_List_Node.cpp: + Helper class to add the requirements of ACE_Intrusive_List to + any other class, simply do: + class Foo : public ACE_Intrusive_List_Node<Foo> + Wed Aug 1 15:57:35 2001 Ossama Othman <ossama@uci.edu> - * ace/Message_Block.cpp (release, release_i): + * ace/Message_Block.cpp (release, release_i): - Obtain the pointer to the allocator from the object that will be - destroyed before calling ACE_DES_FREE on the object. Previously - we were obtaining the allocator after the object was destroyed, - due to the way the ACE_DES_FREE macro works. Thanks to Hyman - Rosen <hyrosen@mail.com> for reporting the problem, and to - Carlos for suggesting a fix. [Bug 992] + Obtain the pointer to the allocator from the object that will be + destroyed before calling ACE_DES_FREE on the object. Previously + we were obtaining the allocator after the object was destroyed, + due to the way the ACE_DES_FREE macro works. Thanks to Hyman + Rosen <hyrosen@mail.com> for reporting the problem, and to + Carlos for suggesting a fix. [Bug 992] Wed Aug 1 15:00:21 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Log_Record.{h,i}: Changed msg_data_len() from a "setter" - to a "getter" method, which makes more sense. Thanks to Patrick - Rabau <Patrick.Rabau@htc.com> for reporting this. + * ace/Log_Record.{h,i}: Changed msg_data_len() from a "setter" + to a "getter" method, which makes more sense. Thanks to Patrick + Rabau <Patrick.Rabau@htc.com> for reporting this. Wed Aug 1 12:43:57 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_l.cpp: - Reintegreated Nanbor's change (Wed Jun 13 10:22:10 2001 Nanbor - Wang <nanbor@cs.wustl.edu>) that enables proper handling of - UNICODE Service Configurator directives. + Reintegreated Nanbor's change (Wed Jun 13 10:22:10 2001 Nanbor + Wang <nanbor@cs.wustl.edu>) that enables proper handling of + UNICODE Service Configurator directives. Wed Aug 1 07:14:42 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * include/makeinclude/platform_vxworks5.x_g++.GNU: Checked in a new - version of this file, which includes support for the Hitachi - chip. Thanks to Frank Wolf for this. + * include/makeinclude/platform_vxworks5.x_g++.GNU: Checked in a new + version of this file, which includes support for the Hitachi + chip. Thanks to Frank Wolf for this. - * ace/Log_Record.cpp (format_msg): Added a cast to fix a warning. - Thanks to Bala for reporting this. + * ace/Log_Record.cpp (format_msg): Added a cast to fix a warning. + Thanks to Bala for reporting this. Tue Jul 31 22:53:26 2001 Ossama Othman <ossama@uci.edu> - * tests/libService_Config_DLL.icc: + * tests/libService_Config_DLL.icc: - New Visual Age project file for the libService_Config_DLL - library. + New Visual Age project file for the libService_Config_DLL + library. - * tests/Makefile.am: + * tests/Makefile.am: - Added build targets/dependencies for the libService_Config_DLL - library. + Added build targets/dependencies for the libService_Config_DLL + library. Tue Jul 31 22:46:33 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_DLL.dsp: - * tests/Service_Config_Test.dsp: + * tests/Service_Config_DLL.dsp: + * tests/Service_Config_Test.dsp: - Removed the static library configurations. The - Service_Config_Test currently requires dynamically loadable - objects. Fixes Win32 "LIB" build failures. + Removed the static library configurations. The + Service_Config_Test currently requires dynamically loadable + objects. Fixes Win32 "LIB" build failures. Tue Jul 31 22:10:48 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_Test.cpp (run_test): + * tests/Service_Config_Test.cpp (run_test): - Wrap strings passed to ACE_ARGV::add() within an ACE_TEXT - macro. Fixes Unicode conversion problems. + Wrap strings passed to ACE_ARGV::add() within an ACE_TEXT + macro. Fixes Unicode conversion problems. Tue Jul 31 16:53:57 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf.h (ace_yyrestart, ace_yy_delete_parse_buffer, - ace_yydirective): + * ace/Svc_Conf.h (ace_yyrestart, ace_yy_delete_parse_buffer, + ace_yydirective): - Remove these global function and variable declarations. They - are no longer used. + Remove these global function and variable declarations. They + are no longer used. Tue Jul 31 16:43:33 2001 Ossama Othman <ossama@uci.edu> - * ace/Basic_Types.h: + * ace/Basic_Types.h: - If "__LITTLE_ENDIAN__" is defined then assume that the - architecture is little endian. Some compilers/platforms define - that macro. Suggested by Frank Wolf" <fwolf@gum.de>. + If "__LITTLE_ENDIAN__" is defined then assume that the + architecture is little endian. Some compilers/platforms define + that macro. Suggested by Frank Wolf" <fwolf@gum.de>. - * ace/Svc_Conf.h (yy_push_buffer): - * ace/Svc_Conf.l (yy_push_buffer): - * ace/Svc_Conf_l.cpp (ace_yy_push_buffer): - * ace/Svc_Conf_Lexer_Guard.cpp (ACE_Svc_Conf_Lexer_Guard): - * ace/Svc_Conf_Lexer_Guard.h (ACE_Svc_Conf_Lexer_Guard): + * ace/Svc_Conf.h (yy_push_buffer): + * ace/Svc_Conf.l (yy_push_buffer): + * ace/Svc_Conf_l.cpp (ace_yy_push_buffer): + * ace/Svc_Conf_Lexer_Guard.cpp (ACE_Svc_Conf_Lexer_Guard): + * ace/Svc_Conf_Lexer_Guard.h (ACE_Svc_Conf_Lexer_Guard): - The Service Configurator directive is an "ACE_TCHAR *" not a - "char *". Updated these method/function parameters to accept - the former. Fixes a compile-time problem on "wchar/Unicode" - builds. + The Service Configurator directive is an "ACE_TCHAR *" not a + "char *". Updated these method/function parameters to accept + the former. Fixes a compile-time problem on "wchar/Unicode" + builds. Tue Jul 31 05:34:48 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/OS.h: Removed a spurious WNOHANG definition. Thanks to - Christina Junru <junruli@lucent.com> for reporting this. + * ace/OS.h: Removed a spurious WNOHANG definition. Thanks to + Christina Junru <junruli@lucent.com> for reporting this. Mon Jul 30 15:31:42 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Log_Msg.{h,i,cpp}: Fixed this class so that all of its fields - are ACE_UINT32 or ACE_INT32 internally so that it'll always be - the same on all platforms. Thanks to Fabris - <fabris65@my-deja.com> for reporting this. + * ace/Log_Msg.{h,i,cpp}: Fixed this class so that all of its fields + are ACE_UINT32 or ACE_INT32 internally so that it'll always be + the same on all platforms. Thanks to Fabris + <fabris65@my-deja.com> for reporting this. Tue Jul 31 10:22:38 2001 Ossama Othman <ossama@uci.edu> - * tests/Makefile: + * tests/Makefile: - Only build the Service_Config_Test if shared libraries are - enabled, since it attempts to dynamically load a shared - library. + Only build the Service_Config_Test if shared libraries are + enabled, since it attempts to dynamically load a shared + library. Tue Jul 31 10:16:31 2001 Steve Huston <shuston@riverace.com> @@ -115,266 +149,266 @@ Tue Jul 31 10:16:31 2001 Steve Huston <shuston@riverace.com> Mon Jul 30 13:41:00 2001 Nanbor Wang <nanbor@cs.wustl.edu> - * ace/OS.cpp (ACE_Time_Value::FILETIME_to_timval_skew): Updated - docuementation to better explain the meaning of this constant. - Thanks to Mike Vitalo <mvitalo@sprynet.com> for motivating the - change. + * ace/OS.cpp (ACE_Time_Value::FILETIME_to_timval_skew): Updated + docuementation to better explain the meaning of this constant. + Thanks to Mike Vitalo <mvitalo@sprynet.com> for motivating the + change. Mon Jul 30 09:43:06 2001 Douglas C. Schmidt <schmidt@macarena.cs.wustl.edu> - * ace/OS.i (mutex_lock): Missing an argument to the ACE_OSCALL macro. - Thanks to Bala for reporting this. + * ace/OS.i (mutex_lock): Missing an argument to the ACE_OSCALL macro. + Thanks to Bala for reporting this. Mon Jul 30 05:43:23 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Synch.h (ACE_Semaphore): Corrected the comment on - how to get POSIX Pthreads "implementation" of semaphores (which - supports the timed acquire() option). Thanks to Grzegorz - Sikora <GSikora1@era.pl> for reporting this. + * ace/Synch.h (ACE_Semaphore): Corrected the comment on + how to get POSIX Pthreads "implementation" of semaphores (which + supports the timed acquire() option). Thanks to Grzegorz + Sikora <GSikora1@era.pl> for reporting this. Sun Jul 29 19:03:56 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * tests/Thread_Mutex_Test.cpp (test): Fixed this test to be - consistent wrt the errno for the timed acquire(), which should - now always be set to ETIME rather than ETIMEDOUT and EBUSY. + * tests/Thread_Mutex_Test.cpp (test): Fixed this test to be + consistent wrt the errno for the timed acquire(), which should + now always be set to ETIME rather than ETIMEDOUT and EBUSY. - * ace/Message_Queue_T.cpp (wait_not_full_cond, - wait_not_empty_cond): Fixed a nasty bug with the semaphore - version of ACE_Message_Queue that would have reared it's ugly - head if ACE_NULL_SYNCH were used when - ACE_HAS_OPTIMIZED_MESSAGE_QUEUE was enabled. Fixing this bug - also triggered the following changes. + * ace/Message_Queue_T.cpp (wait_not_full_cond, + wait_not_empty_cond): Fixed a nasty bug with the semaphore + version of ACE_Message_Queue that would have reared it's ugly + head if ACE_NULL_SYNCH were used when + ACE_HAS_OPTIMIZED_MESSAGE_QUEUE was enabled. Fixing this bug + also triggered the following changes. - * ace/OS.{h,i}: Added support for ACE_OS::sema_wait(), - ACE_OS::mutex_lock(), ACE_OS::thread_mutex_lock() that take - ACE_Time_Value *. + * ace/OS.{h,i}: Added support for ACE_OS::sema_wait(), + ACE_OS::mutex_lock(), ACE_OS::thread_mutex_lock() that take + ACE_Time_Value *. - * ace/OS.i: For some odd reason the timeouts for the timed version - of mutex_lock() were returning a random smattering of errnos. - I've changed them to all be consistent with the - ACE_Condition_Thread_Mutex::wait() errno, which is ETIME. + * ace/OS.i: For some odd reason the timeouts for the timed version + of mutex_lock() were returning a random smattering of errnos. + I've changed them to all be consistent with the + ACE_Condition_Thread_Mutex::wait() errno, which is ETIME. - * ace/Synch.h: Updated the documentation of all the timed - acquire() methods to explain what the various return values - mean. + * ace/Synch.h: Updated the documentation of all the timed + acquire() methods to explain what the various return values + mean. Sun Jul 29 22:10:40 2001 Ossama Othman <ossama@uci.edu> - * tests/Service_Config_DLL.cpp: - * tests/Service_Config_DLL.h: - * tests/Service_Config_DLL.dsp: - * tests/Service_Config_DLL_Export.h: - * tests/Service_Config_Test.conf: + * tests/Service_Config_DLL.cpp: + * tests/Service_Config_DLL.h: + * tests/Service_Config_DLL.dsp: + * tests/Service_Config_DLL_Export.h: + * tests/Service_Config_Test.conf: - New files associated with the existing Service_Config_Test. - They are used when testing the reentrance/thread-safety of the - Service Configurator, in addition to testing the Service - Configurator's ability to handle nested processing of Service - Configurator directives. + New files associated with the existing Service_Config_Test. + They are used when testing the reentrance/thread-safety of the + Service Configurator, in addition to testing the Service + Configurator's ability to handle nested processing of Service + Configurator directives. - * tests/Service_Config_Test.cpp (run_test): + * tests/Service_Config_Test.cpp (run_test): - Add arguments to the Service Configurator argument vector to - make it process the newly added `Service_Config_Test.conf' - file. + Add arguments to the Service Configurator argument vector to + make it process the newly added `Service_Config_Test.conf' + file. - (main): + (main): - Make the ACE_Thread_Manager wait for all running threads before - exiting the test. Processing the `Service_Config_Test.conf' - file causes some threads to be spawned. + Make the ACE_Thread_Manager wait for all running threads before + exiting the test. Processing the `Service_Config_Test.conf' + file causes some threads to be spawned. Sun Jul 29 19:19:20 2001 Ossama Othman <ossama@uci.edu> - * ace/Service_Config.cpp (process_directive, process_directives): + * ace/Service_Config.cpp (process_directive, process_directives): - Wrap the ACE_GUARD_RETURN macro within an ACE_MT block. The - ACE_Static_Object_Lock declaration is only visible if - ACE_HAS_THREADS is defined. This truly fixes the - single-threaded build problems. + Wrap the ACE_GUARD_RETURN macro within an ACE_MT block. The + ACE_Static_Object_Lock declaration is only visible if + ACE_HAS_THREADS is defined. This truly fixes the + single-threaded build problems. Sun Jul 29 19:06:11 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf.y (ace_obstack): - * ace/Svc_Conf_y.cpp: - * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf.y (ace_obstack): + * ace/Svc_Conf_y.cpp: + * ace/Svc_Conf_l.cpp: - UNICODE updates and fixes. + UNICODE updates and fixes. Sun Jul 29 10:50:45 2001 Ossama Othman <ossama@uci.edu> - * ace/Svc_Conf_Lexer_Guard.cpp: + * ace/Svc_Conf_Lexer_Guard.cpp: - There is no longer any need to include "ace/Object_Manager.h" + There is no longer any need to include "ace/Object_Manager.h" - * ace/Service_Config.cpp: + * ace/Service_Config.cpp: - Include "ace/Object_Manager.h" to pull in the definition of - ACE_Static_Object_Lock. Fixes a problem found in Sun builds and - single-threaded builds. + Include "ace/Object_Manager.h" to pull in the definition of + ACE_Static_Object_Lock. Fixes a problem found in Sun builds and + single-threaded builds. Sat Jul 28 23:03:24 2001 Ossama Othman <ossama@uci.edu> - The following are changes that make the Service Configurator - reentrant and thread-safe. + The following are changes that make the Service Configurator + reentrant and thread-safe. - * ace/Svc_Conf.y: + * ace/Svc_Conf.y: - Generate a pure (reentrant) parser using Bison. BYACC doesn't - support generation of reentrant parsers. + Generate a pure (reentrant) parser using Bison. BYACC doesn't + support generation of reentrant parsers. - * ace/Svc_Conf.l: + * ace/Svc_Conf.l: - Implemented "buffer stack" support. This feature makes it - possible to process Service Configurator directives within a - Service Object's init() method, i.e. support nested directive - processing. + Implemented "buffer stack" support. This feature makes it + possible to process Service Configurator directives within a + Service Object's init() method, i.e. support nested directive + processing. - (ace_yyerrno): + (ace_yyerrno): - Moved declaration of ace_yyerrno from this file to - `Svc_Conf.y'. ace_yyerrno was not used in the generated - scanner. It was only used in the generated parser. + Moved declaration of ace_yyerrno from this file to + `Svc_Conf.y'. ace_yyerrno was not used in the generated + scanner. It was only used in the generated parser. - (yy_delete_parse_buffer): + (yy_delete_parse_buffer): - There is no longer any need for this function. The lexer buffer - stack implementation handles memory management of lexer buffers. + There is no longer any need for this function. The lexer buffer + stack implementation handles memory management of lexer buffers. - (yywrap): + (yywrap): - Do not call yy_delete_parse_buffer(). It is no longer necessary - to do so, in addition to the fact that that function was - removed (as described above). + Do not call yy_delete_parse_buffer(). It is no longer necessary + to do so, in addition to the fact that that function was + removed (as described above). - (<<EOF>>): + (<<EOF>>): - Do not call ACE_YY_NEW_FILE in this rule. The new buffer stack - implementation handles the buffer switching that ACE_YY_NEW_FILE - did, and more. + Do not call ACE_YY_NEW_FILE in this rule. The new buffer stack + implementation handles the buffer switching that ACE_YY_NEW_FILE + did, and more. - * ace/Svc_Conf_Tokens.h: - * ace/Svc_Conf_l.cpp: - * ace/Svc_Conf_y.cpp: + * ace/Svc_Conf_Tokens.h: + * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_y.cpp: - Regenerated these files using updated Bison/YACC and FLEX input - files to pull in support for reentrant parsing and nested - processing of Service Configurator directives. + Regenerated these files using updated Bison/YACC and FLEX input + files to pull in support for reentrant parsing and nested + processing of Service Configurator directives. - * ace/Svc_Conf.h (ace_yy_push_buffer, ace_yy_pop_buffer): + * ace/Svc_Conf.h (ace_yy_push_buffer, ace_yy_pop_buffer): - Added function prototypes for the newly implemented lexer buffer - stack manipulation functions. + Added function prototypes for the newly implemented lexer buffer + stack manipulation functions. - (ace_yylex): + (ace_yylex): - Added ACE_YYSTYPE parameter to this functions signature, as - required by the new reentrant parser support. + Added ACE_YYSTYPE parameter to this functions signature, as + required by the new reentrant parser support. - (ACE_SERVICE_DIRECTIVE_STACK_DEPTH): + (ACE_SERVICE_DIRECTIVE_STACK_DEPTH): - New symbolic constant that defines the maximum supported depth - for nested Service Configurator processing. The current default - is 8. + New symbolic constant that defines the maximum supported depth + for nested Service Configurator processing. The current default + is 8. - (ACE_YY_INPUT): + (ACE_YY_INPUT): - No longer any need to redefine this macro to support scanning of - Service Configurator directive strings. The new lexer buffer - stack implementation provides support for lexer buffer scanning - from a string instead of a pointer to "FILE." + No longer any need to redefine this macro to support scanning of + Service Configurator directive strings. The new lexer buffer + stack implementation provides support for lexer buffer scanning + from a string instead of a pointer to "FILE." - (ace_yydirective): + (ace_yydirective): - This global variable is no longer needed due to the fact that - the new buffer stack implementation handles directives read from - both a string and a file. + This global variable is no longer needed due to the fact that + the new buffer stack implementation handles directives read from + both a string and a file. - * ace/Service_Config.cpp: + * ace/Service_Config.cpp: - (process_directive, process_directives): + (process_directive, process_directives): - Obtain a recursive lock before manipulating the lexer buffer - stack, and invoking the parser and scanner. This makes - invocation of the scanner thread-safe. + Obtain a recursive lock before manipulating the lexer buffer + stack, and invoking the parser and scanner. This makes + invocation of the scanner thread-safe. - The new lexer buffer stack implemenation obviates the need to - call yyrestart() since buffer switching is handled by the stack - implementation. + The new lexer buffer stack implemenation obviates the need to + call yyrestart() since buffer switching is handled by the stack + implementation. - (open_i, close): + (open_i, close): - No need to deallocate the lexer buffer since the buffer stack - implementation handles that. + No need to deallocate the lexer buffer since the buffer stack + implementation handles that. - * ace/Svc_Conf_Lexer_Guard.h: - * ace/Svc_Conf_Lexer_Guard.cpp: + * ace/Svc_Conf_Lexer_Guard.h: + * ace/Svc_Conf_Lexer_Guard.cpp: - New "guard" class that makes lexer buffer stack pushing and - popping exception-safe. + New "guard" class that makes lexer buffer stack pushing and + popping exception-safe. - * ace/Makefile: - * ace/Makefile.am: - * ace/Makefile.bor: - * ace/ace.icc: - * ace/ace_dll.dsp: - * ace/ace_lib.dsp: + * ace/Makefile: + * ace/Makefile.am: + * ace/Makefile.bor: + * ace/ace.icc: + * ace/ace_dll.dsp: + * ace/ace_lib.dsp: - Added Svc_Conf_Lexer_Guard.* sources to these Makefiles and - project files. + Added Svc_Conf_Lexer_Guard.* sources to these Makefiles and + project files. Sat Jul 28 14:58:30 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Svc_Conf_l.cpp: - * ace/Svc_Conf_y.cpp: Reran BYACC and FLEX on the Svc_Conf.l and - Svc_Conf.y files to regenerate them. Thanks to Bala for - motivating this. - - * netsvcs/clients/Tokens/collection/Makefile, - netsvcs/clients/Tokens/deadlock/Makefile, - netsvcs/clients/Tokens/invariant/Makefile, - netsvcs/clients/Tokens/mutex/Makefile, - netsvcs/clients/Tokens/rw_lock/Makefile, - examples/ASX/CCM_App/Makefile, - examples/Logger/Acceptor-server/Makefile, - examples/Reactor/Multicast/Makefile, - examples/Reactor/Ntalker/Makefile, - examples/Shared_Malloc/Makefile, - performance-tests/TCP/Makefile, - performance-tests/UDP/Makefile: Removed the line - include $(ACE_ROOT)/include/makeinclude/rules.LIB.GNU - so that these projects will build correctly on VxWorks with - Make 3.79.1. Thanks to Frank Wolf for reporting this. + * ace/Svc_Conf_l.cpp: + * ace/Svc_Conf_y.cpp: Reran BYACC and FLEX on the Svc_Conf.l and + Svc_Conf.y files to regenerate them. Thanks to Bala for + motivating this. + + * netsvcs/clients/Tokens/collection/Makefile, + netsvcs/clients/Tokens/deadlock/Makefile, + netsvcs/clients/Tokens/invariant/Makefile, + netsvcs/clients/Tokens/mutex/Makefile, + netsvcs/clients/Tokens/rw_lock/Makefile, + examples/ASX/CCM_App/Makefile, + examples/Logger/Acceptor-server/Makefile, + examples/Reactor/Multicast/Makefile, + examples/Reactor/Ntalker/Makefile, + examples/Shared_Malloc/Makefile, + performance-tests/TCP/Makefile, + performance-tests/UDP/Makefile: Removed the line + include $(ACE_ROOT)/include/makeinclude/rules.LIB.GNU + so that these projects will build correctly on VxWorks with + Make 3.79.1. Thanks to Frank Wolf for reporting this. Fri Jul 27 11:24:50 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Svc_Conf.y: Allow quoted strings as the pathname. Thanks - to Kevin Burge <kcburge@systemware-inc.com> for suggesting this - and providing the fix. + * ace/Svc_Conf.y: Allow quoted strings as the pathname. Thanks + to Kevin Burge <kcburge@systemware-inc.com> for suggesting this + and providing the fix. - * ace/Svc_Conf.l: Added support for "~" in pathnames to support - Win32isms. Thanks to Kevin Burge <kcburge@systemware-inc.com> - for suggesting this and providing the fix. + * ace/Svc_Conf.l: Added support for "~" in pathnames to support + Win32isms. Thanks to Kevin Burge <kcburge@systemware-inc.com> + for suggesting this and providing the fix. - * ace/Refcounted_Auto_Ptr.i (assign): Fixed the code to avoid a - race condition. Thanks to Charlie Duke for this fix. + * ace/Refcounted_Auto_Ptr.i (assign): Fixed the code to avoid a + race condition. Thanks to Charlie Duke for this fix. Thu Jul 26 08:15:36 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * include/makeinclude/platform_vxworks5.x_g++.GNU: Changed - $PATH to $(PATH). Thanks to Frank Wolf for reporting this. + * include/makeinclude/platform_vxworks5.x_g++.GNU: Changed + $PATH to $(PATH). Thanks to Frank Wolf for reporting this. Wed Jul 25 17:46:58 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> - * ace/Asynch_Acceptor.{h,cpp}: Added an asynch_accept() accessor - method. Thanks to Craig L. Ching <cching@mqsoftware.com> for - reporting this. + * ace/Asynch_Acceptor.{h,cpp}: Added an asynch_accept() accessor + method. Thanks to Craig L. Ching <cching@mqsoftware.com> for + reporting this. Wed Jul 25 17:36:09 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> - * ace/Refcounted_Auto_Ptr.i: Added a lock for the reference count - to the assign() method. Thanks to Charlie Duke - <cduke@cuseeme.com> for reporting this. + * ace/Refcounted_Auto_Ptr.i: Added a lock for the reference count + to the assign() method. Thanks to Charlie Duke + <cduke@cuseeme.com> for reporting this. Fri Jul 27 23:17:31 2001 Steve Huston <shuston@riverace.com> @@ -393,8 +427,8 @@ Fri Jul 27 23:17:31 2001 Steve Huston <shuston@riverace.com> Fri Jul 27 21:52:48 2001 Balachandran Natarajan <bala@cs.wustl.edu> - * bin/auto_run_tests.lst: Added the IDL_Cubut test with GIOP Lite - script, to our daily builds. + * bin/auto_run_tests.lst: Added the IDL_Cubut test with GIOP Lite + script, to our daily builds. Fri Jul 27 16:50:49 2001 Steve Huston <shuston@riverace.com> diff --git a/ace/Intrusive_List.cpp b/ace/Intrusive_List.cpp new file mode 100644 index 00000000000..7a23921288b --- /dev/null +++ b/ace/Intrusive_List.cpp @@ -0,0 +1,151 @@ +// $Id$ + +#ifndef ACE_INTRUSIVE_LIST_C +#define ACE_INTRUSIVE_LIST_C + +#include "ace/Intrusive_List.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#if !defined (__ACE_INLINE__) +#include "ace/Intrusive_List.inl" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(ace, Intrusive_List, "$Id$") + +template <class T> +ACE_Intrusive_List<T>::ACE_Intrusive_List (void) + : head_ (0) + , tail_ (0) +{ +} + +template<class T> +ACE_Intrusive_List<T>::~ACE_Intrusive_List (void) +{ +} + +template<class T> void +ACE_Intrusive_List<T>::push_back (T *node) +{ + if (this->tail_ == 0) + { + this->tail_ = node; + this->head_ = node; + node->next (0); + node->prev (0); + return; + } + + this->tail_->next (node); + node->prev (this->tail_); + node->next (0); + this->tail_ = node; +} + +template<class T> void +ACE_Intrusive_List<T>::push_front (T *node) +{ + if (this->head_ == 0) + { + this->tail_ = node; + this->head_ = node; + node->next (0); + node->prev (0); + return; + } + + this->head_->prev (node); + node->next (this->head_); + node->prev (0); + this->head_ = node; +} + +template<class T> T * +ACE_Intrusive_List<T>::pop_front (void) +{ + T *node = this->head_; + if (node == 0) + return 0; + this->remove_i (node); + return node; +} + +template<class T> T * +ACE_Intrusive_List<T>::pop_back (void) +{ + T *node = this->tail_; + if (node == 0) + return 0; + this->remove_i (node); + return node; +} + +template<class T> void +ACE_Intrusive_List<T>::remove (T *node) +{ + for (T *i = this->head_; i != 0; i = i->next ()) + { + if (node == i) + { + this->remove_i (node); + return; + } + } +} + +template<class T> void +ACE_Intrusive_List<T>::remove_i (T *node) +{ + if (node->prev () != 0) + node->prev ()->next (node->next ()); + else + this->head_ = node->next (); + + if (node->next () != 0) + node->next ()->prev (node->prev ()); + else + this->tail_ = node->prev (); + + node->next (0); + node->prev (0); +} + +#if 0 +template<class T> void +ACE_Intrusive_List_Node<T>::check_invariants (void) +{ + ACE_ASSERT ((this->next () == 0) || (this->next ()->prev () == this)); + ACE_ASSERT ((this->prev () == 0) || (this->prev ()->next () == this)); +} + +template<class T> void +ACE_Intrusive_List<T>::check_invariants (void) +{ + ACE_ASSERT ((this->tail_ == 0) || (this->tail_->next () == 0)); + ACE_ASSERT ((this->head_ == 0) || (this->head_->prev () == 0)); + ACE_ASSERT (!((this->head_ == 0) ^ (this->tail_ == 0))); + + int found_tail = 0; + for (T *i = this->head_; i != 0; i = i->next ()) + { + if (i == this->tail_) + found_tail = 1; + i->check_invariants (); + } + ACE_ASSERT (this->tail_ == 0 || found_tail == 1); + + int found_head = 0; + for (T *j = this->tail_; j != 0; j = j->prev ()) + { + if (j == this->head_) + found_head = 1; + j->check_invariants (); + } + ACE_ASSERT (this->head_ == 0 || found_head == 1); +} +#endif /* 0 */ + +#endif /* ACE_INTRUSIVE_LIST_C */ diff --git a/ace/Intrusive_List.h b/ace/Intrusive_List.h new file mode 100644 index 00000000000..1340c654355 --- /dev/null +++ b/ace/Intrusive_List.h @@ -0,0 +1,131 @@ +/* -*- C++ -*- */ + +//============================================================================= +/** + * @file Intrusive_List.h + * + * $Id$ + * + * @author Carlos O'Ryan <coryan@uci.edu> + */ +//============================================================================= + +#ifndef ACE_INTRUSIVE_LIST_H +#define ACE_INTRUSIVE_LIST_H +#include "ace/pre.h" + +#include "ace/config-all.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +/** + * @class ACE_Intrusive_List + * + * @brief Implement an intrusive double linked list + * + * Intrusive lists assume that the elements they contain the pointers + * required to build the list. They are useful as light-weight + * containers and free-lists. + * + * The template argument T must implement the following methods: + * + * - T* T::next () const; + * - void T::next (T *); + * - T* T::prev () const; + * - void T::prev (T* ); + * + * A simple way to satisfy the Intrusive_List requirements would be to + * implement a helper class: + * + * class My_Object : public ACE_Intrusive_List_Node<My_Object> {<BR> + * ....<BR> + * };<BR> + * + * typedef ACE_Intrusive_List<My_Object> My_Object_List; + * + * However, ACE is supported on platforms that would surely get + * confused using such templates. + * + * @todo The ACE_Message_Queue is an example of an intrusive list (or + * queue) but it is not implemented in terms of this class. + * + */ +template <class T> +class ACE_Intrusive_List +{ +public: + // = Initialization and termination methods. + /// Constructor. Use user specified allocation strategy + /// if specified. + ACE_Intrusive_List (void); + + /// Destructor. + ~ACE_Intrusive_List (void); + + // = Check boundary conditions. + + /// Returns 1 if the container is empty, otherwise returns 0. + int empty (void) const; + + /// Insert an element at the beginning of the list + void push_front (T *node); + + /// Insert an element at the end of the list + void push_back (T *node); + + /// Remove the element at the beginning of the list + T *pop_front (void); + + /// Remove the element at the end of the list + T *pop_back (void); + + /// Get the element at the head of the queue + T *head (void) const; + + /// Get the element at the tail of the queue + T *tail (void) const; + + /// Remove a element from the list + /** + * Verify that the element is still in the list before removing it. + */ + void remove (T *node); + +private: + /// Remove a element from the list + /** + * No attempts are performed to check if T* really belongs to the + * list. The effects of removing an invalid element are unspecified + */ + void remove_i (T *node); + + /** @name Disallow copying + * + */ + //@{ + ACE_Intrusive_List (const ACE_Intrusive_List<T> &); + ACE_Intrusive_List<T>& operator= (const ACE_Intrusive_List<T> &); + //@} + +private: + /// Head and tail of the list + T *head_; + T *tail_; +}; + +#if defined (__ACE_INLINE__) +#include "ace/Intrusive_List.inl" +#endif /* __ACE_INLINE__ */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "ace/Intrusive_List.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Intrusive_List.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include "ace/post.h" +#endif /* ACE_INTRUSIVE_LIST_H */ diff --git a/ace/Intrusive_List.inl b/ace/Intrusive_List.inl new file mode 100644 index 00000000000..2c513b4584f --- /dev/null +++ b/ace/Intrusive_List.inl @@ -0,0 +1,19 @@ +// $Id$ + +template<class T> ACE_INLINE int +ACE_Intrusive_List<T>::empty (void) const +{ + return this->head_ == 0; +} + +template<class T> ACE_INLINE T * +ACE_Intrusive_List<T>::head (void) const +{ + return this->head_; +} + +template<class T> ACE_INLINE T * +ACE_Intrusive_List<T>::tail (void) const +{ + return this->tail_; +} diff --git a/ace/Intrusive_List_Node.cpp b/ace/Intrusive_List_Node.cpp new file mode 100644 index 00000000000..58002653d2e --- /dev/null +++ b/ace/Intrusive_List_Node.cpp @@ -0,0 +1,25 @@ +// $Id$ + +#ifndef ACE_INTRUSIVE_LIST_NODE_C +#define ACE_INTRUSIVE_LIST_NODE_C + +#include "ace/Intrusive_List_Node.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#if !defined (__ACE_INLINE__) +#include "ace/Intrusive_List_Node.inl" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(ace, Intrusive_List_Node, "$Id$") + +template<class T> +ACE_Intrusive_List_Node<T>::ACE_Intrusive_List_Node (void) + : prev_ (0) + , next_ (0) +{ +} + +#endif /* ACE_INTRUSIVE_LIST_NODE_C */ diff --git a/ace/Intrusive_List_Node.h b/ace/Intrusive_List_Node.h new file mode 100644 index 00000000000..b376b3f97d2 --- /dev/null +++ b/ace/Intrusive_List_Node.h @@ -0,0 +1,81 @@ +/* -*- C++ -*- */ + +//============================================================================= +/** + * @file Intrusive_List_Node.h + * + * $Id$ + * + * @author Carlos O'Ryan <coryan@uci.edu> + */ +//============================================================================= + +#ifndef ACE_INTRUSIVE_LIST_NODE_H +#define ACE_INTRUSIVE_LIST_NODE_H +#include "ace/pre.h" + +#include "ace/config-all.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +/** + * @class ACE_Intrusive_List_Node + * + * @brief Implement the requirements for ACE_Intrusive_List + * + * The class should be used as follows: + * + * class My_Object : public ACE_Intrusive_List_Node_Node<My_Object> {<BR> + * ....<BR> + * };<BR> + * + * However, ACE is supported on platforms that would surely get + * confused using such templates, the class is provided as a helper + * for our lucky users that only need portability to modern C++ + * compilers. + * + */ +template <class T> +class ACE_Intrusive_List_Node +{ +public: + /** @name Accesors and modifiers to the next and previous pointers + * + */ + //@{ + T *prev (void) const; + void prev (T *); + T *next (void) const; + void next (T *); + //@} + +protected: + /// Constructor + /** + * The constructor is protected, because only derived classes should + * be instantiated. + */ + ACE_Intrusive_List_Node (void); + +private: + /// Head and tail of the list + T *prev_; + T *next_; +}; + +#if defined (__ACE_INLINE__) +#include "ace/Intrusive_List_Node.inl" +#endif /* __ACE_INLINE__ */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "ace/Intrusive_List_Node.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Intrusive_List_Node.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include "ace/post.h" +#endif /* ACE_INTRUSIVE_LIST_NODE_H */ diff --git a/ace/Intrusive_List_Node.inl b/ace/Intrusive_List_Node.inl new file mode 100644 index 00000000000..e7f2c5ee3eb --- /dev/null +++ b/ace/Intrusive_List_Node.inl @@ -0,0 +1,25 @@ +// $Id$ + +template<class T> ACE_INLINE T* +ACE_Intrusive_List_Node<T>::prev (void) const +{ + return this->prev_; +} + +template<class T> ACE_INLINE void +ACE_Intrusive_List_Node<T>::prev (T *x) +{ + this->prev_ = x; +} + +template<class T> ACE_INLINE T* +ACE_Intrusive_List_Node<T>::next (void) const +{ + return this->next_; +} + +template<class T> ACE_INLINE void +ACE_Intrusive_List_Node<T>::next (T *x) +{ + this->next_ = x; +} diff --git a/ace/Makefile b/ace/Makefile index 7953393d725..2f1bc6c9bf5 100644 --- a/ace/Makefile +++ b/ace/Makefile @@ -264,6 +264,8 @@ TEMPLATE_FILES = \ Hash_Map_With_Allocator_T \ Hash_Cache_Map_Manager_T \ IOStream_T \ + Intrusive_List \ + Intrusive_List_Node \ LOCK_SOCK_Acceptor \ Local_Name_Space_T \ Malloc_T \ diff --git a/ace/Makefile.am b/ace/Makefile.am index a39616333f8..9b4bbce8140 100644 --- a/ace/Makefile.am +++ b/ace/Makefile.am @@ -477,6 +477,8 @@ TEMPLATE_FILES = \ Hash_Map_With_Allocator_T.cpp \ Hash_Cache_Map_Manager_T.cpp \ IOStream_T.cpp \ + Intrusive_List.cpp \ + Intrusive_List_Node.cpp \ LOCK_SOCK_Acceptor.cpp \ Local_Name_Space_T.cpp \ Malloc_T.cpp \ @@ -604,6 +606,8 @@ HEADER_FILES = \ IO_SAP.h \ IPC_SAP.h \ Init_ACE.h \ + Intrusive_List.h \ + Intrusive_List_Node.h \ LOCK_SOCK_Acceptor.h \ LSOCK.h \ LSOCK_Acceptor.h \ @@ -870,6 +874,8 @@ INLINE_FILES = \ IO_SAP.i \ IPC_SAP.i \ Init_ACE.i \ + Intrusive_List.inl \ + Intrusive_List_Node.inl \ LSOCK.i \ LSOCK_CODgram.i \ LSOCK_Connector.i \ diff --git a/ace/Makefile.bor b/ace/Makefile.bor index 12f28e041e5..c05e187e571 100644 --- a/ace/Makefile.bor +++ b/ace/Makefile.bor @@ -250,6 +250,8 @@ INCLUDES = \ Free_List.cpp \ Future.cpp \ Future_Set.cpp \ + Intrusive_List.cpp \ + Intrusive_List_Node.cpp \ LOCK_SOCK_Acceptor.cpp \ Managed_Object.cpp \ Map_Manager.cpp \ |