summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TAO/ChangeLog-99c347
-rw-r--r--TAO/TAO_IDL/Makefile313
-rw-r--r--TAO/TAO_IDL/ast/ast_decl.cpp103
-rw-r--r--TAO/TAO_IDL/be/be_codegen.cpp38
-rw-r--r--TAO/TAO_IDL/be/be_decl.cpp347
-rw-r--r--TAO/TAO_IDL/be/be_interface.cpp163
-rw-r--r--TAO/TAO_IDL/be/be_type.cpp65
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument.cpp5
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp1
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp698
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp179
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp382
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp525
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp26
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp5
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp1
-rw-r--r--TAO/TAO_IDL/be/be_visitor_factory.cpp157
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp10
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp235
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp243
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp347
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp198
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp250
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp174
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface.cpp31
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp72
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp76
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation.cpp9
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp42
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp9
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp216
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp198
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp172
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp154
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp57
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp810
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp177
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp486
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/argument.cpp39
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp1
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp74
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp20
-rw-r--r--TAO/TAO_IDL/be/be_visitor_rettype.cpp3032
-rw-r--r--TAO/TAO_IDL/be/be_visitor_scope.cpp8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp15
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp200
-rw-r--r--TAO/TAO_IDL/be_include/be_codegen.h74
-rw-r--r--TAO/TAO_IDL/be_include/be_decl.h36
-rw-r--r--TAO/TAO_IDL/be_include/be_interface.h39
-rw-r--r--TAO/TAO_IDL/be_include/be_type.h12
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_argument.h5
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h89
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h86
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h90
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h126
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_interface.h7
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h46
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h47
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h46
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h50
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h46
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h42
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_operation.h3
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h8
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h67
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h52
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h126
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h86
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h129
-rw-r--r--TAO/TAO_IDL/include/ast_decl.h9
-rwxr-xr-xTAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl2
-rw-r--r--TAO/tao/Asynch_Invocation.cpp129
-rw-r--r--TAO/tao/Asynch_Invocation.h93
-rw-r--r--TAO/tao/Asynch_Invocation.i34
-rw-r--r--TAO/tao/Client_Strategy_Factory.cpp2
-rw-r--r--TAO/tao/Client_Strategy_Factory.h3
-rw-r--r--TAO/tao/DynAnyC.cpp2
-rw-r--r--TAO/tao/GIOP.cpp2
-rw-r--r--TAO/tao/IIOP_Transport.cpp28
-rw-r--r--TAO/tao/Invocation.cpp44
-rw-r--r--TAO/tao/Invocation.h53
-rw-r--r--TAO/tao/Invocation.i10
-rw-r--r--TAO/tao/Makefile1484
-rw-r--r--TAO/tao/MessagingC.h19
-rw-r--r--TAO/tao/MessagingS.cpp2
-rw-r--r--TAO/tao/Pluggable.cpp24
-rw-r--r--TAO/tao/Pluggable.h16
-rw-r--r--TAO/tao/PollableC.cpp5
-rw-r--r--TAO/tao/PollableC.h5
-rw-r--r--TAO/tao/PollableS.cpp10
-rw-r--r--TAO/tao/PollableS.h5
-rw-r--r--TAO/tao/Reply_Dispatcher.cpp108
-rw-r--r--TAO/tao/Reply_Dispatcher.h98
-rw-r--r--TAO/tao/Transport_Mux_Strategy.cpp319
-rw-r--r--TAO/tao/Transport_Mux_Strategy.h137
-rw-r--r--TAO/tao/Wait_Strategy.cpp53
-rw-r--r--TAO/tao/Wait_Strategy.h1
-rw-r--r--TAO/tao/default_client.cpp20
-rw-r--r--TAO/tao/default_client.h2
-rw-r--r--TAO/tests/AMI/Makefile1899
-rw-r--r--TAO/tests/AMI/README14
-rw-r--r--TAO/tests/AMI/client.conf2
-rw-r--r--TAO/tests/AMI/client.cpp199
-rw-r--r--TAO/tests/AMI/client.dsp205
-rw-r--r--TAO/tests/AMI/client.global.conf3
-rw-r--r--TAO/tests/AMI/client.muxed.conf2
-rw-r--r--TAO/tests/AMI/client.tss.conf3
-rw-r--r--TAO/tests/AMI/orb_creation.cpp176
-rw-r--r--TAO/tests/AMI/orb_creation.dsp206
-rwxr-xr-xTAO/tests/AMI/run_test.pl63
-rw-r--r--TAO/tests/AMI/server.conf3
-rw-r--r--TAO/tests/AMI/server.cpp110
-rw-r--r--TAO/tests/AMI/server.dsp219
-rw-r--r--TAO/tests/AMI/simple-client.conf2
-rw-r--r--TAO/tests/AMI/simple-client.cpp125
-rw-r--r--TAO/tests/AMI/simple_client.dsp215
-rw-r--r--TAO/tests/AMI/test-handC.cpp645
-rw-r--r--TAO/tests/AMI/test.idl16
-rw-r--r--TAO/tests/AMI/test_i.cpp62
-rw-r--r--TAO/tests/AMI/test_i.h62
-rw-r--r--TAO/tests/AMI/test_i.i8
-rw-r--r--ace/CDR_Stream.h9
-rw-r--r--ace/CDR_Stream.i9
128 files changed, 18199 insertions, 822 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c
index 155f53496d2..9e93a7ce854 100644
--- a/TAO/ChangeLog-99c
+++ b/TAO/ChangeLog-99c
@@ -1,3 +1,13 @@
+Thu Jul 8 22:55:59 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ Thanks to Michael Kircher and Carlos, we have put together most
+ of the TAO_IDL code and tao code for the AMI call back
+ implementation. This commit is the result of the merging process
+ between the "ami_phase3" branch and the current branch.
+
+ Most of the support for the AMI Callback is added. But all the
+ AMI specific code is commented out using "TAO_HAS
+
Thu Jul 8 21:50:02 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
* tests/CDR/run_test.pl:
@@ -4301,6 +4311,343 @@ Sun Jun 20 14:39:23 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
use .in() to work around broken G++ compilers... Thanks to
Jean-Marc Strauss <jms97@club-internet.fr> for reporting this.
+Wed Jul 7 18:13:40 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ * tao/Invocation.cpp: Removed the loop around the wait_for_reply.
+
+ * TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp: Fixed CC5
+ warnings.
+
+ * TAO/tao/Invocation.cpp
+ * TAO/tao/Invocation.i
+ * TAO/tao/Reply_Dispatcher.cpp
+ * TAO/tao/Reply_Dispatcher.h: Integrated the CDR changes done in
+ ACE_CDR. Stealing the CDR content is coded here now.
+
+ * TAO/tests/AMI/orb_creation.cpp: Fixed CC5 warnings.
+
+Wed Jul 7 10:55:06 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ * Asynch_Invocation.cpp
+ * Asynch_Invocation.h
+ * MessagingC.h
+ * PollableC.cpp
+ * PollableC.h
+ * PollableS.cpp
+ * PollableS.h
+ * Reply_Dispatcher.cpp
+ * Reply_Dispatcher.h: Guarded the AMI specific classes etc with
+ TAO_HAS_CORBA_MESSAGING && TAO_POLLER.
+
+Tue Jul 6 22:10:00 1999 Michael Kircher <mk1@cs.wustl.edu>
+
+ * tao/PollableS.cpp:
+ Replaced three ACE_BASE_CLASS macros with ACE_CORBA_1 macros to
+ get VC to compile it.
+
+ * tao/TAO.dsp
+ * tao/TAO_Static.dsp:
+ Added the files Pollable{C,S}.{h,cpp} and Asynch_Invocation.{h,cpp}.
+
+ * TAO_IDL/be_include/be_decl.h
+ * TAO_IDL/be/be_decl.cpp
+ * TAO_IDL/be_include/be_interface.h
+ * TAO_IDL/be/be_interface.cpp:
+ * TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp
+ * TAO_IDL/be/be_visitor_argument/upcall_ss.cpp
+ * TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp
+ * TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp:
+ Added code to generate ami_handler_ names. The generated names
+ are held in the corresponding classes, which is then also
+ responsible for deleting it.
+
+ * TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp
+ * TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h
+ * TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp
+ * TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h
+ * TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp
+ * TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h
+ * TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp
+ * TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h:
+ Added these files for code generation of the AMI Handler
+ skeleton.
+
+ * TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp
+ * TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h
+ * TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp:
+ Made changes to generate skeleton code for the AMI handler.
+
+ * TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h
+ * TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp:
+ Added these files for code generation of the AMI handler
+ servant.
+
+ * TAO_IDL/be/be_codegen.h
+ * TAO_IDL/be/be_visitor_factory.cpp
+ * TAO_IDL/be/be_visitor_interface.cpp
+ * TAO_IDL/be_include/be_visitor_interface.h
+ * TAO_IDL/be/be_visitor_interface/interface_cs.cpp
+ Made changes to generate servant code for the AMI handler.
+
+Tue Jul 6 09:55:42 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ * tao/Invocation.cpp
+ * tao/Wait_Strategy.cpp:Commented out the call to
+ <sending_request> in Invocation class.
+
+ * client.muxed.conf: Added this file. This enables MT wait
+ strategy and MUXED TMS.
+
+ * tests/AMI/client.cpp: Addes sendc method.
+
+
+
+ * tests/AMI/Makefile
+ * tests/AMI/run_test.pl
+ * tests/AMI/simple-client.conf
+ * tests/AMI/simple-client.cpp
+ * tests/AMI/test-handC.cpp
+ * tests/AMI/test_i.cpp
+ * tests/AMI/test_i.h
+ * tests/AMI/test_i.i:
+ Cosmetic changes to print usefull debug messages with thread id
+ etc.
+
+ * tao/Transport_Mux_Strategy.cpp
+ * tao/Transport_Mux_Strategy.h
+ Changes to these files again for making it MT safe. Added
+ SYNCH_MUTEX to the Hash Table. and protected the
+ request_id_generator with a lock.
+
+
+ * tao/GIOP.cpp
+ * tao/IIOP_Transport.cpp
+ * tao/Invocation.cpp
+ * tao/Invocation.i
+ * tao/Pluggable.cpp
+ * tao/Pluggable.h
+ * tao/Reply_Dispatcher.cpp
+ * tao/Reply_Dispatcher.h
+ * tao/Transport_Mux_Strategy.cpp
+ * tao/Transport_Mux_Strategy.h
+ * tao/Wait_Strategy.cpp
+
+ Ooooh!!!. Got the Muxed TMS to work. I havent taken care of the
+ MT case yet. Need to make the Hash Table with SYNCH
+ MUTEX. Things should be ok then.
+
+Sun Jul 4 13:00:38 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ * Transport_Mux_Strategy.cpp
+ * Transport_Mux_Strategy.h
+ * default_client.cpp: Implemented Muxed TMS. But have nt got to
+ working yet. It is just there not burting anything.
+
+ * tao/Asynch_Invocation.cpp
+ * tao/Asynch_Invocation.h
+ * tao/Asynch_Invocation.i
+ * tao/Client_Strategy_Factory.cpp
+ * tao/Client_Strategy_Factory.h
+ * tao/Invocation.cpp
+ * tao/Invocation.h
+ * tao/Invocation.i
+ * tao/Pluggable.cpp
+ * tao/Reply_Dispatcher.cpp
+ * tao/Reply_Dispatcher.h
+ * tao/Transport_Mux_Strategy.cpp
+ * tao/Transport_Mux_Strategy.h
+ * tao/default_client.cpp
+ * tao/default_client.h
+
+ Moved the message state from <Invocation> classes to the
+ Transport Mux Strategy. This makes it to have the behavior of
+ Transport object acccesing the messaging state uniform, across
+ Muxed and Exclusive TMS. I have not done Muxed TMS yet.
+
+Sat Jul 3 10:54:00 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ * TAO_IDL/be/be_visitor_factory.cpp
+ * TAO_IDL/be_include/be_codegen.h
+ * tao/Asynch_Invocation.cpp
+ * tao/Asynch_Invocation.h
+ * tao/Asynch_Invocation.i
+ * tao/Invocation.cpp
+ * tao/Invocation.h
+
+ Moved the transport_->idle () to the derived class'
+ constructors.
+
+ * tests/AMI/test.idl
+
+ Just commented out the other methods. Left only get_number.
+
+ * Makefile
+ * client.tss.conf
+ * server.dsp
+ * test_i.cpp
+ * README
+ * orb_creation.cpp
+ * simple-client.conf
+ * test_i.h
+ * client.conf
+ * orb_creation.dsp
+ * simple-client.cpp
+ * test_i.i
+ * client.cpp
+ * run_test.pl*
+ * simple_client.dsp
+ * update.log
+ * client.dsp
+ * server.conf
+ * test-handC.cpp
+
+ Files for the simple test. But you actually need server and
+ simple-client test files right now.
+
+
+ * tests/AMI/simple-client.cpp: Removed the iteration part from the
+ test. Let us keep it really simple.
+
+ * TAO_IDL/be/be_visitor_factory.cpp
+ * TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp
+ Changes for generating Reply Handler skeletons.
+
+ * TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp:
+ Added this file. This file generates the demarshalling skeletons
+ for the Reply Handler and then calls the Reply Handler's call
+ back hook methods. This file is not fully done yet. But this
+ visitor is not used for the time being.
+
+ * tao/Transport_Mux_Strategy.cpp: Fixed the explicit template
+ instantiation problems.
+
+Fri Jul 2 16:28:08 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ Another big step generating code for AMI. Done with sendc
+ methods and Reply Handler call back methods. Both header files
+ and cpp files contents.
+
+ TO-DO: Reply Handler skeletons. Reply Handler servants.
+
+ * tao/Asynch_Invocation.h
+ * tao/Asynch_Invocation.i
+ * tao/Makefile
+ * tao/MessagingC.h
+ * tao/MessagingS.cpp
+ * tao/Reply_Dispatcher.cpp
+ * tao/Reply_Dispatcher.h
+
+ * TAO_IDL/Makefile
+ * TAO_IDL/ast/ast_decl.cpp
+ * TAO_IDL/be/be_codegen.cpp
+ * TAO_IDL/be/be_decl.cpp
+ * TAO_IDL/be/be_interface.cpp
+ * TAO_IDL/be/be_type.cpp
+ * TAO_IDL/be/be_visitor_argument.cpp
+ * TAO_IDL/be/be_visitor_factory.cpp
+ * TAO_IDL/be/be_visitor_interface.cpp
+ * TAO_IDL/be/be_visitor_operation.cpp
+ * TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp
+ * TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp
+ * TAO_IDL/be/be_visitor_interface/interface.cpp
+ * TAO_IDL/be/be_visitor_interface/interface_ch.cpp
+ * TAO_IDL/be/be_visitor_interface/interface_cs.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_arglist.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_ch.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_cs.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp
+ * TAO_IDL/be/be_visitor_operation/argument.cpp
+ * TAO_IDL/be/be_visitor_operation/argument_invoke.cpp
+ * TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp
+ * TAO_IDL/be/be_visitor_operation/operation_cs.cpp
+ * TAO_IDL/be/be_visitor_operation/rettype.cpp
+ * TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp
+ * TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp
+ * TAO_IDL/be_include/be_codegen.h
+ * TAO_IDL/be_include/be_decl.h
+ * TAO_IDL/be_include/be_interface.h
+ * TAO_IDL/be_include/be_type.h
+ * TAO_IDL/be_include/be_visitor_argument.h
+ * TAO_IDL/be_include/be_visitor_interface.h
+ * TAO_IDL/be_include/be_visitor_operation.h
+ * TAO_IDL/include/ast_decl.h
+
+ Added the following files for the changes mentioned above.
+
+ * TAO_IDL/be/be_visitor_rettype.cpp
+ * TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp
+ * TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp
+ * TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp
+ * TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp
+ * TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp
+ * TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h
+ * TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h
+ * TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h
+ * TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h
+ * TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h
+ * TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h
+ * TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h
+
+Wed Jun 23 23:19:34 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ Added Asynch Invocation class. It makes invocations without
+ waiting for the reply. Implemented a portion of Asynch Reply
+ Dispatcher and Muxed TMS. Not complete yet.
+
+ * tao/IIOP_Transport.cpp:
+ * tao/Invocation.cpp:
+ * tao/Invocation.p:
+ * tao/Makefilp:
+ * tao/Reply_Dispatcher.cpp:
+ * tao/Reply_Dispatcher.p:
+ * tao/Transport_Mux_Strategy.cpp:
+ * tao/Transport_Mux_Strategy.p:
+
+ Added the following files.
+
+ * tao/Asynch_Invocation.cpp:
+ * tao/Asynch_Invocation.h:
+ * tao/Asynch_Invocation.i:
+
+Tue Jun 22 11:59:06 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
+
+ One more big step on generating AMI call back code. If I get rid
+ of the references to the ReplyHandler from the generated files,
+ I could get things to compile.
+
+ * TAO_IDL/Makefile:
+ * TAO_IDL/be/be_codegen.cpp:
+ * TAO_IDL/be/be_interface.cpp:
+ * TAO_IDL/be/be_visitor_factory.cpp:
+ * TAO_IDL/be/be_visitor_interface.cpp:
+ * TAO_IDL/be/be_visitor_scope.cpp:
+ * TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp:
+ * TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp:
+ * TAO_IDL/be/be_visitor_interface/interface.cpp:
+ * TAO_IDL/be/be_visitor_interface/interface_ch.cpp:
+ * TAO_IDL/be/be_visitor_interface/interface_cs.cpp:
+ * TAO_IDL/be/be_visitor_operation/ami_arglist.cpp:
+ * TAO_IDL/be/be_visitor_operation/ami_ch.cpp:
+ * TAO_IDL/be/be_visitor_operation/ami_cs.cpp:
+ * TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp:
+ * TAO_IDL/be_include/be_codegen.h:
+ * TAO_IDL/be_include/be_visitor_interface.h:
+ * TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h:
+
+ Changes for the above.
+
+ * TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp:
+ * TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp:
+ * TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h:
+ * TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h:
+
+ Added these files.
+
Sun Jun 20 07:40:02 EDT 1999 Aniruddha Gokhale <gokhale@sahyadri.research.bell-labs.com>
* TAO_IDL/be/be_visitor_field/field_ch.cpp:
diff --git a/TAO/TAO_IDL/Makefile b/TAO/TAO_IDL/Makefile
index d99bdfbcc6e..e6bc88821c6 100644
--- a/TAO/TAO_IDL/Makefile
+++ b/TAO/TAO_IDL/Makefile
@@ -265,6 +265,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -348,6 +350,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -431,6 +435,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -514,6 +520,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -618,6 +626,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -705,6 +715,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -788,6 +800,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -880,6 +894,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -964,6 +980,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1048,6 +1066,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1132,6 +1152,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1216,6 +1238,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1300,6 +1324,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1384,6 +1410,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1467,6 +1495,8 @@ tags:
.obj/lex.yy.o .obj/lex.yy.so .shobj/lex.yy.o .shobj/lex.yy.so: fe/lex.yy.cpp \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1552,6 +1582,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1634,6 +1666,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1716,6 +1750,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1798,6 +1834,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1880,6 +1918,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1962,6 +2002,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2044,6 +2086,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2126,6 +2170,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2208,6 +2254,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2290,6 +2338,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2372,6 +2422,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2454,6 +2506,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2536,6 +2590,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2618,6 +2674,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2700,6 +2758,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2782,6 +2842,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2864,6 +2926,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2946,6 +3010,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3028,6 +3094,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3110,6 +3178,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3192,6 +3262,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3274,6 +3346,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3356,6 +3430,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3438,6 +3514,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3520,6 +3598,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3602,6 +3682,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3684,6 +3766,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3766,6 +3850,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3848,6 +3934,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3930,6 +4018,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4012,6 +4102,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4094,6 +4186,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4176,6 +4270,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4258,6 +4354,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4340,6 +4438,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4422,6 +4522,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4504,6 +4606,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4586,6 +4690,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4668,6 +4774,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4750,6 +4858,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4832,6 +4942,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4914,6 +5026,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4996,6 +5110,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5078,6 +5194,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5160,6 +5278,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5242,6 +5362,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5324,6 +5446,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5428,6 +5552,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5532,6 +5658,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5636,6 +5764,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5740,6 +5870,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5844,6 +5976,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5948,6 +6082,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6052,6 +6188,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6156,6 +6294,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6260,6 +6400,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6366,8 +6508,12 @@ tags:
be_include/be_visitor_interface/tie_si.h \
be_include/be_visitor_interface/ami_handler_fwd_ch.h \
be_include/be_visitor_interface/ami_handler_fwd_ci.h \
- be_include/be_visitor_interface/ami_handler_ch.h be_include/be.h \
- $(ACE_ROOT)/ace/Process.h \
+ be_include/be_visitor_interface/ami_handler_servant_ch.h \
+ be_include/be_visitor_interface/ami_handler_servant_cs.h \
+ be_include/be_visitor_interface/ami_handler_stub_ch.h \
+ be_include/be_visitor_interface/ami_handler_stub_cs.h \
+ be_include/be_visitor_interface/collocated_ami_handler_ch.h \
+ be_include/be.h $(ACE_ROOT)/ace/Process.h \
$(ACE_ROOT)/ace/Process.i \
be_include/be_decl.h be_include/be_scope.h be_include/be_generator.h \
be_include/be_type.h be_include/be_predefined_type.h \
@@ -6388,6 +6534,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6492,6 +6640,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6596,6 +6746,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6700,6 +6852,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6804,6 +6958,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6908,6 +7064,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7012,6 +7170,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7116,6 +7276,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7220,6 +7382,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7336,6 +7500,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7440,6 +7606,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7544,6 +7712,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7648,6 +7818,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7752,6 +7924,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7856,6 +8030,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7960,6 +8136,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8064,6 +8242,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8168,6 +8348,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8273,6 +8455,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8377,6 +8561,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8481,6 +8667,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8585,6 +8773,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8689,6 +8879,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8794,6 +8986,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8898,6 +9092,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9002,6 +9198,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9107,6 +9305,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9226,6 +9426,10 @@ tags:
be_include/be_visitor_argument/pre_invoke_cs.h \
be_include/be_visitor_argument/ami_arglist.h \
be_include/be_visitor_argument/ami_handler_arglist.h \
+ be_include/be_visitor_argument/ami_handler_result_arg.h \
+ be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h \
+ be_include/be_visitor_argument/ami_handler_upcall_cs.h \
+ be_include/be_visitor_argument/ami_handler_vardecl_cs.h \
be_include/be_visitor_array.h be_include/be_visitor_array/array.h \
be_include/be_visitor_array/array_ch.h \
be_include/be_visitor_array/array_ci.h \
@@ -9286,7 +9490,11 @@ tags:
be_include/be_visitor_interface/tie_si.h \
be_include/be_visitor_interface/ami_handler_fwd_ch.h \
be_include/be_visitor_interface/ami_handler_fwd_ci.h \
- be_include/be_visitor_interface/ami_handler_ch.h \
+ be_include/be_visitor_interface/ami_handler_servant_ch.h \
+ be_include/be_visitor_interface/ami_handler_servant_cs.h \
+ be_include/be_visitor_interface/ami_handler_stub_ch.h \
+ be_include/be_visitor_interface/ami_handler_stub_cs.h \
+ be_include/be_visitor_interface/collocated_ami_handler_ch.h \
be_include/be_visitor_interface_fwd.h \
be_include/be_visitor_interface_fwd/interface_fwd_ch.h \
be_include/be_visitor_interface_fwd/interface_fwd_ci.h \
@@ -9354,6 +9562,9 @@ tags:
be_include/be_visitor_operation/ami_arglist.h \
be_include/be_visitor_operation/ami_handler_operation_ch.h \
be_include/be_visitor_operation/ami_handler_arglist.h \
+ be_include/be_visitor_operation/ami_handler_operation_cs.h \
+ be_include/be_visitor_operation/ami_handler_skeleton_cs.h \
+ be_include/be_visitor_operation/ami_handler_argument_marshal.h \
be_include/be_visitor_root.h be_include/be_visitor_root/root.h \
be_include/be_visitor_root/root_ch.h \
be_include/be_visitor_root/root_ci.h \
@@ -9426,6 +9637,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9527,6 +9740,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9643,6 +9858,10 @@ tags:
be_include/be_visitor_argument/pre_invoke_cs.h \
be_include/be_visitor_argument/ami_arglist.h \
be_include/be_visitor_argument/ami_handler_arglist.h \
+ be_include/be_visitor_argument/ami_handler_result_arg.h \
+ be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h \
+ be_include/be_visitor_argument/ami_handler_upcall_cs.h \
+ be_include/be_visitor_argument/ami_handler_vardecl_cs.h \
be/be_visitor_argument/arglist.cpp \
be/be_visitor_argument/argument.cpp \
be/be_visitor_argument/docall_cs.cpp \
@@ -9659,11 +9878,17 @@ tags:
be/be_visitor_argument/compiled_marshal_ss.cpp \
be/be_visitor_argument/pre_invoke_cs.cpp \
be/be_visitor_argument/ami_arglist.cpp \
- be/be_visitor_argument/ami_handler_arglist.cpp
+ be/be_visitor_argument/ami_handler_arglist.cpp \
+ be/be_visitor_argument/ami_handler_result_arg.cpp \
+ be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp \
+ be/be_visitor_argument/ami_handler_upcall_cs.cpp \
+ be/be_visitor_argument/ami_handler_vardecl_cs.cpp
.obj/be_visitor_array.o .obj/be_visitor_array.so .shobj/be_visitor_array.o .shobj/be_visitor_array.so: be/be_visitor_array.cpp include/idl.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9781,6 +10006,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9889,6 +10116,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9999,6 +10228,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10103,6 +10334,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10208,6 +10441,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10322,6 +10557,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10456,6 +10693,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10570,6 +10809,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10694,7 +10935,11 @@ tags:
be_include/be_visitor_interface/tie_si.h \
be_include/be_visitor_interface/ami_handler_fwd_ch.h \
be_include/be_visitor_interface/ami_handler_fwd_ci.h \
- be_include/be_visitor_interface/ami_handler_ch.h \
+ be_include/be_visitor_interface/ami_handler_servant_ch.h \
+ be_include/be_visitor_interface/ami_handler_servant_cs.h \
+ be_include/be_visitor_interface/ami_handler_stub_ch.h \
+ be_include/be_visitor_interface/ami_handler_stub_cs.h \
+ be_include/be_visitor_interface/collocated_ami_handler_ch.h \
be/be_visitor_interface/interface.cpp \
be/be_visitor_interface/interface_ch.cpp \
be/be_visitor_interface/interface_ci.cpp \
@@ -10720,12 +10965,17 @@ tags:
be_include/be_visitor_interface_fwd/interface_fwd_ci.h \
be_include/be_visitor_interface_fwd/cdr_op_ci.h \
be/be_visitor_interface/ami_handler_fwd_ci.cpp \
- be/be_visitor_interface/ami_handler_ch.cpp
+ be/be_visitor_interface/ami_handler_servant_ch.cpp \
+ be/be_visitor_interface/ami_handler_servant_cs.cpp \
+ be/be_visitor_interface/ami_handler_stub_ch.cpp \
+ be/be_visitor_interface/ami_handler_stub_cs.cpp \
+ be/be_visitor_interface/collocated_ami_handler_ch.cpp
.obj/be_visitor_interface_fwd.o .obj/be_visitor_interface_fwd.so .shobj/be_visitor_interface_fwd.o .shobj/be_visitor_interface_fwd.so: be/be_visitor_interface_fwd.cpp \
- include/idl.h \
- $(ACE_ROOT)/ace/ACE.h \
+ include/idl.h $(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10838,6 +11088,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11002,6 +11254,9 @@ tags:
be_include/be_visitor_operation/ami_arglist.h \
be_include/be_visitor_operation/ami_handler_operation_ch.h \
be_include/be_visitor_operation/ami_handler_arglist.h \
+ be_include/be_visitor_operation/ami_handler_operation_cs.h \
+ be_include/be_visitor_operation/ami_handler_skeleton_cs.h \
+ be_include/be_visitor_operation/ami_handler_argument_marshal.h \
be/be_visitor_valuetype/field_ch.cpp \
be/be_visitor_valuetype/field_cs.cpp \
be/be_visitor_valuetype/field_cdr_ci.cpp \
@@ -11013,10 +11268,11 @@ tags:
be_include/be_visitor_field/cdr_op_cs.h \
be/be_visitor_valuetype/obv_module.cpp
.obj/be_visitor_valuetype_fwd.o .obj/be_visitor_valuetype_fwd.so .shobj/be_visitor_valuetype_fwd.o .shobj/be_visitor_valuetype_fwd.so: be/be_visitor_valuetype_fwd.cpp \
- include/idl.h \
- $(ACE_ROOT)/ace/ACE.h \
+ include/idl.h $(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11126,6 +11382,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11240,6 +11498,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11378,6 +11638,9 @@ tags:
be_include/be_visitor_operation/ami_arglist.h \
be_include/be_visitor_operation/ami_handler_operation_ch.h \
be_include/be_visitor_operation/ami_handler_arglist.h \
+ be_include/be_visitor_operation/ami_handler_operation_cs.h \
+ be_include/be_visitor_operation/ami_handler_skeleton_cs.h \
+ be_include/be_visitor_operation/ami_handler_argument_marshal.h \
be/be_visitor_operation/operation.cpp \
be/be_visitor_operation/arglist.cpp \
be/be_visitor_operation/argument.cpp \
@@ -11411,6 +11674,10 @@ tags:
be_include/be_visitor_argument/pre_invoke_cs.h \
be_include/be_visitor_argument/ami_arglist.h \
be_include/be_visitor_argument/ami_handler_arglist.h \
+ be_include/be_visitor_argument/ami_handler_result_arg.h \
+ be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h \
+ be_include/be_visitor_argument/ami_handler_upcall_cs.h \
+ be_include/be_visitor_argument/ami_handler_vardecl_cs.h \
be/be_visitor_operation/operation_is.cpp \
be/be_visitor_operation/rettype.cpp \
be/be_visitor_operation/rettype_is.cpp \
@@ -11429,11 +11696,16 @@ tags:
be/be_visitor_operation/ami_ch.cpp be/be_visitor_operation/ami_cs.cpp \
be/be_visitor_operation/ami_arglist.cpp \
be/be_visitor_operation/ami_handler_operation_ch.cpp \
- be/be_visitor_operation/ami_handler_arglist.cpp
+ be/be_visitor_operation/ami_handler_arglist.cpp \
+ be/be_visitor_operation/ami_handler_operation_cs.cpp \
+ be/be_visitor_operation/ami_handler_skeleton_cs.cpp \
+ be/be_visitor_operation/ami_handler_argument_marshal.cpp
.obj/be_visitor_root.o .obj/be_visitor_root.so .shobj/be_visitor_root.o .shobj/be_visitor_root.so: be/be_visitor_root.cpp include/idl.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11555,6 +11827,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11660,6 +11934,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11788,11 +12064,13 @@ tags:
be/be_visitor_sequence/gen_unbounded_obj_sequence_ch.cpp \
be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp \
be/be_visitor_sequence/gen_bounded_str_sequence_ch.cpp \
+ be/be_visitor_sequence/gen_unbounded_sequence_ci.cpp \
be/be_visitor_sequence/gen_bounded_sequence_ci.cpp \
be/be_visitor_sequence/gen_unbounded_obj_sequence_ci.cpp \
be/be_visitor_sequence/gen_bounded_obj_sequence_ci.cpp \
be/be_visitor_sequence/gen_bounded_str_sequence_ci.cpp \
be/be_visitor_sequence/gen_unbounded_sequence_cs.cpp \
+ be/be_visitor_sequence/gen_bounded_sequence_cs.cpp \
be/be_visitor_sequence/gen_unbounded_obj_sequence_cs.cpp \
be/be_visitor_sequence/gen_bounded_obj_sequence_cs.cpp \
be/be_visitor_sequence/gen_bounded_str_sequence_cs.cpp
@@ -11800,6 +12078,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11930,6 +12210,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -12040,6 +12322,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -12163,6 +12447,8 @@ tags:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -12284,10 +12570,11 @@ tags:
be/be_visitor_union/any_op_cs.cpp be/be_visitor_union/cdr_op_ch.cpp \
be/be_visitor_union/cdr_op_ci.cpp be/be_visitor_union/cdr_op_cs.cpp
.obj/be_visitor_union_branch.o .obj/be_visitor_union_branch.so .shobj/be_visitor_union_branch.o .shobj/be_visitor_union_branch.so: be/be_visitor_union_branch.cpp \
- include/idl.h \
- $(ACE_ROOT)/ace/ACE.h \
+ include/idl.h $(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
diff --git a/TAO/TAO_IDL/ast/ast_decl.cpp b/TAO/TAO_IDL/ast/ast_decl.cpp
index 19d22a688bb..cde4aee0e50 100644
--- a/TAO/TAO_IDL/ast/ast_decl.cpp
+++ b/TAO/TAO_IDL/ast/ast_decl.cpp
@@ -76,8 +76,8 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
* main file or an #include'd file.
*/
-#include "idl.h"
-#include "idl_extern.h"
+#include "idl.h"
+#include "idl_extern.h"
ACE_RCSID(ast, ast_decl, "$Id$")
@@ -104,8 +104,8 @@ AST_Decl::AST_Decl(NodeType nt, UTL_ScopedName *n, UTL_StrList *p)
: pd_imported(idl_global->imported()),
pd_in_main_file(idl_global->in_main_file()),
pd_defined_in(idl_global->scopes()->depth() > 0
- ? idl_global->scopes()->top()
- : 0),
+ ? idl_global->scopes()->top()
+ : 0),
pd_node_type(nt),
pd_line(idl_global->lineno()),
pd_file_name(idl_global->filename()),
@@ -132,8 +132,8 @@ AST_Decl::AST_Decl(NodeType nt, UTL_ScopedName *n, UTL_StrList *p)
void
AST_Decl::compute_full_name(UTL_ScopedName *n)
{
- UTL_ScopedName *cn = NULL;
- AST_Decl *d = NULL;
+ UTL_ScopedName *cn = NULL;
+ AST_Decl *d = NULL;
/*
* Initialize this name to NULL
@@ -280,6 +280,74 @@ AST_Decl::name()
return pd_name;
}
+
+// @@ Wherever compute_* are called, we should remember to delete them
+// after use.
+
+// Variation of the <name>. Computes scoped name string, applying
+// prefix and suffix to the local name component.
+UTL_ScopedName *
+AST_Decl::compute_name (const char *prefix, const char *suffix)
+{
+ if (prefix == 0 || suffix == 0)
+ return 0;
+
+ UTL_ScopedName *result_name = NULL;
+
+ // Prepare prefix_<local_name>_suffix string.
+
+ ACE_CString suffix_str (suffix);
+ ACE_CString local_str (this->local_name ()->get_string ());
+
+ ACE_CString result_local_str (prefix);
+ result_local_str += local_str;
+ result_local_str += suffix_str;
+
+ // Identifier for the resulting local name.
+ Identifier *result_local_id = new Identifier (result_local_str.c_str (),
+ 1,
+ 0,
+ I_FALSE);
+
+ // UTL_Scoped name for the resulting local name.
+ UTL_ScopedName *result_local_name = new UTL_ScopedName (result_local_id,
+ NULL);
+
+ // Global scope?
+ if (this->defined_in () == NULL)
+ {
+ result_name = result_local_name;
+ }
+ else
+ {
+ // OK, not global. So copy name of containing scope, then
+ // smash last cdr of copy with new component.
+
+ AST_Decl *d = ScopeAsDecl(defined_in());
+ if (d != NULL)
+ {
+ UTL_ScopedName *cn = d->name();
+ if (cn != NULL)
+ {
+ result_name = (UTL_ScopedName *) cn->copy();
+ if (result_name == NULL)
+ {
+ result_name = result_local_name;
+ }
+ else
+ result_name->nconc(result_local_name);
+ }
+ }
+ }
+
+ return result_name;
+
+}
+
+
+
+
+
void
AST_Decl::set_name(UTL_ScopedName *n)
{
@@ -299,6 +367,29 @@ AST_Decl::local_name()
return pd_local_name;
}
+Identifier *
+AST_Decl::compute_local_name (const char *prefix, const char *suffix)
+{
+ if (prefix == 0 || suffix == 0)
+ return 0;
+
+ // Init the result with prefix.
+ ACE_CString result_str (prefix);
+
+ // Put local.
+ result_str += ACE_CString (this->local_name ()->get_string ());
+
+ // Put suffix.
+ result_str += ACE_CString (suffix);
+
+ // Identifier for the resulting local name.
+ Identifier *result_id = new Identifier (result_str.c_str (),
+ 1,
+ 0,
+ I_FALSE);
+ return result_id;
+}
+
// If there is _cxx_ in the beginning, we will remove that and keep
// a copy of the original name. TAO IDL's front end adds _cxx_
// prefix to the all the reserved keywords. But when we invoke the
diff --git a/TAO/TAO_IDL/be/be_codegen.cpp b/TAO/TAO_IDL/be/be_codegen.cpp
index ffc3af9ab26..0d943c59d16 100644
--- a/TAO/TAO_IDL/be/be_codegen.cpp
+++ b/TAO/TAO_IDL/be/be_codegen.cpp
@@ -184,15 +184,49 @@ TAO_CodeGen::start_client_header (const char *fname)
<< "# pragma once\n"
<< "#endif /* ACE_LACKS_PRAGMA_ONCE */\n\n";
- // Other include files
+ // Other include files.
if (idl_global->export_include () != 0)
{
*this->client_header_ << "#include \""
- << idl_global->export_include ()
+ << idl_global->export_include ()
<< "\"\n";
}
+ // Include the Messaging files if AMI is enabled.
+ if (idl_global->ami_call_back () == I_TRUE)
+ {
+ // Include Messaging skeleton file.
+ *this->client_header_ << "#include ";
+
+ if (idl_global->changing_standard_include_files () == 1)
+ *this->client_header_ << "\"";
+ else
+ *this->client_header_ << "<";
+
+ *this->client_header_ << "tao/MessagingS.h";
+
+ if (idl_global->changing_standard_include_files () == 1)
+ *this->client_header_ << "\"\n";
+ else
+ *this->client_header_ << ">\n";
+
+ // Including Asynch Invocation file.
+ *this->client_header_ << "#include ";
+
+ if (idl_global->changing_standard_include_files () == 1)
+ *this->client_header_ << "\"";
+ else
+ *this->client_header_ << "<";
+
+ *this->client_header_ << "tao/Asynch_Invocation.h";
+
+ if (idl_global->changing_standard_include_files () == 1)
+ *this->client_header_ << "\"\n";
+ else
+ *this->client_header_ << ">\n";
+ }
+
// We must include all the skeleton headers corresponding to
// IDL files included by the current IDL file.
// We will use the included IDL file names as they appeared
diff --git a/TAO/TAO_IDL/be/be_decl.cpp b/TAO/TAO_IDL/be/be_decl.cpp
index fc25927940d..b510a4c5b3a 100644
--- a/TAO/TAO_IDL/be/be_decl.cpp
+++ b/TAO/TAO_IDL/be/be_decl.cpp
@@ -41,8 +41,11 @@ be_decl::be_decl (void)
cli_stub_cdr_op_gen_ (I_FALSE),
cli_inline_cdr_op_gen_ (I_FALSE),
fullname_ (0),
+ ami_handler_fullname_ (0),
flatname_ (0),
+ ami_handler_flatname_ (0),
repoID_ (0),
+ ami_handler_repoID_ (0),
prefix_ (0),
size_type_ (be_decl::SIZE_UNKNOWN)
{
@@ -66,8 +69,11 @@ be_decl::be_decl (AST_Decl::NodeType type,
cli_hdr_cdr_op_gen_ (I_FALSE),
cli_stub_cdr_op_gen_ (I_FALSE),
fullname_ (0),
+ ami_handler_fullname_ (0),
flatname_ (0),
+ ami_handler_flatname_ (0),
repoID_ (0),
+ ami_handler_repoID_ (0),
prefix_ (0),
size_type_ (be_decl::SIZE_UNKNOWN)
{
@@ -76,6 +82,41 @@ be_decl::be_decl (AST_Decl::NodeType type,
//destructor
be_decl::~be_decl (void)
{
+ if (this->fullname_ != 0)
+ {
+ delete[] this->fullname_;
+ this->fullname_ = 0;
+ }
+ if (this->ami_handler_fullname_ != 0)
+ {
+ delete[] this->ami_handler_fullname_;
+ this->ami_handler_fullname_ = 0;
+ }
+ if (this->flatname_ != 0)
+ {
+ delete[] this->flatname_;
+ this->flatname_ = 0;
+ }
+ if (this->ami_handler_flatname_ != 0)
+ {
+ delete[] this->ami_handler_flatname_;
+ this->ami_handler_flatname_ = 0;
+ }
+ if (this->repoID_ != 0)
+ {
+ delete[] this->repoID_;
+ this->repoID_ = 0;
+ }
+ if (this->ami_handler_repoID_ != 0)
+ {
+ delete[] this->ami_handler_repoID_;
+ this->ami_handler_repoID_ = 0;
+ }
+ if (this->prefix_ != 0)
+ {
+ delete[] this->prefix_;
+ this->prefix_ = 0;
+ }
}
// return our size type
@@ -105,6 +146,26 @@ be_decl::size_type (be_decl::SIZE_TYPE st)
this->size_type_ = st;
}
+const char*
+be_decl::fullname (void)
+{
+ if (!this->fullname_)
+ compute_fullname ();
+
+ return this->fullname_;
+}
+
+const char*
+be_decl::ami_handler_fullname (void)
+{
+ if (!this->ami_handler_fullname_)
+ compute_ami_handler_name (this->fullname (),
+ this->ami_handler_fullname_);
+
+ return this->ami_handler_fullname_;
+}
+
+
// compute stringified fully scoped name
void
be_decl::compute_fullname (void)
@@ -170,14 +231,24 @@ be_decl::compute_fullname (void)
}
const char*
-be_decl::fullname (void)
+be_decl::flatname (void)
{
- if (!this->fullname_)
- compute_fullname ();
+ if (!this->flatname_)
+ this->compute_flatname ();
- return this->fullname_;
+ return this->flatname_;
}
+const char*
+be_decl::ami_handler_flatname (void)
+{
+ if (!this->ami_handler_flatname_)
+ this->compute_flatname ("AMI_","_Handler");
+
+ return this->ami_handler_flatname_;
+}
+
+
// compute stringified flattened fully scoped name
void
be_decl::compute_flatname (void)
@@ -245,17 +316,83 @@ be_decl::compute_flatname (void)
+char *
+be_decl::compute_flatname (const char *prefix, const char *suffix)
+{
+ if (prefix == 0 || suffix == 0)
+ return 0;
-const char*
-be_decl::flatname (void)
+ ACE_CString prefix_str (prefix);
+ ACE_CString suffix_str (suffix);
+
+ ACE_CString result_str;
+
+ // Get parent.
+ if (this->defined_in () == 0)
+ {
+ // Global scope.
+
+ // Prefix.
+ result_str = prefix_str;
+
+ // Local name.
+ result_str += ACE_CString (this->local_name ()->get_string ());
+
+ // Suffix.
+ result_str += suffix_str;
+ }
+ else
+ {
+ // Get scope name.
+ be_decl *parent = be_scope::narrow_from_scope (this->defined_in ())->decl ();
+ if (parent == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_decl::"
+ "compute_flat_name - "
+ "scope name is nil\n"),
+ 0);
+ }
+
+ // Parent name.
+ result_str = ACE_CString (parent->fullname ());
+
+ // _
+ if (ACE_OS::strcmp (parent->fullname (), "") != 0)
+ result_str += ACE_CString ("_");
+
+ // Prefix.
+ result_str += ACE_CString ("AMI_");
+
+ // Local name.
+ result_str += ACE_CString (this->local_name ()->get_string ());
+
+ // Suffix.
+ result_str += suffix_str;
+ }
+
+ this->ami_handler_flatname_ = result_str.rep ();
+ return this->ami_handler_flatname_;
+}
+
+const char *
+be_decl::repoID (void)
{
- if (!this->flatname_)
- compute_flatname ();
+ if (!this->repoID_)
+ this->compute_repoID ();
- return this->flatname_;
+ return this->repoID_;
}
+const char *
+be_decl::ami_handler_repoID (void)
+{
+ if (!this->ami_handler_repoID_)
+ this->compute_repoID ("AMI_","_Handler");
+
+ return this->ami_handler_repoID_;
+}
// compute stringified repository ID
@@ -331,15 +468,197 @@ be_decl::compute_repoID (void)
return;
}
-const char *
-be_decl::repoID (void)
+// Apply the prefix and suffix to the local name and compute the
+// repoID. Both the parameters should be non-null.
+char *
+be_decl::compute_repoID (const char *prefix, const char *suffix)
{
- if (!this->repoID_)
- compute_repoID ();
+ // Prefix and suffix should be valid.
+ if (prefix == 0 || suffix == 0)
+ return 0;
- return this->repoID_;
+ // First prepare the result without IDL: and :1.0 strings.
+
+ // repoID without IDL: and :1.0 strings.
+ char *result = 0;
+
+ long namelen;
+ UTL_IdListActiveIterator *i;
+ long first = I_TRUE;
+ long second = I_FALSE;
+
+ // In the first loop compute the total length.
+ namelen = 8; // for the prefix "IDL:" and suffix ":1.0"
+ namelen += ACE_OS::strlen (this->prefix ()) + 1;
+ i = new UTL_IdListActiveIterator (this->name ());
+ while (!(i->is_done ()))
+ {
+ if (!first)
+ namelen += 1; // for "/"
+ else if (second)
+ first = second = I_FALSE;
+ // print the identifier
+ namelen += ACE_OS::strlen (i->item ()->get_string ());
+ if (first)
+ {
+ if (ACE_OS::strcmp (i->item ()->get_string (), "") != 0)
+ // does not start with a ""
+ first = I_FALSE;
+ else
+ second = I_TRUE;
+ }
+ i->next ();
+ }
+ delete i;
+
+ // Get the result.
+
+ result = new char [namelen+1];
+ result[0] = '\0';
+
+ // Start the result with prefix.
+ ACE_OS::sprintf (result, "%s", this->prefix ());
+
+ // Add the "/" only if there is a prefix
+ if (ACE_OS::strcmp (this->prefix (), "") != 0)
+ ACE_OS::strcat (result, "/");
+
+ i = new UTL_IdListActiveIterator (this->name ());
+ first = I_TRUE;
+ second = I_FALSE;
+ while (!(i->is_done ()))
+ {
+ if (!first)
+ ACE_OS::strcat (result, "/");
+ else if (second)
+ first = second = I_FALSE;
+ // print the identifier
+ ACE_OS::strcat (result, i->item ()->get_string ());
+ if (first)
+ {
+ if (ACE_OS::strcmp (i->item ()->get_string (), "") != 0)
+ // does not start with a ""
+ first = I_FALSE;
+ else
+ second = I_TRUE;
+ }
+ i->next ();
+ }
+ delete i;
+
+ // Add prefix and suffix.
+
+ // Search where the last / is. If it is not there put AMI_ right
+ // after IDL: and _Handler after that and then the :1.0 string.
+ // Otherwise put AMI after the last / and _Handler at the end and
+ // then the 1.0 string.
+
+ // CStrings are cool.
+
+ ACE_CString result_str (result);
+
+ // Return val. Release = 0 so that we can return the <c_str>.
+ ACE_CString repoID ("IDL:", 0, 0);
+
+ // Useful CStrings.
+ ACE_CString prefix_str (prefix);
+ ACE_CString suffix_str (suffix);
+ ACE_CString version_str (":1.0");
+
+ // Find the last /.
+ int last_name_pos = result_str.rfind ('/');
+
+ if (last_name_pos == ACE_CString::npos)
+ {
+ // '/' not present.
+
+ // Add prefix + result.
+ repoID += prefix_str;
+
+ repoID += result_str;
+
+ // Add suffix.
+ repoID += suffix_str;
+ }
+ else
+ {
+ // '/' present.
+
+ // IDl:<result except the last name>'/'. Watch get the last /
+ // also.
+ repoID += result_str.substring (0, last_name_pos+1);
+
+ // Put prefix.
+ repoID += prefix_str;
+
+ // Put the last name.
+ repoID += result_str.substr (last_name_pos + 1);
+
+ // Add suffix.
+ repoID += suffix_str;
+ }
+
+ // Add 1.0.
+ repoID += version_str;
+
+ // Delete result.
+ delete result;
+ result = 0;
+
+ this->ami_handler_repoID_ = repoID.rep ();
+
+ return this->ami_handler_repoID_;
+}
+
+
+int
+be_decl::compute_ami_handler_name (const char *name,
+ char *&ami_handler_name)
+{
+ int name_length = ACE_OS::strlen (name);
+ int ami_handler_length = ACE_OS::strlen ("AMI__HANDLER");
+
+ ACE_NEW_RETURN (ami_handler_name,
+ char[name_length + ami_handler_length+1],
+ -1);
+
+ // copy it in
+ ACE_OS::strcpy (ami_handler_name, name);
+
+ const char *interface_name = 0;
+ int i = ACE_OS::strlen (name);
+ for (;i >= 1; i--)
+ {
+ if (name[i-1] == ':' && name[i] == ':')
+ {
+ interface_name = &name[i+1];
+ break;
+ }
+ else if (i >= 3)
+ if (name[i-3] == 'P' &&
+ name[i-2] == 'O' &&
+ name[i-1] == 'A' &&
+ name[i] == '_')
+ {
+ interface_name = &name[i+1];
+ break;
+ }
+ }
+
+ if (interface_name == 0)
+ interface_name = name;
+
+ ACE_OS::strcpy(&ami_handler_name[name_length-ACE_OS::strlen(interface_name)],"AMI_");
+ ACE_OS::strcpy(&ami_handler_name[name_length-ACE_OS::strlen(interface_name)+4],
+ interface_name);
+ ACE_OS::strcpy(&ami_handler_name[name_length+4],
+ "_Handler");
+
+ return 0;
}
+
+
void
be_decl::compute_prefix ()
{
diff --git a/TAO/TAO_IDL/be/be_interface.cpp b/TAO/TAO_IDL/be/be_interface.cpp
index ccd862f77b8..37860f537b5 100644
--- a/TAO/TAO_IDL/be/be_interface.cpp
+++ b/TAO/TAO_IDL/be/be_interface.cpp
@@ -33,9 +33,13 @@ ACE_RCSID(be, be_interface, "$Id$")
// default constructor
be_interface::be_interface (void)
: full_skel_name_ (0),
+ ami_handler_full_skel_name_ (0),
skel_count_ (0),
full_coll_name_ (0),
+ ami_handler_full_coll_name_ (0),
local_coll_name_ (0),
+ ami_handler_local_coll_name_ (0),
+ ami_handler_local_name_ (0),
in_mult_inheritance_ (-1)
{
this->size_type (be_decl::VARIABLE); // always the case
@@ -48,9 +52,13 @@ be_interface::be_interface (UTL_ScopedName *n, AST_Interface **ih, long nih,
AST_Decl (AST_Decl::NT_interface, n, p),
UTL_Scope (AST_Decl::NT_interface),
full_skel_name_ (0),
+ ami_handler_full_skel_name_ (0),
skel_count_ (0),
full_coll_name_ (0),
+ ami_handler_full_coll_name_ (0),
local_coll_name_ (0),
+ ami_handler_local_coll_name_ (0),
+ ami_handler_local_name_ (0),
in_mult_inheritance_ (-1)
{
this->size_type (be_decl::VARIABLE); // always the case
@@ -63,16 +71,36 @@ be_interface::~be_interface (void)
delete[] this->full_skel_name_;
this->full_skel_name_ = 0;
}
+ if (this->ami_handler_full_skel_name_ != 0)
+ {
+ delete[] this->ami_handler_full_skel_name_;
+ this->ami_handler_full_skel_name_ = 0;
+ }
if (this->full_coll_name_ != 0)
{
delete[] this->full_coll_name_;
this->full_coll_name_ = 0;
}
+ if (this->ami_handler_full_coll_name_ != 0)
+ {
+ delete[] this->ami_handler_full_coll_name_;
+ this->ami_handler_full_coll_name_ = 0;
+ }
if (this->local_coll_name_ != 0)
{
delete[] this->local_coll_name_;
this->local_coll_name_ = 0;
}
+ if (this->ami_handler_local_coll_name_ != 0)
+ {
+ delete[] this->ami_handler_local_coll_name_;
+ this->ami_handler_local_coll_name_ = 0;
+ }
+ if (this->ami_handler_local_name_ != 0)
+ {
+ delete[] this->ami_handler_local_name_;
+ this->ami_handler_local_name_ = 0;
+ }
}
// compute stringified fully qualified collocated class name.
@@ -177,6 +205,126 @@ be_interface::local_coll_name (int type) const
return this->local_coll_name_;
}
+
+const char*
+be_interface::ami_handler_full_coll_name (void)
+{
+ if (this->ami_handler_full_coll_name_ == 0)
+ {
+ // @@ Michael: We need to check this one. I am just passing 1
+ // for the time being. (Alex).
+ compute_ami_handler_name (this->full_coll_name(1),
+ this->ami_handler_full_coll_name_);
+ }
+
+ return this->ami_handler_full_coll_name_;
+}
+
+const char*
+be_interface::ami_handler_local_coll_name (void)
+{
+ if (this->ami_handler_local_coll_name_ == 0)
+ {
+ // @@ Michael: We need to check this one. I am just passing 1
+ // for the time being. (Alex).
+ compute_ami_handler_name (this->local_coll_name(1),
+ this->ami_handler_local_coll_name_);
+ }
+
+ return this->ami_handler_local_coll_name_;
+}
+
+const char*
+be_interface::ami_handler_local_name (void)
+{
+ if (this->ami_handler_local_name_ == 0)
+ compute_ami_handler_name (this->local_name()->get_string (),
+ this->ami_handler_local_name_);
+
+ return this->ami_handler_local_name_;
+}
+
+// Generate collocated local and full names for the arbitrary local
+// name under the scope of this interface. Usefull to generate AMI
+// Handlers.
+int
+be_interface::compute_coll_names (const char *local_name,
+ char *&coll_local_name,
+ char *&coll_full_name)
+
+{
+ const char collocated[] = "_tao_collocated_";
+ const char poa[] = "POA_";
+
+ // Reserve enough room for the "POA_" prefix, the "_tao_collocated_"
+ // prefix and the local name and the (optional) "::"
+ int namelen = sizeof (collocated) + sizeof (poa);
+
+ UTL_IdListActiveIterator *i;
+ ACE_NEW_RETURN (i, UTL_IdListActiveIterator (this->name ()), -1);
+ while (!i->is_done ())
+ {
+ // reserve 2 characters for "::".
+ namelen += ACE_OS::strlen (i->item ()->get_string ()) + 2;
+ i->next ();
+ }
+ delete i;
+
+ ACE_NEW_RETURN (coll_full_name,
+ char[namelen+1],
+ -1);
+ coll_full_name[0] = 0; // null terminate the string...
+
+ // Iterate again....
+ ACE_NEW_RETURN (i, UTL_IdListActiveIterator (this->name ()), -1);
+
+ // Only the first component get the "POA_" preffix.
+ int poa_added = 0;
+ while (!i->is_done ())
+ {
+ const char* item = i->item ()->get_string ();
+
+ // Increase right away, so we can test for the final component
+ // in the loop.
+ i->next ();
+
+ // We add the POA_ preffix only if the first component is not
+ // the global scope...
+ if (ACE_OS::strcmp (item, "") != 0)
+ {
+ if (!i->is_done ())
+ {
+ // We only add the POA_ preffix if there are more than
+ // two components in the name, in other words, if the
+ // class is inside some scope.
+ if (!poa_added)
+ {
+ ACE_OS::strcat (coll_full_name, poa);
+ poa_added = 1;
+ }
+ ACE_OS::strcat (coll_full_name, item);
+ ACE_OS::strcat (coll_full_name, "::");
+ }
+ else
+ {
+ ACE_OS::strcat (coll_full_name, collocated);
+ ACE_OS::strcat (coll_full_name, item);
+ }
+ }
+ }
+ delete i;
+
+ // Compute the local name for the collocated class.
+ int localen = sizeof (collocated);
+ localen += ACE_OS::strlen (local_name);
+ ACE_NEW_RETURN (coll_local_name, char[localen], -1);
+ ACE_OS::strcpy(coll_local_name, collocated);
+ ACE_OS::strcat(coll_local_name,
+ local_name);
+
+ return 0;
+}
+
// compute stringified fully scoped skel name
void
be_interface::compute_fullskelname (void)
@@ -259,6 +407,17 @@ be_interface::full_skel_name (void)
return this->full_skel_name_;
}
+const char*
+be_interface::ami_handler_full_skel_name (void)
+{
+ if (this->ami_handler_full_skel_name_ == 0)
+ compute_ami_handler_name (this->full_skel_name(),
+ this->ami_handler_full_skel_name_);
+
+ return this->ami_handler_full_skel_name_;
+}
+
+
// Am I in some kind of a multiple inheritance
int be_interface::in_mult_inheritance (void)
{
@@ -562,7 +721,7 @@ be_interface::gen_var_impl (char *interface_local_name,
*ci << "{\n";
ci->incr_indent ();
*ci << "CORBA::release (this->ptr_);" << nl;
- *ci << "this->ptr_ = " << name () << "::_duplicate (p.ptr ());\n";
+ *ci << "this->ptr_ = " << interface_full_name << "::_duplicate (p.ptr ());\n";
ci->decr_indent ();
*ci << "}" << nl;
*ci << "return *this;\n";
@@ -2055,6 +2214,8 @@ be_interface::accept (be_visitor *visitor)
return visitor->visit_interface (this);
}
+
+
// Narrowing
IMPL_NARROW_METHODS3 (be_interface, AST_Interface, be_scope, be_type)
IMPL_NARROW_FROM_DECL (be_interface)
diff --git a/TAO/TAO_IDL/be/be_type.cpp b/TAO/TAO_IDL/be/be_type.cpp
index 899b2360a40..279348d9008 100644
--- a/TAO/TAO_IDL/be/be_type.cpp
+++ b/TAO/TAO_IDL/be/be_type.cpp
@@ -19,9 +19,9 @@
//
// ============================================================================
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
ACE_RCSID(be, be_type, "$Id$")
@@ -94,13 +94,70 @@ be_type::compute_tc_name (void)
(namebuf), 1,
0, I_FALSE), NULL));
}
+
return;
}
+UTL_ScopedName *
+be_type::compute_tc_name (const char *prefix, const char *suffix)
+{
+ // Both prefix and suffix has to be valid. Else return.
+ if (prefix == 0 || suffix == 0)
+ return 0;
+
+ static char namebuf [NAMEBUFSIZE];
+ UTL_ScopedName *n;
+
+ UTL_ScopedName *result = NULL;
+ ACE_OS::memset (namebuf, '\0', NAMEBUFSIZE);
+ n = this->name ();
+ while (n->tail () != NULL)
+ {
+ if (!result)
+ {
+ // does not exist
+ result = new UTL_ScopedName (n->head (), NULL);
+ }
+ else
+ {
+ result->nconc (new UTL_ScopedName (n->head (), NULL));
+ }
+ n = (UTL_ScopedName *)n->tail ();
+ }
+
+ ACE_OS::sprintf (namebuf,
+ "_tc_%s%s%s",
+ prefix,
+ n->last_component ()->get_string (),
+ suffix);
+
+ if (!result)
+ {
+ // does not exist
+ result = new UTL_ScopedName (new Identifier (ACE_OS::strdup
+ (namebuf), 1, 0, I_FALSE), NULL);
+ }
+ else
+ {
+ result->nconc (new UTL_ScopedName (new Identifier (ACE_OS::strdup
+ (namebuf), 1,
+ 0, I_FALSE), NULL));
+ }
+
+ return result;
+}
+
// retrieve typecode name
UTL_ScopedName *
-be_type::tc_name (void)
+be_type::tc_name (const char *prefix, const char *suffix)
{
+ if (prefix != 0 && suffix != 0)
+ {
+ // Just compute and return the name.
+ return compute_tc_name (prefix, suffix);
+ }
+
+ // Compute and init the member.
if (!this->tc_name_)
compute_tc_name ();
diff --git a/TAO/TAO_IDL/be/be_visitor_argument.cpp b/TAO/TAO_IDL/be/be_visitor_argument.cpp
index f839202185b..b6c726568ba 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument.cpp
@@ -40,5 +40,10 @@
#include "be_visitor_argument/pre_invoke_cs.cpp"
#include "be_visitor_argument/ami_arglist.cpp"
#include "be_visitor_argument/ami_handler_arglist.cpp"
+#include "be_visitor_argument/ami_handler_result_arg.cpp"
+#include "be_visitor_argument/ami_handler_compiled_marshal_cs.cpp"
+#include "be_visitor_argument/ami_handler_upcall_cs.cpp"
+#include "be_visitor_argument/ami_handler_vardecl_cs.cpp"
+
ACE_RCSID(be, be_visitor_argument, "$Id$")
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp
index 8ccbe559bb4..7eed73d1933 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp
@@ -72,6 +72,7 @@ be_visitor_args_ami_handler_arglist::visit_argument (be_argument *node)
"cannot accept visitor\n"),
-1);
}
+
// Print the variable name only if the type was printed already.
if (result)
*os << " " << node->local_name () << ",\n";
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp
new file mode 100644
index 00000000000..7f2031f7604
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp
@@ -0,0 +1,698 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_compiled_marshal_cs.cpp
+//
+// = DESCRIPTION
+// Visitor generating the code that passes arguments to the CDR operators
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "idl.h"
+#include "be.h"
+#include "be_visitor_argument.h"
+
+ACE_RCSID(be_visitor_argument, ami_handler_compiled_marshal_cs, "$Id$")
+
+
+// ****************************************************************************
+// visitor for arguments passing to the CDR operators.
+// ****************************************************************************
+
+be_visitor_args_ami_handler_compiled_marshal_cs::
+be_visitor_args_ami_handler_compiled_marshal_cs (be_visitor_context *ctx)
+ : be_visitor_args (ctx)
+{
+}
+
+be_visitor_args_ami_handler_compiled_marshal_cs::
+~be_visitor_args_ami_handler_compiled_marshal_cs (void)
+{
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_argument (be_argument *node)
+{
+ this->ctx_->node (node); // save the argument node
+
+ // retrieve the type of the argument
+ be_type *bt = be_type::narrow_from_decl (node->field_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_argument - "
+ "Bad argument type\n"),
+ -1);
+ }
+
+ // Different types have different mappings when used as in/out or
+ // inout parameters. Let this visitor deal with the type
+
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+
+ //TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGS_DEMARSHAL_CS)
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << "(_tao_in >> ";
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << "(_tao_out << ";
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_argument - "
+ "Bad substate\n"),
+ -1);
+ }
+
+ if (bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_argument - "
+ "cannot accept visitor\n"),
+ -1);
+ }
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << ")";
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << ")";
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_argument - "
+ "Bad substate\n"),
+ -1);
+ }
+
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_array (be_array *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << "_tao_forany_" << arg->local_name ();
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << node->name () << "_forany ("
+ << "(" << node->name () << "_slice *)"
+ << arg->local_name () << ")";
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_array - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_enum (be_enum *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_enum - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_interface (be_interface *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name () << ".out ()";
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_interface - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_interface_fwd (be_interface_fwd *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name () << "out ()";
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_interface - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+#ifdef IDL_HAS_VALUETYPE
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_valuetype (be_valuetype *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name () << ".out ()";
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_valuetype - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_valuetype_fwd (be_valuetype_fwd *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name () << "out ()";
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_valuetype_fwd - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+#endif /* IDL_HAS_VALUETYPE */
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_predefined_type (be_predefined_type *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get argument node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ switch (node->pt ())
+ {
+ case AST_PredefinedType::PT_pseudo:
+ *os << arg->local_name () << ".out ()";
+ break;
+ case AST_PredefinedType::PT_any:
+ case AST_PredefinedType::PT_long:
+ case AST_PredefinedType::PT_ulong:
+ case AST_PredefinedType::PT_longlong:
+ case AST_PredefinedType::PT_ulonglong:
+ case AST_PredefinedType::PT_short:
+ case AST_PredefinedType::PT_ushort:
+ case AST_PredefinedType::PT_float:
+ case AST_PredefinedType::PT_double:
+ case AST_PredefinedType::PT_longdouble:
+ *os << arg->local_name ();
+ break;
+ case AST_PredefinedType::PT_char:
+ *os << "CORBA::Any::to_char (" << arg->local_name () << ")";
+ break;
+ case AST_PredefinedType::PT_wchar:
+ *os << "CORBA::Any::to_wchar (" << arg->local_name () << ")";
+ break;
+ case AST_PredefinedType::PT_boolean:
+ *os << "CORBA::Any::to_boolean (" << arg->local_name () << ")";
+ break;
+ case AST_PredefinedType::PT_octet:
+ *os << "CORBA::Any::to_octet (" << arg->local_name () << ")";
+ break;
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_compiled_marshal_ss::"
+ "visit_predefined_type - "
+ "Bad predefined type\n"),
+ -1);
+ }
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ switch (node->pt ())
+ {
+ case AST_PredefinedType::PT_pseudo:
+ case AST_PredefinedType::PT_any:
+ case AST_PredefinedType::PT_long:
+ case AST_PredefinedType::PT_ulong:
+ case AST_PredefinedType::PT_longlong:
+ case AST_PredefinedType::PT_ulonglong:
+ case AST_PredefinedType::PT_short:
+ case AST_PredefinedType::PT_ushort:
+ case AST_PredefinedType::PT_float:
+ case AST_PredefinedType::PT_double:
+ case AST_PredefinedType::PT_longdouble:
+ *os << arg->local_name ();
+ break;
+ case AST_PredefinedType::PT_char:
+ *os << "CORBA::Any::from_char (" << arg->local_name () << ")";
+ break;
+ case AST_PredefinedType::PT_wchar:
+ *os << "CORBA::Any::from_wchar (" << arg->local_name () << ")";
+ break;
+ case AST_PredefinedType::PT_boolean:
+ *os << "CORBA::Any::from_boolean (" << arg->local_name () << ")";
+ break;
+ case AST_PredefinedType::PT_octet:
+ *os << "CORBA::Any::from_octet (" << arg->local_name () << ")";
+ break;
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_compiled_marshal_cs::"
+ "visit_predefined_type - "
+ "Bad predefined type\n"),
+ -1);
+ }
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_array - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_sequence (be_sequence *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_interface - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_string (be_string *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ // we need to make a distinction between bounded and unbounded strings
+ if (node->max_size ()->ev ()->u.ulval == 0)
+ {
+ *os << arg->local_name () << ".out ()";
+ }
+ else
+ {
+ *os << "CORBA::Any::to_string ("
+ << arg->local_name () << ".out (), "
+ << node->max_size ()->ev ()->u.ulval - 1
+ << ")";
+ }
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_interface - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_structure (be_structure *node)
+{
+ ACE_UNUSED_ARG (node);
+
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_interface - "
+ "Bad substate\n"),
+ -1);
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_union (be_union *node)
+{
+ ACE_UNUSED_ARG (node);
+
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ *os << arg->local_name ();
+ break;
+ }
+ }
+ else
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_interface - "
+ "Bad substate\n"),
+ -1);
+ }
+
+ return 0;
+}
+
+int be_visitor_args_ami_handler_compiled_marshal_cs::visit_typedef (be_typedef *node)
+{
+ this->ctx_->alias (node);
+ if (node->primitive_base_type ()->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_compiled_marshal_cs::"
+ "visit_typedef - "
+ "accept on primitive type failed\n"),
+ -1);
+ }
+ this->ctx_->alias (0);
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp
new file mode 100644
index 00000000000..9a2b8872e9a
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp
@@ -0,0 +1,179 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_result_arg.cpp
+//
+// = DESCRIPTION
+// Visitor that generates the result argument in a call back method
+// of a Reply Handler.
+//
+// = AUTHOR
+// Aniruddha Gokhale and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "be.h"
+#include "be_visitor_argument.h"
+
+ACE_RCSID(be_visitor_args, ami_handler_result_arg, "$Id$")
+
+
+// ************************************************************
+// Visitor for parameter list in AMI Handler call back declarations
+// and definitions.
+// ************************************************************
+
+be_visitor_args_ami_handler_result_arg::be_visitor_args_ami_handler_result_arg (be_visitor_context *ctx)
+ : be_visitor_args (ctx)
+{
+}
+
+be_visitor_args_ami_handler_result_arg::~be_visitor_args_ami_handler_result_arg (void)
+{
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_array (be_array *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << "const " << this->type_name (node) << " _tao_retval, ";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_enum (be_enum *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << this->type_name (node) << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_interface (be_interface *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << this->type_name (node, "_ptr") << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_interface_fwd (be_interface_fwd *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << this->type_name (node, "_ptr") << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_native (be_native *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << this->type_name (node) << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_predefined_type (be_predefined_type *node)
+{
+
+ // Nothing to do if the return type is void.
+ if (node->pt () == AST_PredefinedType::PT_void)
+ return 0;
+
+ // Get output stream.
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ // Check if the type is an any.
+ if (node->pt () == AST_PredefinedType::PT_any)
+ {
+ *os << "const " << this->type_name (node) << " &" << " _tao_retval";
+ }
+ else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object
+ {
+ *os << this->type_name (node, "_ptr") << " _tao_retval";
+ }
+ else
+ {
+ *os << this->type_name (node) << " _tao_retval";
+ }
+
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_sequence (be_sequence *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const " << this->type_name (node) << " &" << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_string (be_string *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const char *" << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_structure (be_structure *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const " << this->type_name (node) << " &" << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_union (be_union *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const " << this->type_name (node) << " &" << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_typedef (be_typedef *node)
+{
+ this->ctx_->alias (node);
+ if (node->primitive_base_type ()->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_result_arg::"
+ "visit_typedef - "
+ "accept on primitive type failed\n"),
+ -1);
+ }
+ this->ctx_->alias (0);
+ return 1;
+}
+
+
+#ifdef IDL_HAS_VALUETYPE
+
+int
+be_visitor_args_ami_handler_result_arg::visit_valuetype (be_valuetype *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << this->type_name (node) << " *" << " _tao_retval";
+ return 1;
+}
+
+int
+be_visitor_args_ami_handler_result_arg::visit_valuetype_fwd (be_valuetype_fwd *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const " << this->type_name (node) << " *" << " _tao_retval";
+ return 1;
+}
+
+#endif /* IDL_HAS_VALUETYPE */
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp
new file mode 100644
index 00000000000..344d2a61ce0
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp
@@ -0,0 +1,382 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_upcall_cs.cpp
+//
+// = DESCRIPTION
+// Visitor that generates code that passes argument variables to the
+// upcall.
+//
+// = AUTHOR
+// Aniruddha Gokhale
+// Michael Kircher
+//
+// ============================================================================
+
+#include "idl.h"
+#include "be.h"
+#include "be_visitor_argument.h"
+
+ACE_RCSID(be_visitor_argument, upcall_cs, "$Id$")
+
+
+// ************************************************************************
+// visitor for passing arguments to the upcall
+// ************************************************************************
+
+be_visitor_args_ami_handler_upcall_cs::be_visitor_args_ami_handler_upcall_cs (be_visitor_context *ctx)
+ : be_visitor_args (ctx)
+{
+}
+
+be_visitor_args_ami_handler_upcall_cs::~be_visitor_args_ami_handler_upcall_cs (void)
+{
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_argument (be_argument *node)
+{
+ this->ctx_->node (node); // save the argument node
+
+ // retrieve the type
+ be_type *bt = be_type::narrow_from_decl (node->field_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_upcall_cs::"
+ "visit_argument - "
+ "Bad argument type\n"),
+ -1);
+ }
+
+ // Different types have different mappings when used as in/out or
+ // inout parameters. Let this visitor deal with the type
+
+ if (bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_upcall_cs::"
+ "visit_argument - "
+ "cannot accept visitor\n"),
+ -1);
+ }
+
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_array (be_array *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_OUT:
+ case AST_Argument::dir_INOUT:
+ /*if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ if (node->size_type () == be_decl::VARIABLE)
+ *os << arg->local_name () << ".in ()";
+ else
+ *os << arg->local_name ();
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_enum (be_enum *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << arg->local_name ();
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_interface (be_interface *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ /*if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ *os << arg->local_name () << ".in ()";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_interface_fwd (be_interface_fwd *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ /*if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ *os << arg->local_name () << ".in ()";
+ break;
+ }
+ return 0;
+}
+
+#ifdef IDL_HAS_VALUETYPE
+
+int be_visitor_args_ami_handler_upcall_cs::visit_valuetype (be_valuetype *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ /*if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ *os << arg->local_name () << ".in ()";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_valuetype_fwd (be_valuetype_fwd *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ /*if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ *os << arg->local_name () << ".in ()";
+ break;
+ }
+ return 0;
+}
+
+#endif /* IDL_HAS_VALUETYPE */
+
+
+int be_visitor_args_ami_handler_upcall_cs::visit_predefined_type (be_predefined_type *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // check if the type is an any
+ if (node->pt () == AST_PredefinedType::PT_any)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ /*
+ if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ *os << arg->local_name () << ".in ()";
+ break;
+ } // end switch direction
+ } // end of if
+ else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ /*if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ *os << arg->local_name () << ".in ()";
+ break;
+ } // end switch direction
+ } // end else if
+ else // simple predefined types
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << arg->local_name ();
+ break;
+ } // end switch direction
+ } // end of else
+
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_sequence (be_sequence *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ /*if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ *os << arg->local_name () << ".in ()";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_string (be_string *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // If we use it in conjunction with AMI Reply Handlers we do
+ // not want to generate declarations for IN arguments
+ if (this->direction () == AST_Argument::dir_IN
+ && this->ctx_->state() == TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_UPCALL_CS)
+ return 0;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ /*
+ if (this->ctx_->state ()
+ == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs)
+ *os << arg->local_name ();
+ else
+ */
+ os->indent ();
+ *os << arg->local_name () << ".in ()";
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_structure (be_structure *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ if (node->size_type () == be_decl::VARIABLE)
+ *os << arg->local_name () << ".in ()";
+ else
+ *os << arg->local_name ();
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_union (be_union *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ if (node->size_type () == be_decl::VARIABLE)
+ *os << arg->local_name () << ".in ()";
+ else
+ *os << arg->local_name ();
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_upcall_cs::visit_typedef (be_typedef *node)
+{
+ this->ctx_->alias (node);
+ if (node->primitive_base_type ()->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_upcall_cs::"
+ "visit_typedef - "
+ "accept on primitive type failed\n"),
+ -1);
+ }
+ this->ctx_->alias (0);
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp
new file mode 100644
index 00000000000..8592d1d5e81
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp
@@ -0,0 +1,525 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_vardecl_cs.cpp
+//
+// = DESCRIPTION
+// Visitor that generates the variable declaration in the skeleton
+// corresponding to the Argument node
+//
+// = AUTHOR
+// Aniruddha Gokhale
+// Michael Kircher
+//
+// ============================================================================
+
+#include "idl.h"
+#include "be.h"
+#include "be_visitor_argument.h"
+
+ACE_RCSID(be_visitor_argument, ami_handler_vardecl_cs, "$Id$")
+
+
+// ************************************************************************
+// Visitor to generate code for argument variable declaration
+// ************************************************************************
+
+be_visitor_args_ami_handler_vardecl_cs::be_visitor_args_ami_handler_vardecl_cs (be_visitor_context *ctx)
+ : be_visitor_args (ctx)
+{
+}
+
+be_visitor_args_ami_handler_vardecl_cs::~be_visitor_args_ami_handler_vardecl_cs (void)
+{
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_argument (be_argument *node)
+{
+ this->ctx_->node (node); // save the argument node
+
+ // retrieve the type
+ be_type *bt = be_type::narrow_from_decl (node->field_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_vardecl_cs::"
+ "visit_argument - "
+ "Bad argument type\n"),
+ -1);
+ }
+
+ // Different types have different mappings when used as in/out or
+ // inout parameters. Let this visitor deal with the type
+
+ if (bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_vardecl_cs::"
+ "visit_argument - "
+ "cannot accept visitor\n"),
+ -1);
+ }
+
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_array (be_array *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << " " << arg->local_name () << ";" << be_nl
+ << bt->name () << "_forany _tao_forany_"
+ << arg->local_name () << " (" << be_idt << be_idt_nl
+ << arg->local_name () << be_uidt_nl
+ << ");\n" << be_uidt;
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_enum (be_enum *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << " " << arg->local_name () << ";" << be_nl
+ << bt->name () << "_forany _tao_forany_"
+ << arg->local_name () << " (" << be_idt << be_idt_nl
+ << arg->local_name () << be_uidt_nl
+ << ");\n" << be_uidt;
+ break;
+ }
+ return 0;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << " " << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_interface (be_interface *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+#if 0 /* ASG */
+ *os << bt->name () << "_var " << arg->local_name () << ";" << be_nl;
+ *os << "CORBA::Object_var _tao_base_var_" << arg->local_name ()
+ << ";" << be_nl;
+ *os << "CORBA::Object_ptr &_tao_base_ptr_" << arg->local_name ()
+ << " = _tao_base_var_" << arg->local_name () << ".out ();\n";
+#endif
+ *os << bt->name () << "_var " << arg->local_name () << ";" << be_nl;
+ *os << "CORBA::Object_var _tao_base_var_" << arg->local_name ()
+ << ";\n";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_interface_fwd (be_interface_fwd *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+#if 0 /* ASG */
+ *os << bt->name () << "_var " << arg->local_name () << ";" << be_nl;
+ *os << "CORBA::Object_var _tao_base_var_" << arg->local_name ()
+ << ";" << be_nl;
+ *os << "CORBA::Object_ptr &_tao_base_ptr_" << arg->local_name ()
+ << " = _tao_base_var_" << arg->local_name () << ".out ();\n";
+#endif
+ *os << bt->name () << "_var " << arg->local_name () << ";" << be_nl;
+ *os << "CORBA::Object_var _tao_base_var_" << arg->local_name ()
+ << ";\n";
+ break;
+ }
+ return 0;
+}
+
+
+#ifdef IDL_HAS_VALUETYPE
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_valuetype (be_valuetype *)
+{
+ return -1;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_valuetype_fwd (be_valuetype_fwd *)
+{
+ return -1;
+}
+
+#endif /* IDL_HAS_VALUETYPE */
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_predefined_type (be_predefined_type *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ // check if the type is an any
+ if (node->pt () == AST_PredefinedType::PT_any)
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << " " << arg->local_name () << ";\n";
+ break;
+ } // end switch direction
+ } // end of if
+ else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+#if 0 /* ASG */
+ *os << bt->name () << "_var " << arg->local_name ()
+ << ";" << be_nl;
+ *os << bt->name () << "_ptr &_tao_ptr_" << arg->local_name ()
+ << " = " << arg->local_name () << ".out ();\n";
+#endif
+ *os << bt->name () << "_var " << arg->local_name ()
+ << ";\n";
+ break;
+ } // end switch direction
+ } // end else if
+ else // simple predefined types
+ {
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << " " << arg->local_name () << ";\n";
+ break;
+ } // end switch direction
+ } // end of else
+
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_sequence (be_sequence *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << " " << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_string (be_string *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+#if 0 /* ASG */
+ *os << "CORBA::String_var _tao_var_"
+ << arg->local_name () << ";" << be_nl;
+ *os << "char *&" << arg->local_name () << " = _tao_var_"
+ << arg->local_name () << ".out ();" << be_nl;
+#endif
+ *os << "CORBA::String_var "
+ << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_structure (be_structure *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << " " << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_union (be_union *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << " " << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+int be_visitor_args_ami_handler_vardecl_cs::visit_typedef (be_typedef *node)
+{
+ this->ctx_->alias (node);
+ if (node->primitive_base_type ()->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_args_ami_handler_vardecl_cs::"
+ "visit_typedef - "
+ "accept on primitive type failed\n"),
+ -1);
+ }
+ this->ctx_->alias (0);
+ return 0;
+}
+
+
+// ************************************************************************
+// Visitor to generate code for argument variable declaration for compiled
+// marshaling. This provides only the overriden methods. The rest is handled by
+// the base class that works for interpretiveskeletons.
+// ************************************************************************
+
+be_compiled_visitor_args_ami_handler_vardecl_cs::
+be_compiled_visitor_args_ami_handler_vardecl_cs (be_visitor_context *ctx)
+ : be_visitor_args_ami_handler_vardecl_cs (ctx)
+{
+}
+
+be_compiled_visitor_args_ami_handler_vardecl_cs::~be_compiled_visitor_args_ami_handler_vardecl_cs (void)
+{
+}
+
+int be_compiled_visitor_args_ami_handler_vardecl_cs::visit_interface (be_interface *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << "_var " << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+int be_compiled_visitor_args_ami_handler_vardecl_cs::visit_interface_fwd (be_interface_fwd *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << "_var " << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+
+#ifdef IDL_HAS_VALUETYPE
+
+int be_compiled_visitor_args_ami_handler_vardecl_cs::visit_valuetype (be_valuetype *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << "_var " << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+int
+be_compiled_visitor_args_ami_handler_vardecl_cs::visit_valuetype_fwd (be_valuetype_fwd *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
+ // node
+ // if the current type is an alias, use that
+ be_type *bt;
+ if (this->ctx_->alias ())
+ bt = this->ctx_->alias ();
+ else
+ bt = node;
+
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ break;
+ case AST_Argument::dir_INOUT:
+ case AST_Argument::dir_OUT:
+ os->indent ();
+ *os << bt->name () << "_var " << arg->local_name () << ";\n";
+ break;
+ }
+ return 0;
+}
+
+#endif /* IDL_HAS_VALUETYPE */
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp
index e8105746d40..18cae73c4c9 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp
@@ -60,16 +60,17 @@ int be_visitor_args_compiled_marshal_cs::visit_argument (be_argument *node)
TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ os->indent ();
+
if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
{
switch (this->direction ())
{
case AST_Argument::dir_IN:
case AST_Argument::dir_INOUT:
- os->indent ();
*os << "(_tao_out << ";
break;
- case AST_Argument::dir_OUT:
+ case AST_Argument::dir_OUT:
break;
}
}
@@ -81,7 +82,6 @@ int be_visitor_args_compiled_marshal_cs::visit_argument (be_argument *node)
break;
case AST_Argument::dir_INOUT:
case AST_Argument::dir_OUT:
- os->indent ();
*os << "(_tao_in >> ";
break;
}
@@ -158,7 +158,7 @@ int be_visitor_args_compiled_marshal_cs::visit_array (be_array *node)
case AST_Argument::dir_INOUT:
*os << node->name () << "_forany ("
<< arg->local_name () << ")";
- break;
+ break;
case AST_Argument::dir_OUT:
break;
}
@@ -676,15 +676,15 @@ int be_visitor_args_compiled_marshal_cs::visit_structure (be_structure *node)
if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
{
- switch (this->direction ())
- {
- case AST_Argument::dir_IN:
- case AST_Argument::dir_INOUT:
- *os << arg->local_name ();
- break;
- case AST_Argument::dir_OUT:
- break;
- }
+ switch (this->direction ())
+ {
+ case AST_Argument::dir_IN:
+ case AST_Argument::dir_INOUT:
+ *os << arg->local_name ();
+ break;
+ case AST_Argument::dir_OUT:
+ break;
+ }
}
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp
index 510a89d3328..012dc96724f 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp
@@ -363,13 +363,13 @@ int be_visitor_args_compiled_marshal_ss::visit_valuetype_fwd (be_valuetype_fwd *
{
case AST_Argument::dir_IN:
case AST_Argument::dir_INOUT:
- *os << arg->local_name () << "out ()";
+ *os << arg->local_name () << ".out ()";
break;
case AST_Argument::dir_OUT:
break;
}
}
- else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
{
switch (this->direction ())
{
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp
index 57702ecd178..1e270712ea9 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp
@@ -260,7 +260,6 @@ int be_visitor_args_upcall_ss::visit_predefined_type (be_predefined_type *node)
TAO_OutStream *os = this->ctx_->stream (); // get output stream
be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
// node
-
os->indent ();
// check if the type is an any
if (node->pt () == AST_PredefinedType::PT_any)
@@ -328,7 +327,6 @@ int be_visitor_args_upcall_ss::visit_sequence (be_sequence *)
TAO_OutStream *os = this->ctx_->stream (); // get the stream
be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
// node
-
os->indent ();
switch (this->direction ())
{
@@ -352,7 +350,6 @@ int be_visitor_args_upcall_ss::visit_string (be_string *)
TAO_OutStream *os = this->ctx_->stream (); // get the stream
be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
// node
-
os->indent ();
switch (this->direction ())
{
@@ -386,7 +383,6 @@ int be_visitor_args_upcall_ss::visit_structure (be_structure *node)
TAO_OutStream *os = this->ctx_->stream (); // get the stream
be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
// node
-
os->indent ();
switch (this->direction ())
{
@@ -413,7 +409,6 @@ int be_visitor_args_upcall_ss::visit_union (be_union *node)
TAO_OutStream *os = this->ctx_->stream (); // get the stream
be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
// node
-
os->indent ();
switch (this->direction ())
{
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp
index b07cbd35be4..c5829ca7f92 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp
@@ -368,7 +368,6 @@ int be_visitor_args_vardecl_ss::visit_string (be_string *)
TAO_OutStream *os = this->ctx_->stream (); // get output stream
be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument
// node
-
switch (this->direction ())
{
case AST_Argument::dir_IN:
diff --git a/TAO/TAO_IDL/be/be_visitor_factory.cpp b/TAO/TAO_IDL/be/be_visitor_factory.cpp
index 78caefabdfc..bbb90a662dd 100644
--- a/TAO/TAO_IDL/be/be_visitor_factory.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_factory.cpp
@@ -147,6 +147,7 @@ TAO_Common_Visitor_Factory::make_visitor (be_visitor_context *ctx)
return new be_visitor_interface_ch (new_ctx);
case TAO_CodeGen::TAO_INTERFACE_CI:
return new be_visitor_interface_ci (new_ctx);
+
case TAO_CodeGen::TAO_INTERFACE_CS:
return new be_visitor_interface_cs (new_ctx);
@@ -168,6 +169,10 @@ TAO_Common_Visitor_Factory::make_visitor (be_visitor_context *ctx)
return new be_visitor_interface_direct_collocated_sh (new_ctx);
case TAO_CodeGen::TAO_INTERFACE_DIRECT_COLLOCATED_SS:
return new be_visitor_interface_direct_collocated_ss (new_ctx);
+
+ case TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_CH:
+ return new be_visitor_interface_collocated_ami_handler_ch (new_ctx);
+
case TAO_CodeGen::TAO_INTERFACE_ANY_OP_CH:
return new be_visitor_interface_any_op_ch (new_ctx);
case TAO_CodeGen::TAO_INTERFACE_ANY_OP_CS:
@@ -375,13 +380,16 @@ TAO_Common_Visitor_Factory::make_visitor (be_visitor_context *ctx)
return new be_visitor_typedef_cdr_op_cs (new_ctx);
case TAO_CodeGen::TAO_TYPECODE_DECL:
+ case TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DECL:
// Do we need TypeCode Support?
if (idl_global->tc_support ())
return new be_visitor_typecode_decl (new_ctx);
else
// return a NO_OP visitor
return new be_visitor_decl (new_ctx);
+
case TAO_CodeGen::TAO_TYPECODE_DEFN:
+ case TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN:
// Do we need TypeCode Support?
if (idl_global->tc_support ())
return new be_visitor_typecode_defn (new_ctx);
@@ -453,11 +461,20 @@ TAO_Common_Visitor_Factory::make_visitor (be_visitor_context *ctx)
case TAO_CodeGen::TAO_AMI_HANDLER_FWD_CI:
return new be_visitor_interface_ami_handler_fwd_ci (new_ctx);
- case TAO_CodeGen::TAO_AMI_HANDLER_CH:
- return new be_visitor_interface_ami_handler_ch (new_ctx);
+ case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CH:
+ return new be_visitor_interface_ami_handler_servant_ch (new_ctx);
- case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST:
- return new be_visitor_operation_ami_handler_arglist (new_ctx);
+ case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CS:
+ return new be_visitor_interface_ami_handler_servant_cs (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_CH:
+ return new be_visitor_interface_ami_handler_stub_ch (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_CS:
+ return new be_visitor_interface_ami_handler_stub_cs (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RESULT_ARG:
+ return new be_visitor_args_ami_handler_result_arg (new_ctx);
default:
// an error
@@ -513,30 +530,45 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx)
return new be_visitor_operation_direct_collocated_sh (new_ctx);
case TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS:
return new be_visitor_operation_direct_collocated_ss (new_ctx);
+
+ case TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH:
+ return new be_visitor_operation_ami_handler_operation_ch (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETTYPE_CH:
case TAO_CodeGen::TAO_OPERATION_RETTYPE_OTHERS:
return new be_visitor_operation_rettype (new_ctx);
case TAO_CodeGen::TAO_OPERATION_RETTYPE_IS:
return new be_visitor_operation_rettype_is (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_CS:
return new be_visitor_operation_rettype_vardecl_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_PRE_INVOKE_CS:
return new be_visitor_operation_rettype_pre_docall_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_INVOKE_CS:
return new be_visitor_operation_rettype_docall_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_POST_INVOKE_CS:
return new be_visitor_operation_rettype_post_docall_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS:
return new be_visitor_operation_rettype_return_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS:
return new be_visitor_operation_exceptlist_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_SS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DECL_CS:
return new be_visitor_operation_rettype_vardecl_ss (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_DEMARSHAL_SS:
case TAO_CodeGen::TAO_OPERATION_RETVAL_MARSHAL_SS:
return new be_visitor_operation_rettype_marshal_ss (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_ASSIGN_SS:
return new be_visitor_operation_rettype_assign_ss (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_POST_UPCALL_SS:
return new be_visitor_operation_rettype_post_upcall_ss (new_ctx);
case TAO_CodeGen::TAO_OPERATION_ARGLIST_CH:
@@ -546,8 +578,11 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx)
case TAO_CodeGen::TAO_OPERATION_ARGLIST_COLLOCATED_SH:
case TAO_CodeGen::TAO_OPERATION_ARGLIST_OTHERS:
return new be_visitor_operation_arglist (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_ARG_PRE_INVOKE_CS:
case TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS:
+ case TAO_CodeGen::TAO_AMI_OPERATION_ARG_INVOKE_CS:
+ // @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_INVOKE_CS:
case TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS:
case TAO_CodeGen::TAO_OPERATION_ARG_PRE_UPCALL_SS:
case TAO_CodeGen::TAO_OPERATION_ARG_UPCALL_SS:
@@ -557,7 +592,9 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx)
case TAO_CodeGen::TAO_OPERATION_ARG_DEMARSHAL_SS:
case TAO_CodeGen::TAO_OPERATION_ARG_MARSHAL_SS:
case TAO_CodeGen::TAO_OPERATION_ARG_POST_MARSHAL_SS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS:
return new be_visitor_operation_argument (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_TIE_SH:
return new be_visitor_operation_tie_sh (new_ctx);
case TAO_CodeGen::TAO_OPERATION_TIE_SI:
@@ -566,10 +603,15 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx)
case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_CH:
case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_OTHERS:
return new be_visitor_args_arglist (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_PRE_INVOKE_CS:
return new be_visitor_args_pre_docall_cs (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_INVOKE_CS:
+ case TAO_CodeGen::TAO_AMI_ARGUMENT_INVOKE_CS:
+ // @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_INVOKE_CS:
return new be_visitor_args_docall_cs (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_POST_INVOKE_CS:
return new be_visitor_args_post_docall_cs (new_ctx);
case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
@@ -593,24 +635,37 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx)
case TAO_CodeGen::TAO_OPERATION_AMI_CS:
return new be_interpretive_visitor_operation_ami_cs (new_ctx);
- case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST:
+ case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH:
+ case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CS:
return new be_visitor_operation_ami_arglist (new_ctx);
- case TAO_CodeGen::TAO_OPERATION_ARG_AMI:
- return new be_visitor_operation_argument (new_ctx);
+ // case TAO_CodeGen::TAO_OPERATION_ARG_AMI:
+ // return new be_visitor_operation_argument (new_ctx);
- case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST:
+ case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CH:
return new be_visitor_args_ami_arglist (new_ctx);
- case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_CH:
+ case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CS:
+ return new be_visitor_args_ami_arglist (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH:
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH:
return new be_visitor_operation_ami_handler_operation_ch (new_ctx);
- case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST:
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CS:
+ return new be_interpretive_visitor_operation_ami_handler_operation_cs (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS:
return new be_visitor_operation_ami_handler_arglist (new_ctx);
- case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST:
+ case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CH:
+ case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CS:
return new be_visitor_args_ami_handler_arglist (new_ctx);
+ case TAO_CodeGen::TAO_AMI_HANDLER_SKELETON_CS:
+ return new be_interpretive_visitor_operation_ami_handler_skeleton_cs (new_ctx);
+
default:
// cannot handle it; delegate it to the common visitor factory
delete new_ctx;
@@ -664,34 +719,53 @@ TAO_Compiled_Visitor_Factory::make_visitor (be_visitor_context *ctx)
return new be_visitor_operation_direct_collocated_sh (new_ctx);
case TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS:
return new be_visitor_operation_direct_collocated_ss (new_ctx);
+
+ case TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH:
+ return new be_visitor_operation_ami_handler_operation_ch (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETTYPE_CH:
case TAO_CodeGen::TAO_OPERATION_RETTYPE_OTHERS:
return new be_visitor_operation_rettype (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_CS:
return new be_visitor_operation_rettype_vardecl_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_PRE_INVOKE_CS:
return new be_visitor_operation_rettype_pre_invoke_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_INVOKE_CS:
return new be_visitor_operation_rettype_compiled_marshal (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_POST_INVOKE_CS:
// this is a NO-OP
return new be_visitor_decl (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS:
return new be_visitor_operation_rettype_return_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS:
return new be_visitor_operation_exceptlist_cs (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_SS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DECL_CS:
return new be_compiled_visitor_operation_rettype_vardecl_ss (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_DEMARSHAL_SS:
// this is a NO-OP
return new be_visitor_decl (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_MARSHAL_SS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_MARSHAL_CS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DEMARSHAL_CS:
return new be_visitor_operation_rettype_compiled_marshal (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_ASSIGN_SS:
return new be_visitor_operation_rettype_assign_ss (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_RETVAL_POST_UPCALL_SS:
// this is a NO-OP
return new be_visitor_decl (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_ARGLIST_CH:
case TAO_CodeGen::TAO_OPERATION_ARGLIST_SH:
case TAO_CodeGen::TAO_OPERATION_ARGLIST_IH:
@@ -699,6 +773,7 @@ TAO_Compiled_Visitor_Factory::make_visitor (be_visitor_context *ctx)
case TAO_CodeGen::TAO_OPERATION_ARGLIST_COLLOCATED_SH:
case TAO_CodeGen::TAO_OPERATION_ARGLIST_OTHERS:
return new be_visitor_operation_arglist (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_ARG_PRE_INVOKE_CS:
case TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS:
case TAO_CodeGen::TAO_OPERATION_ARG_PRE_UPCALL_SS:
@@ -707,40 +782,73 @@ TAO_Compiled_Visitor_Factory::make_visitor (be_visitor_context *ctx)
case TAO_CodeGen::TAO_OPERATION_ARG_POST_UPCALL_SS:
case TAO_CodeGen::TAO_OPERATION_ARG_DECL_SS:
case TAO_CodeGen::TAO_OPERATION_ARG_POST_MARSHAL_SS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS:
return new be_visitor_operation_argument (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_ARG_DEMARSHAL_SS:
case TAO_CodeGen::TAO_OPERATION_ARG_MARSHAL_SS:
return new be_compiled_visitor_operation_argument_marshal (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_MARSHAL_CS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DEMARSHAL_CS:
+ return new be_compiled_visitor_operation_ami_handler_argument_marshal (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS:
+ case TAO_CodeGen::TAO_AMI_OPERATION_ARG_INVOKE_CS:
+ // @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_INVOKE_CS:
return new be_compiled_visitor_operation_argument_invoke (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_TIE_SH:
return new be_visitor_operation_tie_sh (new_ctx);
+
case TAO_CodeGen::TAO_OPERATION_TIE_SI:
return new be_visitor_operation_tie_si (new_ctx);
case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_CH:
case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_OTHERS:
return new be_visitor_args_arglist (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_PRE_INVOKE_CS:
return new be_visitor_args_pre_invoke_cs (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_INVOKE_CS:
+ case TAO_CodeGen::TAO_AMI_ARGUMENT_INVOKE_CS:
+ // @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_INVOKE_CS:
return new be_visitor_args_compiled_marshal_cs (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_POST_INVOKE_CS:
return new be_visitor_args_post_docall_compiled_cs (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
return new be_compiled_visitor_args_vardecl_ss (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_VARDECL_CS:
+ return new be_compiled_visitor_args_ami_handler_vardecl_cs (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
// this is a NO-OP
return new be_visitor_decl (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
case TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS:
return new be_visitor_args_upcall_ss (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_UPCALL_CS:
+ return new be_visitor_args_ami_handler_upcall_cs (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
// this is a NO-OP
return new be_visitor_decl (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_DEMARSHAL_SS:
case TAO_CodeGen::TAO_ARGUMENT_MARSHAL_SS:
return new be_visitor_args_compiled_marshal_ss (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_DEMARSHAL_CS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_MARSHAL_CS:
+ return new be_visitor_args_ami_handler_compiled_marshal_cs (new_ctx);
+
case TAO_CodeGen::TAO_ARGUMENT_POST_MARSHAL_SS:
// this is a NO-OP
return new be_visitor_decl (new_ctx);
@@ -751,27 +859,40 @@ TAO_Compiled_Visitor_Factory::make_visitor (be_visitor_context *ctx)
case TAO_CodeGen::TAO_OPERATION_AMI_CH:
return new be_visitor_operation_ami_ch (new_ctx);
- case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST:
+ case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH:
+ case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CS:
return new be_visitor_operation_ami_arglist (new_ctx);
- case TAO_CodeGen::TAO_OPERATION_ARG_AMI:
- return new be_visitor_operation_argument (new_ctx);
+ // case TAO_CodeGen::TAO_OPERATION_ARG_AMI:
+ // return new be_visitor_operation_argument (new_ctx);
- case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST:
+ case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CH:
return new be_visitor_args_ami_arglist (new_ctx);
- case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_CH:
+ case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CS:
+ return new be_visitor_args_ami_arglist (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH:
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH:
return new be_visitor_operation_ami_handler_operation_ch (new_ctx);
- case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST:
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CS:
+ return new be_compiled_visitor_operation_ami_handler_operation_cs (new_ctx);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS:
return new be_visitor_operation_ami_handler_arglist (new_ctx);
case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_AMI_HANDLER:
return new be_visitor_args_ami_handler_arglist (new_ctx);
- case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST:
+ case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CH:
+ case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CS:
return new be_visitor_args_ami_handler_arglist (new_ctx);
+ case TAO_CodeGen::TAO_AMI_HANDLER_SKELETON_CS:
+ return new be_compiled_visitor_operation_ami_handler_skeleton_cs (new_ctx);
+
default:
// cannot handle it; delegate it to the common visitor factory
delete new_ctx;
diff --git a/TAO/TAO_IDL/be/be_visitor_interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface.cpp
index ff8a4ab8d98..1ac9ed473ea 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface.cpp
@@ -45,5 +45,10 @@
#include "be_visitor_interface/cdr_op_cs.cpp"
#include "be_visitor_interface/ami_handler_fwd_ch.cpp"
#include "be_visitor_interface/ami_handler_fwd_ci.cpp"
-#include "be_visitor_interface/ami_handler_ch.cpp"
+#include "be_visitor_interface/ami_handler_servant_ch.cpp"
+#include "be_visitor_interface/ami_handler_servant_cs.cpp"
+#include "be_visitor_interface/ami_handler_stub_ch.cpp"
+#include "be_visitor_interface/ami_handler_stub_cs.cpp"
+#include "be_visitor_interface/collocated_ami_handler_ch.cpp"
+
ACE_RCSID(be, be_visitor_interface, "$Id$")
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp
index 857630cdbe5..678314b2855 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp
@@ -20,9 +20,9 @@
//
// ============================================================================
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
#include "be_visitor_interface.h"
@@ -58,7 +58,7 @@ be_visitor_interface_ami_handler_ch::visit_interface (be_interface *node)
// Generate the skeleton class name.
// Start with whatever indentation level we are at.
- os->indent ();
+ os->indent ();
// We shall have a POA_ prefix only if we are at the topmost level.
if (!node->is_nested ())
@@ -85,7 +85,7 @@ be_visitor_interface_ami_handler_ch::visit_interface (be_interface *node)
// This class will inherit from the Messaging::ReplyHandler class.
*os << "class " << idl_global->export_macro ()
<< " " << namebuf
- << " : public POA_Messaging::ReplyHandler"
+ << " : public POA_Messaging::ReplyHandler"
<< be_nl;
// Body of the class definition.
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp
new file mode 100644
index 00000000000..62eae6c6da5
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp
@@ -0,0 +1,235 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_cs.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for AMI Handler class for an Interface.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_interface.h"
+
+ACE_RCSID(be_visitor_interface, ami_handler_cs, "$Id$")
+
+
+// ************************************************************
+// Interface visitor for client stubs
+// ************************************************************
+
+be_visitor_ ami_handler_cs::be_visitor_ ami_handler_cs (be_visitor_context *ctx)
+ : be_visitor_interface (ctx)
+{
+}
+
+be_visitor_ ami_handler_cs::~be_visitor_ ami_handler_cs (void)
+{
+}
+
+int
+be_visitor_ ami_handler_cs::visit_interface (be_interface *node)
+{
+ // output stream.
+ TAO_OutStream *os;
+
+ if (node->cli_stub_gen () || node->imported ())
+ return 0;
+
+ os = this->ctx_->stream ();
+
+ // Start with whatever indentation level we are at.
+ os->indent ();
+
+ // Create the full name for the AMI_<Interface name>_Handler
+ // interface.
+ char *full_name = 0;
+
+ // Full name.
+ // If there exists a scope name for this, then generate
+ // "Scope::AMI_<Local Name>_Handler".
+
+ size_t scope_len = 0;
+
+ be_decl *parent = be_scope::narrow_from_scope (node->defined_in ())->decl ();
+
+ if (parent != 0 &&
+ parent->fullname () != 0 &&
+ ACE_OS::strlen (parent->fullname ()))
+ scope_len = ACE_OS::strlen (parent->fullname ()) + ACE_OS::strlen ("::");
+
+ ACE_NEW_RETURN (full_name,
+ char [scope_len +
+ ACE_OS::strlen ("AMI_") +
+ ACE_OS::strlen (node->local_name ()->get_string ()) +
+ ACE_OS::strlen ("_Handler") +
+ 1],
+ -1);
+
+ if (parent != 0 &&
+ parent->fullname () != 0 &&
+ ACE_OS::strlen (parent->fullname ()))
+ ACE_OS::sprintf (full_name,
+ "%s::AMI_%s_Handler",
+ parent->fullname (),
+ node->local_name ()->get_string ());
+ else
+ ACE_OS::sprintf (full_name,
+ "AMI_%s_Handler",
+ node->local_name ()->get_string ());
+
+ // First generate the code for the static methods.
+
+ // The _narrow method
+ *os << full_name << "_ptr " << full_name
+ << "::_narrow (" << be_idt << be_idt_nl
+ << "CORBA::Object_ptr obj," << be_nl
+ << "CORBA::Environment &env" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "if (CORBA::is_nil (obj))" << be_idt_nl
+ << "return " << full_name << "::_nil ();" << be_uidt_nl
+ << "if (!obj->_is_a (\"" << node->repoID () << "\", env))"
+ << be_idt_nl
+ << "return " << full_name << "::_nil ();" << be_uidt_nl;
+
+ *os << "return " << full_name
+ << "::_unchecked_narrow (obj, env);" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
+ // This may be necessary to work around a GCC compiler bug!
+ // const char *skel_name = node->full_skel_name (); // unused at this time
+ const char *coll_name = node->full_coll_name ();
+ assert (coll_name != 0);
+
+ // The _unchecked_narrow method
+ *os << full_name << "_ptr " << full_name
+ << "::_unchecked_narrow (" << be_idt << be_idt_nl
+ << "CORBA::Object_ptr obj," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "ACE_UNUSED_ARG (ACE_TRY_ENV);" << be_nl
+ << "if (CORBA::is_nil (obj))" << be_idt_nl
+ << "return " << full_name << "::_nil ();" << be_uidt_nl;
+
+ *os << "TAO_Stub* stub = obj->_stubobj ();" << be_nl
+ << "stub->_incr_refcnt ();" << be_nl;
+ *os << "void* servant = 0;" << be_nl;
+ *os << "if (obj->_is_collocated () "
+ << "&& obj->_servant() != 0)" << be_idt_nl
+ << "servant = obj->_servant()->_downcast (\""
+ << "IDL:omg.org/CORBA/Object:1.0\");" << be_uidt_nl;
+
+ *os << "if (servant != 0)" << be_idt_nl << "{" << be_idt_nl
+ // The collocated object reference factory is not working right (yet)
+ << full_name << "_ptr retv = ACE_reinterpret_cast (" << be_idt << be_idt_nl
+ << full_name << "_ptr," << be_nl
+ << "ACE_reinterpret_cast (" << be_idt << be_idt_nl
+ << "PortableServer::Servant," << be_nl
+ << "servant" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "->_create_collocated_objref (" << be_idt << be_idt_nl
+ << "\"" << node->repoID () << "\"," << be_nl
+ << "TAO_ORB_Core::ORB_CONTROL," << be_nl
+ << "stub" << be_uidt_nl
+ << ")" << be_uidt << be_uidt_nl
+ << ");" << be_uidt_nl
+ << "if (retv != 0)" << be_idt_nl
+ << "return retv;" << be_uidt
+ // So we are still using the old way to create collocated objref.
+ << be_uidt_nl
+ << "}" << be_uidt_nl;
+
+ *os << "return new " << full_name << "(stub);" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
+ // The _duplicate method
+ *os << full_name << "_ptr " << be_nl
+ << full_name << "::_duplicate ("
+ << full_name << "_ptr obj)" << be_nl
+ << "{" << be_idt_nl
+ << "if (!CORBA::is_nil (obj))" << be_idt_nl
+ << "obj->_incr_refcnt ();" << be_uidt_nl
+ << "return obj;" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
+ // generate code for the elements of the interface
+ if (this->visit_scope (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_ ami_handler_cs::"
+ "visit_interface - "
+ "codegen for scope failed\n"), -1);
+ }
+
+ // generate the is_a method
+ os->indent ();
+ *os << "CORBA::Boolean " << full_name << "::_is_a (" <<
+ "const CORBA::Char *value, CORBA::Environment &env)" << be_nl;
+ *os << "{\n";
+ os->incr_indent ();
+ *os << "if (\n";
+ os->incr_indent (0);
+ if (node->traverse_inheritance_graph (be_interface::is_a_helper, os) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_ ami_handler_cs::"
+ "visit_interface - "
+ "_is_a method codegen failed\n"), -1);
+ }
+
+ os->indent ();
+ *os << "(!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (env))))\n";
+ *os << " return 1; // success using local knowledge\n";
+ os->decr_indent ();
+ *os << "else" << be_nl;
+ *os << " return this->CORBA_Object::_is_a (value, env);\n";
+ os->decr_indent ();
+ *os << "}\n\n";
+
+ os->indent ();
+ *os << "const char* " << full_name
+ << "::_interface_repository_id (void) const"
+ << be_nl
+ << "{" << be_idt_nl
+ << "return \"" << node->repoID () << "\";" << be_uidt_nl
+ << "}\n\n";
+
+ // by using a visitor to declare and define the TypeCode, we have the
+ // added advantage to conditionally not generate any code. This will be
+ // based on the command line options. This is still TO-DO
+ be_visitor *visitor;
+ be_visitor_context ctx (*this->ctx_);
+ ctx.state (TAO_CodeGen::TAO_TYPECODE_DEFN);
+ ctx.sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_ ami_handler_cs::"
+ "visit_interface - "
+ "TypeCode definition failed\n"
+ ), -1);
+ }
+
+ // @@ Alex: Make sure you have done the following in the other ami
+ // visitors. (Alex).
+ delete full_name;
+ full_name = 0;
+
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp
new file mode 100644
index 00000000000..899412c61fb
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp
@@ -0,0 +1,243 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_servant_ch.cpp
+//
+// = DESCRIPTION
+// Visitor generating AMI Reply Handler code for Interfaces in the
+// client header.
+//
+// = AUTHOR
+// Aniruddha Gokhale and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_interface.h"
+
+ACE_RCSID(be_visitor_interface, ami_handler_servant_ch, "$Id$")
+
+
+// ************************************************************
+// Interface visitor for server header
+// ************************************************************
+
+be_visitor_interface_ami_handler_servant_ch::be_visitor_interface_ami_handler_servant_ch (be_visitor_context *ctx)
+ : be_visitor_interface (ctx)
+{
+}
+
+be_visitor_interface_ami_handler_servant_ch::~be_visitor_interface_ami_handler_servant_ch (void)
+{
+}
+
+int
+be_visitor_interface_ami_handler_servant_ch::visit_interface (be_interface *node)
+{
+ // Output stream.
+ TAO_OutStream *os;
+
+ // Holds the class name.
+ static char namebuf [NAMEBUFSIZE];
+
+ // AMI_<Interface_Name>_Handler string.
+ static char ami_handler [NAMEBUFSIZE];
+
+ if (node->srv_hdr_gen () || node->imported ())
+ return 0;
+
+ ACE_OS::memset (namebuf, '\0', NAMEBUFSIZE);
+ ACE_OS::memset (ami_handler, '\0', NAMEBUFSIZE);
+
+ os = this->ctx_->stream ();
+
+ // Generate the skeleton class name.
+
+ // Start with whatever indentation level we are at.
+ os->indent ();
+
+ // We shall have a POA_ prefix only if we are at the topmost level.
+ if (!node->is_nested ())
+ {
+ // we are outermost
+ ACE_OS::sprintf (namebuf,
+ "POA_AMI_%s_Handler",
+ node->local_name ()->get_string ());
+ }
+ else
+ {
+ ACE_OS::sprintf (namebuf,
+ "AMI_%s_Handler",
+ node->local_name ()->get_string ());
+ }
+
+ // AMI Handler object's name.
+ ACE_OS::sprintf (ami_handler,
+ "AMI_%s_Handler",
+ node->local_name ()->get_string ());
+
+ *os << "class " << namebuf << ";" << be_nl;
+
+ // generate the _ptr declaration
+ *os << "typedef " << namebuf << " *" << namebuf
+ << "_ptr;" << be_nl;
+
+ // Now generate the class definition.
+ // This class will inherit from the Messaging::ReplyHandler class.
+ *os << "class " << idl_global->export_macro ()
+ << " " << namebuf
+ << " : public virtual POA_Messaging::ReplyHandler"
+ << be_nl;
+
+ // Body of the class definition.
+ *os << be_nl
+ << "{" << be_nl;
+
+ // Default constructor.
+ *os << "protected:" << be_idt_nl
+ << namebuf << " (void);\n" << be_uidt_nl;
+
+ // Public portion starts.
+ *os << "public:" << be_idt_nl
+
+ // Copy constructor.
+ << namebuf << " (const " << namebuf << "& rhs);" << be_nl
+
+ // Destructor.
+ << "virtual ~" << namebuf << " (void);\n\n"
+
+ << be_nl;
+
+ // Methods.
+
+ // _is_a.
+ *os << "virtual CORBA::Boolean _is_a (" << be_idt << be_idt_nl
+ << "const char* logical_type_id," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");\n" << be_uidt_nl;
+
+ // _down_cast.
+ *os << "virtual void* _downcast (" << be_idt << be_idt_nl
+ << "const char* logical_type_id" << be_uidt_nl
+ << ");\n" << be_uidt_nl;
+
+ // add a skeleton for our _is_a method
+ *os << "static void _is_a_skel (" << be_idt << be_idt_nl
+ << "CORBA::ServerRequest &req," << be_nl
+ << "void *obj," << be_nl
+ << "void *context," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");\n" << be_uidt_nl;
+
+ // add a skeleton for our _non_existent method
+ *os << "static void _non_existent_skel (" << be_idt << be_idt_nl
+ << "CORBA::ServerRequest &req," << be_nl
+ << "void *obj," << be_nl
+ << "void *context," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");\n" << be_uidt_nl;
+
+ // add the dispatch method
+ *os << "virtual void _dispatch (" << be_idt << be_idt_nl
+ << "CORBA::ServerRequest &_tao_req," << be_nl
+ << "void *_tao_context," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");\n" << be_uidt_nl;
+
+ // Print out the _this() method.
+ *os << ami_handler << " *_this (" << be_idt << be_idt_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");\n" << be_uidt_nl;
+
+ // The _interface_repository_id method.
+ *os << "virtual const char* _interface_repository_id "
+ << "(void) const;\n\n";
+
+ // The _create_collocated_objref method.
+ *os << "virtual void* _create_collocated_objref"
+ << "(const char*, CORBA::ULong type, TAO_Stub *sobj);"
+ << be_nl << be_nl;
+
+ // Generate code for elements in the scope (e.g., operations).
+ if (this->visit_scope (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_ch::"
+ "visit_interface - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ // Generate skeletons for operations of our base classes. These skeletons
+ // just cast the pointer to the appropriate type before invoking the call.
+ if (node->traverse_inheritance_graph (be_interface::gen_skel_helper, os) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_ch::"
+ "visit_interface - "
+ "inheritance graph traversal failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl << "};\n\n";
+
+ // Generate the collocated class
+ be_visitor_context ctx (*this->ctx_);
+ ctx.state (TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_CH);
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_ch::"
+ "visit_interface - "
+ "codegen for collocated class failed\n"),
+ -1);
+ }
+
+#if 0
+ // @@ Do this (Alex).
+ // generate the TIE class.
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_INTERFACE_TIE_SH);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_ch::"
+ "visit_interface - "
+ "codegen for TIE class failed\n"),
+ -1);
+ }
+#endif /* 0 */
+
+ *os << "\n";
+
+#if 0
+ ctx.stream (tao_cg->server_template_header ());
+#endif /* 0 */
+
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp
new file mode 100644
index 00000000000..6c3be5f1597
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp
@@ -0,0 +1,347 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_servant_cs.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for Interfaces in the server skeletons file.
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_interface.h"
+
+ACE_RCSID(be_visitor_interface, ami_handler_servant_cs, "$Id$")
+
+
+// ************************************************************
+// Interface visitor for server skeletons
+// ************************************************************
+
+be_visitor_interface_ami_handler_servant_cs::be_visitor_interface_ami_handler_servant_cs (be_visitor_context *ctx)
+ : be_visitor_interface (ctx)
+{
+}
+
+be_visitor_interface_ami_handler_servant_cs::~be_visitor_interface_ami_handler_servant_cs (void)
+{
+}
+
+int
+be_visitor_interface_ami_handler_servant_cs::visit_interface (be_interface *node)
+{
+ TAO_OutStream *os; // output stream
+
+ if (node->srv_skel_gen () || node->imported ())
+ return 0;
+
+ os = this->ctx_->stream ();
+
+ // generate the skeleton class name
+
+ os->indent (); // start with whatever indentation level we are at
+
+ /* @@ Michael
+ if (node->gen_operation_table () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_cs::"
+ "visit_interface - "
+ "codegen for operation table failed\n"),
+ -1);
+ }
+
+ */
+ // constructor
+ *os << "// skeleton constructor" << be_nl;
+ // find if we are at the top scope or inside some module
+ if (!node->is_nested ())
+ {
+ // we are outermost. So the POA_ prefix is prepended to our name
+ *os << node->ami_handler_full_skel_name () << "::POA_" << node->ami_handler_local_name () <<
+ " (void)" << be_nl;
+ }
+ else
+ {
+ // the POA_ prefix is prepended to our outermost module name
+ *os << node->ami_handler_full_skel_name () << "::" << node->ami_handler_local_name () <<
+ " (void)" << be_nl;
+ }
+
+ *os << "{" << be_idt_nl
+ << "this->optable_ = &tao_" << node->flatname ()
+ << "_optable;" << be_uidt_nl
+ << "}\n\n";
+
+ *os << "// copy ctor" << be_nl;
+ // find if we are at the top scope or inside some module
+ if (!node->is_nested ())
+ {
+ // we are outermost. So the POA_ prefix is prepended to our name
+ *os << node->ami_handler_full_skel_name () << "::POA_"
+ << node->ami_handler_local_name () << " ("
+ << "const POA_" << node->ami_handler_local_name () << "& rhs)";
+ }
+ else
+ {
+ // the POA_ prefix is prepended to our outermost module name
+ *os << node->ami_handler_full_skel_name () << "::"
+ << node->ami_handler_local_name () << " (const "
+ << node->ami_handler_local_name () << "& rhs)";
+ }
+ *os << be_idt_nl
+ << ": ";
+ if (node->traverse_inheritance_graph
+ (be_interface::copy_ctor_helper, os) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_cs::visit_interface - "
+ " copy ctor generation failed\n"), -1);
+ *os << " TAO_ServantBase (rhs)" << be_uidt_nl
+ << "{}\n" << be_nl;
+
+ *os << "// skeleton destructor" << be_nl;
+
+ if (!node->is_nested ())
+ {
+ // we are outermost. So the POA_ prefix is prepended to our name
+ *os << node->ami_handler_full_skel_name () << "::~POA_" << node->ami_handler_local_name () <<
+ " (void)" << be_nl;
+ }
+ else
+ {
+ // the POA_ prefix is prepended to our outermost module name
+ *os << node->ami_handler_full_skel_name () << "::~" << node->ami_handler_local_name () <<
+ " (void)" << be_nl;
+ }
+ *os << "{\n";
+ *os << "}\n\n";
+
+
+ // @@ Michael
+ /*
+ // generate code for elements in the scope (e.g., operations)
+ if (this->visit_scope (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_cs::"
+ "visit_interface - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+ */
+
+ // generate code for the _is_a skeleton
+ os->indent ();
+ *os << "void " << node->ami_handler_full_skel_name ()
+ << "::_is_a_skel (" << be_idt << be_idt_nl
+ << "CORBA::ServerRequest &_tao_server_request, " << be_nl
+ << "void * _tao_object_reference," << be_nl
+ << "void * /* context */," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl
+ << ")" << be_uidt_nl;
+ *os << "{" << be_idt_nl;
+ *os << "TAO_InputCDR &_tao_in = _tao_server_request.incoming ();" << be_nl;
+ *os << node->ami_handler_full_skel_name () << " *_tao_impl = ("
+ << node->ami_handler_full_skel_name () << " *) _tao_object_reference;" << be_nl;
+ *os << "CORBA::Boolean _tao_retval = 0;" << be_nl;
+ *os << "CORBA::String_var value;" << be_nl;
+ *os << "if (!((_tao_in >> value.out ())))" << be_idt_nl;
+ *os << "ACE_THROW (CORBA::MARSHAL ());" << be_uidt_nl << be_nl;
+ *os << "_tao_retval = _tao_impl->_is_a (value.in (), ACE_TRY_ENV);" << be_nl;
+ *os << "ACE_CHECK;" << be_nl << be_nl;
+ *os << "_tao_server_request.init_reply (ACE_TRY_ENV);" << be_nl;
+ *os << "ACE_CHECK;" << be_nl;
+ *os << "TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();" << be_nl;
+ *os << "if (!((_tao_out << CORBA::Any::from_boolean (_tao_retval))))" << be_idt_nl;
+ *os << "ACE_THROW (CORBA::MARSHAL ());" << be_uidt << be_uidt_nl;
+ *os << "}\n\n";
+
+
+ // generate code for the _non_existent skeleton
+ os->indent ();
+ *os << "void " << node->ami_handler_full_skel_name ()
+ << "::_non_existent_skel (" << be_idt << be_idt_nl
+ << "CORBA::ServerRequest &_tao_server_request, " << be_nl
+ << "void * _tao_object_reference," << be_nl
+ << "void * /* context */," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl
+ << ")" << be_uidt_nl;
+ *os << "{" << be_idt_nl;
+ *os << node->ami_handler_full_skel_name () << " *_tao_impl = ("
+ << node->ami_handler_full_skel_name () << " *) _tao_object_reference;" << be_nl;
+ *os << "CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_TRY_ENV);" << be_nl;
+ *os << "ACE_CHECK;" << be_nl << be_nl;
+ *os << "_tao_server_request.init_reply (ACE_TRY_ENV);" << be_nl;
+ *os << "ACE_CHECK;" << be_nl;
+ *os << "TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();" << be_nl;
+ *os << "if (!((_tao_out << CORBA::Any::from_boolean (_tao_retval))))" << be_idt_nl;
+ *os << "ACE_THROW (CORBA::MARSHAL ());" << be_uidt << be_uidt_nl;
+ *os << "}\n\n";
+
+
+ os->indent ();
+ *os << "CORBA::Boolean " << node->ami_handler_full_skel_name ()
+ << "::_is_a (" << be_idt << be_idt_nl
+ << "const char* value," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "if (\n" << be_idt;
+ if (node->traverse_inheritance_graph (be_interface::is_a_helper, os) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_cs::"
+ "visit_interface - "
+ "traversal of inhertance graph failed\n"),
+ -1);
+ }
+
+ os->indent ();
+ *os << "(!ACE_OS::strcmp ((char *)value, "
+ << "CORBA::_tc_Object->id (ACE_TRY_ENV))))"
+ << be_idt_nl << "return 1;" << be_uidt_nl
+ << "else" << be_idt_nl
+ << "return 0;" << be_uidt << be_uidt << be_uidt_nl
+ << "}\n\n";
+
+ // the downcast method.
+ os->indent ();
+ *os << "void* " << node->ami_handler_full_skel_name ()
+ << "::_downcast (" << be_idt << be_idt_nl
+ << "const char* logical_type_id" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "{" << be_idt_nl;
+
+ if (node->traverse_inheritance_graph (be_interface::downcast_helper, os) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_cs::"
+ "visit_interface - "
+ "traversal of inhertance graph failed\n"),
+ -1);
+ }
+
+ *os << "if (ACE_OS::strcmp (logical_type_id, "
+ << "\"IDL:omg.org/CORBA/Object:1.0\") == 0)" << be_idt_nl
+ << "return ACE_static_cast(PortableServer::Servant, this);"
+ << be_uidt_nl;
+
+ *os << "return 0;" << be_uidt_nl
+ << "}\n\n";
+
+
+ // now the dispatch method
+ os->indent ();
+ *os << "void " << node->ami_handler_full_skel_name () <<
+ "::_dispatch (CORBA::ServerRequest &req, " <<
+ "void *context, CORBA::Environment &ACE_TRY_ENV)" << be_nl;
+ *os << "{\n";
+ os->incr_indent ();
+ *os << "TAO_Skeleton skel; // pointer to skeleton for operation" << be_nl;
+ *os << "const char *opname = req.operation (); // retrieve operation name"
+ << be_nl;
+ *os << "// find the skeleton corresponding to this opname" << be_nl;
+ *os << "if (this->_find (opname, skel, req.operation_length ()) == -1)" << be_nl;
+ *os << "{" << be_idt_nl;
+ *os << "ACE_ERROR ((LM_ERROR, \"Bad operation <%s>\\n\", opname));" << be_nl;
+ *os << "ACE_THROW (CORBA_BAD_OPERATION ());"
+ //<< "ACE_TRY_ENV);" << be_uidt_nl;
+ << be_uidt_nl;
+ // *os << "env.exception (new CORBA_BAD_OPERATION ());" << be_nl;
+ *os << "}" << be_nl;
+ *os << "else" << be_idt_nl;
+ *os << "skel (req, this, context, ACE_TRY_ENV);" << be_uidt << be_uidt_nl;
+ *os << "}\n\n";
+
+ os->indent ();
+ *os << "const char* " << node->ami_handler_full_skel_name ()
+ << "::_interface_repository_id (void) const"
+ << be_nl;
+ *os << "{\n";
+ os->incr_indent ();
+ *os << "return \"" << node->repoID () << "\";\n";
+ os->decr_indent ();
+ *os << "}\n\n";
+
+ *os << "\n";
+
+ // the _this () operation
+ *os << node->name () << "*" << be_nl
+ << node->ami_handler_full_skel_name ()
+ << "::_this (CORBA_Environment &ACE_TRY_ENV)" << be_nl
+ << "{" << be_idt_nl
+ << "TAO_Stub *stub = this->_create_stub (ACE_TRY_ENV);" << be_nl
+ << "ACE_CHECK_RETURN (0);" << be_nl
+ // << "if (ACE_TRY_ENV.exception () != 0)" << be_idt_nl
+ // << "return 0;" << be_uidt_nl
+
+ // @@ Michael: We need to check this value being passed. I am
+ // passing 1 right now. (Alex).
+ << "return new " << node->full_coll_name (1)
+ << " (this, stub);" << be_uidt_nl;
+
+ *os << "}\n\n";
+
+ // the _create_collocated_objref method
+ *os << "void*" << be_nl
+ << node->ami_handler_full_skel_name ()
+ << "::_create_collocated_objref (const char* repository_id, "
+ << "CORBA::ULong type, TAO_Stub *stub)" << be_nl
+ << "{" << be_idt_nl
+ << "if (!ACE_OS::strcmp (\"" << node->repoID ()
+ << "\", repository_id))" << be_idt_nl
+ << "return ACE_static_cast (" << be_idt << be_idt_nl
+ << node->name () << "_ptr," << be_nl
+
+ // @@ Michael: We need to check this value being passed. I am
+ // passing 1 right now. (Alex).
+ << "new " << node->full_coll_name (1)
+ << " (this, stub)" << be_uidt_nl
+ << ");" << be_uidt << be_uidt_nl
+ << "return 0;" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
+ // @@ Michael
+ /*
+ // generate the collocated class impl
+ be_visitor_context ctx (*this->ctx_);
+ ctx.state (TAO_CodeGen::TAO_INTERFACE_COLLOCATED_SS);
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_cs::"
+ "visit_interface - "
+ "Bad visitor for collocated class\n"),
+ -1);
+ }
+
+ if (node->accept (visitor) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ami_handler_servant_cs::"
+ "visit_interface - "
+ "codegen for collocated class failed\n"),
+ -1);
+ }
+ delete visitor;
+
+ *os << "\n\n";
+
+ */
+
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp
new file mode 100644
index 00000000000..c4ee9d201d3
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp
@@ -0,0 +1,198 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_stub_ch.cpp
+//
+// = DESCRIPTION
+// Visitor generating default stub class for the AMI Handler in the
+// client header.
+//
+// = AUTHOR
+// Aniruddha Gokhale and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_interface.h"
+
+
+// ******************************************************
+// Interface visitor for client header
+// ******************************************************
+
+be_visitor_interface_ami_handler_stub_ch::be_visitor_interface_ami_handler_stub_ch (be_visitor_context *ctx)
+ : be_visitor_interface (ctx)
+{
+}
+
+be_visitor_interface_ami_handler_stub_ch::~be_visitor_interface_ami_handler_stub_ch (void)
+{
+}
+
+int
+be_visitor_interface_ami_handler_stub_ch::visit_interface (be_interface *node)
+{
+ TAO_OutStream *os; // output stream
+
+ // Not already generated and not imported.
+ if (!node->cli_hdr_gen () && !node->imported ())
+ {
+ // Grab the stream.
+ os = this->ctx_->stream ();
+
+ // Ifdef guard.
+
+ // Generate AMI_...name..._Handler string.
+ char *ifdef_string = 0;
+ ACE_NEW_RETURN (ifdef_string,
+ char [ACE_OS::strlen ("AMI_") +
+ ACE_OS::strlen (node->flatname ()) +
+ ACE_OS::strlen ("_Handler") +
+ // end of string
+ 1],
+ 0);
+ ACE_OS::sprintf (ifdef_string,
+ "AMI_%s_Handler",
+ node->flatname ());
+
+ os->gen_ifdef_macro (ifdef_string);
+
+ // Prepare the local name for the class.
+ char *local_name = 0;
+ ACE_NEW_RETURN (local_name,
+ char [ACE_OS::strlen ("AMI_") +
+ ACE_OS::strlen (node->local_name ()->get_string ()) +
+ ACE_OS::strlen ("_Handler") +
+ // end of string
+ 1],
+ 0);
+ ACE_OS::sprintf (local_name,
+ "AMI_%s_Handler",
+ node->local_name ()->get_string ());
+
+ // Now generate the class definition.
+
+ os->indent ();
+
+ *os << "class " << idl_global->export_macro () << " "
+ << local_name;
+
+ // Node interface inherits from the Messaging::ReplyHandler
+ // interface.
+ *os << " : public virtual Messaging::ReplyHandler" << be_nl;
+
+ // Generate the body.
+
+ *os << "{" << be_nl
+ << "public:" << be_nl
+
+ // generate the _ptr_type and _var_type typedefs
+ // but we must protect against certain versions of g++
+ << "#if !defined(__GNUC__) || __GNUC__ > 2 || __GNUC_MINOR__ >= 8"
+ << be_idt_nl
+ << "typedef " << local_name << "_ptr _ptr_type;" << be_nl
+ << "typedef " << local_name << "_var _var_type;" << be_uidt_nl
+ << "#endif /* __GNUC__ */\n" << be_idt_nl
+
+ // generate the static _duplicate, _narrow, and _nil operations
+ << "// the static operations" << be_nl
+ << "static " << local_name << "_ptr " << "_duplicate ("
+ << local_name << "_ptr obj);" << be_nl
+ << "static " << local_name << "_ptr "
+ << "_narrow (" << be_idt << be_idt_nl
+ << "CORBA::Object_ptr obj," << be_nl
+ << "CORBA::Environment &env = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt_nl
+ << "static " << local_name << "_ptr "
+ << "_unchecked_narrow (" << be_idt << be_idt_nl
+ << "CORBA::Object_ptr obj," << be_nl
+ << "CORBA::Environment &env = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt_nl
+ << "static " << local_name << "_ptr " << "_nil (void);\n\n";
+
+ // Visit the scope to generate the stubs for the call back
+ // methods.
+ if (this->visit_scope (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_ami_handler_stub_ch::"
+ "visit_interface - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+
+ // the _is_a method
+ os->indent ();
+ *os << "virtual CORBA::Boolean _is_a (" << be_idt << be_idt_nl
+ << "const CORBA::Char *type_id, " << be_nl
+ << "CORBA::Environment &env = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt_nl
+ << "virtual const char* "
+ << "_interface_repository_id (void) const;\n" << be_uidt_nl;
+
+ // generate the "protected" constructor so that users cannot instantiate
+ // us
+ *os << "protected:" << be_idt_nl
+ << local_name << " (void);" << be_nl
+ << local_name
+ << " (TAO_Stub *objref, " << be_idt << be_idt_nl
+ << "TAO_ServantBase *_tao_servant = 0, " << be_nl
+ << "CORBA::Boolean _tao_collocated = 0" << be_uidt_nl
+ << ");" << be_uidt_nl
+ << "virtual ~" << local_name << " (void);" << be_uidt_nl;
+
+ // private copy constructor and assignment operator. These are not
+ // allowed, hence they are private.
+ *os << "private:\n";
+ os->incr_indent ();
+ *os << local_name << " (const " << local_name << " &);"
+ << be_nl
+ << "void operator= (const " << local_name << " &);\n";
+
+ os->decr_indent ();
+ *os << "};\n\n";
+ os->gen_endif ();
+
+ // by using a visitor to declare and define the TypeCode, we have the
+ // added advantage to conditionally not generate any code. This will be
+ // based on the command line options. This is still TO-DO
+ be_visitor *visitor;
+ be_visitor_context ctx (*this->ctx_);
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DECL);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_ami_handler_stub_ch::"
+ "visit_interface - "
+ "TypeCode declaration failed\n"),
+ -1);
+ }
+
+
+ // Delete the heap allocated vars.
+ delete ifdef_string;
+ ifdef_string = 0;
+ delete local_name;
+ local_name = 0;
+ }
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp
new file mode 100644
index 00000000000..e75034bd185
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp
@@ -0,0 +1,250 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_stub_cs.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for AMI Handler class for an Interface.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_interface.h"
+
+ACE_RCSID(be_visitor_interface, ami_handler_stub_cs, "$Id$")
+
+
+// ************************************************************
+// Interface visitor for client stubs
+// ************************************************************
+
+be_visitor_interface_ami_handler_stub_cs::be_visitor_interface_ami_handler_stub_cs (be_visitor_context *ctx)
+ : be_visitor_interface (ctx)
+{
+}
+
+be_visitor_interface_ami_handler_stub_cs::~be_visitor_interface_ami_handler_stub_cs (void)
+{
+}
+
+int
+be_visitor_interface_ami_handler_stub_cs::visit_interface (be_interface *node)
+{
+ // output stream.
+ TAO_OutStream *os;
+
+ if (node->cli_stub_gen () || node->imported ())
+ return 0;
+
+ os = this->ctx_->stream ();
+
+ // Start with whatever indentation level we are at.
+ os->indent ();
+
+ // Create the full name for the AMI_<Interface name>_Handler
+ // interface.
+ char *full_name = 0;
+
+ // Full name.
+ // If there exists a scope name for this, then generate
+ // "Scope::AMI_<Local Name>_Handler".
+
+ size_t scope_len = 0;
+
+ be_decl *parent = be_scope::narrow_from_scope (node->defined_in ())->decl ();
+
+ if (parent != 0 &&
+ parent->fullname () != 0 &&
+ ACE_OS::strlen (parent->fullname ()))
+ scope_len = ACE_OS::strlen (parent->fullname ()) + ACE_OS::strlen ("::");
+
+ ACE_NEW_RETURN (full_name,
+ char [scope_len +
+ ACE_OS::strlen ("AMI_") +
+ ACE_OS::strlen (node->local_name ()->get_string ()) +
+ ACE_OS::strlen ("_Handler") +
+ 1],
+ -1);
+
+ if (parent != 0 &&
+ parent->fullname () != 0 &&
+ ACE_OS::strlen (parent->fullname ()))
+ ACE_OS::sprintf (full_name,
+ "%s::AMI_%s_Handler",
+ parent->fullname (),
+ node->local_name ()->get_string ());
+ else
+ ACE_OS::sprintf (full_name,
+ "AMI_%s_Handler",
+ node->local_name ()->get_string ());
+
+ // First generate the code for the static methods.
+
+ // The _narrow method
+ *os << full_name << "_ptr " << full_name
+ << "::_narrow (" << be_idt << be_idt_nl
+ << "CORBA::Object_ptr obj," << be_nl
+ << "CORBA::Environment &env" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "if (CORBA::is_nil (obj))" << be_idt_nl
+ << "return " << full_name << "::_nil ();" << be_uidt_nl
+ << "if (!obj->_is_a (\""
+ << node->compute_repoID ("AMI_", "_Handler") << "\", env))"
+ << be_idt_nl
+ << "return " << full_name << "::_nil ();" << be_uidt_nl;
+
+ *os << "return " << full_name
+ << "::_unchecked_narrow (obj, env);" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
+ // This may be necessary to work around a GCC compiler bug!
+ // const char *skel_name = node->full_skel_name (); // unused at this time
+
+ // @@ Michael: We need to check this value being passed. I am
+ // passing 1 right now. (Alex).
+ const char *coll_name = node->full_coll_name (1);
+ assert (coll_name != 0);
+
+ // The _unchecked_narrow method
+ *os << full_name << "_ptr " << full_name
+ << "::_unchecked_narrow (" << be_idt << be_idt_nl
+ << "CORBA::Object_ptr obj," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "ACE_UNUSED_ARG (ACE_TRY_ENV);" << be_nl
+ << "if (CORBA::is_nil (obj))" << be_idt_nl
+ << "return " << full_name << "::_nil ();" << be_uidt_nl;
+
+ *os << "TAO_Stub* stub = obj->_stubobj ();" << be_nl
+ << "stub->_incr_refcnt ();" << be_nl;
+ *os << "void* servant = 0;" << be_nl;
+ *os << "if (obj->_is_collocated () "
+ << "&& obj->_servant() != 0)" << be_idt_nl
+ << "servant = obj->_servant()->_downcast (\""
+ << "IDL:omg.org/CORBA/Object:1.0\");" << be_uidt_nl;
+
+ *os << "if (servant != 0)" << be_idt_nl << "{" << be_idt_nl
+ // The collocated object reference factory is not working right (yet)
+ << full_name << "_ptr retv = ACE_reinterpret_cast (" << be_idt << be_idt_nl
+ << full_name << "_ptr," << be_nl
+ << "ACE_reinterpret_cast (" << be_idt << be_idt_nl
+ << "PortableServer::Servant," << be_nl
+ << "servant" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "->_create_collocated_objref (" << be_idt << be_idt_nl
+ << "\"" << node->compute_repoID ("AMI_", "_Handler") << "\"," << be_nl
+ << "TAO_ORB_Core::ORB_CONTROL," << be_nl
+ << "stub" << be_uidt_nl
+ << ")" << be_uidt << be_uidt_nl
+ << ");" << be_uidt_nl
+ << "if (retv != 0)" << be_idt_nl
+ << "return retv;" << be_uidt
+ // So we are still using the old way to create collocated objref.
+ << be_uidt_nl
+ << "}" << be_uidt_nl;
+
+ *os << "return new " << full_name << "(stub);" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
+ // The _duplicate method
+ *os << full_name << "_ptr " << be_nl
+ << full_name << "::_duplicate ("
+ << full_name << "_ptr obj)" << be_nl
+ << "{" << be_idt_nl
+ << "if (!CORBA::is_nil (obj))" << be_idt_nl
+ << "obj->_incr_refcnt ();" << be_uidt_nl
+ << "return obj;" << be_uidt_nl
+ << "}" << be_nl << be_nl;
+
+ // Generate code for the elements of the interface.
+ if (this->visit_scope (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_ami_handler_stub_cs::"
+ "visit_interface - "
+ "codegen for scope failed\n"), -1);
+ }
+
+ // generate the is_a method
+ os->indent ();
+ *os << "CORBA::Boolean " << full_name << "::_is_a (" <<
+ "const CORBA::Char *value, CORBA::Environment &env)" << be_nl;
+ *os << "{\n";
+ os->incr_indent ();
+ *os << "if (\n";
+ os->incr_indent (0);
+
+ // We know what to generate. We dont have to call traverse graph.
+
+ // Current interface.
+ *os << "(!ACE_OS::strcmp ((char *)value, "
+ << "\""
+ << node->compute_repoID ("AMI_", "_Handler")
+ << "\""
+ << ")) ||"
+ << be_nl;
+
+ // Reply Handler.
+ *os << "(!ACE_OS::strcmp ((char *)value, "
+ << "\""
+ << "IDL:omg.org/Messaging/ReplyHandler:1.0"
+ << "\""
+ << ")) ||"
+ << be_nl;
+
+ os->indent ();
+
+ *os << "(!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (env))))\n";
+ *os << " return 1; // success using local knowledge\n";
+ os->decr_indent ();
+ *os << "else" << be_nl;
+ *os << " return this->CORBA_Object::_is_a (value, env);\n";
+ os->decr_indent ();
+ *os << "}\n\n";
+
+ os->indent ();
+
+ *os << "const char* " << full_name
+ << "::_interface_repository_id (void) const"
+ << be_nl
+ << "{" << be_idt_nl
+ << "return \"" << node->compute_repoID ("AMI_", "_Handler") << "\";" << be_uidt_nl
+ << "}\n\n";
+
+ // By using a visitor to declare and define the TypeCode, we have the
+ // added advantage to conditionally not generate any code. This will be
+ // based on the command line options. This is still TO-DO.
+ be_visitor *visitor;
+ be_visitor_context ctx (*this->ctx_);
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN);
+ ctx.sub_state (TAO_CodeGen::TAO_AMI_HANDLER_TC_DEFN_TYPECODE);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_ami_handler_stub_cs::"
+ "visit_interface - "
+ "TypeCode definition failed\n"),
+ -1);
+ }
+
+ delete full_name;
+ full_name = 0;
+
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp
new file mode 100644
index 00000000000..9f30a1799c1
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp
@@ -0,0 +1,174 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// collocated_ami_handler_ch.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for collocated classes for the Interface node
+// inside the server header.
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_interface.h"
+
+ACE_RCSID(be_visitor_interface, collocated_ami_handler_ch, "$Id$")
+
+
+// ************************************************************
+// collocated class in header
+// ************************************************************
+
+be_visitor_interface_collocated_ami_handler_ch::be_visitor_interface_collocated_ami_handler_ch
+(be_visitor_context *ctx)
+ : be_visitor_interface (ctx)
+{
+}
+
+be_visitor_interface_collocated_ami_handler_ch::~be_visitor_interface_collocated_ami_handler_ch (void)
+{
+}
+
+int
+be_visitor_interface_collocated_ami_handler_ch::visit_interface (be_interface *node)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ // Generate AMI_...name..._Handler string.
+ char *ifdef_string = 0;
+ ACE_NEW_RETURN (ifdef_string,
+ char [ACE_OS::strlen ("AMI_") +
+ ACE_OS::strlen (node->flatname ()) +
+ ACE_OS::strlen ("_Handler") +
+ // end of string
+ 1],
+ 0);
+ ACE_OS::sprintf (ifdef_string,
+ "AMI_%s_Handler",
+ node->flatname ());
+
+ os->gen_ifdef_macro (ifdef_string, "_collocated");
+
+ // Prepare the local name for the class.
+ char *local_name = 0;
+ ACE_NEW_RETURN (local_name,
+ char [ACE_OS::strlen ("AMI_") +
+ ACE_OS::strlen (node->local_name ()->get_string ()) +
+ ACE_OS::strlen ("_Handler") +
+ // end of string
+ 1],
+ 0);
+ ACE_OS::sprintf (local_name,
+ "AMI_%s_Handler",
+ node->local_name ()->get_string ());
+
+ // Get the coll names.
+ char *coll_local_name, *coll_full_name;
+ node->compute_coll_names (local_name, coll_local_name, coll_full_name);
+
+ // Output the class defn.
+ os->indent ();
+ *os << "class " << idl_global->export_macro ()
+ << " " << coll_local_name;
+ os->incr_indent ();
+ *os << " : public virtual " << local_name;
+
+ *os << "\n";
+ os->decr_indent ();
+ *os << "{" << be_nl;
+ *os << "public:\n";
+ os->incr_indent ();
+
+ *os << coll_local_name << " (\n";
+
+ os->incr_indent (0);
+ os->incr_indent ();
+
+ // XXXASG - can we make this a method to return the right name ??
+ if (!node->is_nested ())
+ {
+ // The skeleton name is the outermost, we need to printout the
+ // POA_ prefix that goes with it.
+ *os << "POA_";
+ }
+
+ *os << local_name << "_ptr "
+ << " servant," << be_nl;
+
+ *os << "TAO_Stub *stub\n";
+ os->decr_indent ();
+ *os << ");\n";
+ os->decr_indent (0);
+
+ os->indent ();
+
+ // _is_a method.
+ *os << "virtual CORBA::Boolean _is_a" << be_idt
+ << "(" << be_idt_nl
+ << "const CORBA::Char *logical_type_id," << be_nl
+ << "CORBA_Environment &TAO_IN_ENV = TAO_default_environment ()" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ // _get_servant method.
+
+ if (!node->is_nested ())
+ {
+ // The skeleton name is the outermost, we need to printout the
+ // POA_ prefix that goes with it.
+ *os << "POA_";
+ }
+
+ *os << local_name
+ << "_ptr _get_servant (void) const;" << be_nl << be_nl;
+
+ // _non_existent method.
+ *os << "virtual CORBA::Boolean _non_existent" << be_idt
+ << "(" << be_idt_nl
+ << "CORBA_Environment &TAO_IN_ENV = TAO_default_environment ()" << be_uidt_nl
+ << ");" << be_uidt_nl << be_nl;
+
+ // Visit the scope to generate all the AMI call back hood methods.
+ if (this->visit_scope (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_collocated_ami_handler_ch::"
+ "visit_interface - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ os->decr_indent ();
+
+ *os << be_nl << "private:\n";
+ os->incr_indent ();
+ if (!node->is_nested ())
+ {
+ // The skeleton name is the outermost, we need to printout the
+ // POA_ prefix that goes with it.
+ *os << "POA_";
+ }
+ *os << local_name << "_ptr servant_;\n";
+ os->decr_indent ();
+ *os << "};\n\n";
+
+ os->gen_endif ();
+
+ delete ifdef_string;
+ delete local_name;
+ delete coll_local_name;
+ delete coll_full_name;
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp
index 03267df4e6b..b9b7d3ba804 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp
@@ -394,10 +394,6 @@ be_visitor_interface::visit_operation (be_operation *node)
switch (this->ctx_->state ())
{
- case TAO_CodeGen::TAO_AMI_HANDLER_CH:
- ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_CH);
- break;
-
case TAO_CodeGen::TAO_INTERFACE_CH:
ctx.state (TAO_CodeGen::TAO_OPERATION_CH);
break;
@@ -434,6 +430,23 @@ be_visitor_interface::visit_operation (be_operation *node)
case TAO_CodeGen::TAO_INTERFACE_DIRECT_COLLOCATED_SS:
ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS);
break;
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CH:
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH);
+ break;
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_CH:
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH);
+ break;
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_CS:
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CS);
+ break;
+
+ case TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_CH:
+ ctx.state (TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH);
+ break;
+
case TAO_CodeGen::TAO_INTERFACE_ANY_OP_CH:
case TAO_CodeGen::TAO_INTERFACE_ANY_OP_CS:
case TAO_CodeGen::TAO_INTERFACE_CDR_OP_CH:
@@ -447,8 +460,8 @@ be_visitor_interface::visit_operation (be_operation *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface::"
"visit_operation - "
- "Bad context state\n"
- ), -1);
+ "Bad context state\n"),
+ -1);
}
}
@@ -483,9 +496,9 @@ be_visitor_interface::visit_operation (be_operation *node)
{
return 0;
}
-
- // Generate AMI stub for this operation, if you are doing client
- // side header.
+
+ // Generate AMI <sendc_> method, for this operation, if you are
+ // doing client header.
switch (this->ctx_->state ())
{
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
index 6abb41bd851..8ed7aedc508 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
@@ -18,9 +18,9 @@
//
// ============================================================================
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
#include "be_visitor_interface.h"
@@ -138,7 +138,7 @@ be_visitor_interface_ch::visit_interface (be_interface *node)
// now generate the class definition
os->indent ();
*os << "class " << idl_global->export_macro ()
- << " " << node->local_name ();
+ << " " << node->local_name ();
if (node->n_inherits () > 0) // node interface inherits from other
// interfaces
@@ -193,19 +193,19 @@ be_visitor_interface_ch::visit_interface (be_interface *node)
<< "static " << node->local_name () << "_ptr " << "_duplicate ("
<< node->local_name () << "_ptr obj);" << be_nl
<< "static " << node->local_name () << "_ptr "
- << "_narrow (" << be_idt << be_idt_nl
+ << "_narrow (" << be_idt << be_idt_nl
<< "CORBA::Object_ptr obj," << be_nl
- << "CORBA::Environment &env = " << be_idt_nl
- << "TAO_default_environment ()"
- << be_uidt << be_uidt_nl
- << ");" << be_uidt_nl
+ << "CORBA::Environment &env = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt_nl
<< "static " << node->local_name () << "_ptr "
- << "_unchecked_narrow (" << be_idt << be_idt_nl
+ << "_unchecked_narrow (" << be_idt << be_idt_nl
<< "CORBA::Object_ptr obj," << be_nl
- << "CORBA::Environment &env = " << be_idt_nl
- << "TAO_default_environment ()"
- << be_uidt << be_uidt_nl
- << ");" << be_uidt_nl;
+ << "CORBA::Environment &env = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt_nl;
// This method is defined in the header file to workaround old
// g++ problems
*os << "static " << node->local_name () << "_ptr _nil (void)"
@@ -240,10 +240,10 @@ be_visitor_interface_ch::visit_interface (be_interface *node)
*os << "protected:" << be_idt_nl
<< node->local_name () << " (void);" << be_nl
<< node->local_name ()
- << " (TAO_Stub *objref, " << be_idt << be_idt_nl
+ << " (TAO_Stub *objref, " << be_idt << be_idt_nl
<< "TAO_ServantBase *_tao_servant = 0, " << be_nl
<< "CORBA::Boolean _tao_collocated = 0" << be_uidt_nl
- << ");" << be_uidt_nl
+ << ");" << be_uidt_nl
<< "virtual ~" << node->local_name () << " (void);" << be_uidt_nl;
// private copy constructor and assignment operator. These are not
@@ -273,15 +273,20 @@ be_visitor_interface_ch::visit_interface (be_interface *node)
"TypeCode declaration failed\n"
), -1);
}
+
+ // AMI
+
+ // Generate code for the AMI Reply Handler.
- // Generate the Skeleton code for the AMI Reply Handler.
if (idl_global->ami_call_back () == I_TRUE)
{
+ // = Generate the default stub code for Handler.
+
// Set the context.
be_visitor_context ctx (*this->ctx_);
// Set the state.
- ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_CH);
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_STUB_CH);
// Create the visitor.
be_visitor *visitor = tao_cg->make_visitor (&ctx);
@@ -293,7 +298,38 @@ be_visitor_interface_ch::visit_interface (be_interface *node)
"Bad visitor\n"),
-1);
}
+
+ // Call the visitor on this interface.
+ if (node->accept (visitor) == -1)
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_ch::"
+ "visit_interface - "
+ "code gen for ami handler default stub failed\n"),
+ -1);
+ }
+ delete visitor;
+
+ // = Generate the Servant Skeleton code.
+ // Set the context.
+ ctx = *this->ctx_;
+
+ // Set the state.
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CH);
+
+ // Create the visitor.
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_ch::"
+ "visit_interface - "
+ "Bad visitor\n"),
+ -1);
+ }
+
// call the visitor on this interface.
if (node->accept (visitor) == -1)
{
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
index cebf4c53513..7c472e441d8 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
@@ -18,9 +18,9 @@
//
// ============================================================================
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
#include "be_visitor_interface.h"
@@ -184,10 +184,76 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_interface_cs::"
"visit_interface - "
- "TypeCode definition failed\n"
- ), -1);
+ "TypeCode definition failed\n"),
+ -1);
}
+ // AMI
+
+ // Generate code for the AMI Reply Handler.
+ if (idl_global->ami_call_back () == I_TRUE)
+ {
+ // = Generate the default stub code for Handler.
+
+ // Set the context.
+ be_visitor_context ctx (*this->ctx_);
+
+ // Set the state.
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_STUB_CS);
+
+ // Create the visitor.
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_cs::"
+ "visit_interface - "
+ "Bad visitor\n"),
+ -1);
+ }
+
+ // Call the visitor on this interface.
+ if (node->accept (visitor) == -1)
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_cs::"
+ "visit_interface - "
+ "code gen for ami handler default stub failed\n"),
+ -1);
+ }
+ delete visitor;
+
+ // = Generate the Servant Skeleton code.
+ // Set the context.
+ ctx = *this->ctx_;
+
+ // Set the state.
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CS);
+
+ // Create the visitor.
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_cs::"
+ "visit_interface - "
+ "Bad visitor\n"),
+ -1);
+ }
+
+ // Call the visitor on this interface.
+ if (node->accept (visitor) == -1)
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_interface_cs::"
+ "visit_interface - "
+ "code gen for ami handler failed\n"),
+ -1);
+ }
+ delete visitor;
+ }
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation.cpp b/TAO/TAO_IDL/be/be_visitor_operation.cpp
index e29c228642c..3b4c8db91ac 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation.cpp
@@ -18,9 +18,9 @@
//
// ============================================================================
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
#include "be_visitor_operation.h"
@@ -61,5 +61,8 @@
#include "be_visitor_operation/ami_arglist.cpp"
#include "be_visitor_operation/ami_handler_operation_ch.cpp"
#include "be_visitor_operation/ami_handler_arglist.cpp"
+#include "be_visitor_operation/ami_handler_operation_cs.cpp"
+#include "be_visitor_operation/ami_handler_skeleton_cs.cpp"
+#include "be_visitor_operation/ami_handler_argument_marshal.cpp"
ACE_RCSID(be, be_visitor_operation, "$Id$")
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp
index bda8132715e..17283768469 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp
@@ -18,9 +18,9 @@
//
// ============================================================================
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
#include "be_visitor_operation.h"
@@ -64,8 +64,8 @@ be_visitor_operation_ami_arglist::visit_operation (be_operation *node)
// AMI Handler argument.
*os << "AMI_"
<< interface->fullname ()
- << "_ptr "
- << "ami_handler"
+ << "_Handler_ptr "
+ << "_tao_ami_handler"
<< ",\n";
// #endif /* TAO_IDL_HAS_AMI */
@@ -79,20 +79,27 @@ be_visitor_operation_ami_arglist::visit_operation (be_operation *node)
-1);
}
-
- // @@ When some out arguments are skipped, the indentation seems to
- // get messed up. Fix that. (Alex).
-
// Last argument - is always CORBA::Environment.
+
os->indent ();
+
*os << "CORBA::Environment &ACE_TRY_ENV";
- *os << " = " << be_idt_nl
- << "TAO_default_environment ()"
- << be_uidt;
+
+ if (this->ctx_->state () == TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH)
+ {
+ *os << " = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt;
+ }
// Done with the argument list.
- *os << be_uidt_nl << ")" << be_uidt << "\n";
+ *os << be_uidt_nl << ")" << be_uidt;
+
+ if (this->ctx_->state () == TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH)
+ *os << ";";
+ *os << "\n";
+
return 0;
}
@@ -137,9 +144,14 @@ be_visitor_operation_ami_arglist::visit_argument (be_argument *node)
switch (this->ctx_->state ())
{
- case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST:
- ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST);
+ case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH:
+ ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CH);
break;
+
+ case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CS:
+ ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CS);
+ break;
+
default:
{
ACE_ERROR_RETURN ((LM_ERROR,
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp
index a7d21e61502..dc8aa70a9af 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp
@@ -44,7 +44,12 @@ be_visitor_operation_ami_ch::~be_visitor_operation_ami_ch (void)
int
be_visitor_operation_ami_ch::visit_operation (be_operation *node)
{
- TAO_OutStream *os; // output stream
+ // No sendc method for oneway operations.
+ if (node->flags () == AST_Operation::OP_oneway)
+ return 0;
+
+ // Output stream.
+ TAO_OutStream *os ;
os = this->ctx_->stream ();
this->ctx_->node (node); // save the node
@@ -67,7 +72,7 @@ be_visitor_operation_ami_ch::visit_operation (be_operation *node)
// mapping. For these we grab a visitor that generates the
// parameter listing.
be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST);
+ ctx.state (TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH);
be_visitor *visitor = tao_cg->make_visitor (&ctx);
if (!visitor)
{
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp
index 2abc4ef0f98..3f87f4430db 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp
@@ -56,6 +56,10 @@ be_visitor_operation_ami_cs::post_process (be_decl *bd)
int
be_visitor_operation_ami_cs::visit_operation (be_operation *node)
{
+ // No sendc method for oneway operations.
+ if (node->flags () == AST_Operation::OP_oneway)
+ return 0;
+
TAO_OutStream *os; // output stream
be_visitor_context ctx; // visitor context
be_visitor *visitor; // visitor
@@ -89,7 +93,7 @@ be_visitor_operation_ami_cs::visit_operation (be_operation *node)
// Generate the argument list with the appropriate mapping (same as
// in the header file)
ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST);
+ ctx.state (TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CS);
visitor = tao_cg->make_visitor (&ctx);
if ((!visitor) || (node->accept (visitor) == -1))
{
@@ -185,9 +189,11 @@ be_visitor_operation_ami_cs::visit_operation (be_operation *node)
-1);
}
- // do any pre marshal and invoke stuff with arguments
+#if 0
+ // @@ I am not sure whether we need this.
+ // Do any pre marshal and invoke stuff with arguments
ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_PRE_INVOKE_CS);
+ ctx.state (TAO_CodeGen::TAO_AMI_OPERATION_ARG_PRE_INVOKE_CS);
visitor = tao_cg->make_visitor (&ctx);
if (!visitor || (node->accept (visitor) == -1))
{
@@ -198,9 +204,10 @@ be_visitor_operation_ami_cs::visit_operation (be_operation *node)
"codegen for argument pre invoke failed\n"),
-1);
}
+#endif /* 0 */
- // generate the code for marshaling in the parameters and transmitting
- // them
+ // Generate the code for marshaling in the parameters and transmitting
+ // them.
if (this->gen_marshal_and_invoke (node, bt) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
@@ -628,9 +635,8 @@ be_compiled_visitor_operation_ami_cs::gen_pre_stub_info (be_operation *node,
}
int
-be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
- *node,
- be_type *bt)
+be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation *node,
+ be_type *bt)
{
TAO_OutStream *os = this->ctx_->stream ();
be_visitor *visitor;
@@ -638,14 +644,15 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
os->indent ();
- // create the GIOP_Invocation and grab the outgoing CDR stream
+ // Create the GIOP_Invocation and grab the outgoing CDR stream.
switch (node->flags ())
{
case AST_Operation::OP_oneway:
- *os << "TAO_GIOP_Oneway_Invocation _tao_call ";
+ // If it is a oneway, we wouldnt have come here to generate AMI
+ // sendc method.
break;
default:
- *os << "TAO_GIOP_Twoway_Invocation _tao_call ";
+ *os << "TAO_GIOP_Twoway_Asynch_Invocation _tao_call ";
}
*os << "(" << be_idt << be_idt_nl
<< "istub," << be_nl;
@@ -660,28 +667,32 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
}
*os << "\"" << node->local_name ()
<< "\"," << be_nl
- << "istub->orb_core ()" << be_uidt_nl
+ << "istub->orb_core ()," << be_nl;
+
+ // Next argument is the reply handler skeleton for this method.
+
+ // Get the interface.
+ be_decl *interface = be_interface::narrow_from_scope (node->defined_in ())->decl ();
+
+ *os << "&AMI_" << interface->fullname () << "_Handler" << "::"
+ << node->local_name () << "_skel," << be_nl;
+
+ // Next argument is the ami handler passed in for this method.
+ *os << "_tao_ami_handler" << be_uidt_nl
+
<< ");" << be_uidt_nl;
*os << "\n" << be_nl
<< "for (;;)" << be_nl
<< "{" << be_idt_nl;
- // *os << "ACE_TRY_ENV.clear ();" << be_nl
*os << "_tao_call.start (ACE_TRY_ENV);" << be_nl;
- // check if there is an exception
- if (this->gen_check_exception (bt) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_ami_cs::"
- "gen_marshal_and_invoke - "
- "codegen for checking exception failed\n"),
- -1);
-
- }
-
- // now make sure that we have some in and inout parameters. Otherwise, there
- // is nothing to be marshaled in
+ // Check if there is an exception.
+ // Return type is void, so we know what to generate here.
+ *os << "ACE_CHECK;";
+
+ // Now make sure that we have some in and inout
+ // parameters. Otherwise, there is nothing to be marshaled in.
if (this->has_param_type (node, AST_Argument::dir_IN) ||
this->has_param_type (node, AST_Argument::dir_INOUT))
{
@@ -690,9 +701,9 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
<< be_nl
<< "if (!(\n" << be_idt << be_idt << be_idt;
- // marshal each in and inout argument
+ // Marshal each in and inout argument.
ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS);
+ ctx.state (TAO_CodeGen::TAO_AMI_OPERATION_ARG_INVOKE_CS);
ctx.sub_state (TAO_CodeGen::TAO_CDR_OUTPUT);
visitor = tao_cg->make_visitor (&ctx);
if (!visitor || (node->accept (visitor) == -1))
@@ -707,7 +718,7 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
*os << be_uidt << be_uidt_nl
<< "))" << be_nl;
- // if marshaling fails, raise exception
+ // If marshaling fails, raise exception.
if (this->gen_raise_exception (bt, "CORBA::MARSHAL",
"") == -1)
{
@@ -722,28 +733,21 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
*os << be_nl
<< "int _invoke_status =" << be_idt_nl;
- if (node->flags () == AST_Operation::OP_oneway)
+ if (node->exceptions ())
{
- // oneway operation
- *os << "_tao_call.invoke (ACE_TRY_ENV);";
+ *os << "_tao_call.invoke (_tao_" << node->flatname ()
+ << "_exceptiondata, "
+ << node->exceptions ()->length ()
+ << ", ACE_TRY_ENV);";
}
else
{
- if (node->exceptions ())
- {
- *os << "_tao_call.invoke (_tao_" << node->flatname ()
- << "_exceptiondata, "
- << node->exceptions ()->length ()
- << ", ACE_TRY_ENV);";
- }
- else
- {
- *os << "_tao_call.invoke (0, 0, ACE_TRY_ENV);";
- }
+ *os << "_tao_call.invoke (0, 0, ACE_TRY_ENV);";
}
-
+
*os << be_uidt_nl;
- // check if there is an exception
+
+ // Check if there is an exception.
if (this->gen_check_exception (bt) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
@@ -777,125 +781,7 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
<< "break;" << be_nl
<< be_uidt_nl << "}" << be_nl;
- // the code below this is for 2way operations only
-
- if (this->void_return_type (bt) &&
- !this->has_param_type (node, AST_Argument::dir_INOUT) &&
- !this->has_param_type (node, AST_Argument::dir_OUT))
- {
- return 0;
- }
-
- // Do any post_invoke stuff that might be necessary.
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS);
- ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT);
- visitor = tao_cg->make_visitor (&ctx);
- if (!visitor || (node->accept (visitor) == -1))
- {
- delete visitor;
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_compiled_visitor_operation_ami_cs::"
- "gen_marshal_and_invoke - "
- "codegen for args in post do_static_call\n"),
- -1);
- }
-
-
- // Generate any temporary variables to demarshal the arguments
- ctx = *this->ctx_;
- be_visitor_compiled_args_decl vis1 (new be_visitor_context (ctx));
- if (node->accept (&vis1) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_compiled_visitor_operation_ami_cs::"
- "gen_pre_stub_info - "
- "codegen for pre args failed\n"),
- -1);
- }
-
- if (!this->void_return_type (bt))
- {
- // Generate any temporary variables to demarshal the return value
- ctx = *this->ctx_;
- be_visitor_context *new_ctx =
- new be_visitor_context (ctx);
- be_visitor_operation_compiled_rettype_post_docall vis2 (new_ctx);
- if (bt->accept (&vis2) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_compiled_visitor_operation_ami_cs::"
- "gen_pre_stub_info - "
- "codegen rettype [post docall] failed\n"),
- -1);
- }
- }
-
- // check if there was a user exception, else demarshal the
- // return val (if any) and parameters (if any) that came with
- // the response message
- *os << "TAO_InputCDR &_tao_in = _tao_call.inp_stream ();" << be_nl
- << "if (!(\n" << be_idt << be_idt << be_idt;
-
- if (!this->void_return_type (bt))
- {
- // demarshal the return val
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_INVOKE_CS);
- ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT);
- visitor = tao_cg->make_visitor (&ctx);
- if (!visitor || (node->accept (visitor) == -1))
- {
- delete visitor;
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_compiled_visitor_operation_ami_cs::"
- "gen_marshal_and_invoke - "
- "codegen for return var failed\n"),
- -1);
- }
- }
-
- if (this->has_param_type (node, AST_Argument::dir_INOUT) ||
- this->has_param_type (node, AST_Argument::dir_OUT))
- {
- if (!this->void_return_type (bt))
- *os << " &&\n";
-
- // demarshal each out and inout argument
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS);
- ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT);
- visitor = tao_cg->make_visitor (&ctx);
- if (!visitor || (node->accept (visitor) == -1))
- {
- delete visitor;
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_compiled_visitor_operation_ami_cs::"
- "gen_marshal_and_invoke - "
- "codegen for return var failed\n"),
- -1);
- }
- }
-
- if (!this->void_return_type (bt) ||
- this->has_param_type (node, AST_Argument::dir_INOUT) ||
- this->has_param_type (node, AST_Argument::dir_OUT))
- {
-
- *os << be_uidt << be_uidt << be_nl
- << "))" << be_nl;
- // if marshaling fails, raise exception
- if (this->gen_raise_exception (bt, "CORBA::MARSHAL",
- "TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES") == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_compiled_visitor_operation_ami_cs::"
- "gen_marshal_and invoke - "
- "codegen for return var failed\n"),
- -1);
- }
- *os << be_uidt;
- }
-
+ // Return type is void and we are going to worry about OUT or INOUT
+ // parameters. Return from here.
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp
index 66d6b5763bb..4670062f2df 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp
@@ -16,13 +16,13 @@
//
// = AUTHOR
// Aniruddha Gokhale and Alexander Babu Arulanthu
-// <alex@cs.wustl.edu>
+// <alex@cs.wustl.edu>
//
// ============================================================================
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
#include "be_visitor_operation.h"
@@ -40,6 +40,82 @@ be_visitor_operation_ami_handler_arglist::be_visitor_operation_ami_handler_argli
{
}
+// Visit the scope and its elements.
+// This implementation is the same as
+// <be_visitor_scope::visit_scope>. The variation is that it calls the
+// <post_process> only if the return value of the <accept> is 1. We
+// need to do this since we have to differentiate between an argument
+// that was printed and an argument that was skipped in the signature.
+
+int
+be_visitor_operation_ami_handler_arglist::visit_scope (be_scope *node)
+{
+ // Proceed if the number of members in our scope is greater than 0.
+ if (node->nmembers () > 0)
+ {
+ // initialize an iterator to iterate thru our scope
+ UTL_ScopeActiveIterator *si;
+ ACE_NEW_RETURN (si,
+ UTL_ScopeActiveIterator (node,
+ UTL_Scope::IK_decls),
+ -1);
+ this->elem_number_ = 0;
+ // continue until each element is visited
+ while (!si->is_done ())
+ {
+ AST_Decl *d = si->item ();
+ if (!d)
+ {
+ delete si;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_scope::visit_scope - "
+ "bad node in this scope\n"), -1);
+
+ }
+ be_decl *bd = be_decl::narrow_from_decl (d);
+ // set the scope node as "node" in which the code is being
+ // generated so that elements in the node's scope can use it
+ // for code generation
+
+ this->ctx_->scope (node->decl ());
+
+ // set the node to be visited
+ this->ctx_->node (bd);
+ this->elem_number_++;
+
+ // Do any pre processing using the next item info.
+ if (this->pre_process (bd) == -1)
+ {
+ delete si;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_scope::visit_scope - "
+ "pre processing failed\n"), -1);
+ }
+
+ // Send the visitor.
+ int visitor_result = 0;
+ if (bd == 0 || (visitor_result = bd->accept (this)) == -1)
+ {
+ delete si;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_scope::visit_scope - "
+ "codegen for scope failed\n"), -1);
+
+ }
+
+ // Do any post processing using this item info.
+ if (visitor_result == 1)
+ this->post_process (bd);
+
+ // Next argument.
+ si->next ();
+ } // end of while loop
+ delete si;
+ } // end of if
+
+ return 0;
+}
+
be_visitor_operation_ami_handler_arglist::~be_visitor_operation_ami_handler_arglist (void)
{
}
@@ -48,11 +124,54 @@ int
be_visitor_operation_ami_handler_arglist::visit_operation (be_operation *node)
{
TAO_OutStream *os = this->ctx_->stream ();
-
- *os << " (" << be_idt << be_idt << "\n";
- // All we do is hand over code generation to our scope.
- if (this->visit_scope (node) == -1)
+ *os << " (" << be_idt << be_idt << be_nl;
+
+ // First argument is a the return value of the operation.
+
+ // Indent.
+ os->indent ();
+
+ // Get the return type.
+ be_type *bt = be_type::narrow_from_decl (node->return_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_arglist::"
+ "visit_operation - "
+ "Bad return type\n"),
+ -1);
+ }
+
+ // Grab the visitor.
+
+ be_visitor_context ctx = *this->ctx_;
+
+ // Set the state.
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RESULT_ARG);
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
+
+ // Pass the visitor.
+ int result_printed = bt->accept (visitor);
+ if (result_printed == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_arglist::"
+ "visit_operation - "
+ "Bad return type\n"),
+ -1);
+ }
+ delete visitor;
+ visitor = 0;
+
+ if (result_printed)
+ *os << ", " << be_nl;
+
+ // Rest of the arguments.
+
+ // All we do is hand over code generation to our scope.
+ int args_printed = this->visit_scope (node);
+ if (args_printed == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_operation_ami_handler_arglist::"
@@ -61,29 +180,47 @@ be_visitor_operation_ami_handler_arglist::visit_operation (be_operation *node)
-1);
}
- // No argument for exception. What will you do if you get the
- // exception from the call back method?
+ // Generate the CORBA::Environment parameter for the alternative
+ // mapping.
+ if (!idl_global->exception_support ())
+ {
+ // If the operation node has parameters, then we need to insert
+ // a comma.
+ // @@ Fix this.
+ // if (result_printed || args_printed)
+ // *os << "," << be_nl;
- // Arglist is over.
+ os->indent ();
+
+ switch (this->ctx_->state ())
+ {
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH:
+ // Last argument - is always CORBA::Environment
+ *os << "CORBA::Environment &ACE_TRY_ENV";
+ *os << " = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt;
+ break;
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS:
+ // Last argument - is always CORBA::Environment.
+ *os << "CORBA::Environment &ACE_TRY_ENV";
+ break;
+ }
+ }
*os << be_uidt_nl << ")" << be_uidt;
- // @@ No THROW SPECs. You can do anything if the call back guy
- // throws an exception. But I am not too sure about
- // this. (Alex).
+ // Now generate the throw specs.
+ *os << be_idt_nl << "ACE_THROW_SPEC ((CORBA::SystemException))"
+ << be_uidt_nl;
+
switch (this->ctx_->state ())
{
- case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST:
- // Each method is pure virtual in the header.
- *os << " = 0;\n\n";
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH:
+ *os << ";" << be_nl << be_nl;
break;
default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_ami_handler_arglist::"
- "visit_operation - "
- "Bad operation\n"),
- -1);
+ *os << be_nl;
}
-
return 0;
}
@@ -128,8 +265,11 @@ be_visitor_operation_ami_handler_arglist::visit_argument (be_argument *node)
switch (this->ctx_->state ())
{
- case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST:
- ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST);
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH:
+ ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CH);
+ break;
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS:
+ ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CS);
break;
default:
{
@@ -151,7 +291,11 @@ be_visitor_operation_ami_handler_arglist::visit_argument (be_argument *node)
"Bad visitor\n"),
-1);
}
- if (node->accept (visitor) == -1)
+
+ // Pass the visitor.
+
+ int result = node->accept (visitor);
+ if (result == -1)
{
delete visitor;
ACE_ERROR_RETURN ((LM_ERROR,
@@ -161,7 +305,7 @@ be_visitor_operation_ami_handler_arglist::visit_argument (be_argument *node)
-1);
}
delete visitor;
- return 0;
+ return result;
}
int
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp
new file mode 100644
index 00000000000..0707400379e
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp
@@ -0,0 +1,172 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_argument_marshal.cpp
+//
+// = DESCRIPTION
+// Visitor to pass arguments to the CDR operators. This one helps in
+// generating the && and the , at the right place. This one is for the
+// skeleton side.
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_operation.h"
+
+ACE_RCSID(be_visitor_operation, ami_handler_argument_marshal, "$Id$")
+
+
+// ************************************************************
+// operation visitor to handle the passing of arguments to the CDR operators
+// ************************************************************
+
+be_compiled_visitor_operation_ami_handler_argument_marshal::
+be_compiled_visitor_operation_ami_handler_argument_marshal (be_visitor_context
+ *ctx)
+ : be_visitor_operation_argument (ctx),
+ last_arg_printed_ (be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE)
+{
+}
+
+be_compiled_visitor_operation_ami_handler_argument_marshal::
+~be_compiled_visitor_operation_ami_handler_argument_marshal (void)
+{
+}
+
+int
+be_compiled_visitor_operation_ami_handler_argument_marshal::pre_process (be_decl *bd)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ be_argument *arg = be_argument::narrow_from_decl (bd);
+
+ if (!arg)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) "
+ "be_compiled_visitor_operation_ami_handler_argument_marshal"
+ "::post_process - "
+ "Bad argument node\n"),
+ -1);
+ }
+ switch (arg->direction ())
+ {
+ case AST_Argument::dir_IN:
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ // nothing
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ // nothing
+ }
+ break;
+ case AST_Argument::dir_INOUT:
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ if (this->last_arg_printed_ !=
+ be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE)
+ *os << " &&\n";
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ if (this->last_arg_printed_ !=
+ be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE)
+ *os << " &&\n";
+ }
+ break;
+ case AST_Argument::dir_OUT:
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
+ {
+ if (this->last_arg_printed_ !=
+ be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE)
+ *os << " &&\n";
+ }
+ else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
+ {
+ if (this->last_arg_printed_ !=
+ be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE)
+ *os << " &&\n";
+ }
+ break;
+ }
+
+ return 0;
+}
+
+int
+be_compiled_visitor_operation_ami_handler_argument_marshal::post_process (be_decl *bd)
+{
+ be_argument *arg = be_argument::narrow_from_decl (bd);
+
+ if (!arg)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) "
+ "be_compiled_visitor_operation_ami_handler_argument_marshal"
+ "::post_process - "
+ "Bad argument node\n"),
+ -1);
+ }
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_CDR_INPUT:
+ switch (arg->direction ())
+ {
+ case AST_Argument::dir_IN:
+ // these arguments don't get printed for the << operator on the stub
+ break;
+ case AST_Argument::dir_INOUT:
+ // only these arguments get printed
+ this->last_arg_printed_ =
+ be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_INOUT;
+ break;
+ case AST_Argument::dir_OUT:
+ // only these arguments get printed
+ this->last_arg_printed_ =
+ be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_OUT;
+ break;
+ }
+ break;
+ case TAO_CodeGen::TAO_CDR_OUTPUT:
+ switch (arg->direction ())
+ {
+ case AST_Argument::dir_IN:
+ // these arguments don't get printed for the >> on the stub
+ break;
+ case AST_Argument::dir_INOUT:
+ // only these arguments get printed
+ this->last_arg_printed_ =
+ be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_INOUT;
+ break;
+ case AST_Argument::dir_OUT:
+ // only these arguments get printed
+ this->last_arg_printed_ =
+ be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_OUT;
+ break;
+ }
+ break;
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) "
+ "be_compiled_visitor_operation_ami_handler_argument_marshal"
+ "::post_process - "
+ "Bad sub state\n"),
+ -1);
+ }
+ return 0;
+}
+
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp
new file mode 100644
index 00000000000..30f38acf344
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp
@@ -0,0 +1,154 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_operation_ch.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for AMI Handler call back operation in
+// the client header.
+//
+// = AUTHOR
+// Aniruddha Gokhale and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_operation.h"
+
+ACE_RCSID(be_visitor_operation, ami_handler_operation_ch, "$Id$")
+
+
+// ************************************************************
+// Operation visitor for server header
+// ************************************************************
+
+be_visitor_operation_ami_handler_operation_ch::be_visitor_operation_ami_handler_operation_ch (be_visitor_context *ctx)
+ : be_visitor_operation (ctx)
+{
+}
+
+be_visitor_operation_ami_handler_operation_ch::~be_visitor_operation_ami_handler_operation_ch (void)
+{
+}
+
+int
+be_visitor_operation_ami_handler_operation_ch::visit_operation (be_operation *node)
+{
+ TAO_OutStream *os; // output stream
+
+ os = this->ctx_->stream ();
+ this->ctx_->node (node); // save the node
+
+ os->indent (); // start with the current indentation level
+
+ // every operation is declared virtual in the client code
+ *os << "virtual ";
+
+ // STEP I: generate the return type. Return type is simpy void.
+ *os << "void ";
+
+ // STEP 2: generate the operation name.
+ *os << " " << node->local_name ();
+
+ // STEP 3: generate the argument list with the appropriate
+ // mapping. For these we grab a visitor that generates the
+ // parameter listing.
+ be_visitor_context ctx (*this->ctx_);
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH);
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_operation_ami_handler_operation_ch::"
+ "visit_operation - "
+ "Bad visitor to return type\n"),
+ -1);
+ }
+
+ if (node->accept (visitor) == -1)
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_ch::"
+ "visit_operation - "
+ "codegen for argument list failed\n"),
+ -1);
+ }
+ delete visitor;
+
+ // Generating the skeleton method.
+
+ // Skeleton not necessary for collocated class.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH)
+ {
+ return 0;
+ /* NOT REACHED */
+ }
+
+ // Generate the corresponding static skeleton method for this
+ // operation only if there was no "native" type.
+ if (!node->has_native ())
+ {
+ // Next line.
+ *os << be_nl;
+
+ // Indent.
+ os->indent ();
+
+ *os << "static void ";
+ // Check if we are an attribute node in disguise
+ if (this->ctx_->attribute ())
+ {
+ // now check if we are a "get" or "set" operation
+ if (node->nmembers () == 1) // set
+ *os << "_set_";
+ else
+ *os << "_get_";
+ }
+ *os << node->local_name () <<
+ "_skel (" << be_idt << be_idt_nl;
+
+ // Different skeletons for the AMI Handler class and the servant
+ // class.
+ switch (this->ctx_->state ())
+ {
+ case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH:
+ *os << "CORBA::ServerRequest &_tao_req, " << be_nl
+ << "void *_tao_obj, " << be_nl
+ << "void *_tao_context, " << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt << "\n\n";
+ break;
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH:
+ *os << "TAO_InputCDR &_tao_reply_cdr, " << be_nl
+ << "Messaging::ReplyHandler_ptr _tao_reply_handler, " << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt << "\n\n";
+ break;
+
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_ch::"
+ "visit_operation - "
+ "Unknown state\n"),
+ -1);
+ }
+ }
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp
index bc54b1b3710..30f38acf344 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp
@@ -65,7 +65,7 @@ be_visitor_operation_ami_handler_operation_ch::visit_operation (be_operation *no
// mapping. For these we grab a visitor that generates the
// parameter listing.
be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST);
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH);
be_visitor *visitor = tao_cg->make_visitor (&ctx);
if (!visitor)
{
@@ -87,11 +87,25 @@ be_visitor_operation_ami_handler_operation_ch::visit_operation (be_operation *no
}
delete visitor;
+ // Generating the skeleton method.
+
+ // Skeleton not necessary for collocated class.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH)
+ {
+ return 0;
+ /* NOT REACHED */
+ }
+
// Generate the corresponding static skeleton method for this
// operation only if there was no "native" type.
if (!node->has_native ())
{
+ // Next line.
+ *os << be_nl;
+
+ // Indent.
os->indent ();
+
*os << "static void ";
// Check if we are an attribute node in disguise
if (this->ctx_->attribute ())
@@ -103,15 +117,38 @@ be_visitor_operation_ami_handler_operation_ch::visit_operation (be_operation *no
*os << "_get_";
}
*os << node->local_name () <<
- "_skel (" << be_idt << be_idt_nl
- << "CORBA::ServerRequest &_tao_req, " << be_nl
- << "void *_tao_obj, " << be_nl
- << "void *_tao_context, " << be_nl
- << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
- << "TAO_default_environment ()"
- << be_uidt << be_uidt_nl
- << ");" << be_uidt << "\n\n";
+ "_skel (" << be_idt << be_idt_nl;
+
+ // Different skeletons for the AMI Handler class and the servant
+ // class.
+ switch (this->ctx_->state ())
+ {
+ case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH:
+ *os << "CORBA::ServerRequest &_tao_req, " << be_nl
+ << "void *_tao_obj, " << be_nl
+ << "void *_tao_context, " << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt << "\n\n";
+ break;
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH:
+ *os << "TAO_InputCDR &_tao_reply_cdr, " << be_nl
+ << "Messaging::ReplyHandler_ptr _tao_reply_handler, " << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl
+ << "TAO_default_environment ()"
+ << be_uidt << be_uidt_nl
+ << ");" << be_uidt << "\n\n";
+ break;
+
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_ch::"
+ "visit_operation - "
+ "Unknown state\n"),
+ -1);
+ }
}
-
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp
new file mode 100644
index 00000000000..89d14a4d74e
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp
@@ -0,0 +1,810 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_operation_cs.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for Operation in the stubs file.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_operation.h"
+
+ACE_RCSID(be_visitor_operation, ami_handler_operation_cs, "$Id$")
+
+
+// ************************************************************
+// Operation visitor for client stubs
+// ************************************************************
+
+be_visitor_operation_ami_handler_operation_cs::be_visitor_operation_ami_handler_operation_cs (be_visitor_context *ctx)
+ : be_visitor_operation (ctx)
+{
+}
+
+be_visitor_operation_ami_handler_operation_cs::~be_visitor_operation_ami_handler_operation_cs (void)
+{
+}
+
+// processing to be done after every element in the scope is processed
+int
+be_visitor_operation_ami_handler_operation_cs::post_process (be_decl *bd)
+{
+ // all we do here is to insert a comma and a newline
+ TAO_OutStream *os = this->ctx_->stream ();
+ if (!this->last_node (bd))
+ *os << ",\n";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_operation_cs::visit_operation (be_operation *node)
+{
+ TAO_OutStream *os; // output stream
+ be_type *bt; // type node
+ be_visitor_context ctx; // visitor context
+ be_visitor *visitor; // visitor
+
+ os = this->ctx_->stream ();
+ this->ctx_->node (node); // save the node for future use
+
+ // Start with the current indentation level.
+ os->indent ();
+
+ // Init the return type variable.
+ bt = be_type::narrow_from_decl (node->return_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_ami_handler_operation_cs::"
+ "visit_operation - "
+ "Bad return type\n"),
+ -1);
+ }
+
+ // Generate the return type. Return type is simply void.
+ *os << "void " << be_nl;
+
+ // Get the scope name.
+ be_decl *parent = be_scope::narrow_from_scope (node->defined_in ())->decl ();
+ if (parent == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_cs::"
+ "visit_operation - "
+ "scopeless operation :-<\n"),
+ -1);
+ }
+
+ // Genereate scope name.
+ *os << parent->compute_name ("AMI_", "_Handler");
+
+ // Generate the operation name.
+ *os << "::" << node->local_name ();
+
+ // Generate the argument list with the appropriate mapping (same as
+ // in the header file).
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if ((!visitor) || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_cs::"
+ "visit_operation - "
+ "codegen for argument list failed\n"),
+ -1);
+ }
+ delete visitor;
+
+ os->indent ();
+ // Generate the actual code for the stub. However, if any of the argument
+ // types is "native", we flag a MARSHAL exception.
+ // last argument - is always CORBA::Environment
+ *os << "{" << be_idt_nl;
+
+ // Deal with differences between IDL mapping for true C++ exceptions and
+ // alternate mapping. Since our code uses the ACE_TRY_ENV variable in a
+ // number of places, for the true exception case, we will have to explicitly
+ // declare the ACE_TRY_ENV variable.
+ *os << this->gen_environment_var () << be_nl;
+
+ // Generate any pre stub info if and only if none of our parameters is of the
+ // native type.
+ if (!node->has_native ())
+ {
+ // native type does not exist.
+
+ // Generate any "pre" stub information such as tables or declarations
+ // This is a template method and the actual work will be done by the
+ // derived class
+ if (this->gen_pre_stub_info (node, bt) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_cs::"
+ "visit_operation - "
+ "gen_pre_stub_info failed\n"),
+ -1);
+ }
+ }
+
+ // Declaring return type is not necessary. Since return type is
+ // void.
+
+ // Native exists => no stub.
+ if (node->has_native ())
+ {
+ if (this->gen_raise_exception (bt, "CORBA::MARSHAL", "") == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_cs::"
+ "visit_operation - "
+ "codegen for return var failed\n"),
+ -1);
+ }
+ }
+ else
+ {
+ os->indent ();
+ // Generate code that retrieves the underlying stub object and then
+ // invokes do_static_call on it.
+ *os << be_nl
+ << "TAO_Stub *istub = this->_stubobj ();" << be_nl
+ << "if (istub == 0)" << be_idt_nl;
+
+ // If the stub object was bad, then we raise a system
+ // exception.
+ *os << "ACE_THROW (CORBA::INTERNAL ());\n\n";
+
+ *os << be_uidt;
+
+ // do any pre marshal and invoke stuff with arguments
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_PRE_INVOKE_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_cs::"
+ "visit_operation - "
+ "codegen for argument pre invoke failed\n"),
+ -1);
+ }
+
+ // Generate the code for marshaling in the parameters and transmitting
+ // them.
+ if (this->gen_marshal_and_invoke (node, bt) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_cs::"
+ "visit_operation - "
+ "codegen for marshal and invoke failed\n"),
+ -1);
+
+ }
+
+ // Return type is void,
+
+ } // end of if (!native)
+
+ *os << be_uidt_nl << "}" << be_nl << be_nl;
+
+ // Generate the skeleton method.
+
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SKELETON_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_cs::"
+ "visit_operation - "
+ "codegen for AMI Handler skeleton failed\n"),
+ -1);
+ }
+ delete visitor;
+
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_operation_cs::visit_argument (be_argument *node)
+{
+ // this method is used to generate the ParamData table entry
+
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_type *bt; // argument type
+
+ // retrieve the type for this argument
+ bt = be_type::narrow_from_decl (node->field_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_cs::"
+ "visit_argument - "
+ "Bad argument type\n"),
+ -1);
+ }
+
+ os->indent ();
+ *os << "{" << bt->tc_name () << ", ";
+ switch (node->direction ())
+ {
+ case AST_Argument::dir_IN:
+ *os << "PARAM_IN, ";
+ break;
+ case AST_Argument::dir_INOUT:
+ *os << "PARAM_INOUT, ";
+ break;
+ case AST_Argument::dir_OUT:
+ *os << "PARAM_OUT, ";
+ break;
+ }
+ *os << "0}";
+
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_operation_cs::gen_raise_exception (be_type *bt,
+ const char *excep,
+ const char *completion_status)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_visitor *visitor;
+ be_visitor_context ctx;
+
+ if (this->void_return_type (bt))
+ {
+ *os << "ACE_THROW ("
+ << excep << " (" << completion_status << "));\n";
+ }
+ else
+ {
+ *os << "ACE_THROW_RETURN ("
+ << excep << " (" << completion_status << "), ";
+
+ // return the appropriate return value
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (bt->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_cs::"
+ "gen_raise_exception - "
+ "codegen for return var failed\n"),
+ -1);
+ }
+ *os << ");\n";
+ }
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_operation_cs::gen_check_exception (be_type *bt)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_visitor *visitor;
+ be_visitor_context ctx;
+
+ os->indent ();
+ // check if there is an exception
+ if (this->void_return_type (bt))
+ {
+ *os << "ACE_CHECK;\n";
+ //<< "_tao_environment);\n";
+ }
+ else
+ {
+ *os << "ACE_CHECK_RETURN (";
+ // << "_tao_environment, ";
+
+ // return the appropriate return value
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (bt->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_cs::"
+ "gen_check_exception - "
+ "codegen failed\n"),
+ -1);
+ }
+ *os << ");" << be_nl;
+ }
+
+ return 0;
+}
+
+// ************************************************************
+// Operation visitor for interpretive client stubs
+// ************************************************************
+
+be_interpretive_visitor_operation_ami_handler_operation_cs::
+be_interpretive_visitor_operation_ami_handler_operation_cs (be_visitor_context *ctx)
+ : be_visitor_operation_ami_handler_operation_cs (ctx)
+{
+}
+
+be_interpretive_visitor_operation_ami_handler_operation_cs::~be_interpretive_visitor_operation_ami_handler_operation_cs (void)
+{
+}
+
+// concrete implementation of the template methods
+
+int
+be_interpretive_visitor_operation_ami_handler_operation_cs::gen_pre_stub_info (be_operation *node,
+ be_type *bt)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_visitor *visitor;
+ be_visitor_context ctx;
+
+ // Generate the TAO_Param_Data table
+ os->indent ();
+ *os << "static const TAO_Param_Data ";
+ // check if we are an attribute node in disguise
+ if (this->ctx_->attribute ())
+ {
+ // now check if we are a "get" or "set" operation
+ if (node->nmembers () == 1) // set
+ *os << "_set_";
+ else
+ *os << "_get_";
+ }
+ *os << node->flatname () <<
+ "_paramdata [] = " << be_nl;
+ *os << "{\n";
+ os->incr_indent ();
+
+ // entry for the return type
+ *os << "{" << bt->tc_name () << ", PARAM_RETURN, 0}";
+ if (node->nmembers () > 0)
+ *os << ",\n";
+
+ // generate entries for the param data table for arguments
+ if (this->visit_scope (node) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_interpretive_visitor_operation_ami_handler_operation_cs::"
+ "gen_pre_stub_info - "
+ "visit scope failed\n"),
+ -1);
+ }
+
+ os->indent ();
+ *os << be_nl;
+ os->decr_indent ();
+ *os << "}; // " << node->flatname () << "_paramdata\n\n";
+
+ // Check if this operation raises any exceptions. In that case, we must
+ // generate a list of exception typecodes. This is not valid for
+ // attributes
+ if (!this->ctx_->attribute ())
+ {
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) "
+ "be_interpretive_visitor_operation_ami_handler_operation_cs::"
+ "gen_pre_stub_info - "
+ "Exceptionlist generation error\n"),
+ -1);
+ }
+ }
+
+ // now generate the calldata table
+ os->indent ();
+ *os << "static const TAO_Call_Data ";
+ // check if we are an attribute node in disguise
+ if (this->ctx_->attribute ())
+ {
+ // now check if we are a "get" or "set" operation
+ if (node->nmembers () == 1) // set
+ *os << "_set_";
+ else
+ *os << "_get_";
+ }
+ *os << node->flatname ()
+ << "_calldata = " << be_nl
+ << "{"
+ << "\"";
+ // check if we are an attribute node in disguise
+ if (this->ctx_->attribute ())
+ {
+ // now check if we are a "get" or "set" operation
+ if (node->nmembers () == 1) // set
+ *os << "_set_";
+ else
+ *os << "_get_";
+ }
+ *os << node->local_name () << "\", ";
+
+ // are we oneway or two operation?
+ if (node->flags () == AST_Operation::OP_oneway)
+ {
+ *os << "0, "; // for false
+ }
+ else
+ {
+ *os << "1, "; // for true
+ }
+ // insert the size of the paramdata table i.e., number of arguments + 1
+ // for return type
+ *os << (node->argument_count () + 1) << ", ";
+
+ // insert the address of the paramdata table
+ // first check if we are an attribute node in disguise
+ if (this->ctx_->attribute ())
+ {
+ // now check if we are a "get" or "set" operation
+ if (node->nmembers () == 1) // set
+ *os << "_set_";
+ else
+ *os << "_get_";
+ }
+ *os << node->flatname () << "_paramdata, ";
+
+ // insert exception list (if any) - node for attributes
+ if (this->ctx_->attribute ())
+ *os << "0, 0};\n\n";
+ else
+ {
+ if (node->exceptions ())
+ {
+ *os << node->exceptions ()->length ()
+ << ", _tao_" << node->flatname () << "_exceptiondata};\n\n";
+ }
+ else
+ *os << "0, 0};\n\n";
+ }
+ return 0;
+}
+
+int
+be_interpretive_visitor_operation_ami_handler_operation_cs::
+gen_marshal_and_invoke (be_operation*node,
+ be_type *bt)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_visitor *visitor;
+ be_visitor_context ctx;
+
+ os->indent ();
+ *os << "void* _tao_arguments["
+ << node->argument_count () + 1 << "];" << be_nl
+ << "const void** _tao_arg = ACE_const_cast (const void**,_tao_arguments);" << be_nl
+ << "*_tao_arg = ";
+
+ // pass the appropriate return value to docall
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_INVOKE_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (bt->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_interpretive_visitor_operation_ami_handler_operation_cs::"
+ "gen_marshal_and_invoke - "
+ "codegen for return var in do_static_call failed\n"),
+ -1);
+ }
+ *os << "; _tao_arg++;\n";
+
+ // pass each argument to do_static_call
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_interpretive_visitor_operation_ami_handler_operation_cs::"
+ "gen_marshal_and_invoke - "
+ "codegen for return var in do_static_call failed\n"),
+ -1);
+ }
+ delete visitor;
+ visitor=0;
+
+ // call do_static_call with appropriate number of arguments
+ os->indent ();
+ *os << "istub->do_static_call (" << be_idt_nl
+ << "ACE_TRY_ENV, " << be_nl
+ << "&";
+ // check if we are an attribute node in disguise
+ if (this->ctx_->attribute ())
+ {
+ // now check if we are a "get" or "set" operation
+ if (node->nmembers () == 1) // set
+ *os << "_set_";
+ else
+ *os << "_get_";
+ }
+ *os << node->flatname () << "_calldata," << be_nl
+ << "_tao_arguments" << be_uidt_nl
+ << ");\n";
+
+ os->indent ();
+ // check if there is an exception
+ if (this->gen_check_exception (bt) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_interpretive_visitor_operation_ami_handler_operation_cs::"
+ "gen_marshal_and_invoke - "
+ "codegen for checking exception failed\n"),
+ -1);
+
+ }
+
+ // do any post processing for the arguments
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_cs::"
+ "visit_operation - "
+ "codegen for args post do_static_call failed\n"),
+ -1);
+ }
+ delete visitor;
+ visitor = 0;
+
+ // do any post processing for the retval
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_POST_INVOKE_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (bt->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_operation_cs::"
+ "visit_operation - "
+ "codegen for return type post do_static_call failed\n"),
+ -1);
+ }
+ delete visitor;
+
+ return 0;
+}
+
+// ************************************************************
+// Operation visitor for compiled client stubs
+// ************************************************************
+
+be_compiled_visitor_operation_ami_handler_operation_cs::
+be_compiled_visitor_operation_ami_handler_operation_cs (be_visitor_context *ctx)
+ : be_visitor_operation_ami_handler_operation_cs (ctx)
+{
+}
+
+be_compiled_visitor_operation_ami_handler_operation_cs::~be_compiled_visitor_operation_ami_handler_operation_cs (void)
+{
+}
+
+// concrete implementation of the template methods
+
+int
+be_compiled_visitor_operation_ami_handler_operation_cs::gen_pre_stub_info (be_operation *node,
+ be_type *)
+{
+
+ // Check if this operation raises any exceptions. In that case, we must
+ // generate a list of exception typecodes. This is not valid for
+ // attributes
+ if (!this->ctx_->attribute ())
+ {
+ be_visitor_context ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS);
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) "
+ "be_compiled_visitor_operation_ami_handler_operation_cs::"
+ "gen_pre_stub_info - "
+ "Exceptionlist generation error\n"),
+ -1);
+ }
+ delete visitor;
+ }
+
+ return 0;
+}
+
+int
+be_compiled_visitor_operation_ami_handler_operation_cs::
+gen_marshal_and_invoke (be_operation *node,
+ be_type *bt)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_visitor *visitor;
+ be_visitor_context ctx;
+
+ os->indent ();
+
+ // Create the GIOP_Invocation and grab the outgoing CDR stream.
+ switch (node->flags ())
+ {
+ case AST_Operation::OP_oneway:
+ *os << "TAO_GIOP_Oneway_Invocation _tao_call ";
+ break;
+ default:
+ *os << "TAO_GIOP_Twoway_Invocation _tao_call ";
+ }
+ *os << "(" << be_idt << be_idt_nl
+ << "istub," << be_nl;
+
+ if (this->ctx_->attribute ())
+ {
+ // now check if we are a "get" or "set" operation
+ if (node->nmembers () == 1) // set
+ *os << "\"_set_\"";
+ else
+ *os << "\"_get_\"";
+ }
+
+ *os << "\"" << node->original_local_name ()
+ << "\"," << be_nl
+ << "istub->orb_core ()" << be_uidt_nl
+ << ");" << be_uidt_nl;
+
+ *os << "\n" << be_nl
+ << "for (;;)" << be_nl
+ << "{" << be_idt_nl;
+
+ *os << "ACE_TRY_ENV.clear ();" << be_nl;
+ *os << "_tao_call.start (ACE_TRY_ENV);" << be_nl;
+ // Check if there is an exception.
+ *os << "ACE_CHECK;";
+
+ // Now make sure that we have some AMI result parameter or OUT or
+ // INOUT parameters. Otherwise, there is nothing to be marshaled
+ // in.
+ if (!this->void_return_type (bt) ||
+ this->has_param_type (node, AST_Argument::dir_OUT) ||
+ this->has_param_type (node, AST_Argument::dir_INOUT))
+ {
+ *os << be_nl
+ << "TAO_OutputCDR &_tao_out = _tao_call.out_stream ();"
+ << be_nl
+ << "if (!(\n" << be_idt << be_idt << be_idt;
+
+ // @@ Michael: This has to be replaced witht he code in the
+ // "#if 0" clause
+ // Marshal the ami result argument, if the return type is not
+ // void.
+ if (!this->void_return_type (bt))
+ {
+ os->indent ();
+ *os << "(_tao_out << _tao_retval)";
+
+ // Print the && if there are OUT or INOUT arguements in the
+ // signature.
+ if (this->has_param_type (node, AST_Argument::dir_OUT) ||
+ this->has_param_type (node, AST_Argument::dir_INOUT))
+ *os << " &&\n";
+ }
+
+#if 0
+ // @@ This for giving the _tao_retval argument only. But
+ // this may be needed for some data types.
+ // But the one that is above is ok for basic types.
+ // @@ We may need to do this.
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_MARSHAL_CS);
+ ctx.sub_state (TAO_CodeGen::TAO_CDR_OUTPUT);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_compiled_visitor_operation_ami_handler_operation_cs::"
+ "gen_marshal_and_invoke - "
+ "codegen for return var in do_static_call failed\n"),
+ -1);
+ }
+ delete visitor;
+ visitor = 0;
+#endif /* 0 */
+
+ // Marshal each out and inout argument.
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_MARSHAL_CS);
+ ctx.sub_state (TAO_CodeGen::TAO_CDR_OUTPUT);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_compiled_visitor_operation_ami_handler_operation_cs::"
+ "gen_marshal_and_invoke - "
+ "codegen for return var in do_static_call failed\n"),
+ -1);
+ }
+ delete visitor;
+ visitor = 0;
+
+ *os << be_uidt << be_uidt_nl
+ << "))" << be_nl;
+
+ // if marshaling fails, raise exception.
+ *os << "ACE_THROW (CORBA::MARSHAL ());";
+
+ *os << be_uidt;
+ }
+
+ *os << be_nl
+ << "int _invoke_status =" << be_idt_nl;
+ if (node->flags () == AST_Operation::OP_oneway)
+ {
+ // oneway operation
+ *os << "_tao_call.invoke (ACE_TRY_ENV);";
+ }
+ else
+ {
+ if (node->exceptions ())
+ {
+ *os << "_tao_call.invoke (_tao_" << node->flatname ()
+ << "_exceptiondata, "
+ << node->exceptions ()->length ()
+ << ", ACE_TRY_ENV);";
+ }
+ else
+ {
+ *os << "_tao_call.invoke (0, 0, ACE_TRY_ENV);";
+ }
+ }
+
+ *os << be_uidt_nl;
+
+ // Check if there is an exception.
+ *os << "ACE_CHECK;";
+
+ *os << be_nl
+ << "if (_invoke_status == TAO_INVOKE_RESTART)" << be_idt_nl
+ << "continue;" << be_uidt_nl
+ << "// if (_invoke_status == TAO_INVOKE_EXCEPTION)" << be_idt_nl
+ << "// cannot happen" << be_uidt_nl
+ << "if (_invoke_status != TAO_INVOKE_OK)" << be_nl
+ << "{" << be_idt_nl;
+
+ // Check if there is an exception.
+ *os << "ACE_THROW (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES));";
+
+ *os << be_uidt_nl
+ << "}" << be_nl
+ << "break;" << be_nl
+ << be_uidt_nl << "}" << be_nl;
+
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp
new file mode 100644
index 00000000000..ce3f1b178ce
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp
@@ -0,0 +1,177 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_result_arg.cpp
+//
+// = DESCRIPTION
+// Visitor that generates the result argument in a call back method
+// of a Reply Handler.
+//
+// = AUTHOR
+// Aniruddha Gokhale and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "be.h"
+#include "be_visitor_argument.h"
+
+ACE_RCSID(be_visitor_operation, ami_handler_result_arg, "$Id$")
+
+
+// ************************************************************
+// Visitor for parameter list in AMI Handler call back declarations
+// and definitions.
+// ************************************************************
+
+be_visitor_operation_ami_handler_result_arg::be_visitor_operation_ami_handler_result_arg (be_visitor_context *ctx)
+ : be_visitor_decl (ctx)
+{
+}
+
+be_visitor_operation_ami_handler_result_arg::~be_visitor_operation_ami_handler_result_arg (void)
+{
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_array (be_array *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+
+ be_type *bt = be_type::narrow_from_decl (node);
+
+ *os << "const " << bt->type_name (node) << " _tao_ami_result";
+
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_enum (be_enum *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << this->type_name (node) << " _tao_ami_result" ;
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_interface (be_interface *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << this->type_name (node, "_ptr") << " _tao_ami_result";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_interface_fwd (be_interface_fwd *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << this->type_name (node, "_ptr") << " _tao_ami_result";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_native (be_native *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+ *os << this->type_name (node) << " _tao_ami_result";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_predefined_type (be_predefined_type *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get output stream
+
+ // check if the type is an any
+ if (node->pt () == AST_PredefinedType::PT_any)
+ {
+ *os << "const " << this->type_name (node) << " &" << " _tao_ami_result";
+ }
+ else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object
+ {
+ *os << this->type_name (node, "_ptr") << " _tao_ami_result";
+ }
+ else // simple predefined types
+ {
+ *os << this->type_name (node) << " _tao_ami_result";
+ }
+
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_sequence (be_sequence *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const " << this->type_name (node) << " &" << " _tao_ami_result";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_string (be_string *)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const char *" << " _tao_ami_result";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_structure (be_structure *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const " << this->type_name (node) << " &" << " _tao_ami_result";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_union (be_union *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const " << this->type_name (node) << " &" << " _tao_ami_result";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_typedef (be_typedef *node)
+{
+ this->ctx_->alias (node);
+ if (node->primitive_base_type ()->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_operation_ami_handler_result_arg::"
+ "visit_typedef - "
+ "accept on primitive type failed\n"),
+ -1);
+ }
+ this->ctx_->alias (0);
+ return 0;
+}
+
+
+#ifdef IDL_HAS_VALUETYPE
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_valuetype (be_valuetype *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << this->type_name (node) << " *" << " _tao_ami_result";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_result_arg::visit_valuetype_fwd (be_valuetype_fwd *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // get the stream
+ *os << "const " << this->type_name (node) << " *" << " _tao_ami_result";
+ return 0;
+}
+
+#endif /* IDL_HAS_VALUETYPE */
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp
new file mode 100644
index 00000000000..d6936926da6
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp
@@ -0,0 +1,486 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_skeleton_cs.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for Operation in the stubs file.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_operation.h"
+
+ACE_RCSID(be_visitor_operation, ami_handler_skeleton_cs, "$Id$")
+
+
+// ************************************************************
+// Operation visitor for client stubs
+// ************************************************************
+
+be_visitor_operation_ami_handler_skeleton_cs::be_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *ctx)
+ : be_visitor_operation (ctx)
+{
+}
+
+be_visitor_operation_ami_handler_skeleton_cs::~be_visitor_operation_ami_handler_skeleton_cs (void)
+{
+}
+
+// processing to be done after every element in the scope is processed
+int
+be_visitor_operation_ami_handler_skeleton_cs::post_process (be_decl *bd)
+{
+ // all we do here is to insert a comma and a newline
+ TAO_OutStream *os = this->ctx_->stream ();
+ if (!this->last_node (bd))
+ *os << ",\n";
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_skeleton_cs::visit_operation (be_operation *node)
+{
+ TAO_OutStream *os; // output stream
+ be_type *bt; // type node
+ be_visitor_context ctx; // visitor context
+ be_visitor *visitor = 0; // visitor
+
+ os = this->ctx_->stream ();
+ this->ctx_->node (node); // save the node for future use
+
+ // Init the return type variable.
+ bt = be_type::narrow_from_decl (node->return_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_ami_handler_skeleton_cs::"
+ "visit_operation - "
+ "Bad return type\n"),
+ -1);
+ }
+
+ // Start with the current indentation level.
+ os->indent ();
+
+
+ // Generate the return type. Return type is simply void.
+ *os << be_nl << "void" << be_nl;
+
+ // Get the scope name.
+ be_decl *parent = be_scope::narrow_from_scope (node->defined_in ())->decl ();
+ if (parent == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_skeleton_cs::"
+ "visit_operation - "
+ "scopeless operation :-<\n"),
+ -1);
+ }
+
+ // Genereate scope name.
+ *os << parent->compute_name ("AMI_", "_Handler");
+
+ // Generate the operation name.
+ *os << "::" << node->local_name () << "_skel (" << be_idt_nl;
+
+ // Generate the argument list.
+ *os << "TAO_InputCDR &_tao_in, " << be_nl
+ << "Messaging::ReplyHandler_ptr _tao_reply_handler," << be_nl
+ << "CORBA::Environment &ACE_TRY_ENV"<< be_uidt << be_uidt_nl
+ << ")" << be_nl;
+
+ // Generate the actual code for the stub. However, if any of the argument
+ // types is "native", we flag a MARSHAL exception.
+ // last argument - is always CORBA::Environment
+ *os << "{\n" << be_idt;
+
+ // Deal with differences between IDL mapping for true C++ exceptions and
+ // alternate mapping. Since our code uses the ACE_TRY_ENV variable in a
+ // number of places, for the true exception case, we will have to explicitly
+ // declare the ACE_TRY_ENV variable.
+ *os << this->gen_environment_var () << be_nl;
+
+ // Generate any pre stub info if and only if none of our parameters is of the
+ // native type.
+ if (!node->has_native ())
+ {
+ // native type does not exist.
+
+ // Generate any "pre" stub information such as tables or declarations
+ // This is a template method and the actual work will be done by the
+ // derived class
+ if (this->gen_pre_stub_info (node, bt) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_cs::"
+ "visit_operation - "
+ "gen_pre_stub_info failed\n"),
+ -1);
+ }
+ }
+
+ os->indent();
+
+ *os << "// Retrieve Reply Handler object." << be_nl;
+ *os << parent->compute_name ("AMI_", "_Handler") << "_var "
+ << "_tao_reply_handler_object =" << be_idt_nl;
+
+ *os << parent->compute_name ("AMI_", "_Handler");
+ *os << "::_narrow(_tao_reply_handler, ACE_TRY_ENV);" << be_uidt_nl;
+
+ *os << "ACE_CHECK;" << be_nl << be_nl
+ << "// @@ Error handling " << be_nl << be_nl;
+
+ *os << "//Demarshall all the arguments.\n";
+
+ // declare a return type variable
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DECL_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (bt->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) ami_handler_skeleton_cs::"
+ "visit_operation - "
+ "codegen for return var decl failed\n"),
+ -1);
+ }
+ delete visitor;
+ visitor = 0;
+
+ // declare variables for arguments
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) ami_handler_skeleton_cs::"
+ "visit_operation - "
+ "codegen for return var decl failed\n"),
+ -1);
+ }
+ delete visitor;
+ visitor = 0;
+
+ // Demarshal parameters
+ if (this->gen_marshal_and_invoke (node, bt) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%1) ami_handler_skeleton_cs::"
+ "visit_operation - "
+ "gen_demarshal_params failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl << "};" << be_nl << be_nl;
+
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_skeleton_cs::visit_argument (be_argument *node)
+{
+ // this method is used to generate the ParamData table entry
+
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_type *bt; // argument type
+
+ // retrieve the type for this argument
+ bt = be_type::narrow_from_decl (node->field_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_skeleton_cs::"
+ "visit_argument - "
+ "Bad argument type\n"),
+ -1);
+ }
+
+ os->indent ();
+ *os << "{" << bt->tc_name () << ", ";
+ switch (node->direction ())
+ {
+ case AST_Argument::dir_IN:
+ *os << "PARAM_IN, ";
+ break;
+ case AST_Argument::dir_INOUT:
+ *os << "PARAM_INOUT, ";
+ break;
+ case AST_Argument::dir_OUT:
+ *os << "PARAM_OUT, ";
+ break;
+ }
+ *os << "0}";
+
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_skeleton_cs::gen_raise_exception (be_type *bt,
+ const char *excep,
+ const char *completion_status)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_visitor *visitor;
+ be_visitor_context ctx;
+
+ if (this->void_return_type (bt))
+ {
+ *os << "ACE_THROW ("
+ << excep << " (" << completion_status << "));\n";
+ }
+ else
+ {
+ *os << "ACE_THROW_RETURN ("
+ << excep << " (" << completion_status << "), ";
+
+ // return the appropriate return value
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (bt->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_skeleton_cs::"
+ "gen_raise_exception - "
+ "codegen for return var failed\n"),
+ -1);
+ }
+ *os << ");\n";
+ }
+ return 0;
+}
+
+int
+be_visitor_operation_ami_handler_skeleton_cs::gen_check_exception (be_type *bt)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_visitor *visitor;
+ be_visitor_context ctx;
+
+ os->indent ();
+ // check if there is an exception
+ if (this->void_return_type (bt))
+ {
+ *os << "ACE_CHECK;\n";
+ //<< "_tao_environment);\n";
+ }
+ else
+ {
+ *os << "ACE_CHECK_RETURN (";
+ // << "_tao_environment, ";
+
+ // return the appropriate return value
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (bt->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_operation_ami_handler_skeleton_cs::"
+ "gen_check_exception - "
+ "codegen failed\n"),
+ -1);
+ }
+ *os << ");\n";
+ }
+
+ return 0;
+}
+
+// ************************************************************
+// Operation visitor for interpretive client skeletons of the AMI reply handler
+// ************************************************************
+
+be_interpretive_visitor_operation_ami_handler_skeleton_cs::
+be_interpretive_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *ctx)
+ : be_visitor_operation_ami_handler_skeleton_cs (ctx)
+{
+}
+
+be_interpretive_visitor_operation_ami_handler_skeleton_cs::~be_interpretive_visitor_operation_ami_handler_skeleton_cs (void)
+{
+}
+
+// concrete implementation of the template methods
+
+int
+be_interpretive_visitor_operation_ami_handler_skeleton_cs::gen_pre_stub_info (be_operation *node,
+ be_type *bt)
+{
+ ACE_UNUSED_ARG (node);
+ ACE_UNUSED_ARG (bt);
+
+ // @@ Michael: To be done.
+ return 0;
+}
+
+int
+be_interpretive_visitor_operation_ami_handler_skeleton_cs::
+gen_marshal_and_invoke (be_operation*node,
+ be_type *bt)
+{
+ ACE_UNUSED_ARG (node);
+ ACE_UNUSED_ARG (bt);
+
+ // @@ Michael: To be done.
+ return 0;
+}
+
+// ************************************************************
+// Operation visitor for compiled client skeletons of the AMI reply handler
+// ************************************************************
+
+be_compiled_visitor_operation_ami_handler_skeleton_cs::
+be_compiled_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *ctx)
+ : be_visitor_operation_ami_handler_skeleton_cs (ctx)
+{
+}
+
+be_compiled_visitor_operation_ami_handler_skeleton_cs::~be_compiled_visitor_operation_ami_handler_skeleton_cs (void)
+{
+}
+
+// concrete implementation of the template methods
+
+int
+be_compiled_visitor_operation_ami_handler_skeleton_cs::gen_pre_stub_info (be_operation *node,
+ be_type *)
+{
+
+ // Check if this operation raises any exceptions. In that case, we must
+ // generate a list of exception typecodes. This is not valid for
+ // attributes
+ if (!this->ctx_->attribute ())
+ {
+ be_visitor_context ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS);
+ be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) "
+ "be_compiled_visitor_operation_ami_handler_skeleton_cs::"
+ "gen_pre_stub_info - "
+ "Exceptionlist generation error\n"),
+ -1);
+ }
+ delete visitor;
+ }
+
+ return 0;
+}
+
+int
+be_compiled_visitor_operation_ami_handler_skeleton_cs::
+gen_marshal_and_invoke (be_operation *node,
+ be_type *bt)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ be_visitor *visitor = 0;
+ be_visitor_context ctx;
+
+ os->indent ();
+
+ *os << "if (!(\n" << be_idt << be_idt << be_idt;
+
+ if (!this->void_return_type (bt))
+ {
+ // demarshal the return val
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DEMARSHAL_CS);
+ ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_compiled_visitor_operation_ami_handler_skeleton_cs::"
+ "gen_demarshal_params - "
+ "codegen for return var failed\n"),
+ -1);
+ }
+ delete visitor;
+
+ // Print the && if there are OUT or INOUT arguements in the
+ // signature.
+ if (this->has_param_type (node, AST_Argument::dir_OUT) ||
+ this->has_param_type (node, AST_Argument::dir_INOUT))
+ *os << " &&\n";
+ }
+
+ if (this->has_param_type (node, AST_Argument::dir_INOUT) ||
+ this->has_param_type (node, AST_Argument::dir_OUT))
+ {
+ // demarshal each in and inout argument
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DEMARSHAL_CS);
+ ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_compiled_visitor_operation_ami_handler_skeleton_cs::"
+ "gen_marshal_params - "
+ "codegen for args failed\n"),
+ -1);
+ }
+ delete visitor;
+ }
+
+ *os << be_uidt << be_uidt_nl
+ << " ))" << be_nl
+ << "ACE_THROW (CORBA::MARSHAL ());" << be_uidt_nl << be_nl;
+
+ // Invoke the callback method
+ *os << "// Invoke the call back method." << be_nl
+ << "_tao_reply_handler_object->"
+ << node->local_name () << " (" << be_idt_nl;
+
+ // if we have a non-void return type then pass it as the first argument
+ if (!this->void_return_type (bt))
+ *os << "_tao_retval,\n";
+
+ // generate the argument list containing the inout and inout arguments
+ ctx = *this->ctx_;
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS);
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor || (node->accept (visitor) == -1))
+ {
+ delete visitor;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) ami_handler_skeleton_cs::"
+ "visit_operation - "
+ "codegen for making upcall failed\n"),
+ -1);
+ }
+ delete visitor;
+ visitor = 0;
+
+ *os << be_nl << ");" << be_uidt_nl;
+
+ *os << "ACE_CHECK;" << be_nl;
+
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/argument.cpp b/TAO/TAO_IDL/be/be_visitor_operation/argument.cpp
index f7d36bd63df..a36fd00d9a4 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/argument.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/argument.cpp
@@ -61,6 +61,20 @@ be_visitor_operation_argument::post_process (be_decl *bd)
case TAO_CodeGen::TAO_OPERATION_ARG_MARSHAL_SS:
*os << ",\n";
break;
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS:
+ {
+ // @@ Michael
+ // In the case of of AMI, we do not want to
+ // print a comma for in arguments.
+ // This is due to the concept of post processing,
+ // which I was not able to prevent to be executed
+ // in the case of in arguments.
+ be_argument *arg = this->ctx_->be_node_as_argument ();
+ ACE_ASSERT (arg != 0);
+ if (arg->direction () != AST_Argument::dir_IN)
+ *os << ",\n";
+ }
+ break;
default:
break;
}
@@ -91,6 +105,7 @@ be_visitor_operation_argument::visit_operation (be_operation *node)
{
case TAO_CodeGen::TAO_OPERATION_ARG_UPCALL_SS:
case TAO_CodeGen::TAO_OPERATION_COLLOCATED_ARG_UPCALL_SS:
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS:
// applicable only to these cases where the actual upcall is made
// last argument is the environment
@@ -155,18 +170,33 @@ be_visitor_operation_argument::visit_argument (be_argument *node)
case TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_INVOKE_CS);
break;
+ case TAO_CodeGen::TAO_AMI_OPERATION_ARG_INVOKE_CS:
+ ctx.state (TAO_CodeGen::TAO_AMI_ARGUMENT_INVOKE_CS);
+ break;
+// @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_INVOKE_CS:
+// ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_INVOKE_CS);
+// break;
case TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_POST_INVOKE_CS);
break;
case TAO_CodeGen::TAO_OPERATION_ARG_DECL_SS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS);
break;
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS:
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_VARDECL_CS);
+ break;
case TAO_CodeGen::TAO_OPERATION_ARG_DEMARSHAL_SS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_DEMARSHAL_SS);
break;
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DEMARSHAL_CS:
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_DEMARSHAL_CS);
+ break;
case TAO_CodeGen::TAO_OPERATION_ARG_MARSHAL_SS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_MARSHAL_SS);
break;
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_MARSHAL_CS:
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_MARSHAL_CS);
+ break;
case TAO_CodeGen::TAO_OPERATION_ARG_PRE_UPCALL_SS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS);
break;
@@ -176,15 +206,18 @@ be_visitor_operation_argument::visit_argument (be_argument *node)
case TAO_CodeGen::TAO_OPERATION_ARG_UPCALL_SS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS);
break;
+ case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS:
+ ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_UPCALL_CS);
+ break;
case TAO_CodeGen::TAO_OPERATION_ARG_POST_UPCALL_SS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS);
break;
case TAO_CodeGen::TAO_OPERATION_ARG_POST_MARSHAL_SS:
ctx.state (TAO_CodeGen::TAO_ARGUMENT_POST_MARSHAL_SS);
break;
- case TAO_CodeGen::TAO_OPERATION_ARG_AMI:
- ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI);
- break;
+ // case TAO_CodeGen::TAO_OPERATION_ARG_AMI:
+ // ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI);
+ // break;
default:
{
ACE_ERROR_RETURN ((LM_ERROR,
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp b/TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp
index 1dc503c91e0..ab97bf649f1 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp
@@ -62,6 +62,7 @@ be_compiled_visitor_operation_argument_invoke::pre_process (be_decl *bd)
"Bad argument node\n"),
-1);
}
+
switch (arg->direction ())
{
case AST_Argument::dir_IN:
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp b/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp
index ed123807f65..675a5807d94 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp
@@ -68,7 +68,7 @@ visit_operation (be_operation *node)
if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
{
- os->indent ();
+ os->indent ();
*os << "(_tao_out << ";
}
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp
index 6581578631c..980cbb496c8 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp
@@ -115,14 +115,14 @@ be_visitor_operation_cs::visit_operation (be_operation *node)
// last argument - is always CORBA::Environment
*os << "{" << be_idt_nl;
- // deal with differences between IDL mapping for trus C++ exceptions and
+ // Deal with differences between IDL mapping for true C++ exceptions and
// alternate mapping. Since our code uses the ACE_TRY_ENV variable in a
// number of places, for the true exception case, we will have to explicitly
// declare the ACE_TRY_ENV variable.
*os << this->gen_environment_var () << "\n";
- // generate any pre stub info if and only if none of our parameters is of the
- // native type
+ // Generate any pre stub info if and only if none of our parameters is of the
+ // native type.
if (!node->has_native ())
{
// native type does not exist.
@@ -140,7 +140,7 @@ be_visitor_operation_cs::visit_operation (be_operation *node)
}
}
- // Declare a return type
+ // Declare return type.
ctx = *this->ctx_;
ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_CS);
visitor = tao_cg->make_visitor (&ctx);
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp
index 277021a3a0f..860210a7aab 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp
@@ -45,8 +45,6 @@ be_visitor_operation_rettype::~be_visitor_operation_rettype (void)
int
be_visitor_operation_rettype::visit_array (be_array *node)
{
-
-
TAO_OutStream *os = this->ctx_->stream (); // grab the out stream
be_type *bt; // return type
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp
index 2dc75fbe214..5873b0d412f 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp
@@ -56,7 +56,11 @@ be_visitor_operation_rettype_vardecl_cs::visit_array (be_array *node)
bt = node;
os->indent ();
- *os << bt->name () << "_slice *_tao_retval = 0;\n\n";
+
+ *os << bt->name () << "_slice *_tao_retval = 0;";
+
+ *os << be_nl << be_nl;
+
return 0;
}
@@ -72,7 +76,11 @@ be_visitor_operation_rettype_vardecl_cs::visit_enum (be_enum *node)
bt = node;
os->indent ();
- *os << bt->name () << " _tao_retval = (" << bt->name () << ")0;\n";
+
+ *os << bt->name () << " _tao_retval = (" << bt->name () << ")0;";
+
+ *os << be_nl << be_nl;
+
return 0;
}
@@ -88,7 +96,10 @@ be_visitor_operation_rettype_vardecl_cs::visit_interface (be_interface *node)
bt = node;
os->indent ();
- *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();\n";
+ *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();";
+
+ *os << be_nl << be_nl;
+
return 0;
}
@@ -104,7 +115,10 @@ be_visitor_operation_rettype_vardecl_cs::visit_interface_fwd (be_interface_fwd *
bt = node;
os->indent ();
- *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();\n";
+ *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();";
+
+ *os << be_nl << be_nl;
+
return 0;
}
@@ -122,7 +136,11 @@ be_visitor_operation_rettype_vardecl_cs::visit_valuetype (be_valuetype *node)
bt = node;
os->indent ();
- *os << bt->name () << "* _tao_retval = 0;\n";
+
+ *os << bt->name () << "* _tao_retval = 0;";
+
+ *os << be_nl << be_nl;
+
return 0;
}
@@ -138,7 +156,10 @@ be_visitor_operation_rettype_vardecl_cs::visit_valuetype_fwd (be_valuetype_fwd *
bt = node;
os->indent ();
- *os << bt->name () << "* _tao_retval = 0;\n";
+ *os << bt->name () << "* _tao_retval = 0;";
+
+ *os << be_nl << be_nl;
+
return 0;
}
@@ -159,19 +180,22 @@ be_visitor_operation_rettype_vardecl_cs::visit_predefined_type (be_predefined_ty
{
case AST_PredefinedType::PT_pseudo:
os->indent ();
- *os << bt->name () << "_ptr _tao_retval = 0;\n";
+ *os << bt->name () << "_ptr _tao_retval = 0;";
break;
case AST_PredefinedType::PT_any:
os->indent ();
- *os << bt->name () << " *_tao_retval = 0;\n";
+ *os << bt->name () << "* _tao_retval = 0;";
break;
case AST_PredefinedType::PT_void:
break;
default:
os->indent ();
- *os << bt->name () << " _tao_retval = 0;\n";
+ *os << bt->name () << " _tao_retval = 0;";
break;
}
+
+ *os << be_nl << be_nl;
+
return 0;
}
@@ -189,7 +213,9 @@ be_visitor_operation_rettype_vardecl_cs::visit_sequence (be_sequence *node)
bt = node;
os->indent ();
- *os << bt->name () << " *_tao_retval = 0;\n";
+ *os << bt->name () << "* _tao_retval = 0;";
+
+ *os << be_nl << be_nl;
return 0;
}
@@ -199,7 +225,9 @@ be_visitor_operation_rettype_vardecl_cs::visit_string (be_string * /* node*/)
TAO_OutStream *os = this->ctx_->stream (); // grab the out stream
os->indent ();
- *os << "char *_tao_retval = 0;\n";
+ *os << "char* _tao_retval = 0;";
+
+ *os << be_nl << be_nl;
return 0;
}
@@ -215,15 +243,20 @@ be_visitor_operation_rettype_vardecl_cs::visit_structure (be_structure *node)
bt = node;
os->indent ();
+
// based on whether we are variable or not, we return a pointer or the
// aggregate type
if (node->size_type () == be_decl::VARIABLE)
- *os << bt->name () << " *_tao_retval = 0;\n";
+ {
+ *os << bt->name () << "* _tao_retval = 0;" << be_nl;
+ }
else
- {
- *os << bt->name () << " _tao_retval;" << be_nl;
- *os << "ACE_OS::memset (&_tao_retval, 0, sizeof (" << bt->name () << "));\n";
- }
+ {
+ *os << bt->name () << " _tao_retval;" << be_nl;
+ *os << "ACE_OS::memset (&_tao_retval, 0, sizeof (" << bt->name () << "));"
+ << be_nl;
+ }
+
return 0;
}
@@ -255,13 +288,18 @@ be_visitor_operation_rettype_vardecl_cs::visit_union (be_union *node)
bt = node;
os->indent ();
+
// based on whether we are variable or not, we return a pointer or the
// aggregate type
if (node->size_type () == be_decl::VARIABLE)
- *os << bt->name () << " *_tao_retval = 0;\n";
+ {
+ *os << bt->name () << "* _tao_retval = 0;";
+ }
else
{
- *os << bt->name () << " _tao_retval;\n";
+ *os << bt->name () << " _tao_retval;";
}
+
+ *os << be_nl;
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp
index b368ff8fc43..88901556894 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp
@@ -89,7 +89,7 @@ be_visitor_operation_rettype_vardecl_ss::visit_interface (be_interface *)
// return type may be some derived class
*os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();\n";
#if 0 /* ASG */
- *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();" << be_nl;
+ *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();\n";
*os << "CORBA::Object_ptr &_tao_ptr_retval = _tao_retval.out ();\n";
#endif
return 0;
@@ -107,10 +107,10 @@ visit_interface_fwd (be_interface_fwd *)
// CORBA::Object_ptr as the type for the return value even though the actual
// return type may be some derived class
#if 0 /* ASG */
- *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();" << be_nl;
+ *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();\n";
*os << "CORBA::Object_ptr &_tao_ptr_retval = _tao_retval.out ();\n";
#endif
- *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();" << be_nl;
+ *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();\n";
return 0;
}
@@ -156,7 +156,7 @@ visit_predefined_type (be_predefined_type *node)
case AST_PredefinedType::PT_pseudo:
os->indent ();
#if 0 /* ASG */
- *os << bt->name () << "_var _tao_retval;" << be_nl;
+ *os << bt->name () << "_var _tao_retval;\n";
*os << bt->name () << "_ptr &_tao_ptr_retval = _tao_retval.out ();\n";
#endif
*os << bt->name () << "_var _tao_retval;\n";
@@ -164,7 +164,7 @@ visit_predefined_type (be_predefined_type *node)
case AST_PredefinedType::PT_any:
os->indent ();
#if 0 /* ASG */
- *os << bt->name () << "_var _tao_retval;" << be_nl;
+ *os << bt->name () << "_var _tao_retval;\n";
*os << bt->name () << "_ptr &_tao_ptr_retval = _tao_retval.out ();\n";
#endif
*os << bt->name () << "_var _tao_retval;\n";
@@ -194,7 +194,7 @@ be_visitor_operation_rettype_vardecl_ss::visit_sequence (be_sequence *node)
os->indent ();
#if 0 /* ASg */
- *os << bt->name () << "_var _tao_retval;" << be_nl;
+ *os << bt->name () << "_var _tao_retval;\n";
*os << bt->name () << " *&_tao_ptr_retval = _tao_retval.out ();\n";
#endif
*os << bt->name () << "_var _tao_retval;\n";
@@ -208,7 +208,7 @@ be_visitor_operation_rettype_vardecl_ss::visit_string (be_string * /* node*/)
os->indent ();
#if 0 /* ASG */
- *os << "CORBA::String_var _tao_retval;" << be_nl;
+ *os << "CORBA::String_var _tao_retval;\n";
*os << "char *&_tao_ptr_retval = _tao_retval.out ();\n";
#endif
*os << "CORBA::String_var _tao_retval;\n";
@@ -232,7 +232,7 @@ be_visitor_operation_rettype_vardecl_ss::visit_structure (be_structure *node)
if (node->size_type () == be_decl::VARIABLE)
{
#if 0 /* ASG */
- *os << bt->name () << "_var _tao_retval;" << be_nl;
+ *os << bt->name () << "_var _tao_retval;\n";
*os << bt->name () << " *&_tao_ptr_retval = _tao_retval.out ();\n";
#endif
*os << bt->name () << "_var _tao_retval;\n";
@@ -275,10 +275,10 @@ be_visitor_operation_rettype_vardecl_ss::visit_union (be_union *node)
if (node->size_type () == be_decl::VARIABLE)
{
#if 0 /* ASG */
- *os << bt->name () << "_var _tao_retval;" << be_nl;
+ *os << bt->name () << "_var _tao_retval;\n";
*os << bt->name () << " *&_tao_ptr_retval = _tao_retval.out ();\n";
#endif
- *os << bt->name () << "_var _tao_retval;" << be_nl;
+ *os << bt->name () << "_var _tao_retval;\n";
}
else
*os << bt->name () << " _tao_retval;\n";
diff --git a/TAO/TAO_IDL/be/be_visitor_rettype.cpp b/TAO/TAO_IDL/be/be_visitor_rettype.cpp
new file mode 100644
index 00000000000..eb1cf5095d9
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_visitor_rettype.cpp
@@ -0,0 +1,3032 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// be_visitor_rettype.cpp
+//
+// = DESCRIPTION
+// Visitor generating the first argument of an ami handler's call
+// back hook method.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "idl.h"
+#include "idl_extern.h"
+#include "be.h"
+
+#include "be_visitor_rettype.h"
+
+ACE_RCSID(be, be_visitor_rettype, "$Id$")
+
+
+// ******************************************************
+// TypeCode Definitions
+// ******************************************************
+
+be_visitor_rettype_ami_handler_result_arg::be_visitor_rettype_ami_handler_result_arg (be_visitor_context *ctx)
+ : be_visitor_scope (ctx),
+ computed_tc_size_ (0),
+ computed_encap_len_ (0),
+ computed_scope_encap_len_ (0),
+ tc_offset_ (0),
+ index_ (-1)
+
+{
+}
+
+be_visitor_rettype_ami_handler_result_arg::~be_visitor_rettype_ami_handler_result_arg (void)
+{
+ this->queue_reset (this->tc_queue_);
+ this->queue_reset (this->compute_queue_);
+}
+
+// the visit methods will be called for the top-level node whose typecode is
+// being generated
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_type (be_type *node)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ // reset the queue
+ this->queue_reset (this->tc_queue_);
+ this->tc_offset_ = 0;
+
+ // check if optimized typecodes are desired OR if the node is involved in
+ // some form of recursion
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_rettype_ami_handler_result_arg::"
+ "visit_type - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ os->indent (); // start from current indentation level
+
+ // generate the typecode information here
+ *os << "static const CORBA::Long _oc_" << node->flatname () << "[] ="
+ << be_nl;
+ *os << "{" << be_idt << "\n";
+
+ // add the sizeof the enum tk_* and the encap length that we do not put into
+ // this array but which will exist in the CDR buffer
+
+ this->tc_offset_ = 4 + 4;
+
+
+ // note that we just need the parameters here and hence we generate the
+ // encapsulation for the parameters
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_rettype_ami_handler_result_arg::"
+ "visit_type - "
+ "codegen for typecode encapsulation failed\n"),
+ -1);
+ }
+ *os << be_uidt << "};" << be_nl;
+
+ *os << "static CORBA::TypeCode _tc_TAO_tc_" << node->flatname ()
+ << " (";
+ switch (node->node_type ())
+ {
+ case AST_Decl::NT_array:
+ *os << "CORBA::tk_array";
+ break;
+ case AST_Decl::NT_enum:
+ *os << "CORBA::tk_enum";
+ break;
+ case AST_Decl::NT_except:
+ *os << "CORBA::tk_except";
+ break;
+ case AST_Decl::NT_interface:
+ *os << "CORBA::tk_objref";
+ break;
+ case AST_Decl::NT_sequence:
+ *os << "CORBA::tk_sequence";
+ break;
+ case AST_Decl::NT_struct:
+ *os << "CORBA::tk_struct";
+ break;
+ case AST_Decl::NT_typedef:
+ *os << "CORBA::tk_alias";
+ break;
+ case AST_Decl::NT_union:
+ *os << "CORBA::tk_union";
+ break;
+ default:
+ return -1; // error
+ }
+
+ *os << ", sizeof (_oc_" << node->flatname ()
+ << "), (char *) &_oc_" << node->flatname ()
+ << ", 0, sizeof (" << node->name () << "));" << be_nl;
+
+ // is our enclosing scope a module? We need this check because for
+ // platforms that support namespaces, the typecode must be declared
+ // extern
+ if (node->is_nested () &&
+ node->defined_in ()->scope_node_type () == AST_Decl::NT_module)
+ {
+ *os << "TAO_NAMESPACE_TYPE (CORBA::TypeCode_ptr)" << be_nl;
+ be_module *module = be_module::narrow_from_scope (node->defined_in ());
+ if (!module || (this->gen_nested_namespace_begin (module) == -1))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_rettype_ami_handler_result_arg::visit_type - "
+ "Error parsing nested name\n"),
+ -1);
+ }
+ *os << "TAO_NAMESPACE_DEFINE (CORBA::TypeCode_ptr, _tc_"
+ << node->local_name () << ", &_tc_TAO_tc_"
+ << node->flatname () << ")" << be_nl;
+ if (this->gen_nested_namespace_end (module) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_rettype_ami_handler_result_arg::visit_type - "
+ "Error parsing nested name\n"),
+ -1);
+ }
+ }
+ else
+ {
+ // outermost scope.
+ *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc_TAO_tc_"
+ << node->flatname () << ";\n\n";
+ }
+ return 0;
+}
+
+// the following needs to be done to deal with the most bizarre behavior of
+// MSVC++ compiler
+int
+be_visitor_rettype_ami_handler_result_arg::gen_nested_namespace_begin (be_module *node)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ UTL_IdListActiveIterator *i;
+
+ i = new UTL_IdListActiveIterator (node->name ());
+ while (!(i->is_done ()))
+ {
+ if (ACE_OS::strcmp (i->item ()->get_string (), "") != 0)
+ {
+ // leave the outermost root scope
+ *os << "TAO_NAMESPACE_BEGIN (" << i->item ()->get_string ()
+ << ")" << be_nl;
+ }
+ i->next ();
+ }
+ delete i;
+ return 0;
+}
+
+// the following needs to be done to deal with the most bizarre behavior of
+// MSVC++ compiler
+int
+be_visitor_rettype_ami_handler_result_arg::gen_nested_namespace_end (be_module *node)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ UTL_IdListActiveIterator *i;
+
+ i = new UTL_IdListActiveIterator (node->name ());
+ while (!(i->is_done ()))
+ {
+ if (ACE_OS::strcmp (i->item ()->get_string (), "") != 0)
+ {
+ // leave the outermost root scope
+ *os << "TAO_NAMESPACE_END" << be_nl;
+ }
+ i->next ();
+ }
+ delete i;
+ return 0;
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_array (be_array *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ return this->visit_type (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_enum (be_enum *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ return this->visit_type (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE:
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN:
+ return this->visit_scope (node);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_enum_val (be_enum_val *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_exception (be_exception *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ return this->visit_type (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE:
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN:
+ return this->visit_scope (node);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_field (be_field *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_interface (be_interface *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ return this->visit_type (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_interface_fwd (be_interface_fwd *)
+{
+ // nothing to do
+ return 0;
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_predefined_type (be_predefined_type *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ // top level typecodes are defined in the CORBA library. If we show up
+ // here, then it is an error
+ break;
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_rettype_ami_handler_result_arg::visit_sequence (be_sequence *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ return this->visit_type (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_typecode_defn::visit_string (be_string *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ // top level typecode for string is not permitted. It has to be a
+ // typedefed string
+ break;
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_typecode_defn::visit_structure (be_structure *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ return this->visit_type (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE:
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN:
+ return this->visit_scope (node);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_typecode_defn::visit_typedef (be_typedef *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ return this->visit_type (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_typecode_defn::visit_union (be_union *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
+ return this->visit_type (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
+ return this->gen_typecode (node);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
+ this->computed_tc_size_ = this->compute_tc_size (node);
+ return ((this->computed_tc_size_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE:
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN:
+ return this->visit_scope (node);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+int
+be_visitor_typecode_defn::visit_union_branch (be_union_branch *node)
+{
+ switch (this->ctx_->sub_state ())
+ {
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE:
+ return this->gen_encapsulation (node);
+ case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN:
+ this->computed_encap_len_ = this->compute_encap_length (node);
+ return ((this->computed_encap_len_ > 0) ? 0 : -1);
+ default:
+ // error
+ break;
+ }
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::")
+ ASYS_TEXT ("visit - bad sub state ")
+ ASYS_TEXT ("in visitor context\n")),
+ -1);
+}
+
+// methods that actually produce the typecode and the encapsulations
+
+
+int
+be_visitor_typecode_defn::gen_typecode (be_array *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // we do not do typecode optimization for anonymous arrays
+
+ *os << "CORBA::tk_array, // typecode kind" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (array) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ *os << this->computed_encap_len_ << ", // encapsulation length"
+ << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::")
+ ASYS_TEXT ("gen_typecode - ")
+ ASYS_TEXT ("gen_encapsulation failed for array\n")),
+ -1);
+ }
+
+ *os << be_uidt << "\n";
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_array *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+ be_type *bt; // base type
+ unsigned long i;
+
+ os->indent (); // start from the current indentation level
+
+ // retrieve the base type
+ bt = be_type::narrow_from_decl (node->base_type ());
+ if (!bt)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_array::gen_encapsulation - "
+ "bad base type\n"),
+ -1);
+ }
+
+ // compute the typecode size
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE);
+ if (bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_encapsulation (array) - ")
+ ASYS_TEXT ("Failed to get typecode size\n")),
+ -1);
+ }
+
+ for (i = 0; i < (node->n_dims () - 1); i++)
+ {
+ unsigned long rem_encap_len;
+
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl;
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ *os << "CORBA::tk_array, // typecode kind" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ rem_encap_len
+ = (node->n_dims () - (i + 1)) * (4 + 4)
+ + (node->n_dims () - (i + 2)) * (4 + 4)
+ + this->computed_tc_size_;
+ *os << rem_encap_len << ", // encapsulation length" << be_idt_nl;
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+
+ // now generate the typecode of the base type
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order\n";
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED);
+ if (bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_array::gen_encapsulation - "
+ "base type typecode gen failed\n"),
+ -1);
+ }
+
+ os->indent ();
+ // now reduce the indentation appropriately
+ for (i = (node->n_dims () - 1); i > 0; i--)
+ {
+ *os << node->dims ()[i] << "," << be_uidt_nl;
+ // size of the dimension which is a 4 byte quantity
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+ *os << node->dims ()[0] << ",\n";
+ // size of the dimension which is a 4 byte quantity
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_enum *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // check if we are repeated
+ const be_visitor_typecode_defn::QNode *qnode =
+ this->queue_lookup (this->tc_queue_, node);
+ if (qnode)
+ {
+ // we are repeated, so we must generate an indirection here
+ *os << "0xffffffff, // indirection" << be_nl;
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ // the offset must point to the tc_kind value of the first occurrence of
+ // this type
+ os->print ("0x%x, // negative offset (%ld)\n",
+ (qnode->offset - this->tc_offset_),
+ (qnode->offset - this->tc_offset_));
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+ else
+ {
+ if (idl_global->opt_tc ())
+ {
+ if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "visit_type - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ *os << "CORBA::tk_enum, // typecode kind" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // reset the compute queue to set the stage for computing our
+ // encapsulation length
+ this->queue_reset (this->compute_queue_);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (enum) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ // reset the compute queue since we must not affect computation of other
+ // nodes
+ this->queue_reset (this->compute_queue_);
+
+ *os << this->computed_encap_len_ << ", // encapsulation length"
+ << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_typecode (enum) - ")
+ ASYS_TEXT ("failed to generate encapsulation\n")),
+ -1);
+ }
+
+ *os << be_uidt << "\n";
+
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_enum *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl;
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // generate repoID
+ this->gen_repoID (node);
+
+ // generate name
+ os->indent ();
+ this->gen_name (node);
+
+ // generate the member count
+ os->indent ();
+ *os << node->member_count () << ", // member count\n";
+ // size of the member length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // hand over to the scope to generate the typecode for elements
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_encapsulation (enum) - ")
+ ASYS_TEXT ("cannot generate typecode for members\n")),
+ -1);
+ }
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_enum_val *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // generate name
+ this->gen_name (node);
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_exception *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // check if we are repeated
+ const be_visitor_typecode_defn::QNode *qnode =
+ this->queue_lookup (this->tc_queue_, node);
+ if (qnode)
+ {
+ // we are repeated, so we must generate an indirection here
+ *os << "0xffffffff, // indirection" << be_nl;
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ // the offset must point to the tc_kind value of the first occurrence of
+ // this type
+ os->print ("0x%x, // negative offset (%ld)\n",
+ (qnode->offset - this->tc_offset_),
+ (qnode->offset - this->tc_offset_));
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "visit_type - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ *os << "CORBA::tk_except, // typecode kind" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // reset the compute queue to set the stage for computing our
+ // encapsulation length
+ this->queue_reset (this->compute_queue_);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (exception) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ // reset the compute queue since we must not affect computation of other
+ // nodes
+ this->queue_reset (this->compute_queue_);
+
+ *os << this->computed_encap_len_ << ", // encapsulation length"
+ << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_typecode (exception) - ")
+ ASYS_TEXT ("failed to generate encapsulation\n")),
+ -1);
+ }
+
+ *os << be_uidt << "\n";
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_exception *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl;
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // generate repoID
+ this->gen_repoID (node);
+
+ // generate name
+ os->indent ();
+ this->gen_name (node);
+
+ // generate the member count
+ os->indent ();
+ *os << node->member_count () << ", // member count\n";
+ // size of the member count
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // hand over to the scope to generate the typecode for elements
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_encapsulation (exception) - ")
+ ASYS_TEXT ("cannot generate typecode for members\n")),
+ -1);
+ }
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_field *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+ be_type *bt; // our type node
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // generate name
+ this->gen_name (node);
+
+ // hand over code generation to our type node
+ bt = be_type::narrow_from_decl (node->field_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_encapsulation (field) - ")
+ ASYS_TEXT ("failed to generate typecode\n")),
+ -1);
+ }
+ // revert the state to what it was before because we may be dealing with
+ // subsequent fields for which we have to be in the "gen scope"
+ // substate
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE);
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_interface *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // check if we are repeated
+ const be_visitor_typecode_defn::QNode *qnode =
+ this->queue_lookup (this->tc_queue_, node);
+ if (qnode)
+ {
+ // we are repeated, so we must generate an indirection here
+ *os << "0xffffffff, // indirection" << be_nl;
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ // the offset must point to the tc_kind value of the first occurrence of
+ // this type
+ os->print ("0x%x, // negative offset (%ld)\n",
+ (qnode->offset - this->tc_offset_),
+ (qnode->offset - this->tc_offset_));
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "visit_type - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ *os << "CORBA::tk_objref, // typecode kind" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // reset the compute queue to set the stage for computing our
+ // encapsulation length
+ this->queue_reset (this->compute_queue_);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (interface) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ // reset the compute queue since we must not affect computation of other
+ // nodes
+ this->queue_reset (this->compute_queue_);
+
+ *os << this->computed_encap_len_ << ", // encapsulation length"
+ << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_typecode (interface) - ")
+ ASYS_TEXT ("failed to generate encapsulation\n")),
+ -1);
+ }
+ *os << be_uidt << "\n";
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_interface *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl;
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // generate repoID
+ this->gen_repoID (node);
+
+ // generate name
+ os->indent ();
+ this->gen_name (node);
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_interface_fwd *)
+{
+ // nothing to do here
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_interface_fwd *)
+{
+ // nothing to be done
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_predefined_type *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from the current indentation level
+
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ switch (node->pt ())
+ {
+ case AST_PredefinedType::PT_void:
+ *os << "CORBA::tk_void,\n\n";
+ break;
+ case AST_PredefinedType::PT_short:
+ *os << "CORBA::tk_short,\n\n";
+ break;
+ case AST_PredefinedType::PT_ushort:
+ *os << "CORBA::tk_ushort,\n\n";
+ break;
+ case AST_PredefinedType::PT_long:
+ *os << "CORBA::tk_long,\n\n";
+ break;
+ case AST_PredefinedType::PT_ulong:
+ *os << "CORBA::tk_ulong,\n\n";
+ break;
+ case AST_PredefinedType::PT_longlong:
+ *os << "CORBA::tk_longlong,\n\n";
+ break;
+ case AST_PredefinedType::PT_ulonglong:
+ *os << "CORBA::tk_ulonglong,\n\n";
+ break;
+ case AST_PredefinedType::PT_float:
+ *os << "CORBA::tk_float,\n\n";
+ break;
+ case AST_PredefinedType::PT_double:
+ *os << "CORBA::tk_double,\n\n";
+ break;
+ case AST_PredefinedType::PT_longdouble:
+ *os << "CORBA::tk_longdouble,\n\n";
+ break;
+ case AST_PredefinedType::PT_boolean:
+ *os << "CORBA::tk_boolean,\n\n";
+ break;
+ case AST_PredefinedType::PT_char:
+ *os << "CORBA::tk_char,\n\n";
+ break;
+ case AST_PredefinedType::PT_octet:
+ *os << "CORBA::tk_octet,\n\n";
+ break;
+ case AST_PredefinedType::PT_any:
+ *os << "CORBA::tk_any,\n\n";
+ break;
+ case AST_PredefinedType::PT_wchar:
+ *os << "CORBA::tk_wchar,\n\n";
+ break;
+ case AST_PredefinedType::PT_pseudo:
+ {
+ if (!ACE_OS::strcmp (node->local_name ()->get_string (), "TypeCode"))
+ *os << "CORBA::tk_TypeCode,\n\n";
+ else
+ if (!ACE_OS::strcmp (node->local_name ()->get_string (), "Object"))
+ {
+ // check if we are repeated
+ const be_visitor_typecode_defn::QNode *qnode =
+ this->queue_lookup (this->tc_queue_, node);
+ if (qnode)
+ {
+ // we are repeated, so we must generate an indirection here
+ *os << "0xffffffff, // indirection" << be_nl;
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ // the offset must point to the tc_kind value of the first occurrence of
+ // this type
+ os->print ("0x%x, // negative offset (%ld)\n",
+ (qnode->offset - this->tc_offset_),
+ (qnode->offset - this->tc_offset_));
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "visit_type - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ *os << "CORBA::tk_objref," << be_nl;
+
+ // reset the compute queue to set the stage for computing our
+ // encapsulation length
+ this->queue_reset (this->compute_queue_);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (predefined) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ // reset the compute queue since we must not affect
+ // computation of other nodes
+ this->queue_reset (this->compute_queue_);
+
+ *os << this->computed_encap_len_
+ << ", // encapsulation length" << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_typecode (predefined objref) - ")
+ ASYS_TEXT ("failed to generate encapsulation\n")),
+ -1);
+ }
+ *os << be_uidt << "\n";
+ }
+ }
+ }
+ break;
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_predefined_type *node)
+{
+ // this one is valid only for "Object"
+ if (!ACE_OS::strcmp (node->local_name ()->get_string (), "Object"))
+ {
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl;
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // generate repoID
+ this->gen_repoID (node);
+
+ // generate name
+ os->indent ();
+ this->gen_name (node);
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_sequence *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // no typecode optimization for anonymous sequences
+
+ *os << "CORBA::tk_sequence, // typecode kind" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // reset the compute queue to set the stage for computing our
+ // encapsulation length
+ this->queue_reset (this->compute_queue_);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (sequence) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ // reset the compute queue since we must not affect computation of other
+ // nodes
+ this->queue_reset (this->compute_queue_);
+
+ *os << this->computed_encap_len_ << ", // encapsulation length"
+ << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_typecode (sequence) - ")
+ ASYS_TEXT ("failed to generate encapsulation\n")),
+ -1);
+ }
+ *os << be_uidt << "\n";
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_sequence *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+ be_type *bt; // base type
+
+ os->indent ();
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order\n";
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // emit typecode of element type
+ bt = be_type::narrow_from_decl (node->base_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_encapsulation (sequence) - ")
+ ASYS_TEXT ("failed to generate typecode\n")),
+ -1);
+ }
+
+ // emit the sequence bounds (0 if unbounded)
+ os->indent ();
+ *os << node->max_size () << ",\n";
+ // size of the bound length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_string *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ // no typecode optimizations for anonymous strings
+
+ os->indent (); // start from the current indentation level
+ // emit the enumeration
+ *os << "CORBA::tk_string, " << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // emit the string bounds (0 if unbounded)
+ *os << node->max_size () << ", // string length\n";
+ // size of the bounds
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_string *)
+{
+ // nothing to be done here
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_structure *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // check if we are repeated
+ const be_visitor_typecode_defn::QNode *qnode =
+ this->queue_lookup (this->tc_queue_, node);
+ if (qnode)
+ {
+ // we are repeated, so we must generate an indirection here
+ *os << "0xffffffff, // indirection" << be_nl;
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ // the offset must point to the tc_kind value of the first occurrence of
+ // this type
+ os->print ("0x%x, // negative offset (%ld)\n",
+ (qnode->offset - this->tc_offset_),
+ (qnode->offset - this->tc_offset_));
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "visit_type - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ *os << "CORBA::tk_struct, // typecode kind" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // reset the compute queue to set the stage for computing our
+ // encapsulation length
+ this->queue_reset (this->compute_queue_);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (struct) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ // reset the compute queue since we must not affect computation of other
+ // nodes
+ this->queue_reset (this->compute_queue_);
+
+ *os << this->computed_encap_len_ << ", // encapsulation length"
+ << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_typecode (structure) - ")
+ ASYS_TEXT ("failed to generate encapsulation\n")),
+ -1);
+ }
+ *os << be_uidt << "\n";
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_structure *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl;
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // generate repoID
+ this->gen_repoID (node);
+
+ // generate name
+ os->indent ();
+ this->gen_name (node);
+
+ // generate the member count
+ os->indent ();
+ *os << node->member_count () << ", // member count\n";
+ // size of the member count
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // hand over to the scope to generate the typecode for elements
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "be_structure: cannot generate typecode for members\n"));
+ return -1;
+ }
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_typedef *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // check if we are repeated
+ const be_visitor_typecode_defn::QNode *qnode =
+ this->queue_lookup (this->tc_queue_, node);
+ if (qnode)
+ {
+ // we are repeated, so we must generate an indirection here
+ *os << "0xffffffff, // indirection" << be_nl;
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ // the offset must point to the tc_kind value of the first occurrence of
+ // this type
+ os->print ("0x%x, // negative offset (%ld)\n",
+ (qnode->offset - this->tc_offset_),
+ (qnode->offset - this->tc_offset_));
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "visit_type - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ *os << "CORBA::tk_alias, // typecode kind for typedefs" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // reset the compute queue to set the stage for computing our
+ // encapsulation length
+ this->queue_reset (this->compute_queue_);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (typedef) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ // reset the compute queue since we must not affect computation of other
+ // nodes
+ this->queue_reset (this->compute_queue_);
+
+ *os << this->computed_encap_len_ << ", // encapsulation length"
+ << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_typecode (typedef) - ")
+ ASYS_TEXT ("failed to generate encapsulation\n")),
+ -1);
+ }
+
+ *os << be_uidt << "\n";
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_typedef *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+ be_type *bt; // base type
+
+ os->indent (); // start from whatever indentation level we were at
+
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl;
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // generate repoID
+ this->gen_repoID (node);
+
+ // generate name
+ os->indent ();
+ this->gen_name (node);
+
+ // generate typecode for the base type
+ bt = be_type::narrow_from_decl (node->base_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_encapsulation (typedef) - ")
+ ASYS_TEXT ("failed to generate typecode\n")),
+ -1);
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_typecode (be_union *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+
+ os->indent (); // start from whatever indentation level we were at
+
+ // check if we are repeated
+ const be_visitor_typecode_defn::QNode *qnode =
+ this->queue_lookup (this->tc_queue_, node);
+ if (qnode)
+ {
+ // we are repeated, so we must generate an indirection here
+ *os << "0xffffffff, // indirection" << be_nl;
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ // the offset must point to the tc_kind value of the first occurrence of
+ // this type
+ os->print ("0x%x, // negative offset (%ld)\n",
+ (qnode->offset - this->tc_offset_),
+ (qnode->offset - this->tc_offset_));
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "visit_type - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ *os << "CORBA::tk_union, // typecode kind" << be_nl;
+ // size of the enum
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // reset the compute queue to set the stage for computing our
+ // encapsulation length
+ this->queue_reset (this->compute_queue_);
+
+ // emit the encapsulation length
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn")
+ ASYS_TEXT ("gen_typecode (union) - ")
+ ASYS_TEXT ("Failed to get encap length\n")),
+ -1);
+ }
+ // reset the compute queue since we must not affect computation of other
+ // nodes
+ this->queue_reset (this->compute_queue_);
+
+ *os << this->computed_encap_len_ << ", // encapsulation length"
+ << be_idt << "\n";
+ // size of the encap length
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // now emit the encapsulation
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_typecode (union) - ")
+ ASYS_TEXT ("failed to generate encapsulation\n")),
+ -1);
+ }
+ *os << be_uidt << "\n";
+ }
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_union *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+ be_type *discrim;
+
+ os->indent (); // start from whatever indentation level we were at
+
+ *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl;
+ // size of the encapsulation byte order flag. Although it is 1 byte, the
+ // aligned size is 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // generate repoID
+ this->gen_repoID (node);
+
+ // generate name
+ os->indent ();
+ this->gen_name (node);
+
+ // generate typecode for discriminant
+ discrim = be_type::narrow_from_decl (node->disc_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED);
+ if (discrim->accept (this) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "be_union: cannot generate typecode for discriminant\n"));
+ return -1;
+ }
+
+ // generate the default used flag
+ os->indent ();
+ *os << node->default_index () << ", // default used index" << be_nl;
+ // size of the default index used
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // generate the member count
+ *os << node->member_count () << ", // member count\n";
+ // size of the member count
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+
+ // hand over to the scope to generate the typecode for elements
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "be_union: cannot generate code for members\n"));
+ return -1;
+ }
+
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::gen_encapsulation (be_union_branch *node)
+{
+ TAO_OutStream *os = this->ctx_->stream (); // output stream
+ be_type *bt; // our type node
+
+ be_union *ub = this->ctx_->be_scope_as_union ();
+
+ ACE_UINT32 buf[1];
+ ACE_OS::memset (buf, 0, sizeof (buf));
+
+ for (unsigned long i = 0;
+ i < node->label_list_length ();
+ ++i)
+ {
+ os->indent ();
+
+ // emit the case label value
+ if (node->label (i)->label_kind () == AST_UnionLabel::UL_label)
+ {
+ AST_Expression *expression = node->label (i)->label_val ();
+ AST_Expression::AST_ExprValue *ev = expression->ev ();
+ switch (ub->udisc_type ())
+ {
+ case AST_Expression::EV_char:
+ os->print ("ACE_IDL_NCTOHL (0x%02.2x)", (unsigned char)ev->u.cval);
+ // size of bool/char aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+ case AST_Expression::EV_bool:
+ os->print ("ACE_IDL_NCTOHL (0x%02.2x)", (unsigned char)ev->u.bval);
+ // size of bool/char aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+ case AST_Expression::EV_wchar:
+ case AST_Expression::EV_short:
+ os->print ("ACE_IDL_NSTOHL (0x%04.4x)", (unsigned short)ev->u.sval);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_ushort:
+ os->print ("ACE_IDL_NSTOHL (0x%04.4x)", (unsigned short)ev->u.usval);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_long:
+ os->print ("0x%08.8x", (unsigned long)ev->u.lval);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_ulong:
+ os->print ("0x%08.8x", ev->u.ulval);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_any:
+ // enum
+ os->print ("0x%08.8x", (unsigned long)ev->u.eval);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_longlong:
+ // unimplemented yet
+
+ default:
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "be_union_branch: (%N:%l) Label value "
+ "type (%d) is invalid\n", ev->et), -1);
+ ACE_NOTREACHED (break;)
+ }
+
+ *os << ", // union case label (evaluated value)" << be_nl;
+ }
+ else
+ {
+ // default case
+ be_union::DefaultValue dv;
+ if (ub->default_value (dv) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode::"
+ "gen_encapsulation (union_branch) - "
+ "computing default value failed\n"),
+ -1);
+ }
+
+ switch (ub->udisc_type ())
+ {
+ case AST_Expression::EV_char:
+ os->print ("ACE_IDL_NCTOHL (0x%02.2x)", (unsigned char)dv.u.char_val);
+ // size of bool/char aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+ case AST_Expression::EV_bool:
+ os->print ("ACE_IDL_NCTOHL (0x%02.2x)", (unsigned char)dv.u.bool_val);
+ // size of bool/char aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+ case AST_Expression::EV_wchar:
+ case AST_Expression::EV_short:
+ os->print ("ACE_IDL_NSTOHL (0x%04.4x)", (unsigned short)dv.u.short_val);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_ushort:
+ os->print ("ACE_IDL_NSTOHL (0x%04.4x)", (unsigned short)dv.u.ushort_val);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_long:
+ os->print ("0x%08.8x", (unsigned long)dv.u.long_val);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_ulong:
+ os->print ("0x%08.8x", (unsigned long)dv.u.ulong_val);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_any:
+ // enum
+ os->print ("0x%08.8x", (unsigned long)dv.u.enum_val);
+ // size of short/wchar aligned to 4 bytes
+ this->tc_offset_ += sizeof (ACE_CDR::ULong);
+ break;
+
+ case AST_Expression::EV_ulonglong:
+ case AST_Expression::EV_longlong:
+ // unimplemented yet
+
+ default:
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "be_union_branch: (%N:%l) Label value "
+ "type (%d) is invalid\n", ub->udisc_type ()),
+ -1);
+ ACE_NOTREACHED (break;)
+ }
+
+ *os << ", // union default label (evaluated value)" << be_nl;
+ }
+
+ // emit name
+ this->gen_name (node);
+
+ // hand over code generation to our type node
+ bt = be_type::narrow_from_decl (node->field_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::gen_encapsulation (union_branch) - ")
+ ASYS_TEXT ("failed to generate typecode\n")),
+ -1);
+ }
+ } // end of for loop
+
+ // revert the state
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE);
+ return 0;
+}
+
+
+// = methods for computing typecode and encapsulation sizes
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_array *node)
+{
+ // 4 bytes for enumeration, 4 bytes for storing encap length val, followed by the
+ // actual encapsulation
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (array) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ return this->computed_tc_size_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_array *node)
+{
+ // Suppose "N" is the number of dimensions, then for a N dimensional array,
+ // we will have N encapsulations. The innermost encapsulation will hold the
+ // typecode of the real base type.
+ // Thus, we will have N byte order flags and dimensions, and N-1 tk_array
+ // enumerations, encapsulation lengths, and dimensions.
+
+ be_type *bt; // base type
+
+ bt = be_type::narrow_from_decl (node->base_type ());
+
+ ACE_CDR::Long encap_len =
+ // N byte order flags and dimensions
+ node->n_dims () * (4 + 4)
+ +
+ // N-1 of tk_array and that many encapsulation lengths
+ (node->n_dims () - 1) * (4 + 4);
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (array) - ")
+ ASYS_TEXT ("cannot compute tc size for base\n")),
+ -1);
+ }
+
+ this->computed_encap_len_ = encap_len + this->computed_tc_size_;
+ return this->computed_encap_len_;
+}
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_enum *node)
+{
+ // while computing the encapsulation length we must keep in mind the typecode
+ // that has gotten generated until this point. Hence, we must first check the
+ // "tc_queue" to ensure if are already there somewhere in a previous
+ // encapsulation in which case we must count only the bytes for the
+ // indirection. If we are not already generated, we must then check if we
+ // have already been counted in the current computation or not by checking
+ // for our presence in the compute queue. In both cases, we only include the
+ // 8 bytes in the computation
+ if (this->queue_lookup (this->tc_queue_, node) ||
+ this->queue_lookup (this->compute_queue_, node))
+ {
+ this->computed_tc_size_ = 4 + 4;
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "compute_tc_size (enum) - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ // 4 bytes for enumeration, 4 bytes for storing encap length val, followed by the
+ // actual encapsulation
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (enum) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ }
+ return this->computed_tc_size_;
+}
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_enum *node)
+{
+ ACE_CDR::Long encap_len;
+ encap_len = 4; // holds the byte order flag
+
+ encap_len +=
+ this->repoID_encap_len (node); // repoID storage
+
+ // do the same thing for the local name
+ encap_len += this->name_encap_len (node);
+
+ encap_len += 4; // to hold the member count
+
+ // save the current value of scope len and start with a fresh one for our
+ // scope length computation
+ if (this->push (this->computed_scope_encap_len_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (enum) - ")
+ ASYS_TEXT ("push failed\n")),
+ -1);
+ }
+ this->computed_scope_encap_len_ = 0;
+
+ // compute encap length for members
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (enum) - ")
+ ASYS_TEXT ("cannot compute scope tc size\n")),
+ -1);
+ }
+
+ this->computed_encap_len_ = encap_len + this->computed_scope_encap_len_;
+
+ // pop off the previous value of computed_scope_len_
+ if (this->pop (this->computed_scope_encap_len_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (enum) - ")
+ ASYS_TEXT ("pop failed\n")),
+ -1);
+ }
+
+ return this->computed_encap_len_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_enum_val *node)
+{
+ this->computed_encap_len_ = this->name_encap_len (node);
+ return this->computed_encap_len_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_exception *node)
+{
+ // while computing the encapsulation length we must keep in mind the typecode
+ // that has gotten generated until this point. Hence, we must first check the
+ // "tc_queue" to ensure if are already there somewhere in a previous
+ // encapsulation in which case we must count only the bytes for the
+ // indirection. If we are not already generated, we must then check if we
+ // have already been counted in the current computation or not by checking
+ // for our presence in the compute queue. In both cases, we only include the
+ // 8 bytes in the computation
+ if (this->queue_lookup (this->tc_queue_, node) ||
+ this->queue_lookup (this->compute_queue_, node))
+ {
+ this->computed_tc_size_ = 4 + 4;
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "compute_tc_size (exception) - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (array) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ }
+ return this->computed_tc_size_;
+}
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_exception *node)
+{
+ ACE_CDR::Long encap_len;
+ encap_len = 4; // holds the byte order flag
+
+ encap_len += this->repoID_encap_len (node); // repoID
+
+ // do the same thing for the local name
+ encap_len += this->name_encap_len (node);
+
+ encap_len += 4; // to hold the member count
+
+ // save the current value of scope len and start with a fresh one for our
+ // scope length computation
+ if (this->push (this->computed_scope_encap_len_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (exception) - ")
+ ASYS_TEXT ("push failed\n")),
+ -1);
+ }
+ this->computed_scope_encap_len_ = 0;
+
+ // compute encap length for members
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (exception) - ")
+ ASYS_TEXT ("cannot compute scope tc size\n")),
+ -1);
+ }
+
+ this->computed_encap_len_ = encap_len + this->computed_scope_encap_len_;
+
+ // pop off the previous value of computed_scope_len_
+ if (this->pop (this->computed_scope_encap_len_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (exception) - ")
+ ASYS_TEXT ("pop failed\n")),
+ -1);
+ }
+
+ return this->computed_encap_len_;
+}
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_field *node)
+{
+ be_type *bt;
+
+ // struct member is represented as the "name" followed by the typecode
+
+ ACE_CDR::Long encap_len =
+ this->name_encap_len (node); // for name
+
+ // add to this, the size of our typecode
+ bt = be_type::narrow_from_decl (node->field_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (array) - ")
+ ASYS_TEXT ("cannot compute tc size\n")),
+ -1);
+ }
+
+ // note that we must add typecode size of base type
+ this->computed_encap_len_ = encap_len + this->computed_tc_size_;
+
+ // revert the sub state
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN);
+
+ return this->computed_encap_len_;
+}
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_interface *node)
+{
+ // while computing the encapsulation length we must keep in mind the typecode
+ // that has gotten generated until this point. Hence, we must first check the
+ // "tc_queue" to ensure if are already there somewhere in a previous
+ // encapsulation in which case we must count only the bytes for the
+ // indirection. If we are not already generated, we must then check if we
+ // have already been counted in the current computation or not by checking
+ // for our presence in the compute queue. In both cases, we only include the
+ // 8 bytes in the computation
+ if (this->queue_lookup (this->tc_queue_, node) ||
+ this->queue_lookup (this->compute_queue_, node))
+ {
+ this->computed_tc_size_ = 4 + 4;
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "compute_tc_size (interface) - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (interface) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ }
+ return this->computed_tc_size_;
+}
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_interface *node)
+{
+ this->computed_encap_len_ = 4; // holds the byte order flag
+
+ this->computed_encap_len_ +=
+ this->repoID_encap_len (node); // for repoID
+
+ // do the same thing for the local name
+ this->computed_encap_len_ +=
+ this->name_encap_len (node);
+
+ return this->computed_encap_len_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_interface_fwd *)
+{
+ return 0;
+}
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_interface_fwd *)
+{
+ return 0;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_predefined_type *node)
+{
+ if (!ACE_OS::strcmp (node->local_name ()->get_string (),
+ "Object")) // not same
+ {
+ // while computing the encapsulation length we must keep in mind the typecode
+ // that has gotten generated until this point. Hence, we must first check the
+ // "tc_queue" to ensure if are already there somewhere in a previous
+ // encapsulation in which case we must count only the bytes for the
+ // indirection. If we are not already generated, we must then check if we
+ // have already been counted in the current computation or not by checking
+ // for our presence in the compute queue. In both cases, we only include the
+ // 8 bytes in the computation
+ if (this->queue_lookup (this->tc_queue_, node) ||
+ this->queue_lookup (this->compute_queue_, node))
+ {
+ this->computed_tc_size_ = 4 + 4;
+ }
+ else
+ {
+
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "compute_tc_size (predefined type) - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (predefined objref) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ }
+ }
+ else
+ this->computed_tc_size_ = 4;
+
+ return this->computed_tc_size_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_predefined_type *node)
+{
+ if (!ACE_OS::strcmp (node->local_name ()->get_string (),
+ "Object")) // not same
+ {
+ this->computed_encap_len_ = 4; // holds the byte order flag
+
+ this->computed_encap_len_ +=
+ this->repoID_encap_len (node); // for repoID
+
+ // do the same thing for the local name
+ this->computed_encap_len_ +=
+ this->name_encap_len (node);
+ }
+ else
+ this->computed_encap_len_ = 0;
+
+ return this->computed_encap_len_;
+}
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_sequence *node)
+{
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (sequence) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ return this->computed_tc_size_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_sequence *node)
+{
+ be_type *bt; // base type
+
+ ACE_CDR::Long encap_len = 4; // holds the byte order flag
+
+ // add the encapsulation length of our base type
+ bt = be_type::narrow_from_decl (node->base_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (sequence) - ")
+ ASYS_TEXT ("cannot compute tc size\n")),
+ -1);
+ }
+
+ this->computed_encap_len_ = encap_len + this->computed_tc_size_;
+ this->computed_encap_len_ += 4; // to hold the max size
+
+ return this->computed_encap_len_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_string *)
+{
+ this->computed_tc_size_ = 4 + 4;
+ return this->computed_tc_size_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_string *)
+{
+ this->computed_encap_len_ = 0;
+ return this->computed_encap_len_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_structure *node)
+{
+ // while computing the encapsulation length we must keep in mind the typecode
+ // that has gotten generated until this point. Hence, we must first check the
+ // "tc_queue" to ensure if are already there somewhere in a previous
+ // encapsulation in which case we must count only the bytes for the
+ // indirection. If we are not already generated, we must then check if we
+ // have already been counted in the current computation or not by checking
+ // for our presence in the compute queue. In both cases, we only include the
+ // 8 bytes in the computation
+ if (this->queue_lookup (this->tc_queue_, node) ||
+ this->queue_lookup (this->compute_queue_, node))
+ {
+ this->computed_tc_size_ = 4 + 4;
+ }
+ else
+ {
+
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "compute_tc_size (structure) - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (structure) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ }
+ return this->computed_tc_size_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_structure *node)
+{
+ ACE_CDR::Long encap_len = 4; // holds the byte order flag
+
+ encap_len += this->repoID_encap_len (node); // repoID
+
+ // do the same thing for the local name
+ encap_len += this->name_encap_len (node);
+
+ encap_len += 4; // to hold the member count
+
+ // save the current value of scope len and start with a fresh one for our
+ // scope length computation
+ if (this->push (this->computed_scope_encap_len_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (struct) - ")
+ ASYS_TEXT ("push failed\n")),
+ -1);
+ }
+ this->computed_scope_encap_len_ = 0;
+
+ // compute encap length for members
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (structure) - ")
+ ASYS_TEXT ("cannot compute scope tc size\n")),
+ -1);
+ }
+
+ this->computed_encap_len_ = encap_len + this->computed_scope_encap_len_;
+
+ // pop off the previous value of computed_scope_len_
+ if (this->pop (this->computed_scope_encap_len_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (struct) - ")
+ ASYS_TEXT ("pop failed\n")),
+ -1);
+ }
+
+ return this->computed_encap_len_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_typedef *node)
+{
+ // while computing the encapsulation length we must keep in mind the typecode
+ // that has gotten generated until this point. Hence, we must first check the
+ // "tc_queue" to ensure if are already there somewhere in a previous
+ // encapsulation in which case we must count only the bytes for the
+ // indirection. If we are not already generated, we must then check if we
+ // have already been counted in the current computation or not by checking
+ // for our presence in the compute queue. In both cases, we only include the
+ // 8 bytes in the computation
+ if (this->queue_lookup (this->tc_queue_, node) ||
+ this->queue_lookup (this->compute_queue_, node))
+ {
+ this->computed_tc_size_ = 4 + 4;
+ }
+ else
+ {
+
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "compute_tc_size (typedef) - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (array) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ }
+ return this->computed_tc_size_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_typedef *node)
+{
+ be_type *bt; // base type
+ ACE_CDR::Long encap_len = 4; // holds the byte order flag
+
+ encap_len +=
+ this->repoID_encap_len (node); // repoID
+
+ // do the same thing for the local name
+ encap_len +=
+ this->name_encap_len (node);
+
+ // add the encapsulation length of our base type
+ bt = be_type::narrow_from_decl (node->base_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (typedef) - ")
+ ASYS_TEXT ("cannot compute tc size\n")),
+ -1);
+ }
+
+ this->computed_encap_len_ = encap_len + this->computed_tc_size_;
+ return this->computed_encap_len_;
+
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_tc_size (be_union *node)
+{
+ // while computing the encapsulation length we must keep in mind the typecode
+ // that has gotten generated until this point. Hence, we must first check the
+ // "tc_queue" to ensure if are already there somewhere in a previous
+ // encapsulation in which case we must count only the bytes for the
+ // indirection. If we are not already generated, we must then check if we
+ // have already been counted in the current computation or not by checking
+ // for our presence in the compute queue. In both cases, we only include the
+ // 8 bytes in the computation
+ if (this->queue_lookup (this->tc_queue_, node) ||
+ this->queue_lookup (this->compute_queue_, node))
+ {
+ this->computed_tc_size_ = 4 + 4;
+ }
+ else
+ {
+ if (idl_global->opt_tc () ||
+ node->in_recursion ())
+ {
+ if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_typecode_defn::"
+ "compute_tc_size (union) - "
+ "queue insert failed\n"),
+ -1);
+ }
+ }
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_tc_size (union) - ")
+ ASYS_TEXT ("cannot compute encap len\n")),
+ -1);
+ }
+
+ this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_;
+ }
+ return this->computed_tc_size_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_union *node)
+{
+ be_type *discrim;
+
+ ACE_CDR::Long encap_len = 4; // holds the byte order flag
+
+ encap_len += this->repoID_encap_len (node); // for repoID
+
+ // do the same thing for the local name
+ encap_len += this->name_encap_len (node); // for name
+
+ // add encapsulation size of discriminant typecode
+ discrim = be_type::narrow_from_decl (node->disc_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE);
+ if (!discrim || discrim->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (union) - ")
+ ASYS_TEXT ("cannot compute tc size\n")),
+ -1);
+ }
+
+ encap_len += this->computed_tc_size_;
+
+ encap_len += 4; // to hold the "default used" flag
+ encap_len += 4; // to hold the member count
+
+ // save the current value of scope len and start with a fresh one for our
+ // scope length computation
+ if (this->push (this->computed_scope_encap_len_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (union) - ")
+ ASYS_TEXT ("push failed\n")),
+ -1);
+ }
+ this->computed_scope_encap_len_ = 0;
+
+ // compute encap length for members
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN);
+ if (node->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (union) - ")
+ ASYS_TEXT ("cannot compute scope tc size\n")),
+ -1);
+ }
+
+ this->computed_encap_len_ = encap_len + this->computed_scope_encap_len_;
+
+ // pop off the previous value of computed_scope_len_
+ if (this->pop (this->computed_scope_encap_len_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (union) - ")
+ ASYS_TEXT ("pop failed\n")),
+ -1);
+ }
+
+ return this->computed_encap_len_;
+}
+
+
+ACE_CDR::Long
+be_visitor_typecode_defn::compute_encap_length (be_union_branch *node)
+{
+ be_type *bt;
+
+ ACE_CDR::Long encap_len = 0;
+
+ for (unsigned long i = 0;
+ i < node->label_list_length ();
+ ++i)
+ {
+ encap_len += 4; // case label;
+ encap_len +=
+ this->name_encap_len (node); // for name
+
+ bt = be_type::narrow_from_decl (node->field_type ());
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE);
+ if (!bt || bt->accept (this) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::compute_encap_len (union branch) - ")
+ ASYS_TEXT ("cannot compute tc size\n")),
+ -1);
+ }
+ encap_len += this->computed_tc_size_;
+ }
+
+ this->computed_encap_len_ = encap_len;
+
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN);
+ return this->computed_encap_len_;
+}
+
+// helpers that accomplish a common task - that of generating the repository
+// IDs and names in a TypeCode description
+
+void
+be_visitor_typecode_defn::gen_repoID (be_decl *node)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+ int flag = 0;
+
+ // check if we want to generate optimized typecodes. In such a case, there is
+ // no need to generate the repoID (unless we are an object reference or an
+ // exception in which case it is mandatory to have the repository ID)
+ // generate repoID
+
+ if (idl_global->opt_tc ())
+ {
+ switch (node->node_type ())
+ {
+ case AST_Decl::NT_interface:
+ case AST_Decl::NT_interface_fwd:
+ case AST_Decl::NT_except:
+ flag = 0;
+ break;
+ case AST_Decl::NT_pre_defined:
+ if (!ACE_OS::strcmp (node->local_name ()->get_string (),
+ "Object"))
+ flag = 0;
+ else
+ flag = 1;
+ break;
+ default:
+ flag = 1;
+ }
+ }
+
+ // XXXASG -- there is still some doubts in my mind about whether repoID
+ // *must* be supplied or not as per spec 2.3a. So I am not going to allow
+ // optimizations here.
+ // flag = 0;
+
+ if (flag)
+ {
+ // optimized case
+ *os << "1, 0x0,";
+ *os << " // repository ID = " << node->repoID ();
+ // size of the repoID filed
+ this->tc_offset_ += (2 * sizeof (ACE_CDR::ULong));
+ }
+ else
+ {
+ // unoptimized case
+ *os << (ACE_OS::strlen (node->repoID ()) + 1) << ", ";
+
+ ACE_CDR::ULong *arr, i, arrlen;
+ (void) this->tc_name2long (node->repoID (), arr, arrlen);
+ for (i = 0; i < arrlen; i++)
+ {
+ os->print ("ACE_NTOHL (0x%x), ", arr[i]);
+ }
+ *os << " // repository ID = " << node->repoID ();
+ // size of the repoID field
+ this->tc_offset_ += (arrlen + 1) * sizeof (ACE_CDR::ULong);
+ }
+ *os << "\n";
+ return;
+}
+
+void
+be_visitor_typecode_defn::gen_name (be_decl *node)
+{
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ // generate name
+ if (idl_global->opt_tc ())
+ {
+ *os << "1, 0x0,";
+ *os << " // name = " << node->local_name ();
+ // size of the name field
+ this->tc_offset_ += (2 * sizeof (ACE_CDR::ULong));
+ }
+ else
+ {
+ ACE_CDR::ULong *arr, i, arrlen;
+ *os << (ACE_OS::strlen (node->local_name ()->get_string ()) + 1) << ", ";
+ (void) this->tc_name2long (node->local_name ()->get_string (), arr, arrlen);
+ for (i = 0; i < arrlen; i++)
+ {
+ os->print ("ACE_NTOHL (0x%x), ", arr[i]);
+ }
+ *os << " // name = " << node->local_name ();
+ // size of the name field
+ this->tc_offset_ += (arrlen + 1) * sizeof (ACE_CDR::ULong);
+ }
+ *os << "\n";
+ return;
+}
+
+// return the length in bytes to hold the repoID inside a typecode. This
+// comprises 4 bytes indicating the length of the string followed by the actual
+// string represented as longs.
+ACE_CDR::ULong
+be_visitor_typecode_defn::repoID_encap_len (be_decl *node)
+{
+ int flag = 0;
+
+ // check if we want to generate optimized typecodes. In such a case, there is
+ // no need to generate the repoID (unless we are an object reference or an
+ // exception in which case it is mandatory to have the repository ID)
+ // generate repoID
+
+ if (idl_global->opt_tc ())
+ {
+ switch (node->node_type ())
+ {
+ case AST_Decl::NT_interface:
+ case AST_Decl::NT_interface_fwd:
+ case AST_Decl::NT_except:
+ flag = 0;
+ break;
+ case AST_Decl::NT_pre_defined:
+ if (!ACE_OS::strcmp (node->local_name ()->get_string (),
+ "Object"))
+ flag = 0;
+ else
+ flag = 1;
+ break;
+ default:
+ flag = 1;
+ }
+ }
+
+ // XXXASG -- there is still some doubts in my mind about whether repoID
+ // *must* be supplied or not as per spec 2.3a. So I am not going to allow
+ // optimizations here.
+ //flag = 0;
+
+ if (flag)
+ {
+ return 4 + 4;
+ }
+ else
+ {
+ ACE_CDR::ULong slen = ACE_OS::strlen (node->repoID ()) + 1;
+ // + 1 for NULL terminating char
+
+ // the number of bytes to hold the string must be a multiple of 4 since this
+ // will be represented as an array of longs
+ return 4 + 4 * (slen/4 + (slen%4 ? 1:0));
+ }
+}
+
+// return the length in bytes to hold the name inside a typecode. This
+// comprises 4 bytes indicating the length of the string followed by the actual
+// string represented as longs.
+ACE_CDR::ULong
+be_visitor_typecode_defn::name_encap_len (be_decl *node)
+{
+ if (idl_global->opt_tc ())
+ {
+ return 4 + 4;
+ }
+ else
+ {
+ ACE_CDR::ULong slen =
+ ACE_OS::strlen (node->local_name ()->get_string ()) + 1;
+
+ // the number of bytes to hold the string must be a multiple of 4 since this
+ // will be represented as an array of longs
+ return 4 + 4 * (slen/4 + (slen%4 ? 1:0));
+ }
+}
+
+// converts a string name into an array of 4 byte longs
+int
+be_visitor_typecode_defn::tc_name2long (const char *name,
+ ACE_CDR::ULong *&larr,
+ ACE_CDR::ULong &arrlen)
+{
+ const int bytes_per_word = sizeof (ACE_CDR::ULong);
+ static ACE_CDR::ULong buf [NAMEBUFSIZE];
+ ACE_CDR::ULong i, slen;
+
+ slen = ACE_OS::strlen (name) + 1; // 1 for NULL terminating
+
+ // compute the number of bytes necessary to hold the name rounded to
+ // the next multiple of 4 (i.e., size of long)
+ arrlen = slen / bytes_per_word + (slen % bytes_per_word ? 1 : 0);
+
+ ACE_OS::memset (buf, 0, sizeof (buf));
+ larr = buf;
+ ACE_OS::memcpy (buf, name, slen);
+ for (i = 0; i < arrlen; i++)
+ larr [i] = ACE_HTONL (larr [i]);
+ return 0;
+}
+
+// post processing
+int
+be_visitor_typecode_defn::post_process (be_decl *)
+{
+ if (this->ctx_->sub_state () == TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN)
+ {
+ this->computed_scope_encap_len_ += this->computed_encap_len_;
+ }
+ return 0;
+}
+
+// scope stack routines
+int
+be_visitor_typecode_defn::push (ACE_CDR::Long val)
+{
+ if (this->index_ >= TAO_BE_VISITOR_TYPECODE_DEFN_MAX_STACK_SIZE)
+ return -1;
+
+ this->scope_stack_ [++this->index_] = val;
+ return 0;
+}
+
+int
+be_visitor_typecode_defn::pop (ACE_CDR::Long &val)
+{
+ if (this->index_ < 0)
+ return -1;
+
+ val = this->scope_stack_[this->index_--];
+ return 0;
+}
+
+const be_visitor_typecode_defn::QNode *
+be_visitor_typecode_defn::
+queue_insert (ACE_Unbounded_Queue <be_visitor_typecode_defn::QNode *> &queue,
+ be_type *node, ACE_CDR::Long offset)
+{
+ be_visitor_typecode_defn::QNode *qnode;
+
+ ACE_NEW_RETURN (qnode, be_visitor_typecode_defn::QNode, 0);
+
+ qnode->node = node;
+ qnode->offset = offset;
+
+ if (queue.enqueue_tail (qnode) == -1)
+ {
+ delete qnode;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn")
+ ASYS_TEXT ("::queue_insert - failed\n")),
+ 0);
+ }
+
+ return qnode;
+}
+
+const be_visitor_typecode_defn::QNode *
+be_visitor_typecode_defn::
+queue_lookup (ACE_Unbounded_Queue <be_visitor_typecode_defn::QNode *> &queue,
+ be_type *node)
+{
+ for (ACE_Unbounded_Queue_Iterator<be_visitor_typecode_defn::QNode *>
+ iter (queue);
+ !iter.done ();
+ iter.advance ())
+ {
+ be_visitor_typecode_defn::QNode **addr, *item;
+ iter.next (addr);
+ item = *addr;
+
+ if (!ACE_OS::strcmp (item->node->fullname (),
+ node->fullname ()))
+ {
+ // found
+ return item;
+ }
+ }
+
+ return 0;
+}
+
+void
+be_visitor_typecode_defn::
+queue_reset (ACE_Unbounded_Queue <be_visitor_typecode_defn::QNode *> &queue)
+{
+ while (!queue.is_empty ())
+ {
+ be_visitor_typecode_defn::QNode *qnode;
+ (void) queue.dequeue_head (qnode);
+ delete qnode;
+ }
+ return;
+}
diff --git a/TAO/TAO_IDL/be/be_visitor_scope.cpp b/TAO/TAO_IDL/be/be_visitor_scope.cpp
index 8ee75eff8df..d7fba5c69c3 100644
--- a/TAO/TAO_IDL/be/be_visitor_scope.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_scope.cpp
@@ -81,7 +81,7 @@ be_visitor_scope::visit_scope (be_scope *node)
this->ctx_->node (bd);
this->elem_number_++;
- // do any pre processing using the next item info
+ // Do any pre processing using the next item info.
if (this->pre_process (bd) == -1)
{
delete si;
@@ -89,7 +89,9 @@ be_visitor_scope::visit_scope (be_scope *node)
"(%N:%l) be_visitor_scope::visit_scope - "
"pre processing failed\n"), -1);
}
- if (bd == 0 || bd->accept (this) == -1)
+
+ // Send the visitor.
+ if (bd == 0 || bd->accept (this) == -1)
{
delete si;
ACE_ERROR_RETURN ((LM_ERROR,
@@ -97,6 +99,8 @@ be_visitor_scope::visit_scope (be_scope *node)
"codegen for scope failed\n"), -1);
}
+
+ // Do any post processing using this item info.
if (this->post_process (bd) == -1)
{
delete si;
diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp
index 134201bca63..90db4fab104 100644
--- a/TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp
@@ -45,7 +45,16 @@ be_visitor_typecode_decl::visit_type (be_type *node)
{
TAO_OutStream *os = this->ctx_->stream ();
- // Generate the typecode decl
+ // Generate the typecode decl.
+ const char *prefix = 0;
+ const char *postfix = 0;
+
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DECL)
+ {
+ prefix = "AMI_";
+ postfix = "_Handler";
+ }
+
if (node->is_nested ())
{
// we have a scoped name
@@ -58,14 +67,14 @@ be_visitor_typecode_decl::visit_type (be_type *node)
else
*os << "static ";
*os << "CORBA::TypeCode_ptr "
- << node->tc_name ()->last_component () << ";\n\n";
+ << node->tc_name (prefix, postfix)->last_component () << ";\n\n";
}
else
{
// we are in the ROOT scope
os->indent ();
*os << "extern " << idl_global->export_macro () << " CORBA::TypeCode_ptr "
- << " " << node->tc_name ()->last_component () << ";\n\n";
+ << " " << node->tc_name (prefix, postfix)->last_component () << ";\n\n";
}
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp
index de32d73c314..79fd133600f 100644
--- a/TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp
@@ -119,23 +119,33 @@ be_visitor_typecode_defn::visit_type (be_type *node)
-1);
}
}
-
+
os->indent (); // start from current indentation level
- // generate the typecode information here
- *os << "static const CORBA::Long _oc_" << node->flatname () << "[] ="
- << be_nl;
+ // Generate the typecode information here
+ *os << "static const CORBA::Long _oc_";
+
+ // Flat name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << node->compute_flatname ("AMI_", "_Handler");
+ else
+ *os << node->flatname ();
+
+ *os << "[] =" << be_nl;
*os << "{" << be_idt << "\n";
- // add the sizeof the enum tk_* and the encap length that we do not put into
- // this array but which will exist in the CDR buffer
+ // Add the sizeof the enum tk_* and the encap length that we do not put into
+ // this array but which will exist in the CDR buffer.
this->tc_offset_ = 4 + 4;
-
-
- // note that we just need the parameters here and hence we generate the
- // encapsulation for the parameters
- this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+
+ // Note that we just need the parameters here and hence we generate the
+ // encapsulation for the parameters.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ this->ctx_->sub_state (TAO_CodeGen::TAO_AMI_HANDLER_TC_DEFN_ENCAPSULATION);
+ else
+ this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION);
+
if (node->accept (this) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
@@ -146,8 +156,17 @@ be_visitor_typecode_defn::visit_type (be_type *node)
}
*os << be_uidt << "};" << be_nl;
- *os << "static CORBA::TypeCode _tc_TAO_tc_" << node->flatname ()
- << " (";
+ // Type code definition.
+ *os << "static CORBA::TypeCode _tc_TAO_tc_";
+
+ // Flat name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << node->compute_flatname ("AMI_", "_Handler");
+ else
+ *os << node->flatname ();
+
+ *os << " (";
+
switch (node->node_type ())
{
case AST_Decl::NT_array:
@@ -178,13 +197,31 @@ be_visitor_typecode_defn::visit_type (be_type *node)
return -1; // error
}
- *os << ", sizeof (_oc_" << node->flatname ()
- << "), (char *) &_oc_" << node->flatname ()
- << ", 0, sizeof (" << node->name () << "));" << be_nl;
+ *os << ", sizeof (_oc_";
+
+ // Flat name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << node->compute_flatname ("AMI_", "_Handler");
+ else
+ *os << node->flatname ();
+
+ *os << "), (char *) &_oc_";
- // is our enclosing scope a module? We need this check because for
+ // Flat name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << node->compute_flatname ("AMI_", "_Handler");
+ else
+ *os << node->flatname ();
+
+ // Name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << ", 0, sizeof (" << node->compute_name ("AMI_", "_Handler") << "));" << be_nl;
+ else
+ *os << ", 0, sizeof (" << node->name () << "));" << be_nl;
+
+ // Is our enclosing scope a module? We need this check because for
// platforms that support namespaces, the typecode must be declared
- // extern
+ // extern.
if (node->is_nested () &&
node->defined_in ()->scope_node_type () == AST_Decl::NT_module)
{
@@ -197,9 +234,24 @@ be_visitor_typecode_defn::visit_type (be_type *node)
"Error parsing nested name\n"),
-1);
}
- *os << "TAO_NAMESPACE_DEFINE (CORBA::TypeCode_ptr, _tc_"
- << node->local_name () << ", &_tc_TAO_tc_"
- << node->flatname () << ")" << be_nl;
+ *os << "TAO_NAMESPACE_DEFINE (CORBA::TypeCode_ptr, _tc_";
+
+ // Local name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << "AMI_" << node->local_name () << "_Handler";
+ else
+ *os << node->local_name ();
+
+ *os << ", &_tc_TAO_tc_";
+
+ // Flat name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << node->compute_flatname ("AMI_", "_Handler");
+ else
+ *os << node->flatname ();
+
+ *os << ")" << be_nl;
+
if (this->gen_nested_namespace_end (module) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
@@ -211,8 +263,23 @@ be_visitor_typecode_defn::visit_type (be_type *node)
else
{
// outermost scope.
- *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc_TAO_tc_"
- << node->flatname () << ";\n\n";
+ *os << "CORBA::TypeCode_ptr ";
+
+ // Tc name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << node->tc_name ("AMI_", "_Handler");
+ else
+ *os << node->tc_name ();
+
+ *os << " = &_tc_TAO_tc_";
+
+ // Flat name generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << node->compute_flatname ("AMI_", "_Handler");
+ else
+ *os << node->flatname ();
+
+ *os << ";\n\n";
}
return 0;
}
@@ -226,8 +293,10 @@ be_visitor_typecode_defn::visit_array (be_array *node)
return this->visit_type (node);
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -254,8 +323,10 @@ be_visitor_typecode_defn::visit_enum (be_enum *node)
return this->visit_type (node);
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -306,8 +377,10 @@ be_visitor_typecode_defn::visit_exception (be_exception *node)
return this->visit_type (node);
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -354,12 +427,17 @@ be_visitor_typecode_defn::visit_interface (be_interface *node)
{
switch (this->ctx_->sub_state ())
{
+ case TAO_CodeGen::TAO_AMI_HANDLER_TC_DEFN_TYPECODE:
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE:
return this->visit_type (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
+ case TAO_CodeGen::TAO_AMI_HANDLER_TC_DEFN_ENCAPSULATION:
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -395,8 +473,10 @@ be_visitor_typecode_defn::visit_predefined_type (be_predefined_type *node)
break;
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -423,8 +503,10 @@ be_visitor_typecode_defn::visit_sequence (be_sequence *node)
return this->visit_type (node);
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -453,8 +535,10 @@ be_visitor_typecode_defn::visit_string (be_string *node)
break;
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -481,8 +565,10 @@ be_visitor_typecode_defn::visit_structure (be_structure *node)
return this->visit_type (node);
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -512,8 +598,10 @@ be_visitor_typecode_defn::visit_typedef (be_typedef *node)
return this->visit_type (node);
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -540,8 +628,10 @@ be_visitor_typecode_defn::visit_union (be_union *node)
return this->visit_type (node);
case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED:
return this->gen_typecode (node);
+
case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION:
return this->gen_encapsulation (node);
+
case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE:
this->computed_tc_size_ = this->compute_tc_size (node);
return ((this->computed_tc_size_ > 0) ? 0 : -1);
@@ -1079,10 +1169,10 @@ be_visitor_typecode_defn::gen_encapsulation (be_interface *node)
// aligned size is 4 bytes
this->tc_offset_ += sizeof (ACE_CDR::ULong);
- // generate repoID
+ // generate repoID.
this->gen_repoID (node);
- // generate name
+ // generate name.
os->indent ();
this->gen_name (node);
@@ -2784,22 +2874,44 @@ be_visitor_typecode_defn::gen_repoID (be_decl *node)
{
// optimized case
*os << "1, 0x0,";
- *os << " // repository ID = " << node->repoID ();
+ *os << " // repository ID = ";
+
+ // repoID generation.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << node->compute_repoID ("AMI_", "_Handler");
+ else
+ *os << node->repoID ();
+
// size of the repoID filed
this->tc_offset_ += (2 * sizeof (ACE_CDR::ULong));
}
else
{
- // unoptimized case
- *os << (ACE_OS::strlen (node->repoID ()) + 1) << ", ";
+ // Unoptimized case.
+
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << (ACE_OS::strlen (node->compute_repoID ("AMI_", "_Handler")) + 1) << ", ";
+ else
+ *os << (ACE_OS::strlen (node->repoID ()) + 1) << ", ";
ACE_CDR::ULong *arr, i, arrlen;
- (void) this->tc_name2long (node->repoID (), arr, arrlen);
+
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ (void) this->tc_name2long (node->compute_repoID ("AMI_", "_Handler"), arr, arrlen);
+ else
+ (void) this->tc_name2long (node->repoID (), arr, arrlen);
+
for (i = 0; i < arrlen; i++)
{
os->print ("ACE_NTOHL (0x%x), ", arr[i]);
}
- *os << " // repository ID = " << node->repoID ();
+
+ // Comment.
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << " // repository ID = " << node->compute_repoID ("AMI_", "_Handler");
+ else
+ *os << " // repository ID = " << node->repoID ();
+
// size of the repoID field
this->tc_offset_ += (arrlen + 1) * sizeof (ACE_CDR::ULong);
}
@@ -2812,7 +2924,10 @@ be_visitor_typecode_defn::gen_name (be_decl *node)
{
TAO_OutStream *os = this->ctx_->stream ();
- // generate name
+ // @@ AMI code generation should be done for this optimized
+ // case. (Alex).
+
+ // Generate name.
if (idl_global->opt_tc ())
{
*os << "1, 0x0,";
@@ -2823,14 +2938,29 @@ be_visitor_typecode_defn::gen_name (be_decl *node)
else
{
ACE_CDR::ULong *arr, i, arrlen;
- *os << (ACE_OS::strlen (node->local_name ()->get_string ()) + 1) << ", ";
- (void) this->tc_name2long (node->local_name ()->get_string (), arr, arrlen);
+
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ {
+ *os << (ACE_OS::strlen (node->compute_local_name ("AMI_", "_Handler")->get_string ()) + 1) << ", ";
+ (void) this->tc_name2long (node->compute_local_name ("AMI_", "_Handler")->get_string (), arr, arrlen);
+ }
+ else
+ {
+ *os << (ACE_OS::strlen (node->local_name ()->get_string ()) + 1) << ", ";
+ (void) this->tc_name2long (node->local_name ()->get_string (), arr, arrlen);
+ }
+
for (i = 0; i < arrlen; i++)
{
os->print ("ACE_NTOHL (0x%x), ", arr[i]);
}
- *os << " // name = " << node->local_name ();
- // size of the name field
+
+ if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN)
+ *os << " // name = " << node->compute_local_name ("AMI_", "_Handler");
+ else
+ *os << " // name = " << node->local_name ();
+
+ // size of the name field.
this->tc_offset_ += (arrlen + 1) * sizeof (ACE_CDR::ULong);
}
*os << "\n";
diff --git a/TAO/TAO_IDL/be_include/be_codegen.h b/TAO/TAO_IDL/be_include/be_codegen.h
index 6786f1cc461..19edeafc611 100644
--- a/TAO/TAO_IDL/be_include/be_codegen.h
+++ b/TAO/TAO_IDL/be_include/be_codegen.h
@@ -288,19 +288,72 @@ public:
// Emitting code for AMI.
TAO_OPERATION_AMI_CH, // AMI stub generation.
TAO_OPERATION_AMI_CS, // AMI stub generation.
- TAO_OPERATION_AMI_ARGLIST, // AMI stubs in client header
+ TAO_OPERATION_AMI_ARGLIST_CH, // AMI stubs in client header
+ TAO_OPERATION_AMI_ARGLIST_CS, // AMI stubs in client cpp.
TAO_OPERATION_ARG_AMI, // AMI stub.
TAO_ARGUMENT_AMI, // Argument in AMI stub.
- TAO_ARGUMENT_AMI_ARGLIST, // Arg list in AMI stub.
+ TAO_ARGUMENT_AMI_ARGLIST_CH, // Arg list in AMI stub.
+ TAO_ARGUMENT_AMI_ARGLIST_CS, // Arg list in AMI stub.
TAO_AMI_HANDLER_FWD_CH, // FWD decl for AMI handler.
TAO_AMI_HANDLER_FWD_CI, // FWD decl for AMI handler.
- // @ Alex: FWD does nt make sense.
- // Should rename it.
- TAO_AMI_HANDLER_CH,
- TAO_AMI_HANDLER_OPERATION_CH,
- TAO_AMI_HANDLER_OPERATION_ARGLIST,
- TAO_ARGUMENT_AMI_HANDLER_ARGLIST,
+
+ TAO_AMI_HANDLER_SERVANT_CH, // POA_AMI_*_Handler.
+ TAO_AMI_HANDLER_SERVANT_CS, // POA_AMI_*_Handler.
+
+ TAO_AMI_HANDLER_STUB_CH, // AMI_*_Handler class visitor.
+
+ TAO_AMI_HANDLER_STUB_CS, // AMI_*_Handler class visitor.
+
+ TAO_AMI_HANDLER_SERVANT_OPERATION_CH, // Operation in AMI_*_Handler.
+ TAO_AMI_HANDLER_STUB_OPERATION_CH, // Operation in POA_AMI_*_Handler.
+ TAO_AMI_HANDLER_OPERATION_ARGLIST_CH,
+ TAO_AMI_HANDLER_OPERATION_ARGLIST_CS,
+ TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CH,
+ TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CS,
TAO_ARGUMENT_ARGLIST_AMI_HANDLER,
+ TAO_AMI_HANDLER_OPERATION_RESULT_ARG,
+
+ TAO_AMI_HANDLER_TYPECODE_DECL, // Typecode decl for the AMI_*_Handler.
+
+ TAO_COLLOCATED_AMI_HANDLER_CH, // Collocated AMI_*_Handler class.
+
+ TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH, // Operation inside the collocated AMI handler.
+
+// @@ Michael TAO_AMI_HANDLER_ARGUMENT_INVOKE_CS,
+
+// @@ Michael TAO_AMI_HANDLER_OPERATION_ARG_INVOKE_CS,
+
+ TAO_AMI_HANDLER_STUB_OPERATION_CS,
+
+ TAO_AMI_HANDLER_TYPECODE_DEFN, // Typecode definition for AMI Handler class.
+
+ TAO_AMI_OPERATION_ARG_INVOKE_CS, // Invoke arguments for AMI's sendc method.
+
+ TAO_AMI_ARGUMENT_INVOKE_CS,
+
+ TAO_AMI_HANDLER_SKELETON_CS,
+
+ TAO_AMI_HANDLER_OPERATION_RETVAL_DECL_CS, // Result argument declaration.
+
+ TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS, // Argument declartion.
+
+ TAO_AMI_HANDLER_ARGUMENT_VARDECL_CS, // State derived out of the above
+
+ TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS, // Argument list for the upcall
+ // (only out and inout arguments)
+ TAO_AMI_HANDLER_ARGUMENT_UPCALL_CS, // State derived out of the above
+
+ TAO_AMI_HANDLER_OPERATION_RETVAL_MARSHAL_CS, // Marshalling the return value
+
+ TAO_AMI_HANDLER_OPERATION_RETVAL_DEMARSHAL_CS, // Demarshalling the return value
+
+ TAO_AMI_HANDLER_OPERATION_ARG_MARSHAL_CS, // Marshalling the inout and out arguments
+
+ TAO_AMI_HANDLER_ARGUMENT_MARSHAL_CS, // State derived out of the above
+
+ TAO_AMI_HANDLER_OPERATION_ARG_DEMARSHAL_CS, // Demarshalling the inout and out arguments
+
+ TAO_AMI_HANDLER_ARGUMENT_DEMARSHAL_CS, // State derived out of the above
// Emitting code for root.
TAO_ROOT_CH,
@@ -424,12 +477,17 @@ public:
// these are for typecode generation
TAO_TC_DEFN_TYPECODE, // top level typecode
TAO_TC_DEFN_TYPECODE_NESTED, // nested tc
+
TAO_TC_DEFN_ENCAPSULATION, // encapsulation
+ TAO_AMI_HANDLER_TC_DEFN_ENCAPSULATION, // encapsulation
+
TAO_TC_DEFN_SCOPE, // scope
TAO_TC_DEFN_TC_SIZE, // tc size computation
TAO_TC_DEFN_ENCAP_LEN, // encap size computation
TAO_TC_DEFN_SCOPE_LEN, // scope size computation
+ TAO_AMI_HANDLER_TC_DEFN_TYPECODE, // For AMI Handler interface.
+
// used to denote either error or don't care
TAO_SUB_STATE_UNKNOWN
};
diff --git a/TAO/TAO_IDL/be_include/be_decl.h b/TAO/TAO_IDL/be_include/be_decl.h
index cea43133eda..8760544110b 100644
--- a/TAO/TAO_IDL/be_include/be_decl.h
+++ b/TAO/TAO_IDL/be_include/be_decl.h
@@ -66,15 +66,37 @@ public:
const char *fullname (void);
// return the stringified full name
+ const char *ami_handler_fullname (void);
+ // return the stringified full name of the assosciated AMI reply handler.
+
const char *flatname (void);
- // return the flattened full scoped name
+ // return the flattened full scoped name.
+
+ const char *ami_handler_flatname (void);
+ // return the flattened full scoped name of the assosciated AMI reply handler.
+ char* compute_flatname (const char *prefix, const char *suffix);
+ // Both the arguments should be non-null!!!. Applies prefix and
+ // suffix to the local name and makes a flat name.
const char *repoID (void);
- // retrieve the repository ID
+ // retrieve the repository ID.
+
+ const char *ami_handler_repoID (void);
+ // retrieve the repository ID of the assosciated AMI reply handler.
+
+ char *compute_repoID (const char *prefix, const char *suffix);
+ // Apply the prefix and suffix to the local name and compute the
+ // repoID. Both the parameters should be non-null.
+
+ int compute_ami_handler_name (const char *name,
+ char *&ami_handler_name);
+ // Computes the name of the corresponding AMI handler out of a
+ // given name. The name might contain POA_ at the beginning
+ // and might possibly have many scope levels.
const char* prefix (void);
- // retrive the repository ID prefix
+ // retrieve the repository ID prefix
virtual idl_bool is_nested (void);
// determines if we are inside of a nested scope or not
@@ -160,13 +182,21 @@ protected:
char *fullname_;
// our full scoped name
+ char *ami_handler_fullname_;
+ // our full scoped name of the associated AMI reply handler
+
char *flatname_;
// flattened fully scoped name
+ char *ami_handler_flatname_;
+ // flattened fully scoped name of the associated AMI reply handler
char *repoID_;
// repository ID
+ char *ami_handler_repoID_;
+ // repository ID of the associated AMI reply handler
+
char *prefix_;
// The repository ID prefix
diff --git a/TAO/TAO_IDL/be_include/be_interface.h b/TAO/TAO_IDL/be_include/be_interface.h
index 4f408ad8393..e47fece8262 100644
--- a/TAO/TAO_IDL/be_include/be_interface.h
+++ b/TAO/TAO_IDL/be_include/be_interface.h
@@ -90,6 +90,9 @@ public:
const char *full_skel_name (void);
// Retrieve the fully scoped skel class name.
+ const char *ami_handler_full_skel_name (void);
+ // Retrieve the fully scoped skel AMI handler class name
+
//
// Each interface (to fix names "T") also defines two help classes,
// the "collocated" class inherits from T, but delegates on the
@@ -102,10 +105,26 @@ public:
// @@ TODO currently the stub class is not implemented.
//
const char *full_coll_name (int);
- // retrieve the fully qualified collocated class name
+ // Retrieve the fully qualified collocated class name
+
+ const char *ami_handler_full_coll_name (void);
+ // Retrieve the fully qualified collocated AMI handler class name
const char *local_coll_name (int) const;
- // retrieve the fully qualified collocated class name
+ // Retrieve the fully qualified collocated class name.
+
+ const char *ami_handler_local_coll_name (void);
+ // Retrieve the fully qualified collocated AMI handler class name.
+
+ const char *ami_handler_local_name (void);
+ // Retrieve the local name of the AMI handler
+
+ int compute_coll_names (const char *local_name,
+ char *&coll_local_name,
+ char *&coll_full_name);
+ // Generate collocated local and full names for the arbitrary local
+ // name under the scope of this interface. Usefull to generate AMI
+ // Handlers.
virtual int traverse_inheritance_graph (tao_code_emitter gen,
TAO_OutStream *os);
@@ -233,14 +252,26 @@ private:
char *full_skel_name_;
// Fully scoped skeleton name.
+ char *ami_handler_full_skel_name_;
+ // Fully scoped AMI Handler skeleton name
+
int skel_count_;
// Number of static skeletons in the operation table.
char *full_coll_name_;
- // full collocated name
+ // Full collocated name
+
+ char *ami_handler_full_coll_name_;
+ // Full collocated name of the AMI handler
char *local_coll_name_;
- // local collocated name
+ // Local collocated name
+
+ char *ami_handler_local_coll_name_;
+ // Local collocated name of the AMI handler
+
+ char *ami_handler_local_name_;
+ // Local name of the AMI Handler
int in_mult_inheritance_;
// am I directly or indirectly involved in a multiple inheritance. If the
diff --git a/TAO/TAO_IDL/be_include/be_type.h b/TAO/TAO_IDL/be_include/be_type.h
index 61d10187d47..f1b16123b58 100644
--- a/TAO/TAO_IDL/be_include/be_type.h
+++ b/TAO/TAO_IDL/be_include/be_type.h
@@ -64,8 +64,12 @@ public:
// If any one of the argument is 0, then use the name giin this
// node, else use the arguments. );
- UTL_ScopedName *tc_name (void);
- // return the typecode name
+ UTL_ScopedName *tc_name (const char *prefix = 0,
+ const char *suffix = 0);
+ // Return the typecode name. When both, the prefix and the suffix
+ // are non null, it computes and returns a tc name. Else, it also
+ // stores the result in a member variable.
+
virtual const char *nested_type_name (be_decl *d,
const char *suffix = 0,
@@ -94,6 +98,10 @@ protected:
virtual void compute_tc_name (void);
// computes the fully scoped typecode name
+ virtual UTL_ScopedName * compute_tc_name (const char *prefix,
+ const char *suffix);
+ // Compute and return the value.
+
UTL_ScopedName *tc_name_;
// typecode name
diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument.h b/TAO/TAO_IDL/be_include/be_visitor_argument.h
index 0f9fdf3a6f4..78f39acb854 100644
--- a/TAO/TAO_IDL/be_include/be_visitor_argument.h
+++ b/TAO/TAO_IDL/be_include/be_visitor_argument.h
@@ -41,4 +41,9 @@
#include "be_visitor_argument/pre_invoke_cs.h"
#include "be_visitor_argument/ami_arglist.h"
#include "be_visitor_argument/ami_handler_arglist.h"
+#include "be_visitor_argument/ami_handler_result_arg.h"
+#include "be_visitor_argument/ami_handler_compiled_marshal_cs.h"
+#include "be_visitor_argument/ami_handler_upcall_cs.h"
+#include "be_visitor_argument/ami_handler_vardecl_cs.h"
+
#endif /* _BE_VISITOR_ARGUMENT_H */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h
new file mode 100644
index 00000000000..11d8bef925f
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h
@@ -0,0 +1,89 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_compiled_marshal_cs.h
+//
+// = DESCRIPTION
+// Visitors for generation of code for Arguments for passing the arguments
+// to the CDR << and >> operators
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_ARGUMENT_ami_handler_compiled_marshal_cs_H_
+#define _BE_VISITOR_ARGUMENT_ami_handler_compiled_marshal_cs_H_
+
+// ************************************************************
+// class be_visitor_args_ami_handler_compiled_marshal_cs
+// ************************************************************
+class be_visitor_args_ami_handler_compiled_marshal_cs : public be_visitor_args
+{
+ //
+ // = TITLE
+ // be_visitor_args_ami_handler_compiled_marshal_cs
+ //
+ // = DESCRIPTION
+ // Code to be generated when making the do_static_call
+ //
+public:
+ be_visitor_args_ami_handler_compiled_marshal_cs (be_visitor_context *ctx);
+ // constructor
+
+ virtual ~be_visitor_args_ami_handler_compiled_marshal_cs (void);
+ // destructor
+
+ virtual int visit_argument (be_argument *node);
+ // visit the argument node
+
+ // =visit all the nodes that can be the types for the argument
+
+ virtual int visit_array (be_array *node);
+ // visit array type
+
+ virtual int visit_enum (be_enum *node);
+ // visit the enum node
+
+ virtual int visit_interface (be_interface *node);
+ // visit interface
+
+ virtual int visit_interface_fwd (be_interface_fwd *node);
+ // visit interface forward
+
+#ifdef IDL_HAS_VALUETYPE
+ virtual int visit_valuetype (be_valuetype *node);
+ // visit valuetype
+
+ virtual int visit_valuetype_fwd (be_valuetype_fwd *node);
+ // visit valuetype forward
+#endif /* IDL_HAS_VALUETYPE */
+
+ virtual int visit_predefined_type (be_predefined_type *node);
+ // visit predefined type
+
+ virtual int visit_sequence (be_sequence *node);
+ // visit sequence type
+
+ virtual int visit_string (be_string *node);
+ // visit string type
+
+ virtual int visit_structure (be_structure *node);
+ // visit structure type
+
+ virtual int visit_union (be_union *node);
+ // visit union type
+
+ virtual int visit_typedef (be_typedef *node);
+ // visit the typedef type
+
+};
+
+#endif /* _BE_VISITOR_ARGUMENT_ami_handler_compiled_marshal_cs_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h
new file mode 100644
index 00000000000..67e4d85b4a7
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h
@@ -0,0 +1,86 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_result_arg.h
+//
+// = DESCRIPTION
+// Visitor for generating code for IDL operations. This generates the return
+// type of the operation
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_ARGS_AMI_HANDLER_RESULT_ARG_H_
+#define _BE_VISITOR_ARGS_AMI_HANDLER_RESULT_ARG_H_
+
+// ***********************************************************************
+// Operation visitor for return types in the signature of the operation
+// ***********************************************************************
+
+class be_visitor_args_ami_handler_result_arg : public be_visitor_args
+{
+ //
+ // = TITLE
+ // be_visitor_args_ch
+ //
+ // = DESCRIPTION
+ // This is a visitor to generate operation return types
+ //
+ //
+public:
+ be_visitor_args_ami_handler_result_arg (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_args_ami_handler_result_arg (void);
+ // destructor
+
+ int visit_array (be_array *node);
+ // visit an array node
+
+ int visit_enum (be_enum *node);
+ // visit an enum node
+
+ int visit_interface (be_interface *node);
+ // visit an interface node
+
+ int visit_interface_fwd (be_interface_fwd *node);
+ // visit an interface node
+
+ int visit_native (be_native *node);
+ // visit native type
+
+ int visit_predefined_type (be_predefined_type *node);
+ // visit a predefined type node
+
+ int visit_sequence (be_sequence *node);
+ // visit a sequence node
+
+ int visit_string (be_string *node);
+ // visit a sequence node
+
+ int visit_structure (be_structure *node);
+ // visit a structure node
+
+ int visit_typedef (be_typedef *node);
+ // visit a typedef node
+
+ int visit_union (be_union *node);
+ // visit a union node
+
+# ifdef IDL_HAS_VALUETYPE
+ int visit_valuetype (be_valuetype *node);
+ int visit_valuetype_fwd (be_valuetype_fwd *node);
+# endif /* IDL_HAS_VALUETYPE */
+
+};
+
+#endif /* _BE_VISITOR_ARGS_AMI_HANDLER_RESULT_ARG_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h
new file mode 100644
index 00000000000..a1da8fe0ed2
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h
@@ -0,0 +1,90 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_upcall_cs.h
+//
+// = DESCRIPTION
+// Visitors for generation of code for Arguments. This generates the
+// passing of arguments to the upcall.
+//
+// = AUTHOR
+// Aniruddha Gokhale
+// Michael Kircher
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_ARGUMENT_upcall_cs_H_
+#define _BE_VISITOR_ARGUMENT_upcall_cs_H_
+
+// ************************************************************
+// class be_visitor_args_ami_handler_upcall_cs
+// ************************************************************
+class be_visitor_args_ami_handler_upcall_cs : public be_visitor_args
+{
+ //
+ // = TITLE
+ // be_visitor_args_ami_handler_upcall_cs
+ //
+ // = DESCRIPTION
+ // Visitor for passing argument to the upcall
+ //
+public:
+ be_visitor_args_ami_handler_upcall_cs (be_visitor_context *ctx);
+ // constructor
+
+ virtual ~be_visitor_args_ami_handler_upcall_cs (void);
+ // destructor
+
+ virtual int visit_argument (be_argument *node);
+ // visit the argument node
+
+ // =visit all the nodes that can be the types for the argument
+
+ virtual int visit_array (be_array *node);
+ // visit array type
+
+ virtual int visit_enum (be_enum *node);
+ // visit the enum node
+
+ virtual int visit_interface (be_interface *node);
+ // visit interface
+
+ virtual int visit_interface_fwd (be_interface_fwd *node);
+ // visit interface forward
+
+#ifdef IDL_HAS_VALUETYPE
+ virtual int visit_valuetype (be_valuetype *node);
+ // visit valuetype
+
+ virtual int visit_valuetype_fwd (be_valuetype_fwd *node);
+ // visit valuetype forward
+#endif /* IDL_HAS_VALUETYPE */
+
+ virtual int visit_predefined_type (be_predefined_type *node);
+ // visit predefined type
+
+ virtual int visit_sequence (be_sequence *node);
+ // visit sequence type
+
+ virtual int visit_string (be_string *node);
+ // visit string type
+
+ virtual int visit_structure (be_structure *node);
+ // visit structure type
+
+ virtual int visit_union (be_union *node);
+ // visit union type
+
+ virtual int visit_typedef (be_typedef *node);
+ // visit the typedef type
+
+};
+
+#endif /* _BE_VISITOR_ARGUMENT_upcall_cs_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h
new file mode 100644
index 00000000000..fd2d80db63f
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h
@@ -0,0 +1,126 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_vardecl_cs.h
+//
+// = DESCRIPTION
+// Visitors for generation of code for Arguments. This generates the
+// variable declartion for the argument in the server-sde skeleton
+//
+// = AUTHOR
+// Aniruddha Gokhale
+// Michael Kircher
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_ARGUMENT_ami_handler_vardecl_cs_H_
+#define _BE_VISITOR_ARGUMENT_ami_handler_vardecl_cs_H_
+
+// ************************************************************
+// class be_visitor_args_ami_handler_vardecl_cs
+// ************************************************************
+class be_visitor_args_ami_handler_vardecl_cs : public be_visitor_args
+{
+ //
+ // = TITLE
+ // be_visitor_args_ami_handler_vardecl_cs
+ //
+ // = DESCRIPTION
+ // Visitor for variable declaration for argument
+ //
+public:
+ be_visitor_args_ami_handler_vardecl_cs (be_visitor_context *ctx);
+ // constructor
+
+ virtual ~be_visitor_args_ami_handler_vardecl_cs (void);
+ // destructor
+
+ virtual int visit_argument (be_argument *node);
+ // visit the argument node
+
+ // =visit all the nodes that can be the types for the argument
+
+ virtual int visit_array (be_array *node);
+ // visit array type
+
+ virtual int visit_enum (be_enum *node);
+ // visit the enum node
+
+ virtual int visit_interface (be_interface *node);
+ // visit interface
+
+ virtual int visit_interface_fwd (be_interface_fwd *node);
+ // visit interface forward
+
+#ifdef IDL_HAS_VALUETYPE
+ virtual int visit_valuetype (be_valuetype *node);
+ // visit valuetype
+
+ virtual int visit_valuetype_fwd (be_valuetype_fwd *node);
+ // visit valuetype forward
+#endif /* IDL_HAS_VALUETYPE */
+
+ virtual int visit_predefined_type (be_predefined_type *node);
+ // visit predefined type
+
+ virtual int visit_sequence (be_sequence *node);
+ // visit sequence type
+
+ virtual int visit_string (be_string *node);
+ // visit string type
+
+ virtual int visit_structure (be_structure *node);
+ // visit structure type
+
+ virtual int visit_union (be_union *node);
+ // visit union type
+
+ virtual int visit_typedef (be_typedef *node);
+ // visit the typedef type
+
+};
+
+// ************************************************************
+// class be_compiled_visitor_args_ami_handler_vardecl_cs
+// ************************************************************
+class be_compiled_visitor_args_ami_handler_vardecl_cs : public be_visitor_args_ami_handler_vardecl_cs
+{
+ //
+ // = TITLE
+ // be_compiled_visitor_args_ami_handler_vardecl_cs
+ //
+ // = DESCRIPTION
+ // Visitor for variable declaration for argument for compiled marshaling
+ // skeletons
+ //
+public:
+ be_compiled_visitor_args_ami_handler_vardecl_cs (be_visitor_context *ctx);
+ // constructor
+
+ virtual ~be_compiled_visitor_args_ami_handler_vardecl_cs (void);
+ // destructor
+
+ virtual int visit_interface (be_interface *node);
+ // visit interface
+
+ virtual int visit_interface_fwd (be_interface_fwd *node);
+ // visit interface forward
+
+#ifdef IDL_HAS_VALUETYPE
+ virtual int visit_valuetype (be_valuetype *node);
+ // visit valuetype
+
+ virtual int visit_valuetype_fwd (be_valuetype_fwd *node);
+ // visit valuetype forward
+#endif /* IDL_HAS_VALUETYPE */
+
+};
+
+#endif /* _BE_VISITOR_ARGUMENT_ami_handler_vardecl_cs_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface.h b/TAO/TAO_IDL/be_include/be_visitor_interface.h
index af9dca32cb8..e35aed8ac7b 100644
--- a/TAO/TAO_IDL/be_include/be_visitor_interface.h
+++ b/TAO/TAO_IDL/be_include/be_visitor_interface.h
@@ -45,5 +45,10 @@
#include "be_visitor_interface/tie_si.h"
#include "be_visitor_interface/ami_handler_fwd_ch.h"
#include "be_visitor_interface/ami_handler_fwd_ci.h"
-#include "be_visitor_interface/ami_handler_ch.h"
+#include "be_visitor_interface/ami_handler_servant_ch.h"
+#include "be_visitor_interface/ami_handler_servant_cs.h"
+#include "be_visitor_interface/ami_handler_stub_ch.h"
+#include "be_visitor_interface/ami_handler_stub_cs.h"
+#include "be_visitor_interface/collocated_ami_handler_ch.h"
+
#endif /* _BE_VISITOR_INTERFACE_H */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h
new file mode 100644
index 00000000000..00f3472e5d2
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h
@@ -0,0 +1,46 @@
+//
+// $Id$
+//
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_cs.h
+//
+// = DESCRIPTION
+// Concrete visitor for the Interface node.
+// This one provides code generation for interfaces in the client stubs.
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_INTERFACE_AMI_HANDLER_CS_H_
+#define _BE_INTERFACE_AMI_HANDLER_CS_H_
+
+class be_visitor_ami_handler_cs : public be_visitor_interface
+{
+ //
+ // = TITLE
+ // be_visitor_ami_handler_cs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the AMI Handler
+ // skeletons for interface.
+ //
+public:
+ be_visitor_ami_handler_cs (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_ami_handler_cs (void);
+ // destructor
+
+ virtual int visit_interface (be_interface *node);
+ // set the right context and make a visitor
+};
+
+#endif /* _BE_INTERFACE_AMI_HANDLER_CS_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h
new file mode 100644
index 00000000000..8bc8857ed4f
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h
@@ -0,0 +1,47 @@
+//
+// $Id$
+//
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_servant_ch.h
+//
+// = DESCRIPTION
+// Concrete visitor for the Interface node.
+// This provides for code generation in the server header
+//
+// = AUTHOR
+// Aniruddha Gokhale and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef _BE_INTERFACE_AMI_HANDLER_SERVANT_CH_H_
+#define _BE_INTERFACE_AMI_HANDLER_SERVANT_CH_H_
+
+class be_visitor_interface_ami_handler_servant_ch : public be_visitor_interface
+{
+ //
+ // = TITLE
+ // be_visitor_interface_ami_handler_servant_ch
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the server header for interface
+ //
+ //
+public:
+ be_visitor_interface_ami_handler_servant_ch (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_interface_ami_handler_servant_ch (void);
+ // destructor
+
+ virtual int visit_interface (be_interface *node);
+ // set the right context and make a visitor
+};
+
+#endif /* _BE_INTERFACE_AMI_HANDLER_SERVANT_CH_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h
new file mode 100644
index 00000000000..71a082763e4
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h
@@ -0,0 +1,46 @@
+// $Id$
+//
+//
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_servant_cs.h
+//
+// = DESCRIPTION
+// Concrete visitor for the Interface node.
+// This provides for code generation in the server skeleton
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_INTERFACE_INTERFACE_AMI_HANDLER_SERVANT_CS_H_
+#define _BE_INTERFACE_INTERFACE_AMI_HANDLER_SERVANT_CS_H_
+
+class be_visitor_interface_ami_handler_servant_cs : public be_visitor_interface
+{
+ //
+ // = TITLE
+ // be_visitor_interface_ami_handler_servant_cs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the server skeletons for interface
+ //
+ //
+public:
+ be_visitor_interface_ami_handler_servant_cs (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_interface_ami_handler_servant_cs (void);
+ // destructor
+
+ virtual int visit_interface (be_interface *node);
+ // set the right context and make a visitor
+};
+
+#endif /* _BE_INTERFACE_INTERFACE_AMI_HANDLER_SERVANT_CS_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h
new file mode 100644
index 00000000000..149201d00db
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h
@@ -0,0 +1,50 @@
+//
+// $Id$
+//
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_stub_ch.h
+//
+// = DESCRIPTION
+// Concrete visitor for the Interface node.
+// This one provides code generation for interfaces in the client header.
+//
+// = AUTHOR
+// Aniruddha Gokhale and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef _BE_INTERFACE_AMI_HANDLER_STUB_CH_H_
+#define _BE_INTERFACE_AMI_HANDLER_STUB_CH_H_
+
+// we need derived interface visitors for the client and server header files. For
+// the others, they use the default interface visitor
+
+class be_visitor_interface_ami_handler_stub_ch : public be_visitor_interface
+{
+ //
+ // = TITLE
+ // be_visitor_ami_handler_stub_ch
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the client header for
+ // interface.
+ //
+public:
+ be_visitor_interface_ami_handler_stub_ch (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_interface_ami_handler_stub_ch (void);
+ // destructor
+
+ virtual int visit_interface (be_interface *node);
+ // set the right context and make a visitor
+};
+
+#endif /* _BE_INTERFACE_AMI_HANDLER_STUB_CH_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h
new file mode 100644
index 00000000000..3af5f1a4720
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h
@@ -0,0 +1,46 @@
+//
+// $Id$
+//
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_cs.h
+//
+// = DESCRIPTION
+// Concrete visitor for the Interface node.
+// This one provides code generation for interfaces in the client stubs.
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_INTERFACE_AMI_HANDLER_CS_H_
+#define _BE_INTERFACE_AMI_HANDLER_CS_H_
+
+class be_visitor_interface_ami_handler_stub_cs : public be_visitor_interface
+{
+ //
+ // = TITLE
+ // be_visitor_interface_ami_handler_stub_cs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the AMI Handler
+ // skeletons for interface.
+ //
+public:
+ be_visitor_interface_ami_handler_stub_cs (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_interface_ami_handler_stub_cs (void);
+ // destructor
+
+ virtual int visit_interface (be_interface *node);
+ // set the right context and make a visitor
+};
+
+#endif /* _BE_INTERFACE_AMI_HANDLER_CS_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h b/TAO/TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h
new file mode 100644
index 00000000000..d20938a046c
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h
@@ -0,0 +1,42 @@
+//
+// $Id$
+//
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// collocated_ami_handler_ch.h
+//
+// = DESCRIPTION
+// Concrete visitor for the Interface node.
+// This provides code generation for collocated classes in server header
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_INTERFACE_COLLOCATED_AMI_HANDLER_CH_H_
+#define _BE_INTERFACE_COLLOCATED_AMI_HANDLER_CH_H_
+
+class be_visitor_interface_collocated_ami_handler_ch : public be_visitor_interface
+{
+ // = TITLE
+ // Generate the "collocated" class declaration.
+
+public:
+ be_visitor_interface_collocated_ami_handler_ch (be_visitor_context *ctx);
+ // constructor
+
+ virtual ~be_visitor_interface_collocated_ami_handler_ch (void);
+ // destructor
+
+ virtual int visit_interface (be_interface *node);
+ // visit an interface
+
+};
+
+#endif /* _BE_INTERFACE_COLLOCATED_AMI_HANDLER_CH_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation.h b/TAO/TAO_IDL/be_include/be_visitor_operation.h
index e195f96d8a0..e19952ca92d 100644
--- a/TAO/TAO_IDL/be_include/be_visitor_operation.h
+++ b/TAO/TAO_IDL/be_include/be_visitor_operation.h
@@ -60,4 +60,7 @@
#include "be_visitor_operation/ami_arglist.h"
#include "be_visitor_operation/ami_handler_operation_ch.h"
#include "be_visitor_operation/ami_handler_arglist.h"
+#include "be_visitor_operation/ami_handler_operation_cs.h"
+#include "be_visitor_operation/ami_handler_skeleton_cs.h"
+#include "be_visitor_operation/ami_handler_argument_marshal.h"
#endif // TAO_BE_VISITOR_OPERATION_H
diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h
index c3bbc7aaedc..9e0ceb2c62d 100644
--- a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h
+++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h
@@ -43,6 +43,14 @@ public:
~be_visitor_operation_ami_handler_arglist (void);
// destructor
+ virtual int visit_scope (be_scope *node);
+ // Visit the scope and its elements.
+ // This implementation is the same as
+ // <be_visitor_scope::visit_scope>. The variation is that it calls the
+ // <post_process> only if the return value of the <accept> is 1. We
+ // need to do this since we have to differentiate between an argument
+ // that was printed and an argument that was skipped in the signature.
+
virtual int visit_operation (be_operation *node);
// visit the operation
diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h
new file mode 100644
index 00000000000..1697ff6cdd0
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h
@@ -0,0 +1,67 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_argument_marshal.h
+//
+// = DESCRIPTION
+// Visitor for generating code for IDL operations. This is a visitor for
+// passing arguments to the CDR operators in a compiled marshaling
+// stub/skeleton
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_OPERATION_ami_handler_argument_marshal_H_
+#define _BE_VISITOR_OPERATION_ami_handler_argument_marshal_H_
+
+// ************************************************************
+// generic operation visitor for docall, upcall, pre/post
+// ************************************************************
+
+class be_compiled_visitor_operation_ami_handler_argument_marshal
+ : public be_visitor_operation_argument
+{
+ //
+ // = TITLE
+ // be_compiled_visitor_operation_ami_handler_argument_marshal
+ //
+ // = DESCRIPTION
+ // This is a visitor to generate a variable declaration of an operation
+ // return type
+ //
+public:
+ be_compiled_visitor_operation_ami_handler_argument_marshal (be_visitor_context *ctx);
+ // constructor
+
+ ~be_compiled_visitor_operation_ami_handler_argument_marshal (void);
+ // destructor
+
+ virtual int pre_process (be_decl *bd);
+ // stuff to o/p before each element of the scope is handled
+
+ virtual int post_process (be_decl *bd);
+ // stuff to o/p after each element of the scope is handled
+
+ enum LAST_ARG_PRINTED
+ {
+ TAO_ARG_NONE,
+ TAO_ARG_IN,
+ TAO_ARG_INOUT,
+ TAO_ARG_OUT
+ };
+
+private:
+ LAST_ARG_PRINTED last_arg_printed_;
+};
+
+
+#endif /* _BE_VISITOR_OPERATION_ami_handler_argument_marshal_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h
new file mode 100644
index 00000000000..cb7640b40b0
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h
@@ -0,0 +1,52 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_operation_ch.h
+//
+// = DESCRIPTION
+// Visitor for generating code for AMI Handler call back operations
+// in client header.
+//
+// = AUTHOR
+// Aniruddha Gokhale and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_OPERATION_AMI_HANDLER_OPERATION_CH_H_
+#define _BE_VISITOR_OPERATION_AMI_HANDLER_OPERATION_CH_H_
+
+// ************************************************************
+// Operation visitor for server header
+// ************************************************************
+
+class be_visitor_operation_ami_handler_operation_ch : public be_visitor_operation
+{
+ //
+ // = TITLE
+ // be_visitor_ami_handler_operation_ch
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the server header for operation
+ //
+ //
+public:
+ be_visitor_operation_ami_handler_operation_ch (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_operation_ami_handler_operation_ch (void);
+ // destructor
+
+ virtual int visit_operation (be_operation *node);
+ // visit operation.
+
+};
+
+#endif /* _BE_VISITOR_OPERATION_AMI_HANDLER_OPERATION_CH_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h
new file mode 100644
index 00000000000..139cc1ecd37
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h
@@ -0,0 +1,126 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// operation_ami_handler_operation_cs.h
+//
+// = DESCRIPTION
+// Visitor for generating code for IDL operations in client stubs
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_OPERATION_CS_H_
+#define _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_OPERATION_CS_H_
+
+// ************************************************************
+// Operation visitor for client stubs
+// ************************************************************
+
+class be_visitor_operation_ami_handler_operation_cs : public be_visitor_operation
+{
+ //
+ // = TITLE
+ // be_visitor_operation_ami_handler_operation_cs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the client stubs for operation
+ //
+ //
+public:
+ be_visitor_operation_ami_handler_operation_cs (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_operation_ami_handler_operation_cs (void);
+ // destructor
+
+ virtual int visit_operation (be_operation *node);
+ // visit operation.
+
+ virtual int visit_argument (be_argument *node);
+ // visit argument to generate ParamData entries
+
+ // = template methods
+ virtual int gen_pre_stub_info (be_operation *, be_type *) = 0;
+ // generate any info before the actual code for the stub is generated
+
+ virtual int gen_marshal_and_invoke (be_operation *, be_type *) = 0;
+ // generate code that marshals the arguments and transmits them
+
+ // =helper
+ virtual int post_process (be_decl *);
+ // stuff to output after every member of the scope is handled
+
+ virtual int gen_raise_exception (be_type *,
+ const char * excep,
+ const char * status);
+ // helper that generates code for raising an exception
+
+ virtual int gen_check_exception (be_type *);
+ // helper that generates code for checking for an exception
+
+};
+
+// specialized visitors
+
+class be_interpretive_visitor_operation_ami_handler_operation_cs : public be_visitor_operation_ami_handler_operation_cs
+{
+ //
+ // = TITLE
+ // be_interpretive_visitor_operation_ami_handler_operation_cs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the client stubs for operation
+ // using interpretive marshaling.
+ //
+ //
+public:
+ be_interpretive_visitor_operation_ami_handler_operation_cs (be_visitor_context *);
+ // ctor
+
+ ~be_interpretive_visitor_operation_ami_handler_operation_cs (void);
+ // dtor
+
+ virtual int gen_pre_stub_info (be_operation *, be_type *);
+ // generate any info before the actual code for the stub is generated
+
+ virtual int gen_marshal_and_invoke (be_operation *, be_type *);
+ // generate code that marshals the arguments and transmits them
+
+};
+
+class be_compiled_visitor_operation_ami_handler_operation_cs : public be_visitor_operation_ami_handler_operation_cs
+{
+ //
+ // = TITLE
+ // be_compiled_visitor_operation_ami_handler_operation_cs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the client stubs for operation
+ // using compiled marshaling.
+ //
+ //
+public:
+ be_compiled_visitor_operation_ami_handler_operation_cs (be_visitor_context *);
+ // ctor
+
+ ~be_compiled_visitor_operation_ami_handler_operation_cs (void);
+ // dtor
+
+ virtual int gen_pre_stub_info (be_operation *, be_type *);
+ // generate any info before the actual code for the stub is generated
+
+ virtual int gen_marshal_and_invoke (be_operation *, be_type *);
+ // generate code that marshals the arguments and transmits them
+
+};
+
+#endif /* _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_OPERATION_CS_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h
new file mode 100644
index 00000000000..4405174311f
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h
@@ -0,0 +1,86 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// ami_handler_result_arg.h
+//
+// = DESCRIPTION
+// Visitor for generating code for IDL operations. This generates the return
+// type of the operation
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_OPERATION_AMI_HANDLER_RESULT_ARG_H_
+#define _BE_VISITOR_OPERATION_AMI_HANDLER_RESULT_ARG_H_
+
+// ***********************************************************************
+// Operation visitor for return types in the signature of the operation
+// ***********************************************************************
+
+class be_visitor_operation_ami_handler_result_arg : public be_visitor_decl
+{
+ //
+ // = TITLE
+ // be_visitor_operation_ch
+ //
+ // = DESCRIPTION
+ // This is a visitor to generate operation return types
+ //
+ //
+public:
+ be_visitor_operation_ami_handler_result_arg (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_operation_ami_handler_result_arg (void);
+ // destructor
+
+ int visit_array (be_array *node);
+ // visit an array node
+
+ int visit_enum (be_enum *node);
+ // visit an enum node
+
+ int visit_interface (be_interface *node);
+ // visit an interface node
+
+ int visit_interface_fwd (be_interface_fwd *node);
+ // visit an interface node
+
+ int visit_native (be_native *node);
+ // visit native type
+
+ int visit_predefined_type (be_predefined_type *node);
+ // visit a predefined type node
+
+ int visit_sequence (be_sequence *node);
+ // visit a sequence node
+
+ int visit_string (be_string *node);
+ // visit a sequence node
+
+ int visit_structure (be_structure *node);
+ // visit a structure node
+
+ int visit_typedef (be_typedef *node);
+ // visit a typedef node
+
+ int visit_union (be_union *node);
+ // visit a union node
+
+# ifdef IDL_HAS_VALUETYPE
+ int visit_valuetype (be_valuetype *node);
+ int visit_valuetype_fwd (be_valuetype_fwd *node);
+# endif /* IDL_HAS_VALUETYPE */
+
+};
+
+#endif /* _BE_VISITOR_OPERATION_AMI_HANDLER_RESULT_ARG_H_ */
diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h
new file mode 100644
index 00000000000..ee6fe758b53
--- /dev/null
+++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h
@@ -0,0 +1,129 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// operation_ami_handler_skeleton_cs.h
+//
+// = DESCRIPTION
+// Visitor for generating code skelton code for IDL operations
+// of AMI Reply Handlers.
+//
+// = AUTHOR
+// Michael Kircher
+//
+// ============================================================================
+
+#ifndef _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_SKELETON_CS_H_
+#define _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_SKELETON_CS_H_
+
+// ************************************************************
+// Operation visitor for client stubs
+// ************************************************************
+
+class be_visitor_operation_ami_handler_skeleton_cs : public be_visitor_operation
+{
+ //
+ // = TITLE
+ // be_visitor_operation_ami_handler_operation_cs
+ //
+ // = DESCRIPTION
+ // Visitor for generating code skelton code for IDL operations
+ // of AMI Reply Handlers.
+ //
+ //
+public:
+ be_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *ctx);
+ // constructor
+
+ ~be_visitor_operation_ami_handler_skeleton_cs (void);
+ // destructor
+
+ virtual int visit_operation (be_operation *node);
+ // visit operation.
+
+ virtual int visit_argument (be_argument *node);
+ // visit argument to generate ParamData entries
+
+ // = template methods
+ virtual int gen_pre_stub_info (be_operation *, be_type *) = 0;
+ // generate any info before the actual code for the stub is generated
+
+ virtual int gen_marshal_and_invoke (be_operation *, be_type *) = 0;
+ // generate code that marshals the arguments and transmits them
+
+ // =helper
+ virtual int post_process (be_decl *);
+ // stuff to output after every member of the scope is handled
+
+ virtual int gen_raise_exception (be_type *,
+ const char * excep,
+ const char * status);
+ // helper that generates code for raising an exception
+
+ virtual int gen_check_exception (be_type *);
+ // helper that generates code for checking for an exception
+
+};
+
+// specialized visitors
+
+class be_interpretive_visitor_operation_ami_handler_skeleton_cs : public be_visitor_operation_ami_handler_skeleton_cs
+{
+ //
+ // = TITLE
+ // be_interpretive_visitor_operation_ami_skeleton_operation_cs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the client skeletons
+ // for AMI reply handlers of IDL operations using interpretive marshaling.
+ //
+ //
+public:
+ be_interpretive_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *);
+ // ctor
+
+ ~be_interpretive_visitor_operation_ami_handler_skeleton_cs (void);
+ // dtor
+
+ virtual int gen_pre_stub_info (be_operation *, be_type *);
+ // generate any info before the actual code for the stub is generated
+
+ virtual int gen_marshal_and_invoke (be_operation *, be_type *);
+ // generate code that marshals the arguments and transmits them
+
+};
+
+class be_compiled_visitor_operation_ami_handler_skeleton_cs : public be_visitor_operation_ami_handler_skeleton_cs
+{
+ //
+ // = TITLE
+ // be_compiled_visitor_operation_ami_handler_skeleton_cs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate the client skeletons
+ // for AMI reply handlers of IDL operations using compiled marshaling.
+ //
+ //
+public:
+ be_compiled_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *);
+ // ctor
+
+ ~be_compiled_visitor_operation_ami_handler_skeleton_cs (void);
+ // dtor
+
+ virtual int gen_pre_stub_info (be_operation *, be_type *);
+ // generate any info before the actual code for the stub is generated
+
+ virtual int gen_marshal_and_invoke (be_operation *, be_type *);
+ // generate code that marshals the arguments and transmits them
+
+};
+
+
+#endif /* _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_SKELETON_CS_H_ */
diff --git a/TAO/TAO_IDL/include/ast_decl.h b/TAO/TAO_IDL/include/ast_decl.h
index 69f48e0ff58..a455914f445 100644
--- a/TAO/TAO_IDL/include/ast_decl.h
+++ b/TAO/TAO_IDL/include/ast_decl.h
@@ -148,11 +148,20 @@ public:
void set_line(long l);
UTL_String *file_name();
void set_file_name(UTL_String *s);
+
UTL_ScopedName *name();
+
+ UTL_ScopedName *compute_name (const char *prefix, const char *suffix);
+ // Variation of the <name>. Computes scoped name string, applying
+ // prefix and suffix to the local name component.
+
void set_name(UTL_ScopedName *n);
Identifier *local_name ();
+ Identifier *compute_local_name (const char *prefix, const char *sufix);
+ // Apply prefix and suffix to the local name and return.
+
//
// If there is _cxx_ in the beginning, we will remove that and keep
// a copy of the original name. TAO IDL's front end adds _cxx_
diff --git a/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl b/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl
index 119fae91a0a..c168a256343 100755
--- a/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl
+++ b/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl
@@ -98,7 +98,7 @@ if (ACE::waitforfile_timed ($iorfile, 10) == -1) {
$CL = Process::Create ($exepref . "client".$EXE_EXT,
" $clflags $clnsflags -x");
-$client = $CL->TimedWait (60);
+$client = $CL->TimedWait (120);
if ($client == -1) {
print STDERR "ERROR: client timedout\n";
$CL->Kill (); $CL->TimedWait (1);
diff --git a/TAO/tao/Asynch_Invocation.cpp b/TAO/tao/Asynch_Invocation.cpp
new file mode 100644
index 00000000000..204805dd43e
--- /dev/null
+++ b/TAO/tao/Asynch_Invocation.cpp
@@ -0,0 +1,129 @@
+// $Id$
+
+#include "tao/Asynch_Invocation.h"
+
+#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER)
+
+#include "tao/Timeprobe.h"
+#include "tao/Stub.h"
+#include "tao/Principal.h"
+#include "tao/Object_KeyC.h"
+#include "tao/debug.h"
+
+#if !defined (__ACE_INLINE__)
+# include "tao/Asynch_Invocation.i"
+#endif /* ! __ACE_INLINE__ */
+
+ACE_RCSID(tao, Asynch_Invocation, "$Id$")
+
+#if defined (ACE_ENABLE_TIMEPROBES)
+
+static const char *TAO_Asynch_Invocation_Timeprobe_Description[] =
+ {
+ "GIOP_Asynch_Invocation::invoke - start",
+ "GIOP_Asynch_Invocation::invoke - end",
+
+ "GIOP_Asynch_Invocation::start - enter",
+ "GIOP_Asynch_Invocation::start - leave",
+ "GIOP_Asynch_Invocation::start - connect",
+ "GIOP_Asynch_Invocation::start - start_msg",
+ "GIOP_Asynch_Invocation::start - request_hdr"
+ };
+
+enum
+ {
+ TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START = 1000,
+ TAO_GIOP_ASYNCH_INVOCATION_INVOKE_END,
+
+ TAO_GIOP_ASYNCH_INVOCATION_START_ENTER,
+ TAO_GIOP_ASYNCH_INVOCATION_START_LEAVE,
+ TAO_GIOP_ASYNCH_INVOCATION_START_CONNECT,
+ TAO_GIOP_ASYNCH_INVOCATION_START_START_MSG,
+ TAO_GIOP_ASYNCH_INVOCATION_START_REQUEST_HDR
+ };
+
+
+// Setup Timeprobes
+ACE_TIMEPROBE_EVENT_DESCRIPTIONS (TAO_Asynch_Invocation_Timeprobe_Description,
+ TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START);
+
+#endif /* ACE_ENABLE_TIMEPROBES */
+
+void
+TAO_GIOP_Twoway_Asynch_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
+ ACE_CHECK;
+
+ this->transport_->start_request (this->orb_core_,
+ this->profile_,
+ this->opname_,
+ this->request_id_,
+ 1,
+ this->out_stream_,
+ ACE_TRY_ENV);
+}
+
+int
+TAO_GIOP_Twoway_Asynch_Invocation::invoke (CORBA::ExceptionList &exceptions,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException))
+{
+ TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START);
+
+ int retval = this->invoke_i (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (retval);
+
+ return retval;
+}
+
+int
+TAO_GIOP_Twoway_Asynch_Invocation::invoke (TAO_Exception_Data *excepts,
+ CORBA::ULong except_count,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::Exception))
+{
+ TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START);
+
+ int retval = this->invoke_i (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (retval);
+
+ return retval;
+}
+
+int
+TAO_GIOP_Twoway_Asynch_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Register a reply dispatcher for this Asynch_Invocation. Use the
+ // heap allocated reply dispatcher.
+
+ int retval = this->transport_->bind_reply_dispatcher (this->request_id_,
+ this->rd_);
+ if (retval == -1)
+ {
+ // @@ What is the right way to handle this error?
+ this->close_connection ();
+ ACE_THROW_RETURN (CORBA::INTERNAL (TAO_DEFAULT_MINOR_CODE,
+ CORBA::COMPLETED_NO),
+ TAO_INVOKE_EXCEPTION);
+ }
+
+ // Just send the request, without trying to wait for the reply.
+ retval = TAO_GIOP_Invocation::invoke (1, ACE_TRY_ENV);
+ ACE_CHECK_RETURN (retval);
+
+ if (retval != TAO_INVOKE_OK)
+ return retval;
+
+ // We do not wait for the reply. Let us return.
+
+ return TAO_INVOKE_OK;
+}
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
+
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */
diff --git a/TAO/tao/Asynch_Invocation.h b/TAO/tao/Asynch_Invocation.h
new file mode 100644
index 00000000000..6ec6a1f5518
--- /dev/null
+++ b/TAO/tao/Asynch_Invocation.h
@@ -0,0 +1,93 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO
+//
+// = FILENAME
+// Asynch_Invocation.h
+//
+// = DESCRIPTION
+// Encapsulate the logic for remote Asynchronous Invocations.
+//
+// = AUTHOR
+// Carlos O'Ryan <coryan@cs.wustl.edu> and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_ASYNCH_INVOCATION_H
+#define TAO_ASYNCH_INVOCATION_H
+
+#include "tao/Invocation.h"
+
+#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER)
+#include "tao/MessagingC.h"
+
+class TAO_Export TAO_GIOP_Twoway_Asynch_Invocation : public TAO_GIOP_Invocation
+{
+ // = TITLE
+ // Sends a two-way request does not expect the reply.
+ //
+ // = DESCRIPTION
+ // This class connects (or lookups a connection from the cache) to
+ // the remote server, builds the CDR stream for the Request, send
+ // the CDR stream and returns.
+ //
+public:
+ TAO_GIOP_Twoway_Asynch_Invocation (TAO_Stub *data,
+ const char *operation,
+ TAO_ORB_Core* orb_core,
+ const TAO_Reply_Handler_Skeleton &reply_handler_skel,
+ Messaging::ReplyHandler_ptr reply_handler_ptr);
+ // Constructor.
+
+ void start (CORBA_Environment &TAO_IN_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Calls TAO_GIOP_Asynch_Invocation::start.
+
+ int invoke (CORBA::ExceptionList &exceptions,
+ CORBA_Environment &TAO_IN_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException));
+ // Send request, block until any reply comes back, and unmarshal
+ // reply parameters as appropriate.
+
+ int invoke (TAO_Exception_Data *excepts,
+ CORBA::ULong except_count,
+ CORBA_Environment &TAO_IN_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::Exception));
+ // Special purpose invoke method used by the interpretive stubs. This
+ // accomplishes the same task as the normal invoke except that
+ // Exceptions are allocated and decoded here. This reduces the
+ // footprint of the generated stubs.
+
+ // TAO_InputCDR &inp_stream (void);
+ // // Return the underlying input stream.
+ //
+ // void get_value (CORBA::TypeCode_ptr tc,
+ // void *value,
+ // CORBA_Environment &TAO_IN_ENV =
+ // TAO_default_environment ());
+ // // No CORBA::Context support (deprecated).
+
+private:
+ int invoke_i (CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Implementation of the invoke() methods, handles the basic
+ // send/reply code and the system exceptions.
+
+private:
+ TAO_Asynch_Reply_Dispatcher *rd_;
+ // Reply dispatcher for the current synchronous Asynch_Invocation.
+};
+
+#if defined (__ACE_INLINE__)
+# include "tao/Asynch_Invocation.i"
+#endif /* __ACE_INLINE__ */
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */
+#endif /* TAO_ASYNCH_INVOCATION_H */
diff --git a/TAO/tao/Asynch_Invocation.i b/TAO/tao/Asynch_Invocation.i
new file mode 100644
index 00000000000..800b5f14595
--- /dev/null
+++ b/TAO/tao/Asynch_Invocation.i
@@ -0,0 +1,34 @@
+// This may look like C, but it's really -*- C++ -*-
+//
+// $Id$
+//
+
+ACE_INLINE
+TAO_GIOP_Twoway_Asynch_Invocation::
+TAO_GIOP_Twoway_Asynch_Invocation (TAO_Stub *stub,
+ const char *operation,
+ TAO_ORB_Core *orb_core,
+ const TAO_Reply_Handler_Skeleton &reply_handler_skel,
+ Messaging::ReplyHandler_ptr reply_handler_ptr)
+ : TAO_GIOP_Invocation (stub, operation, orb_core),
+ rd_ (0)
+{
+ // New Reply Dispatcher.
+ ACE_NEW (rd_,
+ TAO_Asynch_Reply_Dispatcher (reply_handler_skel,
+ reply_handler_ptr));
+}
+
+// ACE_INLINE TAO_InputCDR &
+// TAO_GIOP_Twoway_Asynch_Invocation::inp_stream (void)
+// {
+// return this->message_state_->cdr;
+// }
+//
+// ACE_INLINE void
+// TAO_GIOP_Twoway_Asynch_Invocation::get_value (CORBA::TypeCode_ptr tc,
+// void *value,
+// CORBA::Environment &ACE_TRY_ENV)
+// {
+// (void) this->inp_stream ().decode (tc, value, 0, ACE_TRY_ENV);
+// }
diff --git a/TAO/tao/Client_Strategy_Factory.cpp b/TAO/tao/Client_Strategy_Factory.cpp
index 7502cd20f1a..967582af54a 100644
--- a/TAO/tao/Client_Strategy_Factory.cpp
+++ b/TAO/tao/Client_Strategy_Factory.cpp
@@ -19,7 +19,7 @@ TAO_Client_Strategy_Factory::create_profile_lock (void)
}
TAO_Transport_Mux_Strategy *
-TAO_Client_Strategy_Factory::create_transport_mux_strategy (void)
+TAO_Client_Strategy_Factory::create_transport_mux_strategy (TAO_ORB_Core *)
{
return 0;
}
diff --git a/TAO/tao/Client_Strategy_Factory.h b/TAO/tao/Client_Strategy_Factory.h
index 6b1ed050876..6d3a1ec668b 100644
--- a/TAO/tao/Client_Strategy_Factory.h
+++ b/TAO/tao/Client_Strategy_Factory.h
@@ -25,6 +25,7 @@ class ACE_Lock;
class TAO_Transport_Mux_Strategy;
class TAO_Wait_Strategy;
class TAO_Transport;
+class TAO_ORB_Core;
class TAO_Export TAO_Client_Strategy_Factory : public ACE_Service_Object
{
@@ -44,7 +45,7 @@ public:
// <TAO_GIOP_Invocation::location_forward> and the
// <TAO_GIOP_Invocation::start>.
- virtual TAO_Transport_Mux_Strategy *create_transport_mux_strategy (void);
+ virtual TAO_Transport_Mux_Strategy *create_transport_mux_strategy (TAO_ORB_Core *orb_core);
// Create the correct client request muxing strategy.
virtual TAO_Wait_Strategy *create_wait_strategy (TAO_Transport *transport);
diff --git a/TAO/tao/DynAnyC.cpp b/TAO/tao/DynAnyC.cpp
index 4cbfd0a118f..451e29e307e 100644
--- a/TAO/tao/DynAnyC.cpp
+++ b/TAO/tao/DynAnyC.cpp
@@ -1356,6 +1356,7 @@ CORBA::TypeCode_ptr _tc_CORBA_DynArray =
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+ template class TAO_Object_Manager<CORBA_DynAny,CORBA_DynAny_var>;
template class TAO_Object_Field_T<CORBA_DynAny,CORBA_DynAny_var>;
template class TAO_Object_Field_T<CORBA_DynEnum,CORBA_DynEnum_var>;
template class TAO_Object_Field_T<CORBA_DynStruct,CORBA_DynStruct_var>;
@@ -1369,6 +1370,7 @@ CORBA::TypeCode_ptr _tc_CORBA_DynArray =
template class TAO_Object_Manager<CORBA_DynSequence,CORBA_DynSequence_var>;
template class TAO_Object_Manager<CORBA_DynArray,CORBA_DynArray_var>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+# pragma instantiate TAO_Object_Manager<CORBA_DynAny,CORBA_DynAny_var>
# pragma instantiate TAO_Object_Field_T<CORBA_DynAny,CORBA_DynAny_var>
# pragma instantiate TAO_Object_Field_T<CORBA_DynEnum,CORBA_DynEnum_var>
# pragma instantiate TAO_Object_Field_T<CORBA_DynStruct,CORBA_DynStruct_var>
diff --git a/TAO/tao/GIOP.cpp b/TAO/tao/GIOP.cpp
index 9b884d2a746..6711c61156d 100644
--- a/TAO/tao/GIOP.cpp
+++ b/TAO/tao/GIOP.cpp
@@ -233,7 +233,7 @@ TAO_GIOP::dump_msg (const char *label,
message_name = names [slot];
int byte_order = ptr[TAO_GIOP_MESSAGE_FLAGS_OFFSET] & 0x01;
ACE_DEBUG ((LM_DEBUG,
- "%s GIOP v%c.%c msg, %d data bytes, %s endian, %s",
+ "(%P | %t):%s GIOP v%c.%c msg, %d data bytes, %s endian, %s",
label,
digits[ptr[TAO_GIOP_VERSION_MAJOR_OFFSET]],
digits[ptr[TAO_GIOP_VERSION_MINOR_OFFSET]],
diff --git a/TAO/tao/IIOP_Transport.cpp b/TAO/tao/IIOP_Transport.cpp
index 8b5fb5ea2c4..25c67efd134 100644
--- a/TAO/tao/IIOP_Transport.cpp
+++ b/TAO/tao/IIOP_Transport.cpp
@@ -209,10 +209,13 @@ TAO_IIOP_Client_Transport::send_request (TAO_ORB_Core *orb_core,
two_way) == -1)
return -1;
- return TAO_GIOP::send_message (this,
- stream,
- orb_core,
- max_wait_time);
+ if (TAO_GIOP::send_message (this,
+ stream,
+ orb_core,
+ max_wait_time) == -1)
+ return -1;
+
+ return this->idle_after_send ();
}
// Return 0, when the reply is not read fully, 1 if it is read fully.
@@ -233,21 +236,8 @@ TAO_IIOP_Client_Transport::handle_client_input (int /* block */,
// Use an "factory" to obtain the CDR stream, in the Muxed case the
// factory simply allocates a new one, in the Exclusive case the
// factory returns a pointer to the pre-allocated CDR.
- //
- // @@ Alex: I thought some more about this, and here is how i would
- // like to do it: this class keeps a CDR stream for the "current"
- // message beign received. Initially the CDR is 0, when the
- // handle_client_input() is called the first time then we go to
- // the muxer to obtain the CDR stream.
- // - The exclusive Muxer returns the CDR stream pre-allocated by
- // the invocation.
- // - The shared Muxer returns a new CDR stream.
- // Once all the data has been received the reply handler takes
- // charge of the CDR stream, or actually of its message block,
- // which is referenced counted and thus can be efficiently
- // removed.
- // Do I make any sense?
+ // Get the message state from the Transport Mux Strategy.
TAO_GIOP_Message_State* message_state =
this->tms_->get_message_state ();
@@ -259,7 +249,7 @@ TAO_IIOP_Client_Transport::handle_client_input (int /* block */,
" nil message state\n"));
return -1;
}
-
+
int result = TAO_GIOP::handle_input (this,
this->orb_core_,
*message_state,
diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp
index 182a3b70b85..168d18f93e9 100644
--- a/TAO/tao/Invocation.cpp
+++ b/TAO/tao/Invocation.cpp
@@ -87,7 +87,7 @@ TAO_GIOP_Invocation::TAO_GIOP_Invocation (TAO_Stub *stub,
TAO_GIOP_Invocation::~TAO_GIOP_Invocation (void)
{
if (this->transport_ != 0)
- this->transport_->idle ();
+ this->transport_->idle_after_reply ();
}
// The public API involves creating an invocation, starting it, filling
@@ -283,8 +283,6 @@ TAO_GIOP_Invocation::invoke (CORBA::Boolean is_roundtrip,
return TAO_INVOKE_OK;
}
-// ****************************************************************
-
int
TAO_GIOP_Invocation::close_connection (void)
{
@@ -406,10 +404,6 @@ TAO_GIOP_Twoway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
ACE_CHECK;
- // If there was a previous reply, cleanup its state first.
- if (this->message_state_.message_size != 0)
- this->message_state_.reset ();
-
this->transport_->start_request (this->orb_core_,
this->profile_,
this->opname_,
@@ -422,9 +416,9 @@ TAO_GIOP_Twoway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
int
TAO_GIOP_Twoway_Invocation::invoke (CORBA::ExceptionList &exceptions,
CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException))
+ ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException))
{
- TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_INVOCATION_INVOKE_START);
+ TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_Invocation_INVOKE_START);
int retval = this->invoke_i (ACE_TRY_ENV);
ACE_CHECK_RETURN (retval);
@@ -646,8 +640,23 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
"TAO (%P|%t) Timeout on recv is <%u>\n",
msecs));
}
+
int reply_error =
this->transport_->wait_for_reply (this->max_wait_time_);
+
+ // Do the wait loop till we receive the reply for this invocation.
+ // while (reply_error != -1 &&
+ // this->transport_->reply_received (this->request_id_) != 1)
+ // {
+ // // @@ Hack to init the Leader-Follower state, so that we can
+ // // wait again. (Alex).
+ // // this->transport_->wait_strategy ()->sending_request (this->orb_core_,
+ // // 1);
+ //
+ // // Wait for reply.
+ // reply_error = this->transport_->wait_for_reply ();
+ // }
+
if (TAO_debug_level > 0 && this->max_wait_time_ != 0)
{
CORBA::ULong msecs =
@@ -657,6 +666,8 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
msecs, reply_error));
}
+ // Check the reply error.
+
if (reply_error == -1)
{
if (errno == ETIME)
@@ -778,8 +789,7 @@ TAO_GIOP_Oneway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
// ****************************************************************
-// Send request, block until any reply comes back
-
+// Send request, block until any reply comes back.
void
TAO_GIOP_Locate_Request_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException))
@@ -787,10 +797,6 @@ TAO_GIOP_Locate_Request_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
ACE_CHECK;
- // If there was a previous reply, cleanup its state first.
- if (this->message_state_.message_size != 0)
- this->message_state_.reset ();
-
this->transport_->start_locate (this->orb_core_,
this->profile_,
this->request_id_,
@@ -860,6 +866,14 @@ TAO_GIOP_Locate_Request_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
int reply_error =
this->transport_->wait_for_reply (this->max_wait_time_);
+ // // Do the wait loop, till we receive the reply for this invocation.
+ // while (reply_error != -1 &&
+ // this->transport_->reply_received (this->request_id_) != 1)
+ // {
+ // reply_error = this->transport_->wait_for_reply ();
+ // }
+
+ // Check the reply error.
if (reply_error == -1)
{
if (errno == ETIME)
diff --git a/TAO/tao/Invocation.h b/TAO/tao/Invocation.h
index 90816bd6fc0..66ab1b5ebd5 100644
--- a/TAO/tao/Invocation.h
+++ b/TAO/tao/Invocation.h
@@ -10,7 +10,8 @@
// Invocation.h
//
// = DESCRIPTION
-// Encapsulate the logic for remote invocations, oneways or twoways.
+// Encapsulate the logic for remote invocations, oneways or
+// twoways.
//
// THREADING NOTE: Threads should never manipulate another
// thread's invocations. In this implementation, all data
@@ -20,7 +21,8 @@
// GIOP code is reentrant.
//
// = AUTHOR
-// Carlos O'Ryan <coryan@cs.wustl.edu>
+// Carlos O'Ryan <coryan@cs.wustl.edu> and Alexander Babu Arulanthu
+// <alex@cs.wustl.edu>
//
// ============================================================================
@@ -49,34 +51,38 @@ enum TAO_Invoke_Status
// An exception was raised.
};
+// ****************************************************************
+
class TAO_Export TAO_GIOP_Invocation
{
// = TITLE
- // Encapsulates common behavior for both oneway and twoway
- // invocations.
+ // Encapsulates common behavior for both oneway and twoway
+ // invocations.
//
// = DESCRIPTION
- // This class connects (or lookups a connection from the cache) to
- // the remote server, builds the CDR stream for the Request, send
- // the CDR stream and expects the response and interprets the
- // incoming CDR stream.
- //
+ // This class connects (or lookups a connection from the cache)
+ // to the remote server, builds the CDR stream for the Request,
+ // send the CDR stream and expects the response and interprets
+ // the incoming CDR stream.
+
public:
- // = Initialization and termination methods.
TAO_GIOP_Invocation (TAO_Stub *data,
const char *operation,
TAO_ORB_Core* orb_core);
+ // Constructor.
+
~TAO_GIOP_Invocation (void);
+ // Destructor.
void put_param (CORBA::TypeCode_ptr tc,
void *value,
CORBA_Environment &ACE_TRY_ENV =
TAO_default_environment ());
// Encodes the value into the undelying CDR stream based on the
- // TypeCode parameter
+ // TypeCode parameter.
TAO_OutputCDR &out_stream (void);
- // return the underlying output stream
+ // Return the underlying output stream.
protected:
void start (CORBA_Environment &ACE_TRY_ENV =
@@ -147,6 +153,8 @@ protected:
// start() and updated as required.
};
+// ****************************************************************
+
class TAO_Export TAO_GIOP_Twoway_Invocation : public TAO_GIOP_Invocation
{
// = TITLE
@@ -159,12 +167,12 @@ class TAO_Export TAO_GIOP_Twoway_Invocation : public TAO_GIOP_Invocation
// incoming CDR stream.
//
public:
- // = Initialization and termination methods.
TAO_GIOP_Twoway_Invocation (TAO_Stub *data,
const char *operation,
TAO_ORB_Core* orb_core);
-
- void start (CORBA_Environment &ACE_TRY_ENV =
+ // Constructor.
+
+ void start (CORBA_Environment &TAO_IN_ENV =
TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
// Calls TAO_GIOP_Invocation::start.
@@ -202,25 +210,27 @@ private:
// send/reply code and the system exceptions.
private:
- TAO_GIOP_Message_State message_state_;
+ // TAO_GIOP_Message_State message_state_;
// Stream into which the reply is placed.
TAO_Synch_Reply_Dispatcher rd_;
// Reply dispatcher for the current synchronous invocation.
};
+// ****************************************************************
+
class TAO_Export TAO_GIOP_Oneway_Invocation : public TAO_GIOP_Invocation
{
// = TITLE
// Sends a oneway request.
//
public:
- // = Initialization and termination methods.
TAO_GIOP_Oneway_Invocation (TAO_Stub *data,
const char *operation,
TAO_ORB_Core* orb_core);
+ // Constructor.
- void start (CORBA_Environment &ACE_TRY_ENV =
+ void start (CORBA_Environment &TAO_IN_ENV =
TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
// Call TAO_GIOP_Invocation::start()
@@ -231,6 +241,7 @@ public:
// Send request, without blocking for any response.
};
+// ****************************************************************
class TAO_Export TAO_GIOP_Locate_Request_Invocation : public TAO_GIOP_Invocation
{
@@ -238,11 +249,11 @@ class TAO_Export TAO_GIOP_Locate_Request_Invocation : public TAO_GIOP_Invocation
// Sends a locate request.
//
public:
- // = Initialization and termination methods.
TAO_GIOP_Locate_Request_Invocation (TAO_Stub *data,
TAO_ORB_Core* orb_core);
+ // Constructor.
- void start (CORBA_Environment &ACE_TRY_ENV =
+ void start (CORBA_Environment &TAO_IN_ENV =
TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
// Calls TAO_GIOP_Invocation::start.
@@ -256,7 +267,7 @@ public:
// return the underlying input stream
private:
- TAO_GIOP_Message_State message_state_;
+ // TAO_GIOP_Message_State message_state_;
// Stream into which the request is placed.
TAO_Synch_Reply_Dispatcher rd_;
diff --git a/TAO/tao/Invocation.i b/TAO/tao/Invocation.i
index d4dad8ee56f..e832e474c27 100644
--- a/TAO/tao/Invocation.i
+++ b/TAO/tao/Invocation.i
@@ -25,15 +25,14 @@ TAO_GIOP_Twoway_Invocation (TAO_Stub *stub,
const char *operation,
TAO_ORB_Core *orb_core)
: TAO_GIOP_Invocation (stub, operation, orb_core),
- message_state_ (orb_core),
- rd_ (&message_state_)
+ rd_ (orb_core)
{
}
ACE_INLINE TAO_InputCDR &
TAO_GIOP_Twoway_Invocation::inp_stream (void)
{
- return this->message_state_.cdr;
+ return this->rd_.reply_cdr ();
}
ACE_INLINE void
@@ -69,13 +68,12 @@ TAO_GIOP_Locate_Request_Invocation::
TAO_GIOP_Locate_Request_Invocation (TAO_Stub *stub,
TAO_ORB_Core *orb_core)
: TAO_GIOP_Invocation (stub, 0, orb_core),
- message_state_ (orb_core),
- rd_ (&message_state_)
+ rd_ (orb_core)
{
}
ACE_INLINE TAO_InputCDR &
TAO_GIOP_Locate_Request_Invocation::inp_stream (void)
{
- return this->message_state_.cdr;
+ return this->rd_. reply_cdr ();
}
diff --git a/TAO/tao/Makefile b/TAO/tao/Makefile
index db7bf753b64..20f9efc8efe 100644
--- a/TAO/tao/Makefile
+++ b/TAO/tao/Makefile
@@ -26,6 +26,7 @@ PUB_HDRS = \
UIOP_Connect \
GIOP \
Invocation \
+ Asynch_Invocation \
Params \
Marshal \
Debug \
@@ -124,6 +125,7 @@ ORB_CORE_FILES = \
GIOP \
GIOP_Server_Request \
Invocation \
+ Asynch_Invocation \
ORB_Core \
params \
Resource_Factory \
@@ -137,6 +139,8 @@ ORB_CORE_FILES = \
Reply_Dispatcher \
IOPC \
IOPS \
+ PollableC \
+ PollableS \
CONV_FRAMEC \
CONV_FRAMES \
Tagged_Components
@@ -301,6 +305,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -424,6 +430,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -474,6 +483,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -527,6 +537,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -650,16 +662,20 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
$(TAO_ROOT)/tao/POAC.i \
$(TAO_ROOT)/tao/Key_Adapters.i
-.obj/POA.o .obj/POA.so .shobj/POA.o .shobj/POA.so: POA.cpp \
- $(ACE_ROOT)/ace/Auto_Ptr.h \
+.obj/POA.o .obj/POA.so .shobj/POA.o .shobj/POA.so: POA.cpp $(ACE_ROOT)/ace/Auto_Ptr.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -791,6 +807,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -840,6 +859,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -891,6 +911,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -966,6 +988,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -1063,6 +1088,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -1120,6 +1146,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1195,6 +1223,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -1268,6 +1299,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -1317,6 +1349,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1392,6 +1426,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -1482,6 +1519,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1605,6 +1644,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -1625,6 +1667,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1704,6 +1748,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -1771,6 +1818,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -1851,6 +1899,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -1934,6 +1984,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -1991,6 +2044,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2058,6 +2113,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -2097,8 +2157,6 @@ realclean:
$(TAO_ROOT)/tao/Services.h \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -2134,6 +2192,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -2191,6 +2250,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2273,6 +2334,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -2331,6 +2395,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -2386,6 +2451,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2453,6 +2520,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -2520,8 +2592,6 @@ realclean:
$(TAO_ROOT)/tao/Services.h \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -2555,6 +2625,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -2582,6 +2653,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2698,6 +2771,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -2717,6 +2795,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -2833,6 +2913,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -2893,8 +2978,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -2929,6 +3012,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -2958,6 +3042,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3055,10 +3141,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -3171,6 +3260,7 @@ realclean:
$(TAO_ROOT)/tao/TimeBaseS_T.cpp \
$(TAO_ROOT)/tao/TimeBaseS.i \
$(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -3223,6 +3313,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3290,6 +3382,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -3392,8 +3489,6 @@ realclean:
$(TAO_ROOT)/tao/Services.h \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -3422,26 +3517,27 @@ realclean:
$(ACE_ROOT)/ace/Timeprobe.h \
$(TAO_ROOT)/tao/Transport_Mux_Strategy.h \
$(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/Reply_Dispatcher.i \
$(TAO_ROOT)/tao/ORB_Core.h \
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/DynAnyC.h \
- $(TAO_ROOT)/tao/Any.h \
- $(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/DynAnyC.i \
$(TAO_ROOT)/tao/DomainC.h \
$(TAO_ROOT)/tao/DomainC.i \
$(TAO_ROOT)/tao/MessagingS.h \
$(TAO_ROOT)/tao/TimeBaseS.h \
- $(TAO_ROOT)/tao/TimeBaseC.h \
- $(TAO_ROOT)/tao/TimeBaseC.i \
$(TAO_ROOT)/tao/TimeBaseS_T.h \
$(TAO_ROOT)/tao/TimeBaseS_T.i \
$(TAO_ROOT)/tao/TimeBaseS_T.cpp \
$(TAO_ROOT)/tao/TimeBaseS.i \
- $(TAO_ROOT)/tao/MessagingC.h \
- $(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
$(TAO_ROOT)/tao/Resource_Factory.h \
@@ -3464,6 +3560,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3618,6 +3716,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -3642,8 +3745,6 @@ realclean:
$(TAO_ROOT)/tao/Services.h \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -3687,6 +3788,7 @@ realclean:
$(TAO_ROOT)/tao/TimeBaseS_T.cpp \
$(TAO_ROOT)/tao/TimeBaseS.i \
$(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -3707,6 +3809,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -3774,6 +3878,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -3880,8 +3989,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -3916,6 +4023,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -3949,6 +4057,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4104,6 +4214,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -4123,8 +4238,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -4159,6 +4272,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -4180,6 +4294,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4296,6 +4412,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -4364,8 +4485,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -4400,6 +4519,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -4430,6 +4550,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4497,6 +4619,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -4618,8 +4745,6 @@ realclean:
$(TAO_ROOT)/tao/Services.h \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/IORC.i \
@@ -4651,6 +4776,7 @@ realclean:
$(TAO_ROOT)/tao/TimeBaseS_T.cpp \
$(TAO_ROOT)/tao/TimeBaseS.i \
$(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -4703,6 +4829,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -4770,6 +4898,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -4888,21 +5021,24 @@ realclean:
$(ACE_ROOT)/ace/Timeprobe.h \
$(TAO_ROOT)/tao/Transport_Mux_Strategy.h \
$(TAO_ROOT)/tao/Reply_Dispatcher.h \
- $(TAO_ROOT)/tao/Reply_Dispatcher.i \
- $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Policy_Manager.h \
- $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
- $(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/DynAnyC.h \
- $(TAO_ROOT)/tao/Any.h \
- $(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/IOR_LookupTable.h \
$(TAO_ROOT)/tao/Services.h \
@@ -4922,14 +5058,10 @@ realclean:
$(TAO_ROOT)/tao/DomainC.i \
$(TAO_ROOT)/tao/MessagingS.h \
$(TAO_ROOT)/tao/TimeBaseS.h \
- $(TAO_ROOT)/tao/TimeBaseC.h \
- $(TAO_ROOT)/tao/TimeBaseC.i \
$(TAO_ROOT)/tao/TimeBaseS_T.h \
$(TAO_ROOT)/tao/TimeBaseS_T.i \
$(TAO_ROOT)/tao/TimeBaseS_T.cpp \
$(TAO_ROOT)/tao/TimeBaseS.i \
- $(TAO_ROOT)/tao/MessagingC.h \
- $(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
$(TAO_ROOT)/tao/Resource_Factory.h \
@@ -4952,6 +5084,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5114,6 +5248,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -5151,8 +5290,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -5185,6 +5322,7 @@ realclean:
$(TAO_ROOT)/tao/TimeBaseS_T.cpp \
$(TAO_ROOT)/tao/TimeBaseS.i \
$(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -5204,6 +5342,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5363,6 +5503,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -5385,8 +5530,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -5421,6 +5564,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -5453,6 +5597,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5616,6 +5762,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -5635,8 +5786,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -5671,6 +5820,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -5688,6 +5838,8 @@ realclean:
$(TAO_ROOT)/tao/IORC.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -5769,6 +5921,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/IORC.i \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/Servant_Base.h \
@@ -5835,6 +5990,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -5853,9 +6009,6 @@ realclean:
$(TAO_ROOT)/tao/GIOP.h \
$(TAO_ROOT)/tao/GIOP.i \
$(TAO_ROOT)/tao/Server_Request.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/singletons.h \
@@ -5945,6 +6098,8 @@ realclean:
$(TAO_ROOT)/tao/IORC.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6026,6 +6181,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/IORC.i \
$(TAO_ROOT)/tao/Servant_Base.h \
$(TAO_ROOT)/tao/POAC.h \
@@ -6034,8 +6192,7 @@ realclean:
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/POAC.i \
- $(TAO_ROOT)/tao/Servant_Base.i \
- IORS.i
+ $(TAO_ROOT)/tao/Servant_Base.i IORS.i
.obj/IORManipulation.o .obj/IORManipulation.so .shobj/IORManipulation.o .shobj/IORManipulation.so: IORManipulation.cpp \
$(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/Object.h \
@@ -6045,6 +6202,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6123,6 +6282,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/IORC.i \
$(TAO_ROOT)/tao/Servant_Base.h \
$(TAO_ROOT)/tao/POAC.h \
@@ -6181,9 +6343,6 @@ realclean:
$(TAO_ROOT)/tao/GIOP.h \
$(TAO_ROOT)/tao/GIOP.i \
$(TAO_ROOT)/tao/Server_Request.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/singletons.h \
@@ -6243,6 +6402,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -6304,6 +6464,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6405,6 +6567,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -6447,6 +6612,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -6499,6 +6665,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6599,6 +6767,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -6641,6 +6812,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -6690,6 +6862,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6785,6 +6959,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -6828,8 +7007,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -6864,6 +7041,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -6895,13 +7073,158 @@ realclean:
$(ACE_ROOT)/ace/Timer_Heap_T.cpp \
$(ACE_ROOT)/ace/Select_Reactor_T.i \
$(ACE_ROOT)/ace/Select_Reactor.i \
- $(ACE_ROOT)/ace/XtReactor.h \
$(ACE_ROOT)/ace/FlReactor.h \
$(ACE_ROOT)/ace/Msg_WFMO_Reactor.h \
$(ACE_ROOT)/ace/Msg_WFMO_Reactor.i \
$(ACE_ROOT)/ace/TP_Reactor.h \
$(ACE_ROOT)/ace/TP_Reactor.i \
$(ACE_ROOT)/ace/Arg_Shifter.h
+.obj/xt_resource.o .obj/xt_resource.so .shobj/xt_resource.o .shobj/xt_resource.so: xt_resource.cpp \
+ $(TAO_ROOT)/tao/xt_resource.h \
+ $(TAO_ROOT)/tao/default_resource.h \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/default_resource.i
.obj/append.o .obj/append.so .shobj/append.o .shobj/append.so: append.cpp \
$(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/corbafwd.h \
@@ -6910,6 +7233,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -6982,14 +7307,17 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/IOR_LookupTable.h \
@@ -7047,6 +7375,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7119,14 +7449,17 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/IOR_LookupTable.h \
@@ -7196,12 +7529,10 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Union.h \
$(TAO_ROOT)/tao/ORB_Core.h \
$(TAO_ROOT)/tao/Policy_Manager.h \
@@ -7248,6 +7579,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7320,14 +7653,17 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/IOR_LookupTable.h \
@@ -7395,12 +7731,10 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Union.h
.obj/encode.o .obj/encode.so .shobj/encode.o .shobj/encode.so: encode.cpp \
$(TAO_ROOT)/tao/Marshal.h \
@@ -7410,6 +7744,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7482,14 +7818,17 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/IOR_LookupTable.h \
@@ -7557,12 +7896,10 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Union.h
.obj/CDR_Interpreter.o .obj/CDR_Interpreter.so .shobj/CDR_Interpreter.o .shobj/CDR_Interpreter.so: CDR_Interpreter.cpp \
$(TAO_ROOT)/tao/Sequence.h \
@@ -7572,6 +7909,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7638,6 +7977,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/CDR_Interpreter.h \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -7648,12 +7992,7 @@ realclean:
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Union.h
.obj/Marshal.o .obj/Marshal.so .shobj/Marshal.o .shobj/Marshal.so: Marshal.cpp \
$(TAO_ROOT)/tao/Marshal.h \
@@ -7663,6 +8002,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7735,14 +8076,17 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/IOR_LookupTable.h \
@@ -7801,6 +8145,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -7873,14 +8219,17 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i \
$(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/IOR_LookupTable.h \
@@ -7938,6 +8287,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8035,10 +8386,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -8066,6 +8420,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8131,6 +8487,8 @@ realclean:
$(ACE_ROOT)/ace/Hash_Map_Manager.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8237,10 +8595,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -8260,8 +8621,7 @@ realclean:
$(TAO_ROOT)/tao/Servant_Base.i \
$(TAO_ROOT)/tao/IORS.i \
$(TAO_ROOT)/tao/ORB.i
-.obj/Any.o .obj/Any.so .shobj/Any.o .shobj/Any.so: Any.cpp \
- $(TAO_ROOT)/tao/Any.h \
+.obj/Any.o .obj/Any.so .shobj/Any.o .shobj/Any.so: Any.cpp $(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
@@ -8269,6 +8629,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8348,6 +8710,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/IOR_LookupTable.h \
@@ -8412,6 +8777,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -8462,6 +8828,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8533,6 +8901,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -8604,6 +8975,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i
@@ -8616,6 +8988,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8723,6 +9097,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -8760,6 +9137,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8836,6 +9215,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8909,6 +9290,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -8991,6 +9374,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -9049,6 +9435,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -9098,6 +9485,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9168,6 +9557,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -9241,6 +9633,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -9250,9 +9643,6 @@ realclean:
$(TAO_ROOT)/tao/Context.h \
$(TAO_ROOT)/tao/Context.i \
$(TAO_ROOT)/tao/Request.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/GIOP.h \
$(TAO_ROOT)/tao/GIOP.i \
$(TAO_ROOT)/tao/ORB_Core.h \
@@ -9300,14 +9690,15 @@ realclean:
$(ACE_ROOT)/ace/Auto_Ptr.h \
$(ACE_ROOT)/ace/Auto_Ptr.i \
$(ACE_ROOT)/ace/Auto_Ptr.cpp
-.obj/ORB.o .obj/ORB.so .shobj/ORB.o .shobj/ORB.so: ORB.cpp \
- $(TAO_ROOT)/tao/ORB.h \
+.obj/ORB.o .obj/ORB.so .shobj/ORB.o .shobj/ORB.so: ORB.cpp $(TAO_ROOT)/tao/ORB.h \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9405,10 +9796,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -9510,6 +9904,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -9576,6 +9971,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9646,6 +10043,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9721,6 +10120,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -9787,6 +10189,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -9843,6 +10246,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -9918,6 +10323,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Operation_Table.h \
$(ACE_ROOT)/ace/Hash_Map_Manager.h \
@@ -9986,6 +10394,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10064,6 +10474,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -10129,6 +10542,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -10174,10 +10588,7 @@ realclean:
$(ACE_ROOT)/ace/Dynamic_Service.cpp \
$(TAO_ROOT)/tao/Reply_Dispatcher.h \
$(TAO_ROOT)/tao/Reply_Dispatcher.i \
- $(TAO_ROOT)/tao/Invocation.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp
+ $(TAO_ROOT)/tao/Invocation.i
.obj/DomainS.o .obj/DomainS.so .shobj/DomainS.o .shobj/DomainS.so: DomainS.cpp DomainC.h \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
@@ -10185,6 +10596,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10263,12 +10676,14 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
$(TAO_ROOT)/tao/Any.h \
- $(TAO_ROOT)/tao/Any.i \
- DomainC.i \
+ $(TAO_ROOT)/tao/Any.i DomainC.i \
$(TAO_ROOT)/tao/Operation_Table.h \
$(ACE_ROOT)/ace/Hash_Map_Manager.h \
$(ACE_ROOT)/ace/Functor.h \
@@ -10332,6 +10747,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10401,9 +10818,8 @@ realclean:
$(TAO_ROOT)/tao/Environment.i \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
- $(TAO_ROOT)/tao/Any.i \
- TimeBaseC.i TimeBaseS.h TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp \
- TimeBaseS.i
+ $(TAO_ROOT)/tao/Any.i TimeBaseC.i \
+ TimeBaseS.h TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i
.obj/TimeBaseS.o .obj/TimeBaseS.so .shobj/TimeBaseS.o .shobj/TimeBaseS.so: TimeBaseS.cpp TimeBaseS.h TimeBaseC.h \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -10413,6 +10829,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10482,8 +10900,8 @@ realclean:
$(TAO_ROOT)/tao/Environment.i \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
- $(TAO_ROOT)/tao/Any.i \
- TimeBaseC.i TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i
+ $(TAO_ROOT)/tao/Any.i TimeBaseC.i \
+ TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i
.obj/Principal.o .obj/Principal.so .shobj/Principal.o .shobj/Principal.so: Principal.cpp \
$(TAO_ROOT)/tao/Principal.h \
$(TAO_ROOT)/tao/corbafwd.h \
@@ -10492,6 +10910,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10559,6 +10979,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/Typecode.h \
@@ -10574,6 +10999,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10639,7 +11066,12 @@ realclean:
$(TAO_ROOT)/tao/Sequence.i \
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
- $(TAO_ROOT)/tao/Sequence_T.cpp
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp
.obj/Server_Request.o .obj/Server_Request.so .shobj/Server_Request.o .shobj/Server_Request.so: Server_Request.cpp \
$(TAO_ROOT)/tao/Server_Request.h \
$(TAO_ROOT)/tao/corbafwd.h \
@@ -10648,6 +11080,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10716,6 +11150,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Object_KeyC.i \
$(TAO_ROOT)/tao/GIOP.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -10725,8 +11164,6 @@ realclean:
$(TAO_ROOT)/tao/Typecode.i \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/GIOP.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Server_Request.i \
$(TAO_ROOT)/tao/POAC.h \
$(TAO_ROOT)/tao/PolicyC.h \
@@ -10798,6 +11235,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -10847,6 +11285,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10915,6 +11355,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -10932,6 +11377,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -10999,6 +11446,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -11037,8 +11489,6 @@ realclean:
$(TAO_ROOT)/tao/Services.h \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -11074,6 +11524,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -11134,6 +11585,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11216,6 +11669,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Principal.i \
$(TAO_ROOT)/tao/debug.h
.obj/ValueBase.o .obj/ValueBase.so .shobj/ValueBase.o .shobj/ValueBase.so: ValueBase.cpp \
@@ -11226,6 +11682,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11327,10 +11785,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -11366,6 +11827,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -11417,6 +11879,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11483,6 +11947,8 @@ realclean:
$(ACE_ROOT)/ace/Hash_Map_Manager.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11590,10 +12056,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -11618,6 +12087,8 @@ realclean:
$(ACE_ROOT)/ace/Timeprobe.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11705,6 +12176,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -11763,6 +12237,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -11816,6 +12291,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11889,6 +12366,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -11957,6 +12436,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -12024,6 +12505,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Object_KeyC.i \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
@@ -12037,6 +12523,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -12104,6 +12592,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
@@ -12117,8 +12610,6 @@ realclean:
$(TAO_ROOT)/tao/Server_Request.h \
$(TAO_ROOT)/tao/Object_KeyC.h \
$(TAO_ROOT)/tao/Object_KeyC.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Server_Request.i \
$(TAO_ROOT)/tao/Principal.h \
$(TAO_ROOT)/tao/Principal.i \
@@ -12192,6 +12683,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -12266,6 +12758,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -12335,6 +12829,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Object_KeyC.i \
$(TAO_ROOT)/tao/GIOP.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -12344,8 +12843,6 @@ realclean:
$(TAO_ROOT)/tao/Typecode.i \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/GIOP.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Server_Request.i \
$(TAO_ROOT)/tao/Principal.h \
$(TAO_ROOT)/tao/Principal.i \
@@ -12418,6 +12915,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -12468,6 +12966,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -12550,6 +13050,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -12608,6 +13111,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -12663,6 +13167,206 @@ realclean:
$(TAO_ROOT)/tao/Object_KeyC.h \
$(TAO_ROOT)/tao/Object_KeyC.i \
$(TAO_ROOT)/tao/Connector_Registry.h
+.obj/Asynch_Invocation.o .obj/Asynch_Invocation.so .shobj/Asynch_Invocation.o .shobj/Asynch_Invocation.so: Asynch_Invocation.cpp \
+ $(TAO_ROOT)/tao/Asynch_Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/IORS.h \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/Invocation.i
.obj/ORB_Core.o .obj/ORB_Core.so .shobj/ORB_Core.o .shobj/ORB_Core.so: ORB_Core.cpp \
$(TAO_ROOT)/tao/ORB_Core.h \
$(TAO_ROOT)/tao/corbafwd.h \
@@ -12671,6 +13375,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -12753,6 +13459,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -12811,6 +13520,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -12911,6 +13621,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -13006,6 +13718,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -13101,6 +13815,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -13140,8 +13859,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/PolicyC.i \
@@ -13176,6 +13893,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -13197,6 +13915,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -13269,6 +13989,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -13375,6 +14097,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -13414,6 +14141,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -13515,10 +14244,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
@@ -13557,6 +14289,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -13645,14 +14379,15 @@ realclean:
$(ACE_ROOT)/ace/CORBA_macros.h \
$(TAO_ROOT)/tao/corbafwd.i \
$(TAO_ROOT)/tao/debug.h
-.obj/TAO.o .obj/TAO.so .shobj/TAO.o .shobj/TAO.so: TAO.cpp \
- $(TAO_ROOT)/tao/TAO.h \
+.obj/TAO.o .obj/TAO.so .shobj/TAO.o .shobj/TAO.so: TAO.cpp $(TAO_ROOT)/tao/TAO.h \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
$(ACE_ROOT)/ace/Message_Block.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -13732,6 +14467,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
@@ -13782,6 +14520,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -13850,6 +14590,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
$(TAO_ROOT)/tao/Exception.i \
@@ -13861,8 +14606,6 @@ realclean:
$(TAO_ROOT)/tao/Policy_Manager.h \
$(TAO_ROOT)/tao/POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -13925,6 +14668,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -13974,6 +14718,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14041,6 +14787,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
@@ -14048,9 +14799,52 @@ realclean:
$(TAO_ROOT)/tao/Typecode.i \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/GIOP.i \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
$(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/Reply_Dispatcher.i \
- $(TAO_ROOT)/tao/debug.h
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i
.obj/Reply_Dispatcher.o .obj/Reply_Dispatcher.so .shobj/Reply_Dispatcher.o .shobj/Reply_Dispatcher.so: Reply_Dispatcher.cpp \
$(TAO_ROOT)/tao/Reply_Dispatcher.h \
$(TAO_ROOT)/tao/GIOP.h \
@@ -14060,6 +14854,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14127,6 +14923,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/Typecode.h \
$(TAO_ROOT)/tao/Exception.h \
@@ -14134,7 +14935,114 @@ realclean:
$(TAO_ROOT)/tao/Typecode.i \
$(TAO_ROOT)/tao/CDR.i \
$(TAO_ROOT)/tao/GIOP.i \
- $(TAO_ROOT)/tao/Reply_Dispatcher.i
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/IORS.h \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp
.obj/IOPC.o .obj/IOPC.so .shobj/IOPC.o .shobj/IOPC.so: IOPC.cpp \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -14144,6 +15052,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14216,12 +15126,15 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/IOPC.i \
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i
.obj/IOPS.o .obj/IOPS.so .shobj/IOPS.o .shobj/IOPS.so: IOPS.cpp IOPS.h IOPC.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -14231,6 +15144,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14303,8 +15218,154 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/IOPC.i \
- IOPS_T.h IOPS_T.i IOPS_T.cpp IOPS.i
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/IOPC.i IOPS_T.h \
+ IOPS_T.i IOPS_T.cpp IOPS.i
+.obj/PollableC.o .obj/PollableC.so .shobj/PollableC.o .shobj/PollableC.so: PollableC.cpp \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i
+.obj/PollableS.o .obj/PollableS.so .shobj/PollableS.o .shobj/PollableS.so: PollableS.cpp \
+ $(TAO_ROOT)/tao/PollableS.h \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i
.obj/CONV_FRAMEC.o .obj/CONV_FRAMEC.so .shobj/CONV_FRAMEC.o .shobj/CONV_FRAMEC.so: CONV_FRAMEC.cpp CONV_FRAMEC.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/corbafwd.h \
@@ -14313,6 +15374,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14385,12 +15448,14 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- CONV_FRAMEC.i \
- $(TAO_ROOT)/tao/Any.h \
- $(TAO_ROOT)/tao/Environment.h \
- $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ CONV_FRAMEC.i $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
$(TAO_ROOT)/tao/Any.i
.obj/CONV_FRAMES.o .obj/CONV_FRAMES.so .shobj/CONV_FRAMES.o .shobj/CONV_FRAMES.so: CONV_FRAMES.cpp CONV_FRAMES.h CONV_FRAMEC.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -14400,6 +15465,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14472,6 +15539,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
CONV_FRAMEC.i CONV_FRAMES_T.h CONV_FRAMES_T.i CONV_FRAMES_T.cpp \
CONV_FRAMES.i
.obj/Tagged_Components.o .obj/Tagged_Components.so .shobj/Tagged_Components.o .shobj/Tagged_Components.so: Tagged_Components.cpp \
@@ -14484,6 +15556,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14556,6 +15630,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/IOPC.i \
$(TAO_ROOT)/tao/CONV_FRAMEC.h \
$(TAO_ROOT)/tao/CONV_FRAMEC.i \
@@ -14568,6 +15647,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14679,6 +15760,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
@@ -14699,6 +15783,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14785,6 +15871,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Request.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -14851,6 +15940,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i
@@ -14863,6 +15953,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -14929,6 +16021,11 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/Typecode.h \
@@ -14939,14 +16036,14 @@ realclean:
$(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/Environment.h \
$(TAO_ROOT)/tao/Environment.i \
- $(TAO_ROOT)/tao/Object.h \
- $(TAO_ROOT)/tao/Object.i \
$(TAO_ROOT)/tao/Any.i
.obj/NVList.o .obj/NVList.so .shobj/NVList.o .shobj/NVList.so: NVList.cpp \
$(TAO_ROOT)/tao/NVList.h \
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -15059,6 +16156,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
@@ -15078,6 +16178,8 @@ realclean:
$(TAO_ROOT)/tao/corba.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -15182,10 +16284,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/CDR.h \
@@ -15219,9 +16324,6 @@ realclean:
$(TAO_ROOT)/tao/GIOP.h \
$(TAO_ROOT)/tao/GIOP.i \
$(TAO_ROOT)/tao/Server_Request.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Marshal.h \
$(TAO_ROOT)/tao/Marshal.i \
$(TAO_ROOT)/tao/singletons.h \
@@ -15281,6 +16383,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Stub.i \
@@ -15336,6 +16439,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -15423,9 +16528,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.h \
$(TAO_ROOT)/tao/TimeBaseS.h \
@@ -15532,6 +16641,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -15626,6 +16737,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/ORB.h \
@@ -15674,6 +16788,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Operation_Table.h \
@@ -15690,6 +16805,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -15773,6 +16890,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -15833,6 +16953,7 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
$(TAO_ROOT)/tao/Policy_Manager.i \
@@ -15880,6 +17001,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -15890,9 +17013,8 @@ realclean:
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
- $(ACE_ROOT)/ace/Log_Record.i \
- TimeBaseS.h TimeBaseC.h \
- $(TAO_ROOT)/tao/Any.h \
+ $(ACE_ROOT)/ace/Log_Record.i TimeBaseS.h \
+ TimeBaseC.h $(TAO_ROOT)/tao/Any.h \
$(TAO_ROOT)/tao/CDR.h \
$(TAO_ROOT)/tao/corbafwd.h \
$(ACE_ROOT)/ace/CDR_Stream.h \
@@ -15955,9 +17077,8 @@ realclean:
$(TAO_ROOT)/tao/Environment.i \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
- $(TAO_ROOT)/tao/Any.i \
- TimeBaseC.i TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i \
- POA_CORBA.h \
+ $(TAO_ROOT)/tao/Any.i TimeBaseC.i \
+ TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i POA_CORBA.h \
$(TAO_ROOT)/tao/CurrentC.h \
$(TAO_ROOT)/tao/CurrentC.i \
$(TAO_ROOT)/tao/PolicyC.h \
@@ -15968,6 +17089,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/ORB.h \
@@ -16017,6 +17141,7 @@ realclean:
$(TAO_ROOT)/tao/TimeBaseC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
MessagingC.i MessagingS.i \
$(TAO_ROOT)/tao/Messaging_Policy_i.i \
$(ACE_ROOT)/ace/Auto_Ptr.h \
@@ -16027,6 +17152,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -16138,6 +17265,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
@@ -16173,17 +17303,17 @@ realclean:
$(TAO_ROOT)/tao/MessagingC.h \
$(TAO_ROOT)/tao/IOPC.h \
$(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
$(TAO_ROOT)/tao/MessagingC.i \
$(TAO_ROOT)/tao/MessagingS.i \
- $(TAO_ROOT)/tao/Stub.i \
- $(TAO_ROOT)/tao/varout.h \
- $(TAO_ROOT)/tao/varout.i \
- $(TAO_ROOT)/tao/varout.cpp
+ $(TAO_ROOT)/tao/Stub.i
.obj/DynAnyS.o .obj/DynAnyS.so .shobj/DynAnyS.o .shobj/DynAnyS.so: DynAnyS.cpp \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -16295,6 +17425,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/Services.i \
$(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
@@ -16319,6 +17452,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -16401,6 +17536,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -16466,6 +17604,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -16548,6 +17688,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -16604,6 +17747,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -16686,6 +17831,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -16742,6 +17890,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -16824,6 +17974,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -16880,6 +18033,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -16962,6 +18117,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -17018,6 +18176,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -17100,6 +18260,9 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
$(TAO_ROOT)/tao/PolicyC.i \
$(TAO_ROOT)/tao/DynAnyC.h \
$(TAO_ROOT)/tao/Any.h \
@@ -17158,6 +18321,8 @@ realclean:
$(TAO_ROOT)/tao/orbconf.h \
$(ACE_ROOT)/ace/OS.h \
$(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
$(ACE_ROOT)/ace/streams.h \
$(ACE_ROOT)/ace/Basic_Types.h \
$(ACE_ROOT)/ace/Basic_Types.i \
@@ -17259,10 +18424,13 @@ realclean:
$(TAO_ROOT)/tao/Sequence_T.h \
$(TAO_ROOT)/tao/Sequence_T.i \
$(TAO_ROOT)/tao/Sequence_T.cpp \
- $(TAO_ROOT)/tao/Services.i \
- $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/varout.h \
$(TAO_ROOT)/tao/Object.h \
$(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
$(TAO_ROOT)/tao/IORS.h \
$(TAO_ROOT)/tao/IORC.h \
$(TAO_ROOT)/tao/Environment.h \
diff --git a/TAO/tao/MessagingC.h b/TAO/tao/MessagingC.h
index 84dd0d8b2dc..39a431192d8 100644
--- a/TAO/tao/MessagingC.h
+++ b/TAO/tao/MessagingC.h
@@ -36,6 +36,8 @@
#include "tao/TimeBaseC.h"
#include "tao/PolicyC.h"
#include "tao/IOPC.h"
+#include "tao/PollableC.h"
+#include "tao/varout.h"
#if defined (TAO_EXPORT_MACRO)
#undef TAO_EXPORT_MACRO
@@ -1637,7 +1639,7 @@ TAO_NAMESPACE Messaging
class ReplyHandler;
typedef ReplyHandler *ReplyHandler_ptr;
-
+
class TAO_Export ReplyHandler_var
{
public:
@@ -1837,10 +1839,23 @@ TAO_NAMESPACE Messaging
};
TAO_NAMESPACE_STORAGE_CLASS CORBA::TypeCode_ptr _tc_Poller;
-#endif /* 0 */
+#endif /* TAO_POLLER */
}; // module Messaging
+// Typedef for the Reply Handler Skeleton.
+// This is handcrafted not generated by the IDL compiler.
+
+class TAO_InputCDR;
+
+#if defined (TAO_POLLER)
+typedef void (*TAO_Reply_Handler_Skeleton)(
+ TAO_InputCDR &,
+ Messaging::ReplyHandler *,
+ CORBA::Environment &
+ );
+#endif /* TAO_POLLER */
+
void TAO_Export operator<<= (CORBA::Any &, Messaging::PriorityRange*); // noncopying version
CORBA::Boolean TAO_Export operator>>= (const CORBA::Any &, Messaging::PriorityRange *&);
diff --git a/TAO/tao/MessagingS.cpp b/TAO/tao/MessagingS.cpp
index e8df7334f55..920a0795a66 100644
--- a/TAO/tao/MessagingS.cpp
+++ b/TAO/tao/MessagingS.cpp
@@ -1728,7 +1728,7 @@ void* POA_Messaging::Poller::_downcast (
return 0;
}
-void POA_Messaging::Poller::_dispatch (CORBA::ServerRequest & /* req */, void * /* context */, CORBA::Environment &ACE_TRY_ENV)
+void POA_Messaging::Poller::_dispatch (CORBA::ServerRequest &req, void * context, CORBA::Environment &ACE_TRY_ENV)
{
TAO_Skeleton skel; // pointer to skeleton for operation
const char *opname = req.operation (); // retrieve operation name
diff --git a/TAO/tao/Pluggable.cpp b/TAO/tao/Pluggable.cpp
index 4f8f0f97628..52c82100e1a 100644
--- a/TAO/tao/Pluggable.cpp
+++ b/TAO/tao/Pluggable.cpp
@@ -161,7 +161,7 @@ TAO_Transport::TAO_Transport (CORBA::ULong tag,
this->ws_ = orb_core->client_factory ()->create_wait_strategy (this);
// Create TMS now.
- this->tms_ = orb_core->client_factory ()->create_transport_mux_strategy ();
+ this->tms_ = orb_core->client_factory ()->create_transport_mux_strategy (orb_core);
}
TAO_Transport::~TAO_Transport (void)
@@ -214,6 +214,12 @@ TAO_Transport::bind_reply_dispatcher (CORBA::ULong request_id,
rd);
}
+int
+TAO_Transport::wait_for_reply (ACE_Time_Value *max_wait_time)
+{
+ return this->ws_->wait (max_wait_time);
+}
+
// Read and handle the reply. Returns 0 when there is Short Read on
// the connection. Returns 1 when the full reply is read and
// handled. Returns -1 on errors.
@@ -233,9 +239,21 @@ TAO_Transport::register_handler (void)
}
int
-TAO_Transport::wait_for_reply (ACE_Time_Value *max_wait_time)
+TAO_Transport::idle_after_send (void)
{
- return this->ws_->wait (max_wait_time);
+ return this->tms ()->idle_after_send (this);
+}
+
+int
+TAO_Transport::idle_after_reply (void)
+{
+ return this->tms ()->idle_after_reply (this);
+}
+
+int
+TAO_Transport::reply_received (const CORBA::ULong request_id)
+{
+ return this->tms ()->reply_received (request_id);
}
void
diff --git a/TAO/tao/Pluggable.h b/TAO/tao/Pluggable.h
index 400141ed4d9..caed29651b1 100644
--- a/TAO/tao/Pluggable.h
+++ b/TAO/tao/Pluggable.h
@@ -182,6 +182,22 @@ public:
// Strategy if Reactor is used for that strategy. Default
// implementation out here returns -1 setting <errno> to ENOTSUP.
+ // = Setting the Transport object in Idle state. Theese methods are
+ // routed the TMS object. The TMS starategies implement the
+ // methods accordingly.
+
+ virtual int idle_after_send (void);
+ // Request has been just sent, but the reply is not received. Idle
+ // the transport now.
+
+ virtual int idle_after_reply (void);
+ // Request is sent and the reply is received. Idle the transport
+ // now.
+
+ virtual int reply_received (const CORBA::ULong request_id);
+ // Check with the TMS whether the reply has been receieved for the
+ // request with <request_id>.
+
protected:
CORBA::ULong tag_;
// IOP protocol tag.
diff --git a/TAO/tao/PollableC.cpp b/TAO/tao/PollableC.cpp
index 862761f65c3..0a27a5f3bd2 100644
--- a/TAO/tao/PollableC.cpp
+++ b/TAO/tao/PollableC.cpp
@@ -18,6 +18,9 @@
// ================================================================
#include "tao/PollableC.h"
+
+#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER)
+
#include "tao/POA_CORBA.h"
#include "tao/Stub.h"
#include "tao/Invocation.h"
@@ -1104,3 +1107,5 @@ operator>> (
ACE_ENDTRY;
return 0;
}
+
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */
diff --git a/TAO/tao/PollableC.h b/TAO/tao/PollableC.h
index ace8b397b10..28562d59e52 100644
--- a/TAO/tao/PollableC.h
+++ b/TAO/tao/PollableC.h
@@ -21,6 +21,9 @@
#define TAO_IDL_POLLABLEC_H
#include "tao/corbafwd.h"
+
+#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER)
+
#include "tao/Object.h"
#include "tao/Exception.h"
#include "tao/CDR.h"
@@ -434,4 +437,6 @@ CORBA::Boolean TAO_Export operator>> (TAO_InputCDR &, CORBA_PollableSet::Unknown
#pragma warning(default:4250)
#endif /* _MSC_VER */
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */
+
#endif /* TAO_IDL_POLLABLEC_H */
diff --git a/TAO/tao/PollableS.cpp b/TAO/tao/PollableS.cpp
index 77d7952323f..7471731932d 100644
--- a/TAO/tao/PollableS.cpp
+++ b/TAO/tao/PollableS.cpp
@@ -18,6 +18,9 @@
// ================================================================
#include "tao/PollableS.h"
+
+#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER)
+
#include "tao/Operation_Table.h"
#include "tao/Server_Request.h"
@@ -271,7 +274,7 @@ POA_CORBA::_tao_collocated_Pollable::_tao_collocated_Pollable (
POA_CORBA::Pollable_ptr servant,
TAO_Stub *stub
)
- : ACE_NESTED_CLASS (CORBA,Pollable) (),
+ : ACE_CORBA_1 (Pollable) (),
CORBA_Object (stub, servant, 1),
servant_ (servant)
{
@@ -516,7 +519,7 @@ POA_CORBA::_tao_collocated_DIIPollable::_tao_collocated_DIIPollable (
POA_CORBA::DIIPollable_ptr servant,
TAO_Stub *stub
)
- : ACE_NESTED_CLASS (CORBA,DIIPollable) (),
+ : ACE_CORBA_1 (DIIPollable) (),
ACE_NESTED_CLASS (POA_CORBA,_tao_collocated_Pollable) (servant, stub),
CORBA_Object (stub, servant, 1),
servant_ (servant)
@@ -863,7 +866,7 @@ POA_CORBA::_tao_collocated_PollableSet::_tao_collocated_PollableSet (
POA_CORBA::PollableSet_ptr servant,
TAO_Stub *stub
)
- : ACE_NESTED_CLASS (CORBA,PollableSet) (),
+ : ACE_CORBA_1 (PollableSet) (),
CORBA_Object (stub, servant, 1),
servant_ (servant)
{
@@ -944,3 +947,4 @@ POA_CORBA::PollableSet::_this (CORBA_Environment &ACE_TRY_ENV)
ACE_CHECK_RETURN (0);
return new POA_CORBA::_tao_collocated_PollableSet (this, stub);
}
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */
diff --git a/TAO/tao/PollableS.h b/TAO/tao/PollableS.h
index 12543d0c754..6c977edd778 100644
--- a/TAO/tao/PollableS.h
+++ b/TAO/tao/PollableS.h
@@ -21,6 +21,9 @@
#define TAO_IDL_POLLABLES_H
#include "tao/PollableC.h"
+
+#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER)
+
#include "tao/POA_CORBA.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
@@ -229,4 +232,6 @@ private:
#pragma warning(default:4250)
#endif /* _MSC_VER */
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */
+
#endif /* ifndef */
diff --git a/TAO/tao/Reply_Dispatcher.cpp b/TAO/tao/Reply_Dispatcher.cpp
index e819776faab..372cc7e3061 100644
--- a/TAO/tao/Reply_Dispatcher.cpp
+++ b/TAO/tao/Reply_Dispatcher.cpp
@@ -1,6 +1,8 @@
// $Id$
#include "tao/Reply_Dispatcher.h"
+#include "tao/debug.h"
+#include "tao/ORB_Core.h"
#if !defined (__ACE_INLINE__)
#include "tao/Reply_Dispatcher.i"
@@ -8,6 +10,7 @@
// Constructor.
TAO_Reply_Dispatcher::TAO_Reply_Dispatcher (void)
+ // : reply_received_ (0)
{
}
@@ -22,12 +25,20 @@ TAO_Reply_Dispatcher::message_state (void) const
return 0;
}
+// int
+// TAO_Reply_Dispatcher::reply_received (void) const
+// {
+// return reply_received_;
+// }
+
// *********************************************************************
// Constructor.
-TAO_Synch_Reply_Dispatcher::
- TAO_Synch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state)
- : message_state_ (message_state)
+TAO_Synch_Reply_Dispatcher::TAO_Synch_Reply_Dispatcher (TAO_ORB_Core *orb_core)
+ : message_state_ (0),
+ reply_cdr_ (orb_core->create_input_cdr_data_block (ACE_CDR::DEFAULT_BUFSIZE),
+ TAO_ENCAP_BYTE_ORDER,
+ orb_core)
{
}
@@ -39,22 +50,15 @@ TAO_Synch_Reply_Dispatcher::~TAO_Synch_Reply_Dispatcher (void)
// Dispatch the reply.
int
TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
- const TAO_GIOP_Version& version,
- TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_GIOP_Message_State* message_state)
+ const TAO_GIOP_Version &version,
+ TAO_GIOP_ServiceContextList &reply_ctx,
+ TAO_GIOP_Message_State *message_state)
{
-# if defined (ACE_NDEBUG)
- ACE_UNUSED_ARG (message_state);
-# endif /* ACE_NDEBUG */
-
- ACE_ASSERT (message_state == this->message_state_);
- // @@ Notice that the message is ignored because we assume that
- // the message_state is the same we are giving down to the ORB to
- // use.... I.E. this class cannot be used with Muxed stream, but
- // chances are that the way to implement that will change several
- // times in the next few weeks.
+ // this->reply_received_ = 1;
+
this->reply_status_ = reply_status;
this->version_ = version;
+ this->message_state_ = message_state;
// Steal the buffer, that way we don't do any unnecesary copies of
// this data.
@@ -63,6 +67,9 @@ TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
TAO_GIOP_ServiceContext* context_list = reply_ctx.get_buffer (1);
this->reply_ctx_.replace (max, len, context_list, 1);
+ // Steal the buffer so that no copying is done.
+ this->reply_cdr_.reset (message_state->cdr.steal_contents (),
+ message_state->cdr.byte_order ());
return 1;
}
@@ -71,3 +78,72 @@ TAO_Synch_Reply_Dispatcher::message_state (void) const
{
return this->message_state_;
}
+
+TAO_InputCDR &
+TAO_Synch_Reply_Dispatcher::reply_cdr (void)
+{
+ return this->reply_cdr_;
+}
+
+
+// *********************************************************************
+#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER)
+// Constructor.
+TAO_Asynch_Reply_Dispatcher::TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel,
+ Messaging::ReplyHandler_ptr reply_handler_ptr)
+ : reply_handler_skel_ (reply_handler_skel),
+ reply_handler_ (reply_handler_ptr)
+{
+}
+
+// Destructor.
+TAO_Asynch_Reply_Dispatcher::~TAO_Asynch_Reply_Dispatcher (void)
+{
+}
+
+// Dispatch the reply.
+int
+TAO_Asynch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
+ const TAO_GIOP_Version &version,
+ TAO_GIOP_ServiceContextList &reply_ctx,
+ TAO_GIOP_Message_State *message_state)
+{
+ // this->reply_received_ = 1;
+
+ this->reply_status_ = reply_status;
+ this->version_ = version;
+ this->message_state_ = message_state;
+
+ // Steal the buffer, that way we don't do any unnecesary copies of
+ // this data.
+ CORBA::ULong max = reply_ctx.maximum ();
+ CORBA::ULong len = reply_ctx.length ();
+ TAO_GIOP_ServiceContext* context_list = reply_ctx.get_buffer (1);
+ this->reply_ctx_.replace (max, len, context_list, 1);
+
+ if (TAO_debug_level >= 4)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P | %t):TAO_Asynch_Reply_Dispatcher::dispatch_reply:\n"));
+ }
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+
+ // Call the Reply Handler's skeleton.
+ reply_handler_skel_ (message_state_->cdr,
+ reply_handler_,
+ ACE_TRY_ENV);
+
+ // This was dynamically allocated. Now the job is done. Commit
+ // suicide here.
+ delete this;
+
+ return 1;
+}
+
+TAO_GIOP_Message_State *
+TAO_Asynch_Reply_Dispatcher::message_state (void) const
+{
+ return this->message_state_;
+}
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */
diff --git a/TAO/tao/Reply_Dispatcher.h b/TAO/tao/Reply_Dispatcher.h
index 90132289124..78f1812d06e 100644
--- a/TAO/tao/Reply_Dispatcher.h
+++ b/TAO/tao/Reply_Dispatcher.h
@@ -1,3 +1,4 @@
+// This may look like C, but it's really -*- C++ -*-
// $Id$
// ============================================================================
@@ -20,6 +21,7 @@
#define TAO_REPLY_DISPATCHER_H
#include "tao/GIOP.h"
+#include "tao/MessagingC.h"
// Forward Declarations.
@@ -44,15 +46,21 @@ public:
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
TAO_GIOP_Message_State* message_state) = 0;
- // Dispatch the reply.
+ // Dispatch the reply. Return 1 on sucess, -1 on error.
virtual TAO_GIOP_Message_State *message_state (void) const;
- // Get the Message State
- // By default it returns <0> but if the request can pre-allocate one
- // for us then we can return it and pass it along for non-Muxed
- // transports.
+ // Get the Message State into which the reply has been read.
+
+ // virtual int reply_received (void) const;
+ // Return the reply received flag.
+
+ // protected:
+ // int reply_received_;
+ // Reply received flag.
};
+// *********************************************************************
+
class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher
{
// = TITLE
@@ -63,7 +71,7 @@ class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher
//
public:
- TAO_Synch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state);
+ TAO_Synch_Reply_Dispatcher (TAO_ORB_Core *orb_core);
// Constructor.
virtual ~TAO_Synch_Reply_Dispatcher (void);
@@ -73,6 +81,68 @@ public:
// Get the reply status.
const TAO_GIOP_Version& version (void) const;
+ // Get the GIOP version.
+
+ TAO_GIOP_ServiceContextList& reply_ctx (void);
+ // Get the reply context
+
+ virtual int dispatch_reply (CORBA::ULong reply_status,
+ const TAO_GIOP_Version& version,
+ TAO_GIOP_ServiceContextList& reply_ctx,
+ TAO_GIOP_Message_State* message_state);
+ // Dispatch the reply. Copy the buffers and return. Since the
+ // invocation is synchronous demarshalling will take place on the
+ // stack.
+ // Return 1 on sucess, -1 on error.
+
+ virtual TAO_GIOP_Message_State *message_state (void) const;
+ // Return the message state of this invocation.
+
+ virtual TAO_InputCDR &reply_cdr (void);
+ // Return the reply CDR.
+
+private:
+ CORBA::ULong reply_status_;
+ // Reply or LocateReply status.
+
+ TAO_GIOP_Version version_;
+ // The version
+
+ TAO_GIOP_ServiceContextList reply_ctx_;
+ // The service context list
+
+ TAO_GIOP_Message_State *message_state_;
+ // CDR stream for reading the input.
+ // @@ Carlos : message_state should go away. All we need is the reply
+ // cdr. Is that rite? (Alex).
+
+ TAO_InputCDR reply_cdr_;
+ // CDR where the reply message is placed.
+};
+
+// *********************************************************************
+#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER)
+class TAO_Export TAO_Asynch_Reply_Dispatcher : public TAO_Reply_Dispatcher
+{
+ // = TITLE
+ //
+ // Reply dispatcher for Asynchoronous Method Invocation (AMI)s.
+ //
+ // = DESCRIPTION
+ //
+
+public:
+ TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel,
+ Messaging::ReplyHandler_ptr reply_handler_ptr);
+ // Constructor.
+
+ virtual ~TAO_Asynch_Reply_Dispatcher (void);
+ // Destructor.
+
+ CORBA::ULong reply_status (void) const;
+ // Get the reply status.
+
+ const TAO_GIOP_Version& version (void) const;
// Get the GIOP version
TAO_GIOP_ServiceContextList& reply_ctx (void);
@@ -82,7 +152,13 @@ public:
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
TAO_GIOP_Message_State* message_state);
+ // Dispatch the reply. This involves demarshalling the reply and
+ // calling the appropriate call back hook method on the reply
+ // handler.
+ // Return 1 on sucess, -1 on error.
+
virtual TAO_GIOP_Message_State *message_state (void) const;
+ // Return the message state.
private:
CORBA::ULong reply_status_;
@@ -96,7 +172,17 @@ private:
TAO_GIOP_Message_State *message_state_;
// CDR stream for reading the input.
+ // @@ Carlos : message_state should go away. All we need is the reply
+ // cdr. Is that rite? (Alex).
+
+ const TAO_Reply_Handler_Skeleton reply_handler_skel_;
+ // Skeleton for the call back method in the Reply Handler.
+
+ Messaging::ReplyHandler_ptr reply_handler_;
+ // Reply Handler passed in the Asynchronous Invocation.
};
+#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */
+// *********************************************************************
#if defined (__ACE_INLINE__)
#include "tao/Reply_Dispatcher.i"
diff --git a/TAO/tao/Transport_Mux_Strategy.cpp b/TAO/tao/Transport_Mux_Strategy.cpp
index 647cef53e67..b18471fb17a 100644
--- a/TAO/tao/Transport_Mux_Strategy.cpp
+++ b/TAO/tao/Transport_Mux_Strategy.cpp
@@ -3,14 +3,7 @@
#include "tao/Transport_Mux_Strategy.h"
#include "tao/Reply_Dispatcher.h"
#include "tao/debug.h"
-
-// @@ Alex: there is another aspect that is controlled by this
-// strategy: the demuxed version must idle() the transport
-// right after the request is sent, otherwise nobody else will be
-// able to use it.
-// The exclusive version must idle it after the reply is received,
-// to guarantee that nobody else is using it.
-// We may need to add a couple of methods to implement that.
+#include "tao/Pluggable.h"
TAO_Transport_Mux_Strategy::TAO_Transport_Mux_Strategy (void)
{
@@ -22,110 +15,213 @@ TAO_Transport_Mux_Strategy::~TAO_Transport_Mux_Strategy (void)
// *********************************************************************
-TAO_Muxed_TMS::TAO_Muxed_TMS (void)
+TAO_Exclusive_TMS::TAO_Exclusive_TMS (TAO_ORB_Core *orb_core)
+ : request_id_generator_ (0),
+ request_id_ (0),
+ rd_ (0),
+ message_state_ (orb_core)
{
}
-TAO_Muxed_TMS::~TAO_Muxed_TMS (void)
+TAO_Exclusive_TMS::~TAO_Exclusive_TMS (void)
{
- // @@ delete ???
}
// Generate and return an unique request id for the current
-// invocation.
+// invocation. We can actually return a predecided ULong, since we
+// allow only one invocation over this connection at a time.
CORBA::ULong
-TAO_Muxed_TMS::request_id (void)
+TAO_Exclusive_TMS::request_id (void)
{
- // @@
- return 0;
+ return this->request_id_generator_++;
}
-// Bind the dispatcher with the request id.
+// Bind the handler with the request id.
int
-TAO_Muxed_TMS::bind_dispatcher (CORBA::ULong,
- TAO_Reply_Dispatcher *)
+TAO_Exclusive_TMS::bind_dispatcher (CORBA::ULong request_id,
+ TAO_Reply_Dispatcher *rd)
{
- // @@
+ this->request_id_ = request_id;
+ this->rd_ = rd;
+
+ // @@ Carlos: This method marks the <start> of an invocation. This
+ // should be the correct place to <reset> the message state. Do I
+ // make sense? (Alex).
+
+ // If there was a previous reply, cleanup its state first.
+ if (this->message_state_.message_size != 0)
+ this->message_state_.reset ();
+
return 0;
}
int
-TAO_Muxed_TMS::dispatch_reply (CORBA::ULong /* request_id */,
- CORBA::ULong /* reply_status */,
- const TAO_GIOP_Version&,
- TAO_GIOP_ServiceContextList& /* reply_ctx */,
- TAO_GIOP_Message_State*)
+TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id,
+ CORBA::ULong reply_status,
+ const TAO_GIOP_Version& version,
+ TAO_GIOP_ServiceContextList& reply_ctx,
+ TAO_GIOP_Message_State* message_state)
{
- // @@
- return -1;
+ // There can be only one message state possible. Just do a sanity
+ // check here.
+ ACE_ASSERT (message_state == &(this->message_state_));
+
+ // Check the ids.
+ if (this->request_id_ != request_id)
+ {
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "TAO_Exclusive_TMS::dispatch_reply - <%d != %d>\n",
+ this->request_id_, request_id));
+ return -1;
+ }
+
+ TAO_Reply_Dispatcher *rd = this->rd_;
+ this->request_id_ = 0xdeadbeef; // @@ What is a good value???
+ this->rd_ = 0;
+
+ return rd->dispatch_reply (reply_status,
+ version,
+ reply_ctx,
+ message_state);
}
TAO_GIOP_Message_State *
-TAO_Muxed_TMS::get_message_state (void)
+TAO_Exclusive_TMS::get_message_state (void)
{
- return 0;
+ if (this->rd_ == 0)
+ return 0;
+
+ return &(this->message_state_);
}
void
-TAO_Muxed_TMS::destroy_message_state (TAO_GIOP_Message_State *)
+TAO_Exclusive_TMS::destroy_message_state (TAO_GIOP_Message_State *)
+{
+ // No Op.
+}
+
+int
+TAO_Exclusive_TMS::idle_after_send (TAO_Transport *)
{
- // @@ Implement.
- // delete message_state;
- // message_state = 0;
+ // No op.
+ return 0;
}
+
+int
+TAO_Exclusive_TMS::idle_after_reply (TAO_Transport *transport)
+{
+ if (transport != 0)
+ return transport->idle ();
+ return 0;
+}
+
+int
+TAO_Exclusive_TMS::reply_received (const CORBA::ULong request_id)
+{
+ if (this->rd_ == 0)
+ {
+ // Reply should have been dispatched already.
+ return 1;
+ }
+ else if (this->request_id_ == request_id)
+ {
+ // Reply dispatcher is still here.
+ return 0;
+ }
+ else
+ {
+ // Error. Request id is not matching.
+
+ if (TAO_debug_level > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P | %t):TAO_Exclusive_TMS::reply_received:"
+ "Invalid request_id \n"));
+ }
+ return -1;
+ }
+}
+
// *********************************************************************
-TAO_Exclusive_TMS::TAO_Exclusive_TMS (void)
+TAO_Muxed_TMS::TAO_Muxed_TMS (TAO_ORB_Core *orb_core)
: request_id_generator_ (0),
- request_id_ (0),
- rd_ (0)
+ orb_core_ (orb_core),
+ message_state_ (0)
{
}
-TAO_Exclusive_TMS::~TAO_Exclusive_TMS (void)
+TAO_Muxed_TMS::~TAO_Muxed_TMS (void)
{
}
// Generate and return an unique request id for the current
-// invocation. We can actually return a predecided ULong, since we
-// allow only one invocation over this connection at a time.
+// invocation.
CORBA::ULong
-TAO_Exclusive_TMS::request_id (void)
+TAO_Muxed_TMS::request_id (void)
{
+ // @@ What is a good error return value?
+ ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
+ this->request_id_lock_, 0);
return this->request_id_generator_++;
}
-// Bind the handler with the request id.
+// Bind the dispatcher with the request id.
int
-TAO_Exclusive_TMS::bind_dispatcher (CORBA::ULong request_id,
- TAO_Reply_Dispatcher *rd)
+TAO_Muxed_TMS::bind_dispatcher (CORBA::ULong request_id,
+ TAO_Reply_Dispatcher *rd)
{
- this->request_id_ = request_id;
- this->rd_ = rd;
+ int result = this->dispatcher_table_.bind (request_id, rd);
+
+ if (result != 0)
+ {
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P | %t):TAO_Muxed_TMS::bind_dispatcher: "
+ "bind dispatcher failed: result = %d\n",
+ result));
+
+ return -1;
+ }
return 0;
}
int
-TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id,
- CORBA::ULong reply_status,
- const TAO_GIOP_Version& version,
- TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_GIOP_Message_State* message_state)
+TAO_Muxed_TMS::dispatch_reply (CORBA::ULong request_id,
+ CORBA::ULong reply_status,
+ const TAO_GIOP_Version &version,
+ TAO_GIOP_ServiceContextList &reply_ctx,
+ TAO_GIOP_Message_State *message_state)
{
- if (this->request_id_ != request_id)
+ // This message state should be the same as the one we have here,
+ // which we gave to the Transport to read the message. Just a sanity
+ // check here.
+ ACE_ASSERT (message_state == this->message_state_);
+
+ int result = 0;
+ TAO_Reply_Dispatcher *rd = 0;
+
+ // Grab the reply dispatcher for this id.
+ result = this->dispatcher_table_.unbind (request_id, rd);
+
+ if (result != 0)
{
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
- "TAO_Exclusive_TMS::dispatch_reply - <%d != %d>\n",
- this->request_id_, request_id));
- return 0;
+ "(%P | %t):TAO_Muxed_TMS::dispatch_reply: "
+ "unbind dispatcher failed: result = %d\n",
+ result));
+
+ return -1;
}
- TAO_Reply_Dispatcher *rd = this->rd_;
- this->request_id_ = 0xdeadbeef; // @@ What is a good value???
- this->rd_ = 0;
+ // @@ Carlos : We could save the <messagee_state> somehow and then
+ // signal some other thread to go ahead read the incoming message
+ // if any. Is this what you were telling me before? (Alex).
+ // Dispatch the reply.
return rd->dispatch_reply (reply_status,
version,
reply_ctx,
@@ -133,16 +229,113 @@ TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id,
}
TAO_GIOP_Message_State *
-TAO_Exclusive_TMS::get_message_state (void)
+TAO_Muxed_TMS::get_message_state (void)
{
- if (this->rd_ == 0)
- return 0;
-
- return this->rd_->message_state ();
+ if (this->message_state_ == 0)
+ {
+ // Create the next message state.
+ ACE_NEW_RETURN (this->message_state_,
+ TAO_GIOP_Message_State (this->orb_core_),
+ 0);
+ }
+
+ return this->message_state_;
}
-// NOOP function.
void
-TAO_Exclusive_TMS::destroy_message_state (TAO_GIOP_Message_State *)
+TAO_Muxed_TMS::destroy_message_state (TAO_GIOP_Message_State *)
+{
+ delete this->message_state_;
+ this->message_state_ = 0;
+}
+
+int
+TAO_Muxed_TMS::idle_after_send (TAO_Transport *transport)
+{
+ if (transport != 0)
+ return transport->idle ();
+
+ return 0;
+}
+
+int
+TAO_Muxed_TMS::idle_after_reply (TAO_Transport *)
+{
+ return 0;
+}
+
+int
+TAO_Muxed_TMS::reply_received (const CORBA::ULong request_id)
{
+ if (this->dispatcher_table_.find (request_id) == -1)
+ {
+ // Reply should have been dispatched already.
+ return 1;
+ }
+ else
+ {
+ // Reply dispatcher is still here.
+ return 0;
+ }
}
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+template class ACE_Hash_Map_Manager_Ex <CORBA::ULong,
+ TAO_Reply_Dispatcher *,
+ ACE_Hash <CORBA::ULong>,
+ ACE_Equal_To <CORBA::ULong>,
+ ACE_SYNCH_MUTEX>;
+
+template class ACE_Hash_Map_Entry<CORBA::ULong,
+ TAO_Reply_Dispatcher *>;
+
+template class ACE_Hash_Map_Iterator_Base_Ex<CORBA::ULong,
+ TAO_Reply_Dispatcher *,
+ ACE_Hash<unsigned int>,
+ ACE_Equal_To<unsigned int>,
+ ACE_SYNCH_MUTEX>;
+
+template class ACE_Hash_Map_Iterator_Ex<CORBA::ULong,
+ TAO_Reply_Dispatcher*,
+ ACE_Hash<CORBA::ULong>,
+ ACE_Equal_To<CORBA::ULong>,
+ ACE_SYNCH_MUTEX>;
+
+template class ACE_Hash_Map_Reverse_Iterator_Ex<CORBA::ULong,
+ TAO_Reply_Dispatcher*,
+ ACE_Hash<CORBA::ULong>,
+ ACE_Equal_To<CORBA::ULong>,
+ ACE_SYNCH_MUTEX>;
+template class ACE_Equal_To <CORBA::ULong>;
+
+#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+#pragma instantiate ACE_Hash_Map_Manager_Ex <CORBA::ULong,
+ TAO_Reply_Dispatcher *,
+ ACE_Hash <CORBA::ULong>,
+ ACE_Equal_To <CORBA::ULong>,
+ ACE_SYNCH_MUTEX>
+
+#pragma instantiate ACE_Hash_Map_Entry<CORBA::ULong,
+ TAO_Reply_Dispatcher *>
+
+#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<unsigned int,
+ TAO_Reply_Dispatcher *,
+ ACE_Hash<unsigned int>,
+ ACE_Equal_To<unsigned int>,
+ ACE_SYNCH_MUTEX>
+
+#pragma instantiate ACE_Hash_Map_Iterator_Ex<CORBA::ULong,
+ TAO_Reply_Dispatcher*,
+ ACE_Hash<CORBA::ULong>,
+ ACE_Equal_To<CORBA::ULong>,
+ ACE_SYNCH_MUTEX>
+
+#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<CORBA::ULong,
+ TAO_Reply_Dispatcher*,
+ ACE_Hash<CORBA::ULong>,
+ ACE_Equal_To<CORBA::ULong>,
+ ACE_SYNCH_MUTEX>
+
+#pragma instantiate ACE_Equal_To <CORBA::ULong>
+
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/tao/Transport_Mux_Strategy.h b/TAO/tao/Transport_Mux_Strategy.h
index 8cdb605aec9..6c13a03e73d 100644
--- a/TAO/tao/Transport_Mux_Strategy.h
+++ b/TAO/tao/Transport_Mux_Strategy.h
@@ -1,3 +1,4 @@
+// This may look like C, but it's really -*- C++ -*-
// $Id$
// ============================================================================
@@ -25,6 +26,9 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "ace/Functor.h"
+#include "ace/Hash_Map_Manager.h"
+
class TAO_Reply_Dispatcher;
class TAO_Export TAO_Transport_Mux_Strategy
@@ -37,7 +41,7 @@ class TAO_Export TAO_Transport_Mux_Strategy
//
// = DESCRIPTION
//
-
+
public:
TAO_Transport_Mux_Strategy (void);
// Base class constructor.
@@ -50,13 +54,12 @@ public:
// invocation.
// = Bind and Find methods for the <Request ID, ReplyDispatcher>
- // pairs. The ReplyDispatcher is not the CORBA ReplyDispatcher of
- // the AMI's.
+ // pairs.
virtual int bind_dispatcher (CORBA::ULong request_id,
- TAO_Reply_Dispatcher *rh) = 0;
+ TAO_Reply_Dispatcher *rd) = 0;
// Bind the dispatcher with the request id.
-
+
virtual int dispatch_reply (CORBA::ULong request_id,
CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
@@ -74,78 +77,170 @@ public:
virtual void destroy_message_state (TAO_GIOP_Message_State *) = 0;
// Destroy a CDR stream.
+
+ virtual int idle_after_send (TAO_Transport *) = 0;
+ // Request has been just sent, but the reply is not received. Idle
+ // the transport now.
+
+ virtual int idle_after_reply (TAO_Transport *) = 0;
+ // Request is sent and the reply is received. Idle the transport
+ // now.
+
+ virtual int reply_received (const CORBA::ULong request_id) = 0;
+ // Check whether the reply has been receieved for the request with
+ // <request_id>. Return 0 if no, 1 on yes and -1 if the request_id
+ // is invalid or there are some errors.
};
-class TAO_Export TAO_Muxed_TMS : public TAO_Transport_Mux_Strategy
+// *********************************************************************
+
+class TAO_Export TAO_Exclusive_TMS : public TAO_Transport_Mux_Strategy
{
// = TITLE
//
- // Connection is multiplexed for many requests.
+ // Connection exclusive for the request.
//
// = DESCRIPTION
//
public:
- TAO_Muxed_TMS (void);
+ TAO_Exclusive_TMS (TAO_ORB_Core *orb_core);
// Constructor.
- virtual ~TAO_Muxed_TMS (void);
+ virtual ~TAO_Exclusive_TMS (void);
// Destructor.
- // = The TAO Request Strategy methods...
virtual CORBA::ULong request_id (void);
+ // Generate and return an unique request id for the current
+ // invocation.
+
virtual int bind_dispatcher (CORBA::ULong request_id,
TAO_Reply_Dispatcher *rh);
+ // Bind the dispatcher with the request id.
+
virtual int dispatch_reply (CORBA::ULong request_id,
CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
TAO_GIOP_Message_State* message_state);
+ // Dispatch the reply for <request_id>, cleanup any resources
+ // allocated for that request.
+
virtual TAO_GIOP_Message_State *get_message_state (void);
+ // Return the pre-allocated message state.
+
virtual void destroy_message_state (TAO_GIOP_Message_State *);
+ // No op in this strategy.
+
+ virtual int idle_after_send (TAO_Transport *transport);
+ // Request has been just sent, but the reply is not received. Idle
+ // the transport now.
+
+ virtual int idle_after_reply (TAO_Transport *transport);
+ // Request is sent and the reply is received. Idle the transport
+ // now.
+
+ virtual int reply_received (const CORBA::ULong request_id);
+ // Check whether the reply has been receieved for the request with
+ // <request_id>. Return 0 if no, 1 on yes and -1 if the request_id
+ // is invalid or there are errors.
protected:
- // @@ HASH TABLE???
+ CORBA::ULong request_id_generator_;
+ // Used to generate a different request_id on each call to
+ // request_id().
+
+ CORBA::ULong request_id_;
+ // Request id for the current request.
+
+ TAO_Reply_Dispatcher *rd_;
+ // Reply Dispatcher corresponding to the request.
+
+ TAO_GIOP_Message_State message_state_;
+ // Message state to read the incoming message.
};
-class TAO_Export TAO_Exclusive_TMS : public TAO_Transport_Mux_Strategy
+// *********************************************************************
+
+class TAO_Export TAO_Muxed_TMS : public TAO_Transport_Mux_Strategy
{
// = TITLE
//
- // Connection exclusive for the request.
+ // Connection is multiplexed for many requests.
//
// = DESCRIPTION
//
public:
- TAO_Exclusive_TMS (void);
+ TAO_Muxed_TMS (TAO_ORB_Core *orb_core);
// Constructor.
- virtual ~TAO_Exclusive_TMS (void);
+ virtual ~TAO_Muxed_TMS (void);
// Destructor.
- // = The TAO Request Strategy methods...
virtual CORBA::ULong request_id (void);
+ // Generate and return an unique request id for the current
+ // invocation.
+
virtual int bind_dispatcher (CORBA::ULong request_id,
TAO_Reply_Dispatcher *rh);
+ // Bind the dispatcher with the request id.
+
virtual int dispatch_reply (CORBA::ULong request_id,
CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
TAO_GIOP_Message_State* message_state);
+ // Dispatch the reply for <request_id>, cleanup any resources
+ // allocated for that request.
+
virtual TAO_GIOP_Message_State *get_message_state (void);
+ // Return the message state.
+
virtual void destroy_message_state (TAO_GIOP_Message_State *);
+ // No op in this strategy.
+
+ virtual int idle_after_send (TAO_Transport *transport);
+ // Request has been just sent, but the reply is not received. Idle
+ // the transport now.
+
+ virtual int idle_after_reply (TAO_Transport *transport);
+ // Request is sent and the reply is received. Idle the transport
+ // now.
+
+ virtual int reply_received (const CORBA::ULong request_id);
+ // Check whether the reply has been receieved for the request with
+ // <request_id>. Return 0 if no, 1 on yes and -1 if the request_id
+ // is invalid or there are errors.
protected:
CORBA::ULong request_id_generator_;
// Used to generate a different request_id on each call to
- // request_id()
+ // request_id().
- CORBA::ULong request_id_;
- // Request id for the current request.
+ ACE_SYNCH_MUTEX request_id_lock_;
+ // Lock to protect the state of the request id generator.
- TAO_Reply_Dispatcher *rd_;
- // Reply Dispatcher corresponding to the request.
+ typedef ACE_Hash_Map_Manager_Ex <CORBA::ULong,
+ TAO_Reply_Dispatcher *,
+ ACE_Hash <CORBA::ULong>,
+ ACE_Equal_To <CORBA::ULong>,
+ ACE_SYNCH_MUTEX> REQUEST_DISPATCHER_TABLE;
+
+ REQUEST_DISPATCHER_TABLE dispatcher_table_;
+ // Table of <Request ID, Reply Dispatcher> pairs.
+
+ TAO_ORB_Core *orb_core_;
+ // Keep track of the orb core pointer. We need to this to create the
+ // Reply Dispatchers.
+
+ TAO_GIOP_Message_State *message_state_;
+ // Message state where the current input message is being read. This
+ // is created at start of each incoming message. When that message
+ // is read, the message is processed and for the next message a new
+ // message state is created.
};
+// *********************************************************************
+
#endif /* TRANSPORT_MUX_STRATEGY_H */
diff --git a/TAO/tao/Wait_Strategy.cpp b/TAO/tao/Wait_Strategy.cpp
index 5f65b308063..6fcd47d5026 100644
--- a/TAO/tao/Wait_Strategy.cpp
+++ b/TAO/tao/Wait_Strategy.cpp
@@ -46,17 +46,9 @@ TAO_Wait_On_Reactor::wait (ACE_Time_Value *max_wait_time)
ACE_Reactor* reactor =
this->transport_->orb_core ()->reactor ();
- // @@ Carlos: Can we rely on <reply_received> flag in the AMI case?
- // It depends on whether we are expecting replies or not, right?
- // So, I think we can simply return from this loop, when some
- // event occurs, and the invocation guy can call us again, if it
- // wants to. (AMI will call, if it is expecting replies, SMI will
- // call if the reply is not arrived) (Alex).
- // @@ Alex: I think you are right, let's fix it later....
-
- // Do the event loop, till we received the reply.
-
- int result = 1;
+ // Do the event loop, till we fully receive a reply.
+
+ int result = 1; // So the first iteration works...
this->reply_received_ = 0;
while (this->reply_received_ == 0 && result > 0)
{
@@ -153,23 +145,12 @@ TAO_Wait_On_Leader_Follower::sending_request (TAO_ORB_Core *orb_core,
//if (TAO_debug_level > 0)
//ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) - sending request for <%x>\n",
//this->transport_));
-
}
- // @@ Should we do here that checking for the difference in the
- // Reactor used??? (Alex).
-
// Register the handler.
this->transport_->register_handler ();
- // @@ Carlos: We do this only if the reactor is different right?
- // (Alex)
- // @@ Alex: that is taken care of in
- // IIOP_Transport::register_handler, but maybe we shouldn't do
- // this checking everytime, I recall that there was a problem
- // (sometime ago) about using the wrong ORB core, but that may
- // have been fixed...
-
- // Send the request
+
+ // Send the request.
int result =
this->TAO_Wait_Strategy::sending_request (orb_core,
two_way);
@@ -232,9 +213,11 @@ TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time)
if (leader_follower.add_follower (cond) == -1)
ACE_ERROR ((LM_ERROR,
"TAO (%P|%t) TAO_Wait_On_Leader_Follower::wait - "
- "add_follower failed for <%x>\n", cond));
+ "add_follower failed for <%x>\n",
+ cond));
- while (!this->reply_received_ && leader_follower.leader_available ())
+ while (!this->reply_received_ &&
+ leader_follower.leader_available ())
{
if (max_wait_time == 0)
{
@@ -264,7 +247,8 @@ TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time)
// our input. We are already removed from the follower queue.
if (this->reply_received_ == 1)
{
- // But first reset our state in case we are invoked again...
+ // But first reset our state in case we are invoked
+ // again...
this->reply_received_ = 0;
this->expecting_response_ = 0;
this->calling_thread_ = ACE_OS::NULL_thread;
@@ -273,7 +257,8 @@ TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time)
}
else if (this->reply_received_ == -1)
{
- // But first reset our state in case we are invoked again...
+ // But first reset our state in case we are invoked
+ // again...
this->reply_received_ = 0;
this->expecting_response_ = 0;
this->calling_thread_ = ACE_OS::NULL_thread;
@@ -377,7 +362,8 @@ TAO_Wait_On_Leader_Follower::handle_input (void)
// Obtain the lock.
ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon,
- orb_core->leader_follower ().lock (), -1);
+ orb_core->leader_follower ().lock (),
+ -1);
// ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) - reading reply <%x>\n",
// this->transport_));
@@ -399,7 +385,6 @@ TAO_Wait_On_Leader_Follower::handle_input (void)
// Receive any data that is available, without blocking...
int result = this->transport_->handle_client_input (0);
-
// Data was read, but there the reply has not been completely
// received...
if (result == 0)
@@ -494,12 +479,12 @@ TAO_Wait_On_Read::~TAO_Wait_On_Read (void)
int
TAO_Wait_On_Read::wait (ACE_Time_Value * max_wait_time)
{
- int received_reply = 0;
- while (received_reply != 1)
+ int reply_complete = 0;
+ while (reply_complete != 1)
{
- received_reply =
+ reply_complete =
this->transport_->handle_client_input (1, max_wait_time);
- if (received_reply == -1)
+ if (reply_complete == -1)
return -1;
}
diff --git a/TAO/tao/Wait_Strategy.h b/TAO/tao/Wait_Strategy.h
index b436903f605..1433b5bd5cf 100644
--- a/TAO/tao/Wait_Strategy.h
+++ b/TAO/tao/Wait_Strategy.h
@@ -1,3 +1,4 @@
+// This may look like C, but it's really -*- C++ -*-
// $Id$
// ============================================================================
diff --git a/TAO/tao/default_client.cpp b/TAO/tao/default_client.cpp
index 18e327e16aa..3325ac7a5c2 100644
--- a/TAO/tao/default_client.cpp
+++ b/TAO/tao/default_client.cpp
@@ -157,20 +157,18 @@ TAO_Default_Client_Strategy_Factory::create_profile_lock (void)
// Create the correct client transport muxing strategy.
TAO_Transport_Mux_Strategy *
-TAO_Default_Client_Strategy_Factory::create_transport_mux_strategy (void)
+TAO_Default_Client_Strategy_Factory::create_transport_mux_strategy (TAO_ORB_Core *orb_core)
{
TAO_Transport_Mux_Strategy *tms = 0;
- //if (this->transport_mux_strategy_ == TAO_MUXED_TMS)
- //ACE_NEW_RETURN (tms,
- // TAO_Muxed_TMS,
- // 0);
- //else
-
- // @@ Alex: Always creating Exclusive TMS. (Alex).
- ACE_NEW_RETURN (tms,
- TAO_Exclusive_TMS,
- 0);
+ if (this->transport_mux_strategy_ == TAO_MUXED_TMS)
+ ACE_NEW_RETURN (tms,
+ TAO_Muxed_TMS (orb_core),
+ 0);
+ else
+ ACE_NEW_RETURN (tms,
+ TAO_Exclusive_TMS (orb_core),
+ 0);
return tms;
}
diff --git a/TAO/tao/default_client.h b/TAO/tao/default_client.h
index 6afeec2803d..0261dfca0f8 100644
--- a/TAO/tao/default_client.h
+++ b/TAO/tao/default_client.h
@@ -47,7 +47,7 @@ public:
// the TAO_GIOP_Invocation::location_forward and the
// TAO_GIOP_Invocation::start
- TAO_Transport_Mux_Strategy *create_transport_mux_strategy (void);
+ TAO_Transport_Mux_Strategy *create_transport_mux_strategy (TAO_ORB_Core *orb_core);
// Create the correct client request muxing strategy.
TAO_Wait_Strategy *create_wait_strategy (TAO_Transport *transport);
diff --git a/TAO/tests/AMI/Makefile b/TAO/tests/AMI/Makefile
new file mode 100644
index 00000000000..86ac3a83c4b
--- /dev/null
+++ b/TAO/tests/AMI/Makefile
@@ -0,0 +1,1899 @@
+#----------------------------------------------------------------------------
+#
+# $Id$
+#
+#----------------------------------------------------------------------------
+
+#----------------------------------------------------------------------------
+# Local macros
+#----------------------------------------------------------------------------
+
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif # ! TAO_ROOT
+
+LDLIBS = -lTAO
+
+IDLFILES = testC testS
+BIN = server simple-client client
+
+SRC = $(addsuffix .cpp, $(BIN) $(IDLFILES) test_i)
+
+CLIENT_OBJS = client.o $(addsuffix .o, $(IDLFILES))
+SIMPLE_CLIENT_OBJS = simple-client.o $(addsuffix .o, $(IDLFILES))
+ORB_CREATION_OBJS = orb_creation.o $(addsuffix .o, $(IDLFILES))
+SERVER_OBJS = server.o test_i.o $(addsuffix .o, $(IDLFILES))
+
+BUILD = $(BIN)
+VLDLIBS = $(LDLIBS:%=%$(VAR))
+VBIN = $(BIN:%=%$(VAR))
+
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(TAO_ROOT)/rules.tao.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+include $(TAO_ROOT)/taoconfig.mk
+
+#----------------------------------------------------------------------------
+# Local targets
+#----------------------------------------------------------------------------
+
+override TAO_IDLFLAGS += -GC
+
+.PRECIOUS: $(foreach ext, $(IDL_EXT), test$(ext))
+
+server: $(addprefix $(VDIR),$(SERVER_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+client: $(addprefix $(VDIR),$(CLIENT_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+orb_creation: $(addprefix $(VDIR),$(ORB_CREATION_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+simple-client: $(addprefix $(VDIR),$(SIMPLE_CLIENT_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
+
+realclean: clean
+ -$(RM) $(foreach ext, $(IDL_EXT), test$(ext))
+
+# DO NOT DELETE THIS LINE -- g++dep uses it.
+# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
+
+.obj/client.o .obj/client.so .shobj/client.o .shobj/client.so: client.cpp \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ testC.h $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map.i \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair.i \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ testC.i
+.obj/server.o .obj/server.so .shobj/server.o .shobj/server.so: server.cpp \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.i test_i.h \
+ testS.h testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map.i \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair.i \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ testC.i testS_T.h testS_T.i testS_T.cpp testS.i test_i.i
+.obj/orb_creation.o .obj/orb_creation.so .shobj/orb_creation.o .shobj/orb_creation.so: orb_creation.cpp \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ testC.h $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map.i \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair.i \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ testC.i
+.obj/simple-client.o .obj/simple-client.so .shobj/simple-client.o .shobj/simple-client.so: simple-client.cpp \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ testC.h $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map.i \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair.i \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ testC.i
+.obj/testC.o .obj/testC.so .shobj/testC.o .shobj/testC.so: testC.cpp testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map.i \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair.i \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ testC.i \
+ $(TAO_ROOT)/tao/Asynch_Invocation.h \
+ $(TAO_ROOT)/tao/Asynch_Invocation.i
+.obj/testS.o .obj/testS.so .shobj/testS.o .shobj/testS.so: testS.cpp testS.h testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map.i \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair.i \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ testC.i testS_T.h testS_T.i testS_T.cpp testS.i
+.obj/test_i.o .obj/test_i.so .shobj/test_i.o .shobj/test_i.so: test_i.cpp test_i.h testS.h testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map.i \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair.i \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/MessagingS.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ testC.i testS_T.h testS_T.i testS_T.cpp testS.i test_i.i
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/tests/AMI/README b/TAO/tests/AMI/README
new file mode 100644
index 00000000000..4c1d0b89859
--- /dev/null
+++ b/TAO/tests/AMI/README
@@ -0,0 +1,14 @@
+# $Id$
+
+Description:
+
+ This is a simple test for AMI callback model. Right now the
+IDL compiler does not generate all the code. Therefore, you need to
+copy test-handC.cpp onto testC.cpp.
+
+ This is still in a development phase. It is not at all
+complete.
+
+$ server -o test.ior
+$ client -k file://test.ior -n 4 -i 1000
+$ simple_client -k file://test_ior
diff --git a/TAO/tests/AMI/client.conf b/TAO/tests/AMI/client.conf
new file mode 100644
index 00000000000..5276fe68900
--- /dev/null
+++ b/TAO/tests/AMI/client.conf
@@ -0,0 +1,2 @@
+
+static Client_Strategy_Factory "-ORBiiopprofilelock null -ORBclientconnectionhandler RW"
diff --git a/TAO/tests/AMI/client.cpp b/TAO/tests/AMI/client.cpp
new file mode 100644
index 00000000000..31527aa0e42
--- /dev/null
+++ b/TAO/tests/AMI/client.cpp
@@ -0,0 +1,199 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "ace/Task.h"
+#include "testC.h"
+
+ACE_RCSID(MT_Client, client, "$Id$")
+
+const char *ior = "file://test.ior";
+int nthreads = 5;
+int niterations = 5;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:n:i:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.optarg;
+ break;
+ case 'n':
+ nthreads = ACE_OS::atoi (get_opts.optarg);
+ break;
+ case 'i':
+ niterations = ACE_OS::atoi (get_opts.optarg);
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-k <ior> "
+ "-n <nthreads> "
+ "-i <niterations> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+class Client : public ACE_Task_Base
+{
+ // = TITLE
+ // Run the client thread
+ //
+ // = DESCRIPTION
+ // Use the ACE_Task_Base class to run the client threads.
+ //
+public:
+ Client (Simple_Server_ptr server, int niterations);
+ // ctor
+
+ virtual int svc (void);
+ // The thread entry point.
+
+private:
+ Simple_Server_var server_;
+ // The server.
+
+ int niterations_;
+ // The number of iterations on each client thread.
+};
+
+class Handler : public POA_AMI_Simple_Server_Handler
+{
+public:
+ Handler (void) {};
+
+ ~Handler (void) {};
+};
+
+int
+main (int argc, char *argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CORBA::Object_var object =
+ orb->string_to_object (ior, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ Simple_Server_var server =
+ Simple_Server::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (server.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Object reference <%s> is nil\n",
+ ior),
+ 1);
+ }
+
+ // Activate POA to handle the call back.
+
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ Client client (server.in (), niterations);
+ if (client.activate (THR_NEW_LWP | THR_JOINABLE,
+ nthreads) != 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot activate client threads\n"),
+ 1);
+
+ client.thr_mgr ()->wait ();
+
+ ACE_DEBUG ((LM_DEBUG, "threads finished\n"));
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Catched exception:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
+
+// ****************************************************************
+
+Client::Client (Simple_Server_ptr server,
+ int niterations)
+ : server_ (Simple_Server::_duplicate (server)),
+ niterations_ (niterations)
+{
+}
+
+int
+Client::svc (void)
+{
+ ACE_TRY_NEW_ENV
+ {
+#if 0
+ // If we are using a global ORB this is a nop, otherwise it
+ // initializes the ORB resources for this thread.
+ int argc = 0;
+ char* argv[] = { "" };
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+#endif
+
+ Handler handler;
+ AMI_Simple_Server_Handler_var the_handler =
+ handler._this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Long number = 0;
+
+ for (int i = 0; i < this->niterations_; ++i)
+ {
+ server_->sendc_get_number (the_handler.in (),
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (TAO_debug_level > 0 && i % 100 == 0)
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) iteration = %d\n", i));
+ }
+
+ number = server_->get_number (ACE_TRY_ENV);
+
+ ACE_DEBUG ((LM_DEBUG, "(%P | %t) get_number = %d\n", number));
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "MT_Client: exception raised");
+ }
+ ACE_ENDTRY;
+ return 0;
+}
diff --git a/TAO/tests/AMI/client.dsp b/TAO/tests/AMI/client.dsp
new file mode 100644
index 00000000000..cce3974642f
--- /dev/null
+++ b/TAO/tests/AMI/client.dsp
@@ -0,0 +1,205 @@
+# Microsoft Developer Studio Project File - Name="MT_Client Client" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=MT_Client Client - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "client.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "client.mak" CFG="MT_Client Client - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MT_Client Client - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "MT_Client Client - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MT_Client Client - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 tao.lib ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "MT_Client Client - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "MT_Client Client - Win32 Release"
+# Name "MT_Client Client - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\client.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test.idl
+
+!IF "$(CFG)" == "MT_Client Client - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "MT_Client Client - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Inline Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\testC.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.i
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/AMI/client.global.conf b/TAO/tests/AMI/client.global.conf
new file mode 100644
index 00000000000..4883a8b375b
--- /dev/null
+++ b/TAO/tests/AMI/client.global.conf
@@ -0,0 +1,3 @@
+# $Id$
+#
+static Resource_Factory "-ORBresources global"
diff --git a/TAO/tests/AMI/client.muxed.conf b/TAO/tests/AMI/client.muxed.conf
new file mode 100644
index 00000000000..e41aabecf7a
--- /dev/null
+++ b/TAO/tests/AMI/client.muxed.conf
@@ -0,0 +1,2 @@
+
+static Client_Strategy_Factory "-ORBTransportMuxStrategy MUXED -ORBiiopprofilelock null -ORBclientconnectionhandler MT"
diff --git a/TAO/tests/AMI/client.tss.conf b/TAO/tests/AMI/client.tss.conf
new file mode 100644
index 00000000000..d1a2308e80f
--- /dev/null
+++ b/TAO/tests/AMI/client.tss.conf
@@ -0,0 +1,3 @@
+# $Id$
+#
+static Resource_Factory "-ORBresources tss"
diff --git a/TAO/tests/AMI/orb_creation.cpp b/TAO/tests/AMI/orb_creation.cpp
new file mode 100644
index 00000000000..f3212b0f17b
--- /dev/null
+++ b/TAO/tests/AMI/orb_creation.cpp
@@ -0,0 +1,176 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "ace/Task.h"
+#include "testC.h"
+
+ACE_RCSID(MT_Client, orb_creation, "$Id$")
+
+const char *ior = "file://test.ior";
+int nthreads = 5;
+int niterations = 5;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:n:i:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.optarg;
+ break;
+ case 'n':
+ nthreads = ACE_OS::atoi (get_opts.optarg);
+ break;
+ case 'i':
+ niterations = ACE_OS::atoi (get_opts.optarg);
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-k <ior> "
+ "-n <nthreads> "
+ "-i <niterations> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+class Client : public ACE_Task_Base
+{
+ // = TITLE
+ // Run the client thread
+ //
+ // = DESCRIPTION
+ // Use the ACE_Task_Base class to run the client threads.
+ //
+public:
+ Client (int niterations,
+ const char* ior);
+ // ctor
+
+ virtual int svc (void);
+ // The thread entry point.
+
+private:
+ int niterations_;
+ // The number of iterations on each client thread.
+
+ const char* ior_;
+ // The IOR that we should use.
+};
+
+int
+main (int argc, char *argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CORBA::Object_var object =
+ orb->string_to_object (ior, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ Simple_Server_var server =
+ Simple_Server::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (server.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Object reference <%s> is nil\n",
+ ior),
+ 1);
+ }
+
+ Client client (niterations, ior);
+ if (client.activate (THR_NEW_LWP | THR_JOINABLE,
+ nthreads) != 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot activate client threads\n"),
+ 1);
+
+ client.thr_mgr ()->wait ();
+
+ ACE_DEBUG ((LM_DEBUG, "threads finished\n"));
+
+ server->shutdown (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Catched exception:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
+
+// ****************************************************************
+
+Client::Client (int niterations,
+ const char* ior)
+ : niterations_ (niterations),
+ ior_ (ior)
+{
+}
+
+int
+Client::svc (void)
+{
+ ACE_TRY_NEW_ENV
+ {
+ for (int i = 0; i < this->niterations_; ++i)
+ {
+ // If we are using a global ORB this is a nop, otherwise it
+ // initializes the ORB resources for this thread.
+ int argc = 0;
+ const char* argv[] = { "" };
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var object =
+ orb->string_to_object (this->ior_, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ Simple_Server_var server =
+ Simple_Server::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (server.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t) Object reference <%s> is nil\n",
+ ior),
+ 1);
+ }
+
+ server->test_method (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ if (TAO_debug_level > 0 && i % 100 == 0)
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) iteration = %d\n", i));
+ }
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "MT_Client: exception raised");
+ }
+ ACE_ENDTRY;
+ return 0;
+}
diff --git a/TAO/tests/AMI/orb_creation.dsp b/TAO/tests/AMI/orb_creation.dsp
new file mode 100644
index 00000000000..b0003f4536c
--- /dev/null
+++ b/TAO/tests/AMI/orb_creation.dsp
@@ -0,0 +1,206 @@
+# Microsoft Developer Studio Project File - Name="MT_Client ORB Creation" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=MT_Client ORB Creation - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "orb_creation.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "orb_creation.mak" CFG="MT_Client ORB Creation - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MT_Client ORB Creation - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "MT_Client ORB Creation - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MT_Client ORB Creation - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 tao.lib ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "MT_Client ORB Creation - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "MT_Client ORB Creation - Win32 Release"
+# Name "MT_Client ORB Creation - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\orb_creation.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test.idl
+
+!IF "$(CFG)" == "MT_Client ORB Creation - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "MT_Client ORB Creation - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Inline Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\testC.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.i
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/AMI/run_test.pl b/TAO/tests/AMI/run_test.pl
new file mode 100755
index 00000000000..2c6a97e729e
--- /dev/null
+++ b/TAO/tests/AMI/run_test.pl
@@ -0,0 +1,63 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+unshift @INC, '../../../bin';
+require ACEutils;
+
+$client_conf="client.global.conf";
+$client_process="client";
+$debug_level='5';
+$threads='2';
+$iterations='1';
+
+foreach $i (@ARGV) {
+ if ($i eq '-tss') {
+ $client_conf = "client.tss.conf";
+ } elsif ($i eq '-debug') {
+ $debug_level = '1';
+ } elsif ($i eq '-creation') {
+ $client_process = 'orb_creation';
+ $threads='2';
+ }
+}
+
+$iorfile = "server.ior";
+$SV = Process::Create ($EXEPREFIX."server$EXE_EXT ",
+ " -ORBsvcconf server.conf -ORBdebuglevel $debug_level"
+ . " -o $iorfile");
+
+if (ACE::waitforfile_timed ($iorfile, 5) == -1) {
+ print STDERR "ERROR: cannot find file <$iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+
+$CL = Process::Create ($EXEPREFIX."$client_process$EXE_EXT ",
+ " -ORBsvcconf $client_conf "
+ . "-ORBdebuglevel $debug_level"
+ . " -k file://$iorfile "
+ . " -n $threads -i $iterations");
+
+$client = $CL->TimedWait (60);
+if ($client == -1) {
+ print STDERR "ERROR: client timedout\n";
+ $CL->Kill (); $CL->TimedWait (1);
+}
+
+$server = $SV->TimedWait (5);
+if ($server == -1) {
+ print STDERR "ERROR: server timedout\n";
+ $SV->Kill (); $SV->TimedWait (1);
+}
+
+unlink $iorfile;
+
+if ($server != 0 || $client != 0) {
+ exit 1;
+}
+
+exit 0;
diff --git a/TAO/tests/AMI/server.conf b/TAO/tests/AMI/server.conf
new file mode 100644
index 00000000000..faf9c6c874b
--- /dev/null
+++ b/TAO/tests/AMI/server.conf
@@ -0,0 +1,3 @@
+# $Id$
+#
+static Server_Strategy_Factory "-ORBconcurrency thread-per-connection"
diff --git a/TAO/tests/AMI/server.cpp b/TAO/tests/AMI/server.cpp
new file mode 100644
index 00000000000..9a2dfa93eb3
--- /dev/null
+++ b/TAO/tests/AMI/server.cpp
@@ -0,0 +1,110 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "test_i.h"
+
+ACE_RCSID(MT_Client, server, "$Id$")
+
+const char *ior_output_file = 0;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "o:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'o':
+ ior_output_file = get_opts.optarg;
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-o <iorfile>"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ Simple_Server_i server_impl (orb.in ());
+
+ Simple_Server_var server =
+ server_impl._this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::String_var ior =
+ orb->object_to_string (server.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ ACE_DEBUG ((LM_DEBUG, "Activated as <%s>\n", ior.in ()));
+
+ // If the ior_output_file exists, output the ior to it
+ if (ior_output_file != 0)
+ {
+ FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
+ if (output_file == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot open output file for writing IOR: %s",
+ ior_output_file),
+ 1);
+ ACE_OS::fprintf (output_file, "%s", ior.in ());
+ ACE_OS::fclose (output_file);
+ }
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Long number = 0;
+
+ number = server->get_number (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ ACE_DEBUG ((LM_DEBUG, "get_number = %d\n", number));
+
+ if (orb->run () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "orb->run"), -1);
+ ACE_DEBUG ((LM_DEBUG, "event loop finished\n"));
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Catched exception:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/tests/AMI/server.dsp b/TAO/tests/AMI/server.dsp
new file mode 100644
index 00000000000..b7c07f7179b
--- /dev/null
+++ b/TAO/tests/AMI/server.dsp
@@ -0,0 +1,219 @@
+# Microsoft Developer Studio Project File - Name="MT_Client Server" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=MT_Client Server - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "server.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "server.mak" CFG="MT_Client Server - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MT_Client Server - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "MT_Client Server - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MT_Client Server - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 tao.lib ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "MT_Client Server - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "MT_Client Server - Win32 Release"
+# Name "MT_Client Server - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\server.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\test_i.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ".h"
+# Begin Source File
+
+SOURCE=.\test_i.h
+# End Source File
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ".idl"
+# Begin Source File
+
+SOURCE=.\test.idl
+
+!IF "$(CFG)" == "MT_Client Server - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "MT_Client Server - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Inline Files"
+
+# PROP Default_Filter ".i"
+# Begin Source File
+
+SOURCE=.\test_i.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.i
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/AMI/simple-client.conf b/TAO/tests/AMI/simple-client.conf
new file mode 100644
index 00000000000..97bca811c1b
--- /dev/null
+++ b/TAO/tests/AMI/simple-client.conf
@@ -0,0 +1,2 @@
+
+static Client_Strategy_Factory "-ORBTransportMuxStrategy MUXED -ORBiiopprofilelock null -ORBclientconnectionhandler ST"
diff --git a/TAO/tests/AMI/simple-client.cpp b/TAO/tests/AMI/simple-client.cpp
new file mode 100644
index 00000000000..9c821f72d1b
--- /dev/null
+++ b/TAO/tests/AMI/simple-client.cpp
@@ -0,0 +1,125 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "ace/Task.h"
+#include "testC.h"
+
+ACE_RCSID(MT_Client, client, "$Id$")
+
+const char *ior = "file://test.ior";
+int niterations = 5;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:i:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.optarg;
+ break;
+ case 'i':
+ niterations = ACE_OS::atoi (get_opts.optarg);
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-k <ior> "
+ "-i <niterations> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+class Handler : public POA_AMI_Simple_Server_Handler
+{
+public:
+ Handler (void) {};
+
+ ~Handler (void) {};
+};
+
+int
+main (int argc, char *argv[])
+{
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+
+ ACE_TRY
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var object =
+ orb->resolve_initial_references ("RootPOA", ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POA_var poa =
+ PortableServer::POA::_narrow (object, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ object = orb->string_to_object (ior, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ Simple_Server_var server =
+ Simple_Server::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (server.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Object reference <%s> is nil\n",
+ ior),
+ 1);
+ }
+
+ Handler handler;
+ AMI_Simple_Server_Handler_var the_handler =
+ handler._this (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Long number = 0;
+
+ for (ssize_t ni = 0; ni < niterations; ni++)
+ {
+
+ server->sendc_get_number (the_handler.in (),
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+
+ number = server->get_number (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ ACE_DEBUG ((LM_DEBUG,
+ "get_number = %d\n",
+ number));
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Catched exception:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/tests/AMI/simple_client.dsp b/TAO/tests/AMI/simple_client.dsp
new file mode 100644
index 00000000000..6d02789130d
--- /dev/null
+++ b/TAO/tests/AMI/simple_client.dsp
@@ -0,0 +1,215 @@
+# Microsoft Developer Studio Project File - Name="simple_client" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=simple_client - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "simple_client.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "simple_client.mak" CFG="simple_client - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "simple_client - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "simple_client - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "simple_client - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "simple_client - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "simple_c"
+# PROP BASE Intermediate_Dir "simple_c"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "simple_client - Win32 Release"
+# Name "simple_client - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=".\simple-client.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.cpp
+# End Source File
+# End Group
+# Begin Group "Inline Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test_i.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.i
+# End Source File
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test.idl
+
+!IF "$(CFG)" == "simple_client - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "simple_client - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test_i.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/AMI/test-handC.cpp b/TAO/tests/AMI/test-handC.cpp
new file mode 100644
index 00000000000..b0bda5a45b0
--- /dev/null
+++ b/TAO/tests/AMI/test-handC.cpp
@@ -0,0 +1,645 @@
+// $Id$
+/* -*- C++ -*- */
+
+// ****** Code generated by the The ACE ORB (TAO) IDL Compiler *******
+// TAO and the TAO IDL Compiler have been developed by the Center for
+// Distributed Object Computing at Washington University, St. Louis.
+//
+// Information about TAO is available at:
+// http://www.cs.wustl.edu/~schmidt/TAO.html
+
+#include "testC.h"
+
+#if !defined (__ACE_INLINE__)
+#include "testC.i"
+#endif /* !defined INLINE */
+
+Simple_Server_ptr Simple_Server::_narrow (
+ CORBA::Object_ptr obj,
+ CORBA::Environment &env
+ )
+{
+ if (CORBA::is_nil (obj))
+ return Simple_Server::_nil ();
+ if (!obj->_is_a ("IDL:Simple_Server:1.0", env))
+ return Simple_Server::_nil ();
+ return Simple_Server::_unchecked_narrow (obj, env);
+}
+
+Simple_Server_ptr Simple_Server::_unchecked_narrow (
+ CORBA::Object_ptr obj,
+ CORBA::Environment &ACE_TRY_ENV
+ )
+{
+ ACE_UNUSED_ARG (ACE_TRY_ENV);
+ if (CORBA::is_nil (obj))
+ return Simple_Server::_nil ();
+ TAO_Stub* stub = obj->_stubobj ();
+ stub->_incr_refcnt ();
+ void* servant = 0;
+ if (obj->_is_collocated () && obj->_servant() != 0)
+ servant = obj->_servant()->_downcast ("IDL:omg.org/CORBA/Object:1.0");
+ if (servant != 0)
+ {
+ Simple_Server_ptr retv = ACE_reinterpret_cast (
+ Simple_Server_ptr,
+ ACE_reinterpret_cast (
+ PortableServer::Servant,
+ servant
+ )
+ ->_create_collocated_objref (
+ "IDL:Simple_Server:1.0",
+ TAO_ORB_Core::ORB_CONTROL,
+ stub
+ )
+ );
+ if (retv != 0)
+ return retv;
+ }
+ return new Simple_Server(stub);
+}
+
+Simple_Server_ptr
+Simple_Server::_duplicate (Simple_Server_ptr obj)
+{
+ if (!CORBA::is_nil (obj))
+ obj->_incr_refcnt ();
+ return obj;
+}
+
+CORBA::Long Simple_Server::get_number (
+ CORBA::Environment &ACE_TRY_ENV
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+
+ CORBA::Long _tao_retval = 0;
+
+ TAO_Stub *istub = this->_stubobj ();
+ if (istub == 0)
+ ACE_THROW_RETURN (CORBA::INTERNAL (), _tao_retval);
+
+
+ TAO_GIOP_Twoway_Invocation _tao_call (
+ istub,
+ "get_number",
+ istub->orb_core ()
+ );
+
+
+ for (;;)
+ {
+ ACE_TRY_ENV.clear ();
+ _tao_call.start (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (_tao_retval);
+
+ int _invoke_status =
+ _tao_call.invoke (0, 0, ACE_TRY_ENV);
+ ACE_CHECK_RETURN (_tao_retval);
+
+ if (_invoke_status == TAO_INVOKE_RESTART)
+ continue;
+ // if (_invoke_status == TAO_INVOKE_EXCEPTION)
+ // cannot happen
+ if (_invoke_status != TAO_INVOKE_OK)
+ {
+ ACE_THROW_RETURN (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES), _tao_retval);
+
+ }
+ break;
+
+ }
+ TAO_InputCDR &_tao_in = _tao_call.inp_stream ();
+ if (!(
+ (_tao_in >> _tao_retval)
+ ))
+ ACE_THROW_RETURN (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES), _tao_retval);
+ return _tao_retval;
+}
+
+void
+Simple_Server::sendc_get_number (
+ AMI_Simple_Server_Handler_ptr _tao_ami_handler,
+ CORBA::Environment &ACE_TRY_ENV
+ )
+{
+
+ TAO_Stub *istub = this->_stubobj ();
+ if (istub == 0)
+ ACE_THROW (CORBA::INV_OBJREF ());
+
+
+ TAO_GIOP_Twoway_Asynch_Invocation _tao_call (
+ istub,
+ "get_number",
+ istub->orb_core (),
+ &AMI_Simple_Server_Handler::get_number_skel,
+ _tao_ami_handler
+ );
+
+
+ for (;;)
+ {
+ ACE_TRY_ENV.clear ();
+ _tao_call.start (ACE_TRY_ENV);
+ ACE_CHECK;
+ int _invoke_status =
+ _tao_call.invoke (0, 0, ACE_TRY_ENV);
+ ACE_CHECK;
+
+ if (_invoke_status == TAO_INVOKE_RESTART)
+ continue;
+ // if (_invoke_status == TAO_INVOKE_EXCEPTION)
+ // cannot happen
+ if (_invoke_status != TAO_INVOKE_OK)
+ {
+ ACE_THROW (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES));
+
+ }
+ break;
+
+ }
+ return;
+}
+
+CORBA::Boolean Simple_Server::_is_a (const CORBA::Char *value, CORBA::Environment &env)
+{
+ if (
+ (!ACE_OS::strcmp ((char *)value, "IDL:Simple_Server:1.0")) ||
+ (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (env))))
+ return 1; // success using local knowledge
+ else
+ return this->CORBA_Object::_is_a (value, env);
+}
+
+const char* Simple_Server::_interface_repository_id (void) const
+{
+ return "IDL:Simple_Server:1.0";
+}
+
+static const CORBA::Long _oc_Simple_Server[] =
+{
+ TAO_ENCAP_BYTE_ORDER, // byte order
+ 22, ACE_NTOHL (0x49444c3a), ACE_NTOHL (0x53696d70), ACE_NTOHL (0x6c655f53), ACE_NTOHL (0x65727665), ACE_NTOHL (0x723a312e), ACE_NTOHL (0x30000000), // repository ID = IDL:Simple_Server:1.0
+ 14, ACE_NTOHL (0x53696d70), ACE_NTOHL (0x6c655f53), ACE_NTOHL (0x65727665), ACE_NTOHL (0x72000000), // name = Simple_Server
+};
+static CORBA::TypeCode _tc_TAO_tc_Simple_Server (CORBA::tk_objref, sizeof (_oc_Simple_Server), (char *) &_oc_Simple_Server, 0, sizeof (Simple_Server));
+CORBA::TypeCode_ptr _tc_Simple_Server = &_tc_TAO_tc_Simple_Server;
+
+AMI_Simple_Server_Handler_ptr AMI_Simple_Server_Handler::_narrow (
+ CORBA::Object_ptr obj,
+ CORBA::Environment &env
+ )
+{
+ if (CORBA::is_nil (obj))
+ return AMI_Simple_Server_Handler::_nil ();
+ if (!obj->_is_a ("IDL:AMI_Simple_Server_Handler:1.0", env))
+ return AMI_Simple_Server_Handler::_nil ();
+ return AMI_Simple_Server_Handler::_unchecked_narrow (obj, env);
+}
+
+AMI_Simple_Server_Handler_ptr AMI_Simple_Server_Handler::_unchecked_narrow (
+ CORBA::Object_ptr obj,
+ CORBA::Environment &ACE_TRY_ENV
+ )
+{
+ ACE_UNUSED_ARG (ACE_TRY_ENV);
+ if (CORBA::is_nil (obj))
+ return AMI_Simple_Server_Handler::_nil ();
+ TAO_Stub* stub = obj->_stubobj ();
+ stub->_incr_refcnt ();
+ void* servant = 0;
+ if (obj->_is_collocated () && obj->_servant() != 0)
+ servant = obj->_servant()->_downcast ("IDL:omg.org/CORBA/Object:1.0");
+ if (servant != 0)
+ {
+ AMI_Simple_Server_Handler_ptr retv = ACE_reinterpret_cast (
+ AMI_Simple_Server_Handler_ptr,
+ ACE_reinterpret_cast (
+ PortableServer::Servant,
+ servant
+ )
+ ->_create_collocated_objref (
+ "IDL:AMI_Simple_Server_Handler:1.0",
+ TAO_ORB_Core::ORB_CONTROL,
+ stub
+ )
+ );
+ if (retv != 0)
+ return retv;
+ }
+ return new AMI_Simple_Server_Handler(stub);
+}
+
+AMI_Simple_Server_Handler_ptr
+AMI_Simple_Server_Handler::_duplicate (AMI_Simple_Server_Handler_ptr obj)
+{
+ if (!CORBA::is_nil (obj))
+ obj->_incr_refcnt ();
+ return obj;
+}
+
+void
+AMI_Simple_Server_Handler::get_number (
+ CORBA::Long _tao_ami_result,
+ CORBA::Environment &ACE_TRY_ENV
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+
+ TAO_Stub *istub = this->_stubobj ();
+ if (istub == 0)
+ ACE_THROW (CORBA::INTERNAL ());
+
+ TAO_GIOP_Twoway_Invocation _tao_call (
+ istub,
+ "get_number",
+ istub->orb_core ()
+ );
+
+
+ for (;;)
+ {
+ ACE_TRY_ENV.clear ();
+ _tao_call.start (ACE_TRY_ENV);
+ACE_CHECK;
+ TAO_OutputCDR &_tao_out = _tao_call.out_stream ();
+ if (!(
+(_tao_out << _tao_ami_result)
+
+ ))
+ ACE_THROW (CORBA::MARSHAL ());
+ int _invoke_status =
+ _tao_call.invoke (0, 0, ACE_TRY_ENV);
+ ACE_CHECK;
+ if (_invoke_status == TAO_INVOKE_RESTART)
+ continue;
+ // if (_invoke_status == TAO_INVOKE_EXCEPTION)
+ // cannot happen
+ if (_invoke_status != TAO_INVOKE_OK)
+ {
+ ACE_THROW (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES));
+ }
+ break;
+
+ }
+
+ }
+
+void
+AMI_Simple_Server_Handler::get_number_skel (TAO_InputCDR &_tao_reply_cdr,
+ Messaging::ReplyHandler_ptr _tao_reply_handler,
+ CORBA::Environment &ACE_TRY_ENV)
+{
+ // Retrive Reply Handler object.
+ AMI_Simple_Server_Handler_var _tao_reply_handler_object =
+ AMI_Simple_Server_Handler::_narrow (_tao_reply_handler,
+ ACE_TRY_ENV);
+ ACE_CHECK;
+
+ // @@ Error handling.
+
+ // Demarshall all the arguments.
+ CORBA::Long l;
+ _tao_reply_cdr >> l;
+
+ // Invoke the call back method.
+ _tao_reply_handler_object->get_number (l, ACE_TRY_ENV);
+}
+
+ CORBA::Boolean AMI_Simple_Server_Handler::_is_a (const CORBA::Char *value, CORBA::Environment &env)
+ {
+ if (
+(!ACE_OS::strcmp ((char *)value, "IDL:AMI_Simple_Server_Handler:1.0")) ||
+ (!ACE_OS::strcmp ((char *)value, "IDL:omg.org/Messaging/ReplyHandler:1.0")) ||
+ (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (env))))
+ return 1; // success using local knowledge
+ else
+ return this->CORBA_Object::_is_a (value, env);
+ }
+
+ const char* AMI_Simple_Server_Handler::_interface_repository_id (void) const
+ {
+ return "IDL:AMI_Simple_Server_Handler:1.0";
+ }
+
+ static const CORBA::Long _oc_AMI_Simple_Server_Handler[] =
+ {
+ TAO_ENCAP_BYTE_ORDER, // byte order
+ 34, ACE_NTOHL (0x49444c3a), ACE_NTOHL (0x414d495f), ACE_NTOHL (0x53696d70), ACE_NTOHL (0x6c655f53), ACE_NTOHL (0x65727665), ACE_NTOHL (0x725f4861), ACE_NTOHL (0x6e646c65), ACE_NTOHL (0x723a312e), ACE_NTOHL (0x30000000), // repository ID = IDL:AMI_Simple_Server_Handler:1.0
+ 26, ACE_NTOHL (0x414d495f), ACE_NTOHL (0x53696d70), ACE_NTOHL (0x6c655f53), ACE_NTOHL (0x65727665), ACE_NTOHL (0x725f4861), ACE_NTOHL (0x6e646c65), ACE_NTOHL (0x72000000), // name = AMI_Simple_Server_Handler
+};
+ static CORBA::TypeCode _tc_TAO_tc_AMI_Simple_Server_Handler (CORBA::tk_objref, sizeof (_oc_AMI_Simple_Server_Handler), (char *) &_oc_AMI_Simple_Server_Handler, 0, sizeof (AMI_Simple_Server_Handler));
+ CORBA::TypeCode_ptr _tc_AMI_Simple_Server_Handler = &_tc_TAO_tc_AMI_Simple_Server_Handler;
+
+ void operator<<= (CORBA::Any &_tao_any, Simple_Server_ptr _tao_elem)
+ {
+ CORBA::Object_ptr *_tao_obj_ptr = 0;
+ ACE_TRY_NEW_ENV
+ {
+ ACE_NEW (_tao_obj_ptr, CORBA::Object_ptr);
+ *_tao_obj_ptr = Simple_Server::_duplicate (_tao_elem);
+ _tao_any.replace (_tc_Simple_Server, _tao_obj_ptr, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ delete _tao_obj_ptr;
+ }
+ ACE_ENDTRY;
+ }
+
+ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, Simple_Server_ptr &_tao_elem)
+ {
+ CORBA::Object_ptr *tmp = 0;
+ ACE_TRY_NEW_ENV
+ {
+ _tao_elem = Simple_Server::_nil ();
+ CORBA::TypeCode_var type = _tao_any.type ();
+ if (!type->equal (_tc_Simple_Server, ACE_TRY_ENV)) return 0; // not equal
+ ACE_TRY_CHECK;
+ TAO_InputCDR stream (_tao_any._tao_get_cdr ());
+ CORBA::Object_var _tao_obj_var;
+ ACE_NEW_RETURN (tmp, CORBA::Object_ptr, 0);
+ if (stream.decode (_tc_Simple_Server, &_tao_obj_var.out (), 0, ACE_TRY_ENV)
+ == CORBA::TypeCode::TRAVERSE_CONTINUE)
+ {
+ _tao_elem = Simple_Server::_narrow (_tao_obj_var.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ *tmp = (CORBA::Object_ptr) _tao_elem; // any owns the object
+ ((CORBA::Any *)&_tao_any)->replace (_tc_Simple_Server, tmp, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ return 1;
+ }
+ // failure
+ }
+ ACE_CATCHANY
+ {
+ delete tmp;
+ return 0;
+ }
+ ACE_ENDTRY;
+ return 0;
+ }
+
+// skeleton constructor
+POA_AMI_Simple_Server_Handler::POA_AMI_Simple_Server_Handler (void)
+{
+}
+
+// copy ctor
+POA_AMI_Simple_Server_Handler::POA_AMI_Simple_Server_Handler (const POA_AMI_Simple_Server_Handler& rhs)
+ : TAO_ServantBase (rhs)
+{}
+
+// skeleton destructor
+POA_AMI_Simple_Server_Handler::~POA_AMI_Simple_Server_Handler (void)
+{
+}
+
+void POA_AMI_Simple_Server_Handler::_is_a_skel (
+ CORBA::ServerRequest &_tao_server_request,
+ void * _tao_object_reference,
+ void * /* context */,
+ CORBA::Environment &ACE_TRY_ENV
+ )
+{
+ TAO_InputCDR &_tao_in = _tao_server_request.incoming ();
+ POA_AMI_Simple_Server_Handler *_tao_impl = (POA_AMI_Simple_Server_Handler *) _tao_object_reference;
+ CORBA::Boolean _tao_retval = 0;
+ CORBA::String_var value;
+ if (!((_tao_in >> value.out ())))
+ ACE_THROW (CORBA::MARSHAL ());
+
+ _tao_retval = _tao_impl->_is_a (value.in (), ACE_TRY_ENV);
+ ACE_CHECK;
+
+ _tao_server_request.init_reply (ACE_TRY_ENV);
+ ACE_CHECK;
+ TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();
+ if (!((_tao_out << CORBA::Any::from_boolean (_tao_retval))))
+ ACE_THROW (CORBA::MARSHAL ());
+}
+
+void POA_AMI_Simple_Server_Handler::_non_existent_skel (
+ CORBA::ServerRequest &_tao_server_request,
+ void * _tao_object_reference,
+ void * /* context */,
+ CORBA::Environment &ACE_TRY_ENV
+ )
+{
+ POA_AMI_Simple_Server_Handler *_tao_impl = (POA_AMI_Simple_Server_Handler *) _tao_object_reference;
+ CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_TRY_ENV);
+ ACE_CHECK;
+
+ _tao_server_request.init_reply (ACE_TRY_ENV);
+ ACE_CHECK;
+ TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();
+ if (!((_tao_out << CORBA::Any::from_boolean (_tao_retval))))
+ ACE_THROW (CORBA::MARSHAL ());
+}
+
+CORBA::Boolean POA_AMI_Simple_Server_Handler::_is_a (
+ const char* value,
+ CORBA::Environment &ACE_TRY_ENV
+ )
+{
+ if (
+ (!ACE_OS::strcmp ((char *)value, "IDL:AMI_Simple_Server_Handler:1.0")) ||
+ (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (ACE_TRY_ENV))))
+ return 1;
+ else
+ return 0;
+}
+
+void* POA_AMI_Simple_Server_Handler::_downcast (
+ const char* logical_type_id
+ )
+{
+ if (ACE_OS::strcmp (logical_type_id, "IDL:AMI_Simple_Server_Handler:1.0") == 0)
+ return ACE_static_cast (POA_AMI_Simple_Server_Handler_ptr, this);
+ if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/Object:1.0") == 0)
+ return ACE_static_cast(PortableServer::Servant, this);
+ return 0;
+}
+
+void POA_AMI_Simple_Server_Handler::_dispatch (CORBA::ServerRequest &req, void *context, CORBA::Environment &ACE_TRY_ENV)
+{
+ TAO_Skeleton skel; // pointer to skeleton for operation
+ const char *opname = req.operation (); // retrieve operation name
+ // find the skeleton corresponding to this opname
+ if (this->_find (opname, skel, req.operation_length ()) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Bad operation <%s>\n", opname));
+ ACE_THROW (CORBA_BAD_OPERATION ());
+ }
+ else
+ skel (req, this, context, ACE_TRY_ENV);
+}
+
+const char* POA_AMI_Simple_Server_Handler::_interface_repository_id (void) const
+{
+ return "IDL:AMI_Simple_Server_Handler:1.0";
+}
+
+
+AMI_Simple_Server_Handler*
+POA_AMI_Simple_Server_Handler::_this (CORBA_Environment &ACE_TRY_ENV)
+{
+ TAO_Stub *stub = this->_create_stub (ACE_TRY_ENV);
+ ACE_CHECK_RETURN (0);
+ return new _tao_collocated_AMI_Simple_Server_Handler (this, stub);
+}
+
+void*
+POA_AMI_Simple_Server_Handler::_create_collocated_objref (const char* repository_id, CORBA::ULong type, TAO_Stub *stub)
+{
+ if (!ACE_OS::strcmp ("IDL:AMI_Simple_Server_Handler:1.0", repository_id))
+ return ACE_static_cast (
+ AMI_Simple_Server_Handler_ptr,
+ new _tao_collocated_AMI_Simple_Server_Handler (this, stub)
+ );
+ return 0;
+}
+
+void
+POA_AMI_Simple_Server_Handler::get_number (CORBA::Long l, CORBA::Environment &)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P | %t):POA_AMI_Simple_Server_Handler::get_number = %d\n",
+ l));
+}
+
+void
+POA_AMI_Simple_Server_Handler::get_number_skel (CORBA::ServerRequest &_tao_server_request,
+ void *_tao_object_reference,
+ void *_tao_context,
+ CORBA::Environment &ACE_TRY_ENV)
+{
+ TAO_InputCDR &_tao_in = _tao_server_request.incoming ();
+ POA_AMI_Simple_Server_Handler *_tao_impl = (POA_AMI_Simple_Server_Handler *)_tao_object_reference;
+
+ CORBA::Long l;
+ if (!(
+ (_tao_in >> l)
+ ))
+ ACE_THROW (CORBA::MARSHAL () );
+
+ _tao_impl->get_number (
+ l);
+ ACE_CHECK;
+ _tao_server_request.init_reply (ACE_TRY_ENV);
+}
+
+// *********************************************************************
+
+_tao_collocated_AMI_Simple_Server_Handler::_tao_collocated_AMI_Simple_Server_Handler (
+ POA_AMI_Simple_Server_Handler_ptr servant,
+ TAO_Stub *stub
+ )
+ : AMI_Simple_Server_Handler (),
+ CORBA_Object (stub, servant, 1),
+ servant_ (servant)
+{
+}
+
+CORBA::Boolean _tao_collocated_AMI_Simple_Server_Handler::_is_a(
+ const CORBA::Char *logical_type_id,
+ CORBA_Environment &ACE_TRY_ENV
+ )
+
+{
+ if (this->_stubobj ()->orb_core ()->get_collocation_strategy () == TAO_ORB_Core::THRU_POA)
+ {
+ TAO_Object_Adapter::Servant_Upcall servant_upcall (
+ *this->_stubobj ()->servant_orb_var ()->orb_core ()->object_adapter ()
+ );
+ servant_upcall.prepare_for_upcall (
+ this->_object_key (),
+ "_is_a",
+ ACE_TRY_ENV
+ );
+ ACE_CHECK_RETURN (0);
+ return ACE_reinterpret_cast (
+ POA_AMI_Simple_Server_Handler_ptr,
+ servant_upcall.servant ()->_downcast (
+ "IDL:AMI_Simple_Server_Handler:1.0"
+ )
+ )->_is_a (logical_type_id, ACE_TRY_ENV);
+ }
+ return this->servant_->_is_a (logical_type_id, ACE_TRY_ENV);
+}
+
+
+POA_AMI_Simple_Server_Handler_ptr _tao_collocated_AMI_Simple_Server_Handler::_get_servant (void) const
+{
+ return this->servant_;
+}
+
+CORBA::Boolean _tao_collocated_AMI_Simple_Server_Handler::_non_existent(
+ CORBA_Environment &ACE_TRY_ENV
+ )
+
+{
+ if (this->_stubobj ()->orb_core ()->get_collocation_strategy () == TAO_ORB_Core::THRU_POA)
+ {
+ TAO_Object_Adapter::Servant_Upcall servant_upcall (
+ *this->_stubobj ()->servant_orb_var ()->orb_core ()->object_adapter ()
+ );
+ servant_upcall.prepare_for_upcall (
+ this->_object_key (),
+ "_non_existent",
+ ACE_TRY_ENV
+ );
+ ACE_CHECK_RETURN (0);
+ return ACE_reinterpret_cast (
+ POA_AMI_Simple_Server_Handler_ptr,
+ servant_upcall.servant ()->_downcast (
+ "IDL:AMI_Simple_Server_Handler:1.0"
+ )
+ )->_non_existent (ACE_TRY_ENV);
+ }
+ return this->servant_->_non_existent (ACE_TRY_ENV);
+}
+
+void
+_tao_collocated_AMI_Simple_Server_Handler::get_number (CORBA::Long l, CORBA::Environment &)
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+
+ if (this->_stubobj ()->orb_core ()->get_collocation_strategy () == TAO_ORB_Core::THRU_POA)
+ {
+ TAO_Object_Adapter::Servant_Upcall servant_upcall (
+ *this->_stubobj ()->servant_orb_var ()->orb_core ()->object_adapter ()
+ );
+ servant_upcall.prepare_for_upcall (
+ this->_object_key (),
+ "get_number",
+ ACE_TRY_ENV
+ );
+ ACE_CHECK;
+ ACE_reinterpret_cast (
+ POA_AMI_Simple_Server_Handler_ptr,
+ servant_upcall.servant ()->_downcast (
+ "IDL:AMI_Simple_Server_Handler:1.0"
+ )
+ )->get_number (
+ l);
+ return;
+ }
+ this->servant_->get_number (
+ l );
+
+}
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+ template class TAO_Object_Field_T<Simple_Server>;
+ template class TAO_Object_Field_T<AMI_Simple_Server_Handler>;
+ #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+ # pragma instantiate TAO_Object_Field_T<Simple_Server>
+ # pragma instantiate TAO_Object_Field_T<AMI_Simple_Server_Handler>
+ #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
+
diff --git a/TAO/tests/AMI/test.idl b/TAO/tests/AMI/test.idl
new file mode 100644
index 00000000000..376da4a58c6
--- /dev/null
+++ b/TAO/tests/AMI/test.idl
@@ -0,0 +1,16 @@
+/*
+ * $Id$
+ */
+
+interface Simple_Server
+{
+ // void test_method ();
+
+ long get_number ();
+
+ // void put_number (in long l);
+
+ // long get_put_number (out long out_l, in long in_l);
+
+ // oneway void shutdown ();
+};
diff --git a/TAO/tests/AMI/test_i.cpp b/TAO/tests/AMI/test_i.cpp
new file mode 100644
index 00000000000..1b199315a26
--- /dev/null
+++ b/TAO/tests/AMI/test_i.cpp
@@ -0,0 +1,62 @@
+// $Id$
+
+#include "test_i.h"
+#include "tao/debug.h"
+
+#if !defined(__ACE_INLINE__)
+#include "test_i.i"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID(MT_Client, test_i, "$Id$")
+
+void
+Simple_Server_i::test_method (CORBA::Environment&)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "%N:%l:(%P:%t):Simple_Server_i::test_method called\n"));
+}
+
+CORBA::Long
+Simple_Server_i::get_number (CORBA::Environment&)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "%N:%l:(%P:%t):Simple_Server_i::get_number called\n"));
+ return this->number_++;
+}
+
+void
+Simple_Server_i::put_number (CORBA::Long l,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "%N:%l:(%P:%t):Simple_Server_i::put_number: %d\n",
+ l));
+}
+
+CORBA::Long
+Simple_Server_i::get_put_number (CORBA::Long_out out_l,
+ CORBA::Long in_l,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ out_l = 931233;
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "%N:%l:(%P:%t):Simple_Server_i::get_put_number: %d\n",
+ in_l));
+
+ return 931234;
+}
+
+void
+Simple_Server_i::shutdown (CORBA::Environment&)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->orb_->shutdown (0);
+}
diff --git a/TAO/tests/AMI/test_i.h b/TAO/tests/AMI/test_i.h
new file mode 100644
index 00000000000..c050a2795d8
--- /dev/null
+++ b/TAO/tests/AMI/test_i.h
@@ -0,0 +1,62 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/MT_Client
+//
+// = FILENAME
+// test_i.h
+//
+// = AUTHOR
+// Carlos O'Ryan
+//
+// ============================================================================
+
+#ifndef TAO_MT_CLIENT_TEST_I_H
+#define TAO_MT_CLIENT_TEST_I_H
+
+#include "testS.h"
+
+class Simple_Server_i : public POA_Simple_Server
+{
+ // = TITLE
+ // Simpler Server implementation
+ //
+ // = DESCRIPTION
+ // Implements the Simple_Server interface in test.idl
+ //
+public:
+ Simple_Server_i (CORBA::ORB_ptr orb);
+ // ctor
+
+ // = The Simple_Server methods.
+ void test_method (CORBA::Environment&)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ CORBA::Long get_number (CORBA::Environment&)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void put_number (CORBA::Long l,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ CORBA::Long get_put_number (CORBA::Long_out out_l,
+ CORBA::Long in_l,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void shutdown (CORBA::Environment&)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+private:
+ CORBA::ORB_var orb_;
+
+ CORBA::Long number_;
+};
+
+#if defined(__ACE_INLINE__)
+#include "test_i.i"
+#endif /* __ACE_INLINE__ */
+
+#endif /* TAO_MT_CLIENT_TEST_I_H */
diff --git a/TAO/tests/AMI/test_i.i b/TAO/tests/AMI/test_i.i
new file mode 100644
index 00000000000..d079ad0ae1c
--- /dev/null
+++ b/TAO/tests/AMI/test_i.i
@@ -0,0 +1,8 @@
+// $Id$
+
+ACE_INLINE
+Simple_Server_i::Simple_Server_i (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb)),
+ number_ ((CORBA::Long) 931232)
+{
+}
diff --git a/ace/CDR_Stream.h b/ace/CDR_Stream.h
index bc01de7015f..f1e40d00864 100644
--- a/ace/CDR_Stream.h
+++ b/ace/CDR_Stream.h
@@ -729,9 +729,8 @@ public:
// Re-initialize the CDR stream, copying the contents of the chain
// of message_blocks starting from <data>.
- ACE_Message_Block * steal_contents (void);
- // Re-initialize the CDR stream, copying the contents of the chain
- // of message_blocks starting from <data>.
+ ACE_Message_Block *steal_contents (void);
+ // Steal the contents from the currect CDR.
void reset_contents (void);
// Re-initialize the CDR stream, forgetting about the old contents
@@ -753,6 +752,10 @@ public:
// If non-zero then this stream is writing in non-native byte order,
// this is only meaningful if ACE_ENABLE_SWAP_ON_WRITE is defined.
+ int byte_order (void) const;
+ // If <do_byte_swap> returns 1, this returns ACE_CDR_BYTE_ORDER else
+ // it returns ~ACE_CDR_BYTE_ORDER.
+
ACE_Char_Codeset_Translator *char_translator (void) const;
ACE_WChar_Codeset_Translator *wchar_translator (void) const;
// Access the codeset translators. They can be nil!
diff --git a/ace/CDR_Stream.i b/ace/CDR_Stream.i
index 3b98423e2fa..3227976db1c 100644
--- a/ace/CDR_Stream.i
+++ b/ace/CDR_Stream.i
@@ -1227,6 +1227,15 @@ ACE_InputCDR::do_byte_swap (void) const
}
ACE_INLINE int
+ACE_InputCDR::byte_order (void) const
+{
+ if (this->do_byte_swap ())
+ return !ACE_CDR_BYTE_ORDER;
+ else
+ return ACE_CDR_BYTE_ORDER;
+}
+
+ACE_INLINE int
ACE_InputCDR::align_read_ptr (size_t alignment)
{
char *buf = ptr_align_binary (this->rd_ptr (),