diff options
38 files changed, 649 insertions, 289 deletions
diff --git a/TAO/ChangeLog-98c b/TAO/ChangeLog-98c index beeb7d6ee93..dd54f181ba4 100644 --- a/TAO/ChangeLog-98c +++ b/TAO/ChangeLog-98c @@ -1,3 +1,73 @@ +Mon Mar 16 10:47:08 1998 Carlos O'Ryan <coryan@cs.wustl.edu> + + * tao/cdr.h: + * tao/cdr.i: + * tao/cdr.cpp: + The CDR stream class exposed its implementation completely, this + change is the first attempt to close that interface and make it + safer. The internal representation was changed to a + Message_Block, so CDR could eventually create chains of + Message_Blocks (minimizing buffer copies and using writev() for + output). + The next step is to split the class in an input and output + interface, following the Java IDL model. + + * TAO_IDL/Makefile: + * TAO_IDL/be/be_array.cpp: + * TAO_IDL/be/be_enum.cpp: + * TAO_IDL/be/be_exception.cpp: + * TAO_IDL/be/be_interface.cpp: + * TAO_IDL/be/be_sequence.cpp: + * TAO_IDL/be/be_structure.cpp: + * TAO_IDL/be/be_typedef.cpp: + * TAO_IDL/be/be_union.cpp: + * TAO_IDL/be/be_visitor_enum.cpp: + * TAO_IDL/be/be_visitor_exception.cpp: + * TAO_IDL/be/be_visitor_interface.cpp: + * TAO_IDL/be/be_visitor_sequence.cpp: + * TAO_IDL/be/be_visitor_structure.cpp: + * TAO_IDL/be/be_visitor_typedef.cpp: + * TAO_IDL/be/be_visitor_union.cpp: + * tao/any.cpp: + * tao/connect.cpp: + * tao/decode.cpp: + * tao/except.cpp: + * tao/giop.h: + * tao/giop.cpp: + * tao/iioporb.cpp: + * tao/interp.cpp: + * tao/objkeyC.cpp: + * tao/poaC.cpp: + * tao/tc_const.cpp: + * tao/typecode.h: + * tao/typecode.cpp: + This files were modified to use (or generate, in the case of the + IDL compiler) the new CDR stream class interface. + + * TAO_IDL/be_include/be_type.h: + * TAO_IDL/be/be_type.cpp: + It used a static buffer to evaluate be_type::nested_type_name(), + it was changed for a per-class buffer, but the real solution is + to allocate a buffer on the fly and return it to the user, maybe + using UTL_String will solve the problem. + + * tests/Makefile: + * tests/CDR/Makefile: + * tests/CDR/basic_types.cpp: + * tests/CDR/tc.cpp: + Added some simple tests to verify that CDR streams work + correctly. + + * taoconfig.mk: + The clean target is defined in ACE config files. + + * docs/orbsvcs.html: + Included documentation on the collocation services. + + * docs/releasenotes/ec.html: + Moved some of the changes from "new in this release" to "changes + in previous releases". + Sun Mar 15 22:36:08 1998 Seth Benjamin Widoff <sbw1@waltz.cs.wustl.edu> * orbsvcs/orbsvcs/Trader/Admin.* diff --git a/TAO/TAO_IDL/Makefile b/TAO/TAO_IDL/Makefile index 384118ad939..fcf50449abd 100644 --- a/TAO/TAO_IDL/Makefile +++ b/TAO/TAO_IDL/Makefile @@ -9,11 +9,9 @@ #---------------------------------------------------------------------------- BIN = tao_idl -LDLIBS = -lACE # -ldrv -lfe -last -ltao_idl_util -lnarrow -lbe -lACE +LDLIBS = -lACE BUILD = $(BIN) -#DIRS = driver fe ast util narrow be - VPATH=.:driver:fe:ast:util:narrow:be FILES = tao_idl \ diff --git a/TAO/TAO_IDL/be/be_array.cpp b/TAO/TAO_IDL/be/be_array.cpp index 8aac6cf0eca..9777134c31a 100644 --- a/TAO/TAO_IDL/be/be_array.cpp +++ b/TAO/TAO_IDL/be/be_array.cpp @@ -468,7 +468,7 @@ be_array::gen_client_stubs (void) << this->tao_name () << " (CORBA::tk_sequence, " << "sizeof (_oc_" << this->tao_name () - << "), (unsigned char *) &_oc_" + << "), (char *) &_oc_" << this->tao_name () << ", CORBA::B_FALSE);" << nl; *cs << "CORBA::TypeCode_ptr " diff --git a/TAO/TAO_IDL/be/be_enum.cpp b/TAO/TAO_IDL/be/be_enum.cpp index adbaecb6b63..bed7a98a493 100644 --- a/TAO/TAO_IDL/be/be_enum.cpp +++ b/TAO/TAO_IDL/be/be_enum.cpp @@ -181,7 +181,7 @@ be_enum::gen_client_stubs (void) *cs << "static CORBA::TypeCode _tc__tc_" << this->flatname () << " (CORBA::tk_enum, sizeof (_oc_" << this->flatname () << - "), (unsigned char *) &_oc_" << this->flatname () << + "), (char *) &_oc_" << this->flatname () << ", CORBA::B_FALSE);" << nl; *cs << "CORBA::TypeCode_ptr " << this->tc_name () << " = &_tc__tc_" << this->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_exception.cpp b/TAO/TAO_IDL/be/be_exception.cpp index cc9d405ff9a..70669bd02cc 100644 --- a/TAO/TAO_IDL/be/be_exception.cpp +++ b/TAO/TAO_IDL/be/be_exception.cpp @@ -378,7 +378,7 @@ be_exception::gen_client_stubs (void) *cs << "static CORBA::TypeCode _tc__tc_" << this->flatname () << " (CORBA::tk_struct, sizeof (_oc_" << this->flatname () << - "), (unsigned char *) &_oc_" << this->flatname () << + "), (char *) &_oc_" << this->flatname () << ", CORBA::B_FALSE);" << nl; *cs << "CORBA::TypeCode_ptr " << this->tc_name () << " = &_tc__tc_" << this->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_interface.cpp b/TAO/TAO_IDL/be/be_interface.cpp index 7938ec0ab0d..f3a05efed89 100644 --- a/TAO/TAO_IDL/be/be_interface.cpp +++ b/TAO/TAO_IDL/be/be_interface.cpp @@ -621,7 +621,7 @@ be_interface::gen_client_stubs (void) *cs << "static CORBA::TypeCode _tc__tc_" << this->flatname () << " (CORBA::tk_objref, sizeof (_oc_" << this->flatname () << - "), (unsigned char *) &_oc_" << this->flatname () << + "), (char *) &_oc_" << this->flatname () << ", CORBA::B_FALSE);" << nl; *cs << "CORBA::TypeCode_ptr " << this->tc_name () << " = &_tc__tc_" << this->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_sequence.cpp b/TAO/TAO_IDL/be/be_sequence.cpp index ba8ba272fd1..19b4ad2fdb1 100644 --- a/TAO/TAO_IDL/be/be_sequence.cpp +++ b/TAO/TAO_IDL/be/be_sequence.cpp @@ -945,7 +945,7 @@ be_sequence::gen_client_stubs (void) *cs << "static CORBA::TypeCode _tc__tc_" << this->flatname () << " (CORBA::tk_sequence, sizeof (_oc_" << this->flatname () << - "), (unsigned char *) &_oc_" << this->flatname () << + "), (char *) &_oc_" << this->flatname () << ", CORBA::B_FALSE);" << nl; *cs << "CORBA::TypeCode_ptr " << this->tc_name () << " = &_tc__tc_" << this->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_structure.cpp b/TAO/TAO_IDL/be/be_structure.cpp index 211305f5a21..ec28719ee8b 100644 --- a/TAO/TAO_IDL/be/be_structure.cpp +++ b/TAO/TAO_IDL/be/be_structure.cpp @@ -184,7 +184,7 @@ be_structure::gen_client_stubs (void) *cs << "static CORBA::TypeCode _tc__tc_" << this->flatname () << " (CORBA::tk_struct, sizeof (_oc_" << this->flatname () << - "), (unsigned char *) &_oc_" << this->flatname () << + "), (char *) &_oc_" << this->flatname () << ", CORBA::B_FALSE);" << nl; *cs << "CORBA::TypeCode_ptr " << this->tc_name () << " = &_tc__tc_" << this->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_type.cpp b/TAO/TAO_IDL/be/be_type.cpp index 46d5be825ea..79484c523eb 100644 --- a/TAO/TAO_IDL/be/be_type.cpp +++ b/TAO/TAO_IDL/be/be_type.cpp @@ -27,17 +27,28 @@ be_type::be_type (void) : tc_name_ (0), - type_name_ (0) + type_name_ (0), + nested_type_name_ (0) { } be_type::be_type (AST_Decl::NodeType nt, UTL_ScopedName *n, UTL_StrList *p) : AST_Decl (nt, n, p), tc_name_ (0), - type_name_ (0) + type_name_ (0), + nested_type_name_ (0) { } +be_type::~be_type (void) +{ + if (this->nested_type_name_ != 0) + { + delete[] this->nested_type_name_; + this->nested_type_name_ = 0; + } +} + // compute the typecode name. The idea is to use the fully scoped name, // however, prepend a _tc_ to the last component. A slightly different approach // is required of the predefined types. Hence this method is overridden for @@ -112,7 +123,9 @@ be_type::nested_type_name (be_decl *use_scope, const char *suffix) // thus we need some sort of relative name to be generated - static char macro [NAMEBUFSIZE]; + if (this->nested_type_name_ == 0) + ACE_NEW_RETURN (this->nested_type_name_, char[NAMEBUFSIZE], 0); + be_decl *def_scope = 0; // our defining scope char // hold the fully scoped name def_name [NAMEBUFSIZE], @@ -123,7 +136,7 @@ be_type::nested_type_name (be_decl *use_scope, const char *suffix) *use_curr = use_name, *use_next; - ACE_OS::memset (macro, '\0', NAMEBUFSIZE); + ACE_OS::memset (this->nested_type_name_, '\0', NAMEBUFSIZE); ACE_OS::memset (def_name, '\0', NAMEBUFSIZE); ACE_OS::memset (use_name, '\0', NAMEBUFSIZE); @@ -159,8 +172,8 @@ be_type::nested_type_name (be_decl *use_scope, const char *suffix) // initial prefix matches i.e., they have a common root // start by initializing the macro - //@@ ACE_OS::sprintf (macro, "ACE_NESTED_CLASS ("); - //@@ ACE_OS::strcat (macro, def_curr); // initialize the first argument + //@@ ACE_OS::sprintf (this->nested_type_name_, "ACE_NESTED_CLASS ("); + //@@ ACE_OS::strcat (this->nested_type_name_, def_curr); // initialize the first argument def_curr = (def_next ? (def_next+2) : 0); // skip the :: use_curr = (use_next ? (use_next+2) : 0); // skip the :: @@ -180,8 +193,8 @@ be_type::nested_type_name (be_decl *use_scope, const char *suffix) if (!ACE_OS::strcmp (def_curr, use_curr)) { // they have same prefix, append to arg1 - //@@ ACE_OS::strcat (macro, "::"); - //@@ ACE_OS::strcat (macro, def_curr); + //@@ ACE_OS::strcat (this->nested_type_name_, "::"); + //@@ ACE_OS::strcat (this->nested_type_name_, def_curr); def_curr = (def_next ? (def_next+2) : 0); // skip the :: use_curr = (use_next ? (use_next+2) : 0); // skip the :: } @@ -194,27 +207,27 @@ be_type::nested_type_name (be_decl *use_scope, const char *suffix) } // start the 2nd argument of the macro - //@@ ACE_OS::strcat (macro, ", "); + //@@ ACE_OS::strcat (this->nested_type_name_, ", "); // copy the remaining def_name (if any left) if (def_curr) - ACE_OS::strcat (macro, def_curr); + ACE_OS::strcat (this->nested_type_name_, def_curr); // append our local name - ACE_OS::strcat (macro, this->local_name ()->get_string ()); + ACE_OS::strcat (this->nested_type_name_, this->local_name ()->get_string ()); if (suffix) - ACE_OS::strcat (macro, suffix); - //@@ ACE_OS::strcat (macro, ")"); - return macro; + ACE_OS::strcat (this->nested_type_name_, suffix); + //@@ ACE_OS::strcat (this->nested_type_name_, ")"); + return this->nested_type_name_; } // end of if the root prefixes match } // otherwise just emit our fullname - ACE_OS::sprintf (macro, this->fullname ()); + ACE_OS::sprintf (this->nested_type_name_, this->fullname ()); if (suffix) - ACE_OS::strcat (macro, suffix); + ACE_OS::strcat (this->nested_type_name_, suffix); - return macro; + return this->nested_type_name_; } // ***************************** diff --git a/TAO/TAO_IDL/be/be_typedef.cpp b/TAO/TAO_IDL/be/be_typedef.cpp index 26738aebcad..2d7885d18db 100644 --- a/TAO/TAO_IDL/be/be_typedef.cpp +++ b/TAO/TAO_IDL/be/be_typedef.cpp @@ -140,7 +140,7 @@ be_typedef::gen_client_stubs (void) *cs << "static CORBA::TypeCode _tc__tc_" << this->flatname () << " (CORBA::tk_alias, sizeof (_oc_" << this->flatname () << - "), (unsigned char *) &_oc_" << this->flatname () << + "), (char *) &_oc_" << this->flatname () << ", CORBA::B_FALSE);" << nl; *cs << "CORBA::TypeCode_ptr " << this->tc_name () << " = &_tc__tc_" << this->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_union.cpp b/TAO/TAO_IDL/be/be_union.cpp index 69c646ca2c2..cd23bd721c2 100644 --- a/TAO/TAO_IDL/be/be_union.cpp +++ b/TAO/TAO_IDL/be/be_union.cpp @@ -396,7 +396,7 @@ be_union::gen_client_stubs (void) *cs << "static CORBA::TypeCode _tc__tc_" << this->flatname () << " (CORBA::tk_union, sizeof (_oc_" << this->flatname () << - "), (unsigned char *) &_oc_" << this->flatname () << + "), (char *) &_oc_" << this->flatname () << ", CORBA::B_FALSE);" << nl; *cs << "CORBA::TypeCode_ptr " << this->tc_name () << " = &_tc__tc_" << this->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_enum.cpp b/TAO/TAO_IDL/be/be_visitor_enum.cpp index a6980d5306d..08692251985 100644 --- a/TAO/TAO_IDL/be/be_visitor_enum.cpp +++ b/TAO/TAO_IDL/be/be_visitor_enum.cpp @@ -148,7 +148,7 @@ be_visitor_enum_cs::visit_enum (be_enum *node) *os << "static CORBA::TypeCode _tc__tc_" << node->flatname () << " (CORBA::tk_enum, sizeof (_oc_" << node->flatname () - << "), (unsigned char *) &_oc_" << node->flatname () + << "), (char *) &_oc_" << node->flatname () << ", CORBA::B_FALSE);" << be_nl; *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc__tc_" << node->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_exception.cpp b/TAO/TAO_IDL/be/be_visitor_exception.cpp index 1db76f37f16..09db347d3b5 100644 --- a/TAO/TAO_IDL/be/be_visitor_exception.cpp +++ b/TAO/TAO_IDL/be/be_visitor_exception.cpp @@ -415,7 +415,7 @@ int be_visitor_exception_cs::visit_exception (be_exception *node) *os << "static CORBA::TypeCode _tc__tc_" << node->flatname () << " (CORBA::tk_struct, sizeof (_oc_" << node->flatname () << - "), (unsigned char *) &_oc_" << node->flatname () << + "), (char *) &_oc_" << node->flatname () << ", CORBA::B_FALSE);" << be_nl; *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc__tc_" << node->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface.cpp index 85cdae68362..f19b0f51388 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface.cpp @@ -967,7 +967,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) *os << "static CORBA::TypeCode _tc__tc_" << node->flatname () << " (CORBA::tk_objref, sizeof (_oc_" << node->flatname () << - "), (unsigned char *) &_oc_" << node->flatname () << + "), (char *) &_oc_" << node->flatname () << ", CORBA::B_FALSE);" << be_nl; *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc__tc_" << node->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_sequence.cpp b/TAO/TAO_IDL/be/be_visitor_sequence.cpp index f8134034baf..5c2ba278790 100644 --- a/TAO/TAO_IDL/be/be_visitor_sequence.cpp +++ b/TAO/TAO_IDL/be/be_visitor_sequence.cpp @@ -1139,7 +1139,7 @@ int be_visitor_sequence_cs::visit_sequence (be_sequence *node) *os << "static CORBA::TypeCode _tc__tc_" << node->flatname () << "_seq (CORBA::tk_sequence, sizeof (_oc_" << node->flatname () - << "_seq), (unsigned char *) &_oc_" << node->flatname () + << "_seq), (char *) &_oc_" << node->flatname () << "_seq, CORBA::B_FALSE);" << be_nl; *os << "CORBA::TypeCode_ptr " << node->tc_name () << "_seq = &_tc__tc_" << node->flatname () << "_seq;\n\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_structure.cpp b/TAO/TAO_IDL/be/be_visitor_structure.cpp index f022063b149..68df8b4baf6 100644 --- a/TAO/TAO_IDL/be/be_visitor_structure.cpp +++ b/TAO/TAO_IDL/be/be_visitor_structure.cpp @@ -272,7 +272,7 @@ int be_visitor_structure_cs::visit_structure (be_structure *node) *os << "static CORBA::TypeCode _tc__tc_" << node->flatname () << " (CORBA::tk_struct, sizeof (_oc_" << node->flatname () << - "), (unsigned char *) &_oc_" << node->flatname () << + "), (char *) &_oc_" << node->flatname () << ", CORBA::B_FALSE);" << be_nl; *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc__tc_" << node->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_typedef.cpp b/TAO/TAO_IDL/be/be_visitor_typedef.cpp index c9e7d97018d..5c3f0abb3d8 100644 --- a/TAO/TAO_IDL/be/be_visitor_typedef.cpp +++ b/TAO/TAO_IDL/be/be_visitor_typedef.cpp @@ -1135,7 +1135,7 @@ be_visitor_typedef_cs::visit_typedef (be_typedef *node) *os << "static CORBA::TypeCode _tc__tc_" << node->flatname () << " (CORBA::tk_alias, sizeof (_oc_" << node->flatname () - << "), (unsigned char *) &_oc_" << node->flatname () + << "), (char *) &_oc_" << node->flatname () << ", CORBA::B_FALSE);" << be_nl; *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc__tc_" << node->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_union.cpp b/TAO/TAO_IDL/be/be_visitor_union.cpp index c3a02473c00..935f173fe20 100644 --- a/TAO/TAO_IDL/be/be_visitor_union.cpp +++ b/TAO/TAO_IDL/be/be_visitor_union.cpp @@ -550,7 +550,7 @@ int be_visitor_union_cs::visit_union (be_union *node) *os << "static CORBA::TypeCode _tc__tc_" << node->flatname () << " (CORBA::tk_union, sizeof (_oc_" << node->flatname () << - "), (unsigned char *) &_oc_" << node->flatname () << + "), (char *) &_oc_" << node->flatname () << ", CORBA::B_FALSE);" << be_nl; *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc__tc_" << node->flatname () << ";\n\n"; diff --git a/TAO/TAO_IDL/be_include/be_type.h b/TAO/TAO_IDL/be_include/be_type.h index 9d3949f28e5..88632350609 100644 --- a/TAO/TAO_IDL/be_include/be_type.h +++ b/TAO/TAO_IDL/be_include/be_type.h @@ -37,6 +37,8 @@ public: be_type (AST_Decl::NodeType nt, UTL_ScopedName *n, UTL_StrList *p); // constructor + virtual ~be_type (void); + virtual int gen_client_header (void) = 0; // Generates the client-side header information for the type @@ -112,6 +114,9 @@ protected: char *type_name_; // type name (this uses the ACE NESTED macro) + + char *nested_type_name_; + // for the corresponding method. }; #endif // end of if !defined diff --git a/TAO/docs/orbsvcs.html b/TAO/docs/orbsvcs.html index 4e168ecca06..c0e84f6bd04 100644 --- a/TAO/docs/orbsvcs.html +++ b/TAO/docs/orbsvcs.html @@ -36,7 +36,11 @@ library, this is not a problem for client programs and most services need to link the library anyway - (since they use other services.)</P> + (since they use other services.) + Further, + the current support for collocation requires that clients link + the skeleton files also. + </P> <P>In the future we intend to use ACE Service Configurator to give the users control over servant collocation. diff --git a/TAO/docs/releasenotes/ec.html b/TAO/docs/releasenotes/ec.html index edb90bf8583..599810c899b 100644 --- a/TAO/docs/releasenotes/ec.html +++ b/TAO/docs/releasenotes/ec.html @@ -16,35 +16,7 @@ <H3>New on this release</H3> <UL> - <LI> - When several suppliers are consumers are distributed over the - network it could be nice to exploit locality and have a - separate Event Channel on each process (or host). - Only when an event is required by some remote consumer we need - to send it through the network. - - The basic architecture to achieve this seems very simple, - each Event Channel has a proxy that connects to the EC peers, - providing a "merge" of its (local) consumer subscriptions as - its own subscription list. - - Locally the proxy connects as a supplier, - publishing all the events it has register for. - - To avoid event looping the events carry a time-to-live field - that is decremented each time the event goes through a proxy, - when the TTL gets to zero the event is not propagated by the - proxy. - - In the current release an experimental implementation is - provided, - it basically hardcodes all the subscriptions and publications, - we are researching on how to automatically build the - publication list.</LI> - - <LI> - We use the COS Time Service types (not the services) to - specify time for the Event Service and Scheduling Service.</LI> + <LI>Fixed memory leak in</LI> </UL> <H3>Known issues:</H3> @@ -140,5 +112,37 @@ <CODE>$TAO_ROOT/orbsvcs/tests/EC_Multiple</CODE> for further detail.</P> + <H3>Features in previous releases</H3> + + <LI> + When several suppliers are consumers are distributed over the + network it could be nice to exploit locality and have a + separate Event Channel on each process (or host). + Only when an event is required by some remote consumer we need + to send it through the network. + + The basic architecture to achieve this seems very simple, + each Event Channel has a proxy that connects to the EC peers, + providing a "merge" of its (local) consumer subscriptions as + its own subscription list. + + Locally the proxy connects as a supplier, + publishing all the events it has register for. + + To avoid event looping the events carry a time-to-live field + that is decremented each time the event goes through a proxy, + when the TTL gets to zero the event is not propagated by the + proxy. + + In the current release an experimental implementation is + provided, + it basically hardcodes all the subscriptions and publications, + we are researching on how to automatically build the + publication list.</LI> + + <LI> + We use the COS Time Service types (not the services) to + specify time for the Event Service and Scheduling Service.</LI> + </BODY> </HTML> diff --git a/TAO/tao/any.cpp b/TAO/tao/any.cpp index 67cae2421ea..b571d38d7fc 100644 --- a/TAO/tao/any.cpp +++ b/TAO/tao/any.cpp @@ -553,7 +553,7 @@ CORBA_Any::operator<<= (from_string s) _oc_string [1] = s.bound_; ACE_NEW (tc, CORBA::TypeCode (CORBA::tk_string, sizeof _oc_string, - (u_char *) &_oc_string, + (char *) &_oc_string, CORBA::B_TRUE)); } else diff --git a/TAO/tao/decode.cpp b/TAO/tao/decode.cpp index 45f4d696cbf..24d47b712a3 100644 --- a/TAO/tao/decode.cpp +++ b/TAO/tao/decode.cpp @@ -1,5 +1,7 @@ // ============================================================================ // +// $Id$ +// // = LIBRARY // TAO // @@ -11,7 +13,8 @@ // // The original code had a single static decoder function defined on the CDR // class that called traverse to interpret the data types. This version -// defines a virtual method "decode" on each class and avoids calling traverse. +// defines a virtual method "decode" on each class and avoids +// calling traverse. // // = AUTHOR // Copyright 1994-1995 by Sun Microsystems Inc. @@ -348,12 +351,11 @@ TAO_Marshal_TypeCode::decode (CORBA::TypeCode_ptr, // the offset must be such that the indir_stream.next // should point to the TypeCode kind value of the // TypeCode to which we are referring to. - indir_stream.buffer = indir_stream.next - = stream->next + offset; - indir_stream.remaining = indir_stream.length = 8; + indir_stream.setup_encapsulation + (stream->buffer () + offset, 8); // Reject indirections outside parent's scope. - if (indir_stream.next < parent->buffer_) + if (indir_stream.buffer () < ACE_reinterpret_cast(char*,parent->buffer_)) continue_decoding = CORBA::B_FALSE; } @@ -386,11 +388,10 @@ TAO_Marshal_TypeCode::decode (CORBA::TypeCode_ptr, if (continue_decoding) { *tcp = new CORBA::TypeCode ((CORBA::TCKind) indir_kind, - indir_len, // length of encapsulation - indir_stream.next, // octet buffer - CORBA::B_FALSE, // ORB - // doesn't own - parent); // this is our parent + indir_len, + indir_stream.buffer(), + CORBA::B_FALSE, + parent); #if 0 (*tcp)->parent_ = parent; parent->AddRef (); @@ -436,13 +437,12 @@ TAO_Marshal_TypeCode::decode (CORBA::TypeCode_ptr, } *tcp = new CORBA::TypeCode ((CORBA::TCKind) kind, len, - // buffer, - stream->next, + stream->buffer (), CORBA::B_FALSE, parent); // skip length number of bytes in the stream, else we may // leave the stream in an undefined state - (void) stream->skip_bytes (length); + (void) stream->rd_ptr (length); // (*tcp)->parent_ = parent; } } // end of switch @@ -567,17 +567,15 @@ TAO_Marshal_ObjRef::decode (CORBA::TypeCode_ptr, // ProfileData is encoded as a sequence of octet. So first get the // length of the sequence - continue_decoding = stream->get_ulong (tmp); - assert (stream->remaining >= tmp); + char* buf; + continue_decoding = stream->get_encapsulation (buf, tmp); + assert (continue_decoding == CORBA::B_TRUE); // Create the decoding stream from the encapsulation in // the buffer, and skip the encapsulation. CDR str; - str.setup_encapsulation (stream->next, (size_t) tmp); - - stream->next += (u_int) tmp; - stream->remaining -= (u_int) tmp; + str.setup_encapsulation (ACE_reinterpret_cast(char*,buf), tmp); // @@ (CJC) Does IIOP_Object duplicate 'type_hint' below so that // we can safely free it? It does now! @@ -631,7 +629,7 @@ TAO_Marshal_ObjRef::decode (CORBA::TypeCode_ptr, 0, env) == CORBA::TypeCode::TRAVERSE_CONTINUE; - if (str.remaining != 0) + if (str.length () != 0) { env.exception (new CORBA::MARSHAL (CORBA::COMPLETED_MAYBE)); dmsg ("extra data at end of IIOP profile data"); diff --git a/TAO/tao/except.cpp b/TAO/tao/except.cpp index e2a2f909367..9b9b2cec3b7 100644 --- a/TAO/tao/except.cpp +++ b/TAO/tao/except.cpp @@ -1,3 +1,6 @@ +// +// $Id$ +// // @(#)except.cpp 1.11 95/11/04 // Copyright 1994-1995 by Sun Microsystems Inc. // All Rights Reserved @@ -170,7 +173,7 @@ CORBA::ExceptionList __system_exceptions; static void make_standard_typecode (CORBA::TypeCode_ptr tcp, const char *name, - unsigned char *buffer, + char *buffer, size_t buflen, CORBA::Environment &env) { @@ -189,17 +192,15 @@ make_standard_typecode (CORBA::TypeCode_ptr tcp, static CORBA::TypeCode tc_completion_status (CORBA::tk_enum, sizeof oc_completion_status, - (unsigned char *) &oc_completion_status, + (char *) &oc_completion_status, CORBA::B_FALSE); static const CORBA::TypeCode_ptr completion_status = &tc_completion_status; // Create a CDR stream ... juggle the alignment here a bit, we - // know it's good enough for tye typecode. - - CDR stream (0, buflen); + // know it's good enough for the typecode. - stream.next = stream.buffer = buffer; + CDR stream (buffer, buflen); // into CDR stream, stuff (in order): // - byte order flag [4 bytes] @@ -242,10 +243,11 @@ make_standard_typecode (CORBA::TypeCode_ptr tcp, // a TypeCode, saving it away in the list of ones that the ORB will // always accept as part of any operation response! - sys_exceptions [__system_exceptions.length++] - = new (tcp) CORBA::TypeCode (CORBA::tk_except, - stream.next - stream.buffer, - stream.buffer, CORBA::B_FALSE); + sys_exceptions [__system_exceptions.length++] = + new (tcp) CORBA::TypeCode (CORBA::tk_except, + stream.length (), + stream.buffer (), + CORBA::B_FALSE); assert (tcp->length_ <= TC_BUFLEN); return; @@ -312,9 +314,9 @@ __TC_init_standard_exceptions (CORBA::Environment &env) // Initialize the typecodes. #define TAO_SYSTEM_EXCEPTION(name) \ if (env.exception () == 0) \ - make_standard_typecode (&tc_std_ ## name, #name, \ - (unsigned char *) tc_buf_ ## name, \ - sizeof tc_buf_ ## name, env); + make_standard_typecode (&tc_std_ ## name, #name, \ + (char *) tc_buf_ ## name, \ + sizeof tc_buf_ ## name, env); STANDARD_EXCEPTION_LIST #undef TAO_SYSTEM_EXCEPTION @@ -346,7 +348,7 @@ STANDARD_EXCEPTION_LIST // Static initialization of the two user-defined exceptions that // are part of the ORB. -static CORBA::Octet tc_buf_Bounds [] = +static char tc_buf_Bounds [] = { 0, 0, 0, 0, // big endian, padded 0, 0, 0, 38, // strlen (id) + 1 @@ -364,13 +366,13 @@ static CORBA::Octet tc_buf_Bounds [] = }; static CORBA::TypeCode tc_std_Bounds (CORBA::tk_except, - sizeof tc_buf_Bounds, - tc_buf_Bounds, - CORBA::B_FALSE); + sizeof tc_buf_Bounds, + tc_buf_Bounds, + CORBA::B_FALSE); CORBA::TypeCode_ptr CORBA::_tc_Bounds = &tc_std_Bounds; -static CORBA::Octet tc_buf_BadKind [] = +static char tc_buf_BadKind [] = { 0, 0, 0, 0, // big endian, padded 0, 0, 0, 39, // strlen (id) + 1 @@ -388,9 +390,9 @@ static CORBA::Octet tc_buf_BadKind [] = }; static CORBA::TypeCode tc_std_BadKind (CORBA::tk_except, - sizeof tc_buf_BadKind, - tc_buf_BadKind, - CORBA::B_FALSE); + sizeof tc_buf_BadKind, + tc_buf_BadKind, + CORBA::B_FALSE); CORBA::TypeCode_ptr CORBA::_tc_BadKind = &tc_std_BadKind; // Convenience -- say if the exception is a system exception or not. diff --git a/TAO/tao/giop.cpp b/TAO/tao/giop.cpp index f27d8a73c06..3d5dc41e51f 100644 --- a/TAO/tao/giop.cpp +++ b/TAO/tao/giop.cpp @@ -82,10 +82,10 @@ TAO_GIOP::send_request (TAO_SVC_HANDLER *handler, { ACE_TIMEPROBE (" -> GIOP::send_request - start"); - char *buf = (char *) stream.buffer; - size_t buflen = stream.next - stream.buffer; + char *buf = (char *) stream.buffer (); + size_t buflen = stream.length (); - assert (buflen == (stream.length - stream.remaining)); + // assert (buflen == (stream.length - stream.remaining)); // Patch the message length in the GIOP header; it's always at the // same eight byte offset into the message. @@ -97,28 +97,29 @@ TAO_GIOP::send_request (TAO_SVC_HANDLER *handler, // this particular environment and that isn't handled by the // networking infrastructure (e.g. IPSEC). - *(CORBA::Long *) (stream.buffer + 8) = + *(CORBA::Long *) (buf + 8) = (CORBA::Long) (buflen - TAO_GIOP_HEADER_LEN); // Strictly speaking, should not need to loop here because the // socket never gets set to a nonblocking mode ... some Linux // versions seem to need it though. Leaving it costs little. - dump_msg ("send", stream.buffer, buflen); + dump_msg ("send", ACE_reinterpret_cast(u_char*,buf), buflen); ACE_SOCK_Stream &peer = handler->peer (); while (buflen > 0) { - if (buflen > stream.length) + if (buflen > stream.length ()) { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) ?? writebuf, buflen %u > length %u\n", - buflen, stream.length)); + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) ?? writebuf, buflen %u > length %u\n", + buflen, stream.length ())); ACE_TIMEPROBE (" -> GIOP::send_request - fail"); return CORBA::B_FALSE; } - ssize_t writelen = peer.send_n ((char _FAR *) buf, buflen); + ssize_t writelen = peer.send_n (buf, buflen); #if defined (DEBUG) // dmsg_filter (6, "wrote %d bytes to connection %d", @@ -312,12 +313,17 @@ TAO_GIOP::recv_request (TAO_SVC_HANDLER *&handler, // as the "duty factor" goes down because of either long calls or // bursty contention during numerous short calls to the same server. - assert (msg.length > TAO_GIOP_HEADER_LEN); + msg.reset (); - msg.next = msg.buffer; - msg.remaining = TAO_GIOP_HEADER_LEN; + if (msg.grow (TAO_GIOP_HEADER_LEN) == 0) + { + env.exception (new CORBA::NO_MEMORY (CORBA::COMPLETED_MAYBE)); + return TAO_GIOP_MessageError; + } - char *bufptr = (char _FAR *) msg.buffer; + assert (msg.size () > TAO_GIOP_HEADER_LEN); + + char *bufptr = (char*) msg.buffer (); ssize_t len = read_buffer (connection, bufptr, TAO_GIOP_HEADER_LEN); // Read the header into the buffer. @@ -354,16 +360,20 @@ TAO_GIOP::recv_request (TAO_SVC_HANDLER *&handler, return TAO_GIOP_MessageError; } + // Set the end of the message.... + msg.wr_ptr (TAO_GIOP_HEADER_LEN); + + // NOTE: if message headers, or whome messages, get encrypted in // application software (rather than by the network infrastructure) // they should be decrypted here ... // First make sure it's a GIOP message of any version. - if (!(msg.buffer [0] == 'G' - && msg.buffer [1] == 'I' - && msg.buffer [2] == 'O' - && msg.buffer [3] == 'P')) + if (!(bufptr [0] == 'G' + && bufptr [1] == 'I' + && bufptr [2] == 'O' + && bufptr [3] == 'P')) { env.exception (new CORBA::MARSHAL (CORBA::COMPLETED_MAYBE)); // header ACE_DEBUG ((LM_DEBUG, "bad header, magic word\n")); @@ -374,7 +384,7 @@ TAO_GIOP::recv_request (TAO_SVC_HANDLER *&handler, // Then make sure the major version is ours, and the minor version // is one that we understand. - if (!(msg.buffer [4] == MY_MAJOR && msg.buffer [5] <= MY_MINOR)) + if (!(bufptr [4] == MY_MAJOR && bufptr [5] <= MY_MINOR)) { env.exception (new CORBA::MARSHAL (CORBA::COMPLETED_MAYBE)); // header ACE_DEBUG ((LM_DEBUG, "bad header, version\n")); @@ -385,13 +395,14 @@ TAO_GIOP::recv_request (TAO_SVC_HANDLER *&handler, // Get the message type out and adjust the buffer's records to record // that we've read everything except the length. - retval = (TAO_GIOP_MsgType) msg.buffer[7]; - msg.skip_bytes (8); + retval = (TAO_GIOP_MsgType) bufptr[7]; + + msg.do_byteswap = (bufptr [6] != TAO_ENCAP_BYTE_ORDER); // Make sure byteswapping is done if needed, and then read the // message size (appropriately byteswapped). - msg.do_byteswap = (msg.buffer [6] != TAO_ENCAP_BYTE_ORDER); + msg.rd_ptr (8); msg.get_ulong (message_size); // Make sure we have the full length in memory, growing the buffer @@ -402,11 +413,17 @@ TAO_GIOP::recv_request (TAO_SVC_HANDLER *&handler, assert (message_size <= UINT_MAX); - if ((TAO_GIOP_HEADER_LEN + message_size) > msg.length) - msg.grow ((size_t) (TAO_GIOP_HEADER_LEN + message_size)); + if (msg.grow (TAO_GIOP_HEADER_LEN + message_size) == 0) + { + env.exception (new CORBA::NO_MEMORY (CORBA::COMPLETED_MAYBE)); + return TAO_GIOP_MessageError; + } - msg.remaining = (size_t) message_size; - bufptr = (char *) & msg.buffer [TAO_GIOP_HEADER_LEN]; + // The offset from the current position were data writing should + // start, since we already read the msg length (4 bytes) starting at + // position 8 we need to substract 12 bytes. + const int offset = TAO_GIOP_HEADER_LEN - 12; + bufptr = (char *)msg.buffer() + offset; // Read the rest of this message into the buffer. @@ -442,7 +459,11 @@ TAO_GIOP::recv_request (TAO_SVC_HANDLER *&handler, return TAO_GIOP_MessageError; } - dump_msg ("recv", msg.buffer, (size_t) (message_size + TAO_GIOP_HEADER_LEN)); + // Set the end of the message.... + msg.wr_ptr (message_size); + + dump_msg ("recv", ACE_reinterpret_cast(u_char*,msg.buffer()), + (size_t) (message_size + TAO_GIOP_HEADER_LEN)); ACE_TIMEPROBE (" -> GIOP::recv_request - done"); return retval; } @@ -470,7 +491,7 @@ TAO_GIOP_Invocation::TAO_GIOP_Invocation (IIOP_Object *data, opname_ (operation), do_rsvp_ (is_roundtrip), my_request_id_ (0), - stream_ (&buffer [0], sizeof buffer), + stream_ (buffer, sizeof buffer), handler_ (0) { // The assumption that thread ids are ints is false and horribly @@ -513,7 +534,7 @@ static const CORBA::Long _oc_opaque [] = CORBA::TypeCode TC_opaque (CORBA::tk_sequence, sizeof _oc_opaque, - (u_char *) &_oc_opaque, + (char *) &_oc_opaque, CORBA::B_FALSE); // Octet codes for the parameters of the ServiceContextList TypeCode @@ -579,7 +600,7 @@ static const CORBA::Long _oc_svc_ctx_list [] = CORBA::TypeCode TC_ServiceContextList (CORBA::tk_sequence, sizeof _oc_svc_ctx_list, - (u_char *) &_oc_svc_ctx_list, + (char *) &_oc_svc_ctx_list, CORBA::B_FALSE); // The public API involves creating an invocation, starting it, filling @@ -960,27 +981,17 @@ TAO_GIOP_Invocation::invoke (CORBA::ExceptionList &exceptions, case TAO_GIOP_USER_EXCEPTION: case TAO_GIOP_SYSTEM_EXCEPTION: { - CORBA::String exception_id; + char* buf; // Pull the exception ID out of the marshaling buffer. { - CORBA::ULong len; - - // - // Read "length" field of string, so "next" points - // right at the null-terminated ID. Then get the ID. - // - if (this->stream_.get_ulong (len) != CORBA::B_TRUE - || len > this->stream_.remaining) + if (this->stream_.get_string (buf) == CORBA::B_FALSE) { send_error (this->handler_); env.exception (new CORBA::MARSHAL (CORBA::COMPLETED_YES)); return TAO_GIOP_SYSTEM_EXCEPTION; } - exception_id = (CORBA::String) this->stream_.next; - this->stream_.skip_bytes (len); } - // User and system exceptions differ only in what table of // exception typecodes is searched. CORBA::ExceptionList *xlist; @@ -1011,7 +1022,7 @@ TAO_GIOP_Invocation::invoke (CORBA::ExceptionList &exceptions, return TAO_GIOP_SYSTEM_EXCEPTION; } - if (ACE_OS::strcmp ((char *)exception_id, (char *)xid) == 0) + if (ACE_OS::strcmp (buf, (char *)xid) == 0) { size_t size; CORBA::Exception *exception; @@ -1037,7 +1048,7 @@ TAO_GIOP_Invocation::invoke (CORBA::ExceptionList &exceptions, delete exception; ACE_DEBUG ((LM_ERROR, "(%P|%t) invoke, unmarshal %s exception %s\n", (reply_status == TAO_GIOP_USER_EXCEPTION) ? "user" : "system", - exception_id)); + buf)); send_error (this->handler_); return TAO_GIOP_SYSTEM_EXCEPTION; } @@ -1137,7 +1148,7 @@ CORBA::Boolean TAO_GIOP_LocateRequestHeader::init (CDR &msg, CORBA::Environment &env) { - return ( msg.get_ulong (this->request_id) + return (msg.get_ulong (this->request_id) && msg.decode (&TC_opaque, &this->object_key, 0, @@ -1188,23 +1199,24 @@ TAO_GIOP_RequestHeader::init (CDR &msg, CORBA::Boolean TAO_GIOP::start_message (TAO_GIOP_MsgType type, CDR &msg) { - msg.next = msg.buffer; // for reused streams - msg.remaining = msg.length; + msg.reset (); + + // if (msg.size () < TAO_GIOP_HEADER_LEN) + // return CORBA::B_FALSE; - if (msg.bytes_remaining () < TAO_GIOP_HEADER_LEN) - return CORBA::B_FALSE; + char* next = msg.buffer (); - msg.next [0] = 'G'; - msg.next [1] = 'I'; - msg.next [2] = 'O'; - msg.next [3] = 'P'; + next [0] = 'G'; + next [1] = 'I'; + next [2] = 'O'; + next [3] = 'P'; - msg.next [4] = MY_MAJOR; - msg.next [5] = MY_MINOR; - msg.next [6] = TAO_ENCAP_BYTE_ORDER; - msg.next [7] = (u_char) type; + next [4] = MY_MAJOR; + next [5] = MY_MINOR; + next [6] = TAO_ENCAP_BYTE_ORDER; + next [7] = (u_char) type; - msg.skip_bytes (TAO_GIOP_HEADER_LEN); + msg.wr_ptr (TAO_GIOP_HEADER_LEN); return CORBA::B_TRUE; } diff --git a/TAO/tao/giop.h b/TAO/tao/giop.h index fc199565770..45472a9b1b1 100644 --- a/TAO/tao/giop.h +++ b/TAO/tao/giop.h @@ -327,7 +327,7 @@ private: CORBA::ULong my_request_id_; // Request ID of this operation. - u_char buffer [CDR::DEFAULT_BUFSIZE]; + char buffer [CDR::DEFAULT_BUFSIZE]; // Buffer used for CDR stream. CDR stream_; diff --git a/TAO/tao/iioporb.cpp b/TAO/tao/iioporb.cpp index 31ae1382080..4b427f60bf6 100644 --- a/TAO/tao/iioporb.cpp +++ b/TAO/tao/iioporb.cpp @@ -1,3 +1,6 @@ +// +// $Id$ +// // @(#)iioporb.cpp 1.8 95/09/19 // Copyright 1994-1995 by Sun Microsystems Inc. // All Rights Reserved @@ -31,9 +34,9 @@ IIOP_ORB::object_to_string (CORBA::Object_ptr obj, // XXX there should be a simple way to reuse this code in other // ORB implementations ... - u_char *bytes; + char *bytes; // @@ Is BUFSIZ the right size here? - u_char buf [BUFSIZ]; + char buf [BUFSIZ]; CDR cdr (buf, sizeof buf, TAO_ENCAP_BYTE_ORDER); bytes = buf; @@ -50,13 +53,14 @@ IIOP_ORB::object_to_string (CORBA::Object_ptr obj, // return that string. CORBA::String cp; - size_t len = cdr.length - cdr.remaining; + size_t len = cdr.length (); CORBA::String string = CORBA::string_alloc (sizeof ior_prefix + 2 * len); ACE_OS::strcpy ((char *) string, ior_prefix); - for (cp = (CORBA::String) ACE_OS::strchr ((char *) string, ':') + 1, bytes = cdr.buffer; + bytes = cdr.buffer (); + for (cp = (CORBA::String) ACE_OS::strchr ((char *) string, ':') + 1; len--; bytes++) { @@ -132,9 +136,9 @@ ior_string_to_object (CORBA::String str, // Unhex the bytes, and make a CDR deencapsulation stream from the // resulting data. - u_char *buffer; + char *buffer; ACE_NEW_RETURN (buffer, - u_char [1 + ACE_OS::strlen ((char *) str) / 2], + char [1 + ACE_OS::strlen ((char *) str) / 2], CORBA_Object::_nil ()); char *tmp = (char *) str; diff --git a/TAO/tao/interp.cpp b/TAO/tao/interp.cpp index 0a4e570018d..bf5fb551798 100644 --- a/TAO/tao/interp.cpp +++ b/TAO/tao/interp.cpp @@ -387,8 +387,6 @@ calc_nested_size_and_alignment (CORBA::TypeCode_ptr tc, if (kind == ~0) { - CORBA::Long offset; - // Get indirection, sanity check it, set up new stream pointing // there. // @@ -396,6 +394,7 @@ calc_nested_size_and_alignment (CORBA::TypeCode_ptr tc, // to check for errors before indirect and to limit the new // stream's length. ULONG_MAX is too much! + CORBA::Long offset; if (!original_stream->get_long (offset) || offset >= -8 || ((-offset) & 0x03) != 0) @@ -403,26 +402,21 @@ calc_nested_size_and_alignment (CORBA::TypeCode_ptr tc, env.exception (new CORBA::BAD_TYPECODE (CORBA::COMPLETED_NO)); return 0; } - // offset -= 4; // correct for get_long update + // offset -= 4; // correct for get_long update - indirected_stream.next = original_stream->next + (ptr_arith_t) offset; - indirected_stream.remaining = (size_t) ULONG_MAX; + // TODO Provide a method to get an encapsulation from a CDR + // stream. + indirected_stream.setup_indirection (*original_stream, offset); stream = &indirected_stream; // Fetch indirected-to TCKind, deducing byte order. - if (*indirected_stream.next == 0) // big-endian? - indirected_stream.do_byteswap = (TAO_ENCAP_BYTE_ORDER != 0); - else - indirected_stream.do_byteswap = (TAO_ENCAP_BYTE_ORDER == 0); - if (!indirected_stream.get_ulong (temp)) { env.exception (new CORBA::BAD_TYPECODE (CORBA::COMPLETED_NO)); return 0; } kind = (CORBA::TCKind) temp; - } else stream = original_stream; @@ -459,7 +453,7 @@ calc_nested_size_and_alignment (CORBA::TypeCode_ptr tc, if (tc) { tc->kind_ = kind; - tc->buffer_ = stream->next; + tc->buffer_ = stream->buffer (); tc->length_ = temp; } @@ -472,14 +466,14 @@ calc_nested_size_and_alignment (CORBA::TypeCode_ptr tc, size_t size; assert (temp <= UINT_MAX); - sub_encapsulation.setup_encapsulation (stream->next, (size_t) temp); + sub_encapsulation.setup_encapsulation (stream->buffer(), temp); size = table [kind].calc (&sub_encapsulation, alignment, env); // Check for garbage at end of parameter lists, or other cases // where parameters and the size allocated to them don't jive. - stream->skip_bytes ((unsigned) temp); - if (stream->next != sub_encapsulation.next) + stream->rd_ptr (temp); + if (stream->buffer () != sub_encapsulation.buffer ()) { env.exception (new CORBA::BAD_TYPECODE (CORBA::COMPLETED_NO)); return 0; @@ -526,8 +520,8 @@ calc_nested_size_and_alignment (CORBA::TypeCode_ptr tc, tc->length_ = len; assert (len < UINT_MAX); - tc->buffer_ = stream->next; - stream->skip_bytes ((unsigned) len); + tc->buffer_ = stream->buffer (); + stream->rd_ptr (len); break; } @@ -1098,14 +1092,10 @@ union_traverse (CDR *stream, // at all branches of the union ... forcing union traversal to be a // two-pass algorithm, unless/until some data gets squirreled away. { - CDR temp_cdr; + // TODO provide a method to "copy" the CDR stream... + CDR temp_cdr (*stream); size_t scratch; - temp_cdr.next = stream->next; - temp_cdr.remaining = stream->remaining; - temp_cdr.do_byteswap = stream->do_byteswap; - temp_cdr.do_free = 0; - (void) calc_key_union_attributes (&temp_cdr, scratch, discrim_size_with_pad, @@ -1182,7 +1172,7 @@ union_traverse (CDR *stream, // we can't find a match for the discriminant value, that arm will // be used later. - u_char *default_tc_ptr = 0; + char *default_tc_ptr = 0; size_t default_tc_len = 0; while (member_count-- != 0) @@ -1213,8 +1203,8 @@ union_traverse (CDR *stream, if (default_used >= 0 && default_used-- == 0) { - default_tc_ptr = stream->next; - default_tc_len = stream->remaining; + default_tc_ptr = stream->buffer (); + default_tc_len = stream->length (); } // Get the TypeCode for this member. @@ -1240,18 +1230,17 @@ union_traverse (CDR *stream, if (default_tc_ptr) { CDR temp_str; - size_t scratch; - CORBA::TypeCode tc (CORBA::tk_null); - - temp_str.next = default_tc_ptr; - temp_str.remaining = default_tc_len; - temp_str.do_byteswap = stream->do_byteswap; + temp_str.setup_encapsulation (default_tc_ptr, + default_tc_len); // Get and use the TypeCode. // // XXX we really don't care about size and alignment this time, // only that we initialize the TypeCode. + size_t scratch; + CORBA::TypeCode tc (CORBA::tk_null); + (void) calc_nested_size_and_alignment (&tc, &temp_str, scratch, env); return visit (&tc, value1, value2, context, env); } diff --git a/TAO/tao/objkeyC.cpp b/TAO/tao/objkeyC.cpp index b91fa7c2860..d5e1becf3ba 100644 --- a/TAO/tao/objkeyC.cpp +++ b/TAO/tao/objkeyC.cpp @@ -22,7 +22,7 @@ const CORBA::Long _oc_TAO__tao_seq_Octet[] = 0, }; -CORBA::TypeCode _tc__tc_TAO__tao_seq_Octet (CORBA::tk_sequence, sizeof (_oc_TAO__tao_seq_Octet), (unsigned char *) &_oc_TAO__tao_seq_Octet, CORBA::B_FALSE); +CORBA::TypeCode _tc__tc_TAO__tao_seq_Octet (CORBA::tk_sequence, sizeof (_oc_TAO__tao_seq_Octet), (char *) &_oc_TAO__tao_seq_Octet, CORBA::B_FALSE); CORBA::TypeCode_ptr TAO_tc__tao_seq_Octet = &_tc__tc_TAO__tao_seq_Octet; @@ -40,6 +40,6 @@ const CORBA::Long _oc_TAO_ObjectKey[] = 0, }; -CORBA::TypeCode _tc__tc_TAO_ObjectKey (CORBA::tk_alias, sizeof (_oc_TAO_ObjectKey), (unsigned char *) &_oc_TAO_ObjectKey, CORBA::B_FALSE); +CORBA::TypeCode _tc__tc_TAO_ObjectKey (CORBA::tk_alias, sizeof (_oc_TAO_ObjectKey), (char *) &_oc_TAO_ObjectKey, CORBA::B_FALSE); CORBA::TypeCode_ptr TAO_tc_ObjectKey = &_tc__tc_TAO_ObjectKey; diff --git a/TAO/tao/poaC.cpp b/TAO/tao/poaC.cpp index 81a2c463a83..797ffb5f4e4 100644 --- a/TAO/tao/poaC.cpp +++ b/TAO/tao/poaC.cpp @@ -23,7 +23,7 @@ static const CORBA::Long _oc_PortableServer_Identifier[] = CORBA::tk_string, 0, // string length }; -static CORBA::TypeCode _tc__tc_PortableServer_Identifier (CORBA::tk_alias, sizeof (_oc_PortableServer_Identifier), (unsigned char *) &_oc_PortableServer_Identifier, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_Identifier (CORBA::tk_alias, sizeof (_oc_PortableServer_Identifier), (char *) &_oc_PortableServer_Identifier, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_Identifier = &_tc__tc_PortableServer_Identifier; static const CORBA::Long _oc_PortableServer_RepositoryId[] = @@ -34,7 +34,7 @@ static const CORBA::Long _oc_PortableServer_RepositoryId[] = CORBA::tk_string, 0, // string length }; -static CORBA::TypeCode _tc__tc_PortableServer_RepositoryId (CORBA::tk_alias, sizeof (_oc_PortableServer_RepositoryId), (unsigned char *) &_oc_PortableServer_RepositoryId, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_RepositoryId (CORBA::tk_alias, sizeof (_oc_PortableServer_RepositoryId), (char *) &_oc_PortableServer_RepositoryId, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_RepositoryId = &_tc__tc_PortableServer_RepositoryId; PortableServer::CurrentBase_ptr PortableServer::CurrentBase::_duplicate (PortableServer::CurrentBase_ptr obj) @@ -102,7 +102,7 @@ static const CORBA::Long _oc_PortableServer_CurrentBase[] = 35, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f43, 0x75727265, 0x6e744261, 0x73653a31, 0x2e300000, // repository ID = IDL:PortableServer/CurrentBase:1.0 12, 0x43757272, 0x656e7442, 0x61736500, // name = CurrentBase, }; -static CORBA::TypeCode _tc__tc_PortableServer_CurrentBase (CORBA::tk_objref, sizeof (_oc_PortableServer_CurrentBase), (unsigned char *) &_oc_PortableServer_CurrentBase, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_CurrentBase (CORBA::tk_objref, sizeof (_oc_PortableServer_CurrentBase), (char *) &_oc_PortableServer_CurrentBase, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_CurrentBase = &_tc__tc_PortableServer_CurrentBase; PortableServer::Policy_ptr PortableServer::Policy::_duplicate (PortableServer::Policy_ptr obj) @@ -215,7 +215,7 @@ static const CORBA::Long _oc_PortableServer_Policy[] = 30, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f50, 0x6f6c6963, 0x793a312e, 0x30000000, // repository ID = IDL:PortableServer/Policy:1.0 7, 0x506f6c69, 0x63790000, // name = Policy, }; -static CORBA::TypeCode _tc__tc_PortableServer_Policy (CORBA::tk_objref, sizeof (_oc_PortableServer_Policy), (unsigned char *) &_oc_PortableServer_Policy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_Policy (CORBA::tk_objref, sizeof (_oc_PortableServer_Policy), (char *) &_oc_PortableServer_Policy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_Policy = &_tc__tc_PortableServer_Policy; @@ -232,7 +232,7 @@ static const CORBA::Long _oc_PortableServer__tao_seq_Policy[] = 7, 0x506f6c69, 0x63790000, // name = Policy, 0, }; -static CORBA::TypeCode _tc__tc_PortableServer__tao_seq_Policy (CORBA::tk_sequence, sizeof (_oc_PortableServer__tao_seq_Policy), (unsigned char *) &_oc_PortableServer__tao_seq_Policy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer__tao_seq_Policy (CORBA::tk_sequence, sizeof (_oc_PortableServer__tao_seq_Policy), (char *) &_oc_PortableServer__tao_seq_Policy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc__tao_seq_Policy = &_tc__tc_PortableServer__tao_seq_Policy; @@ -253,7 +253,7 @@ static const CORBA::Long _oc_PortableServer_PolicyList[] = 7, 0x506f6c69, 0x63790000, // name = Policy, 0, }; -static CORBA::TypeCode _tc__tc_PortableServer_PolicyList (CORBA::tk_alias, sizeof (_oc_PortableServer_PolicyList), (unsigned char *) &_oc_PortableServer_PolicyList, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_PolicyList (CORBA::tk_alias, sizeof (_oc_PortableServer_PolicyList), (char *) &_oc_PortableServer_PolicyList, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_PolicyList = &_tc__tc_PortableServer_PolicyList; @@ -267,7 +267,7 @@ static const CORBA::Long _oc_PortableServer__tao_seq_Octet[] = 0, }; -static CORBA::TypeCode _tc__tc_PortableServer__tao_seq_Octet (CORBA::tk_sequence, sizeof (_oc_PortableServer__tao_seq_Octet), (unsigned char *) &_oc_PortableServer__tao_seq_Octet, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer__tao_seq_Octet (CORBA::tk_sequence, sizeof (_oc_PortableServer__tao_seq_Octet), (char *) &_oc_PortableServer__tao_seq_Octet, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc__tao_seq_Octet = &_tc__tc_PortableServer__tao_seq_Octet; @@ -285,7 +285,7 @@ static const CORBA::Long _oc_PortableServer_ObjectId[] = 0, }; -static CORBA::TypeCode _tc__tc_PortableServer_ObjectId (CORBA::tk_alias, sizeof (_oc_PortableServer_ObjectId), (unsigned char *) &_oc_PortableServer_ObjectId, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ObjectId (CORBA::tk_alias, sizeof (_oc_PortableServer_ObjectId), (char *) &_oc_PortableServer_ObjectId, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ObjectId = &_tc__tc_PortableServer_ObjectId; // copy constructor @@ -329,7 +329,7 @@ static const CORBA::Long _oc_PortableServer_ForwardRequest[] = 1, // member count 18, 0x666f7277, 0x6172645f, 0x72656665, 0x72656e63, 0x65000000, // name = forward_reference }; -static CORBA::TypeCode _tc__tc_PortableServer_ForwardRequest (CORBA::tk_struct, sizeof (_oc_PortableServer_ForwardRequest), (unsigned char *) &_oc_PortableServer_ForwardRequest, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ForwardRequest (CORBA::tk_struct, sizeof (_oc_PortableServer_ForwardRequest), (char *) &_oc_PortableServer_ForwardRequest, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ForwardRequest = &_tc__tc_PortableServer_ForwardRequest; @@ -342,7 +342,7 @@ static const CORBA::Long _oc_PortableServer_ThreadPolicyValue[] = 15, 0x4f52425f, 0x4354524c, 0x5f4d4f44, 0x454c0000, // name = ORB_CTRL_MODEL 20, 0x53494e47, 0x4c455f54, 0x48524541, 0x445f4d4f, 0x44454c00, // name = SINGLE_THREAD_MODEL }; -static CORBA::TypeCode _tc__tc_PortableServer_ThreadPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_ThreadPolicyValue), (unsigned char *) &_oc_PortableServer_ThreadPolicyValue, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ThreadPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_ThreadPolicyValue), (char *) &_oc_PortableServer_ThreadPolicyValue, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ThreadPolicyValue = &_tc__tc_PortableServer_ThreadPolicyValue; PortableServer::ThreadPolicy_ptr PortableServer::ThreadPolicy::_duplicate (PortableServer::ThreadPolicy_ptr obj) @@ -433,7 +433,7 @@ static const CORBA::Long _oc_PortableServer_ThreadPolicy[] = 36, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f54, 0x68726561, 0x64506f6c, 0x6963793a, 0x312e3000, // repository ID = IDL:PortableServer/ThreadPolicy:1.0 13, 0x54687265, 0x6164506f, 0x6c696379, 0x0, // name = ThreadPolicy, }; -static CORBA::TypeCode _tc__tc_PortableServer_ThreadPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_ThreadPolicy), (unsigned char *) &_oc_PortableServer_ThreadPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ThreadPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_ThreadPolicy), (char *) &_oc_PortableServer_ThreadPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ThreadPolicy = &_tc__tc_PortableServer_ThreadPolicy; @@ -446,7 +446,7 @@ static const CORBA::Long _oc_PortableServer_LifespanPolicyValue[] = 10, 0x5452414e, 0x5349454e, 0x54000000, // name = TRANSIENT 11, 0x50455253, 0x49535445, 0x4e540000, // name = PERSISTENT }; -static CORBA::TypeCode _tc__tc_PortableServer_LifespanPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_LifespanPolicyValue), (unsigned char *) &_oc_PortableServer_LifespanPolicyValue, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_LifespanPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_LifespanPolicyValue), (char *) &_oc_PortableServer_LifespanPolicyValue, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_LifespanPolicyValue = &_tc__tc_PortableServer_LifespanPolicyValue; PortableServer::LifespanPolicy_ptr PortableServer::LifespanPolicy::_duplicate (PortableServer::LifespanPolicy_ptr obj) @@ -537,7 +537,7 @@ static const CORBA::Long _oc_PortableServer_LifespanPolicy[] = 38, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f4c, 0x69666573, 0x70616e50, 0x6f6c6963, 0x793a312e, 0x30000000, // repository ID = IDL:PortableServer/LifespanPolicy:1.0 15, 0x4c696665, 0x7370616e, 0x506f6c69, 0x63790000, // name = LifespanPolicy, }; -static CORBA::TypeCode _tc__tc_PortableServer_LifespanPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_LifespanPolicy), (unsigned char *) &_oc_PortableServer_LifespanPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_LifespanPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_LifespanPolicy), (char *) &_oc_PortableServer_LifespanPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_LifespanPolicy = &_tc__tc_PortableServer_LifespanPolicy; @@ -550,7 +550,7 @@ static const CORBA::Long _oc_PortableServer_IdUniquenessPolicyValue[] = 10, 0x554e4951, 0x55455f49, 0x44000000, // name = UNIQUE_ID 12, 0x4d554c54, 0x49504c45, 0x5f494400, // name = MULTIPLE_ID }; -static CORBA::TypeCode _tc__tc_PortableServer_IdUniquenessPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_IdUniquenessPolicyValue), (unsigned char *) &_oc_PortableServer_IdUniquenessPolicyValue, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_IdUniquenessPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_IdUniquenessPolicyValue), (char *) &_oc_PortableServer_IdUniquenessPolicyValue, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_IdUniquenessPolicyValue = &_tc__tc_PortableServer_IdUniquenessPolicyValue; PortableServer::IdUniquenessPolicy_ptr PortableServer::IdUniquenessPolicy::_duplicate (PortableServer::IdUniquenessPolicy_ptr obj) @@ -641,7 +641,7 @@ static const CORBA::Long _oc_PortableServer_IdUniquenessPolicy[] = 42, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f49, 0x64556e69, 0x7175656e, 0x65737350, 0x6f6c6963, 0x793a312e, 0x30000000, // repository ID = IDL:PortableServer/IdUniquenessPolicy:1.0 19, 0x4964556e, 0x69717565, 0x6e657373, 0x506f6c69, 0x63790000, // name = IdUniquenessPolicy, }; -static CORBA::TypeCode _tc__tc_PortableServer_IdUniquenessPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_IdUniquenessPolicy), (unsigned char *) &_oc_PortableServer_IdUniquenessPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_IdUniquenessPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_IdUniquenessPolicy), (char *) &_oc_PortableServer_IdUniquenessPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_IdUniquenessPolicy = &_tc__tc_PortableServer_IdUniquenessPolicy; @@ -654,7 +654,7 @@ static const CORBA::Long _oc_PortableServer_IdAssignmentPolicyValue[] = 8, 0x55534552, 0x5f494400, // name = USER_ID 10, 0x53595354, 0x454d5f49, 0x44000000, // name = SYSTEM_ID }; -static CORBA::TypeCode _tc__tc_PortableServer_IdAssignmentPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_IdAssignmentPolicyValue), (unsigned char *) &_oc_PortableServer_IdAssignmentPolicyValue, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_IdAssignmentPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_IdAssignmentPolicyValue), (char *) &_oc_PortableServer_IdAssignmentPolicyValue, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_IdAssignmentPolicyValue = &_tc__tc_PortableServer_IdAssignmentPolicyValue; PortableServer::IdAssignmentPolicy_ptr PortableServer::IdAssignmentPolicy::_duplicate (PortableServer::IdAssignmentPolicy_ptr obj) @@ -745,7 +745,7 @@ static const CORBA::Long _oc_PortableServer_IdAssignmentPolicy[] = 42, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f49, 0x64417373, 0x69676e6d, 0x656e7450, 0x6f6c6963, 0x793a312e, 0x30000000, // repository ID = IDL:PortableServer/IdAssignmentPolicy:1.0 19, 0x49644173, 0x7369676e, 0x6d656e74, 0x506f6c69, 0x63790000, // name = IdAssignmentPolicy, }; -static CORBA::TypeCode _tc__tc_PortableServer_IdAssignmentPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_IdAssignmentPolicy), (unsigned char *) &_oc_PortableServer_IdAssignmentPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_IdAssignmentPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_IdAssignmentPolicy), (char *) &_oc_PortableServer_IdAssignmentPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_IdAssignmentPolicy = &_tc__tc_PortableServer_IdAssignmentPolicy; @@ -758,7 +758,7 @@ static const CORBA::Long _oc_PortableServer_ImplicitActivationPolicyValue[] = 20, 0x494d504c, 0x49434954, 0x5f414354, 0x49564154, 0x494f4e00, // name = IMPLICIT_ACTIVATION 23, 0x4e4f5f49, 0x4d504c49, 0x4349545f, 0x41435449, 0x56415449, 0x4f4e0000, // name = NO_IMPLICIT_ACTIVATION }; -static CORBA::TypeCode _tc__tc_PortableServer_ImplicitActivationPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_ImplicitActivationPolicyValue), (unsigned char *) &_oc_PortableServer_ImplicitActivationPolicyValue, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ImplicitActivationPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_ImplicitActivationPolicyValue), (char *) &_oc_PortableServer_ImplicitActivationPolicyValue, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ImplicitActivationPolicyValue = &_tc__tc_PortableServer_ImplicitActivationPolicyValue; PortableServer::ImplicitActivationPolicy_ptr PortableServer::ImplicitActivationPolicy::_duplicate (PortableServer::ImplicitActivationPolicy_ptr obj) @@ -849,7 +849,7 @@ static const CORBA::Long _oc_PortableServer_ImplicitActivationPolicy[] = 48, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f49, 0x6d706c69, 0x63697441, 0x63746976, 0x6174696f, 0x6e506f6c, 0x6963793a, 0x312e3000, // repository ID = IDL:PortableServer/ImplicitActivationPolicy:1.0 25, 0x496d706c, 0x69636974, 0x41637469, 0x76617469, 0x6f6e506f, 0x6c696379, 0x0, // name = ImplicitActivationPolicy, }; -static CORBA::TypeCode _tc__tc_PortableServer_ImplicitActivationPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_ImplicitActivationPolicy), (unsigned char *) &_oc_PortableServer_ImplicitActivationPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ImplicitActivationPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_ImplicitActivationPolicy), (char *) &_oc_PortableServer_ImplicitActivationPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ImplicitActivationPolicy = &_tc__tc_PortableServer_ImplicitActivationPolicy; @@ -862,7 +862,7 @@ static const CORBA::Long _oc_PortableServer_ServantRetentionPolicyValue[] = 7, 0x52455441, 0x494e0000, // name = RETAIN 11, 0x4e4f4e5f, 0x52455441, 0x494e0000, // name = NON_RETAIN }; -static CORBA::TypeCode _tc__tc_PortableServer_ServantRetentionPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_ServantRetentionPolicyValue), (unsigned char *) &_oc_PortableServer_ServantRetentionPolicyValue, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ServantRetentionPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_ServantRetentionPolicyValue), (char *) &_oc_PortableServer_ServantRetentionPolicyValue, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ServantRetentionPolicyValue = &_tc__tc_PortableServer_ServantRetentionPolicyValue; PortableServer::ServantRetentionPolicy_ptr PortableServer::ServantRetentionPolicy::_duplicate (PortableServer::ServantRetentionPolicy_ptr obj) @@ -953,7 +953,7 @@ static const CORBA::Long _oc_PortableServer_ServantRetentionPolicy[] = 46, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f53, 0x65727661, 0x6e745265, 0x74656e74, 0x696f6e50, 0x6f6c6963, 0x793a312e, 0x30000000, // repository ID = IDL:PortableServer/ServantRetentionPolicy:1.0 23, 0x53657276, 0x616e7452, 0x6574656e, 0x74696f6e, 0x506f6c69, 0x63790000, // name = ServantRetentionPolicy, }; -static CORBA::TypeCode _tc__tc_PortableServer_ServantRetentionPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_ServantRetentionPolicy), (unsigned char *) &_oc_PortableServer_ServantRetentionPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ServantRetentionPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_ServantRetentionPolicy), (char *) &_oc_PortableServer_ServantRetentionPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ServantRetentionPolicy = &_tc__tc_PortableServer_ServantRetentionPolicy; @@ -967,7 +967,7 @@ static const CORBA::Long _oc_PortableServer_RequestProcessingPolicyValue[] = 20, 0x5553455f, 0x44454641, 0x554c545f, 0x53455256, 0x414e5400, // name = USE_DEFAULT_SERVANT 20, 0x5553455f, 0x53455256, 0x414e545f, 0x4d414e41, 0x47455200, // name = USE_SERVANT_MANAGER }; -static CORBA::TypeCode _tc__tc_PortableServer_RequestProcessingPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_RequestProcessingPolicyValue), (unsigned char *) &_oc_PortableServer_RequestProcessingPolicyValue, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_RequestProcessingPolicyValue (CORBA::tk_enum, sizeof (_oc_PortableServer_RequestProcessingPolicyValue), (char *) &_oc_PortableServer_RequestProcessingPolicyValue, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_RequestProcessingPolicyValue = &_tc__tc_PortableServer_RequestProcessingPolicyValue; PortableServer::RequestProcessingPolicy_ptr PortableServer::RequestProcessingPolicy::_duplicate (PortableServer::RequestProcessingPolicy_ptr obj) @@ -1059,7 +1059,7 @@ static const CORBA::Long _oc_PortableServer_RequestProcessingPolicy[] = 47, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f52, 0x65717565, 0x73745072, 0x6f636573, 0x73696e67, 0x506f6c69, 0x63793a31, 0x2e300000, // repository ID = IDL:PortableServer/RequestProcessingPolicy:1.0 24, 0x52657175, 0x65737450, 0x726f6365, 0x7373696e, 0x67506f6c, 0x69637900, // name = RequestProcessingPolicy, }; -static CORBA::TypeCode _tc__tc_PortableServer_RequestProcessingPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_RequestProcessingPolicy), (unsigned char *) &_oc_PortableServer_RequestProcessingPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_RequestProcessingPolicy (CORBA::tk_objref, sizeof (_oc_PortableServer_RequestProcessingPolicy), (char *) &_oc_PortableServer_RequestProcessingPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_RequestProcessingPolicy = &_tc__tc_PortableServer_RequestProcessingPolicy; PortableServer::POAManager_ptr PortableServer::POAManager::_duplicate (PortableServer::POAManager_ptr obj) @@ -1142,7 +1142,7 @@ static const CORBA::Long _oc_PortableServer_POAManager_AdapterInactive[] = 16, 0x41646170, 0x74657249, 0x6e616374, 0x69766500, // name = AdapterInactive 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POAManager_AdapterInactive (CORBA::tk_struct, sizeof (_oc_PortableServer_POAManager_AdapterInactive), (unsigned char *) &_oc_PortableServer_POAManager_AdapterInactive, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POAManager_AdapterInactive (CORBA::tk_struct, sizeof (_oc_PortableServer_POAManager_AdapterInactive), (char *) &_oc_PortableServer_POAManager_AdapterInactive, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POAManager::_tc_AdapterInactive = &_tc__tc_PortableServer_POAManager_AdapterInactive; CORBA::Boolean PortableServer::POAManager::_is_a (const CORBA::Char *value, CORBA::Environment &_tao_environment) @@ -1161,7 +1161,7 @@ static const CORBA::Long _oc_PortableServer_POAManager[] = 34, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f50, 0x4f414d61, 0x6e616765, 0x723a312e, 0x30000000, // repository ID = IDL:PortableServer/POAManager:1.0 11, 0x504f414d, 0x616e6167, 0x65720000, // name = POAManager, }; -static CORBA::TypeCode _tc__tc_PortableServer_POAManager (CORBA::tk_objref, sizeof (_oc_PortableServer_POAManager), (unsigned char *) &_oc_PortableServer_POAManager, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POAManager (CORBA::tk_objref, sizeof (_oc_PortableServer_POAManager), (char *) &_oc_PortableServer_POAManager, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_POAManager = &_tc__tc_PortableServer_POAManager; PortableServer::AdapterActivator_ptr PortableServer::AdapterActivator::_duplicate (PortableServer::AdapterActivator_ptr obj) @@ -1229,7 +1229,7 @@ static const CORBA::Long _oc_PortableServer_AdapterActivator[] = 40, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f41, 0x64617074, 0x65724163, 0x74697661, 0x746f723a, 0x312e3000, // repository ID = IDL:PortableServer/AdapterActivator:1.0 17, 0x41646170, 0x74657241, 0x63746976, 0x61746f72, 0x0, // name = AdapterActivator, }; -static CORBA::TypeCode _tc__tc_PortableServer_AdapterActivator (CORBA::tk_objref, sizeof (_oc_PortableServer_AdapterActivator), (unsigned char *) &_oc_PortableServer_AdapterActivator, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_AdapterActivator (CORBA::tk_objref, sizeof (_oc_PortableServer_AdapterActivator), (char *) &_oc_PortableServer_AdapterActivator, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_AdapterActivator = &_tc__tc_PortableServer_AdapterActivator; PortableServer::ServantManager_ptr PortableServer::ServantManager::_duplicate (PortableServer::ServantManager_ptr obj) @@ -1297,7 +1297,7 @@ static const CORBA::Long _oc_PortableServer_ServantManager[] = 38, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f53, 0x65727661, 0x6e744d61, 0x6e616765, 0x723a312e, 0x30000000, // repository ID = IDL:PortableServer/ServantManager:1.0 15, 0x53657276, 0x616e744d, 0x616e6167, 0x65720000, // name = ServantManager, }; -static CORBA::TypeCode _tc__tc_PortableServer_ServantManager (CORBA::tk_objref, sizeof (_oc_PortableServer_ServantManager), (unsigned char *) &_oc_PortableServer_ServantManager, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ServantManager (CORBA::tk_objref, sizeof (_oc_PortableServer_ServantManager), (char *) &_oc_PortableServer_ServantManager, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ServantManager = &_tc__tc_PortableServer_ServantManager; PortableServer::ServantActivator_ptr PortableServer::ServantActivator::_duplicate (PortableServer::ServantActivator_ptr obj) @@ -1366,7 +1366,7 @@ static const CORBA::Long _oc_PortableServer_ServantActivator[] = 40, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f53, 0x65727661, 0x6e744163, 0x74697661, 0x746f723a, 0x312e3000, // repository ID = IDL:PortableServer/ServantActivator:1.0 17, 0x53657276, 0x616e7441, 0x63746976, 0x61746f72, 0x0, // name = ServantActivator, }; -static CORBA::TypeCode _tc__tc_PortableServer_ServantActivator (CORBA::tk_objref, sizeof (_oc_PortableServer_ServantActivator), (unsigned char *) &_oc_PortableServer_ServantActivator, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ServantActivator (CORBA::tk_objref, sizeof (_oc_PortableServer_ServantActivator), (char *) &_oc_PortableServer_ServantActivator, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ServantActivator = &_tc__tc_PortableServer_ServantActivator; PortableServer::ServantLocator_ptr PortableServer::ServantLocator::_duplicate (PortableServer::ServantLocator_ptr obj) @@ -1435,7 +1435,7 @@ static const CORBA::Long _oc_PortableServer_ServantLocator[] = 38, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f53, 0x65727661, 0x6e744c6f, 0x6361746f, 0x723a312e, 0x30000000, // repository ID = IDL:PortableServer/ServantLocator:1.0 15, 0x53657276, 0x616e744c, 0x6f636174, 0x6f720000, // name = ServantLocator, }; -static CORBA::TypeCode _tc__tc_PortableServer_ServantLocator (CORBA::tk_objref, sizeof (_oc_PortableServer_ServantLocator), (unsigned char *) &_oc_PortableServer_ServantLocator, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_ServantLocator (CORBA::tk_objref, sizeof (_oc_PortableServer_ServantLocator), (char *) &_oc_PortableServer_ServantLocator, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_ServantLocator = &_tc__tc_PortableServer_ServantLocator; PortableServer::POA_ptr PortableServer::POA::_duplicate (PortableServer::POA_ptr obj) @@ -1518,7 +1518,7 @@ static const CORBA::Long _oc_PortableServer_POA_AdapterAlreadyExists[] = 21, 0x41646170, 0x74657241, 0x6c726561, 0x64794578, 0x69737473, 0x0, // name = AdapterAlreadyExists 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_AdapterAlreadyExists (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_AdapterAlreadyExists), (unsigned char *) &_oc_PortableServer_POA_AdapterAlreadyExists, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_AdapterAlreadyExists (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_AdapterAlreadyExists), (char *) &_oc_PortableServer_POA_AdapterAlreadyExists, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_AdapterAlreadyExists = &_tc__tc_PortableServer_POA_AdapterAlreadyExists; // copy constructor @@ -1552,7 +1552,7 @@ static const CORBA::Long _oc_PortableServer_POA_AdapterInactive[] = 16, 0x41646170, 0x74657249, 0x6e616374, 0x69766500, // name = AdapterInactive 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_AdapterInactive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_AdapterInactive), (unsigned char *) &_oc_PortableServer_POA_AdapterInactive, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_AdapterInactive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_AdapterInactive), (char *) &_oc_PortableServer_POA_AdapterInactive, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_AdapterInactive = &_tc__tc_PortableServer_POA_AdapterInactive; // copy constructor @@ -1586,7 +1586,7 @@ static const CORBA::Long _oc_PortableServer_POA_AdapterNonExistent[] = 19, 0x41646170, 0x7465724e, 0x6f6e4578, 0x69737465, 0x6e740000, // name = AdapterNonExistent 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_AdapterNonExistent (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_AdapterNonExistent), (unsigned char *) &_oc_PortableServer_POA_AdapterNonExistent, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_AdapterNonExistent (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_AdapterNonExistent), (char *) &_oc_PortableServer_POA_AdapterNonExistent, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_AdapterNonExistent = &_tc__tc_PortableServer_POA_AdapterNonExistent; // copy constructor @@ -1632,7 +1632,7 @@ static const CORBA::Long _oc_PortableServer_POA_InvalidPolicy[] = CORBA::tk_ushort, }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_InvalidPolicy (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_InvalidPolicy), (unsigned char *) &_oc_PortableServer_POA_InvalidPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_InvalidPolicy (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_InvalidPolicy), (char *) &_oc_PortableServer_POA_InvalidPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_InvalidPolicy = &_tc__tc_PortableServer_POA_InvalidPolicy; // copy constructor @@ -1666,7 +1666,7 @@ static const CORBA::Long _oc_PortableServer_POA_NoServant[] = 10, 0x4e6f5365, 0x7276616e, 0x74000000, // name = NoServant 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_NoServant (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_NoServant), (unsigned char *) &_oc_PortableServer_POA_NoServant, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_NoServant (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_NoServant), (char *) &_oc_PortableServer_POA_NoServant, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_NoServant = &_tc__tc_PortableServer_POA_NoServant; // copy constructor @@ -1700,7 +1700,7 @@ static const CORBA::Long _oc_PortableServer_POA_ObjectAlreadyActive[] = 20, 0x4f626a65, 0x6374416c, 0x72656164, 0x79416374, 0x69766500, // name = ObjectAlreadyActive 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_ObjectAlreadyActive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_ObjectAlreadyActive), (unsigned char *) &_oc_PortableServer_POA_ObjectAlreadyActive, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_ObjectAlreadyActive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_ObjectAlreadyActive), (char *) &_oc_PortableServer_POA_ObjectAlreadyActive, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_ObjectAlreadyActive = &_tc__tc_PortableServer_POA_ObjectAlreadyActive; // copy constructor @@ -1734,7 +1734,7 @@ static const CORBA::Long _oc_PortableServer_POA_ObjectNotActive[] = 16, 0x4f626a65, 0x63744e6f, 0x74416374, 0x69766500, // name = ObjectNotActive 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_ObjectNotActive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_ObjectNotActive), (unsigned char *) &_oc_PortableServer_POA_ObjectNotActive, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_ObjectNotActive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_ObjectNotActive), (char *) &_oc_PortableServer_POA_ObjectNotActive, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_ObjectNotActive = &_tc__tc_PortableServer_POA_ObjectNotActive; // copy constructor @@ -1768,7 +1768,7 @@ static const CORBA::Long _oc_PortableServer_POA_ServantAlreadyActive[] = 21, 0x53657276, 0x616e7441, 0x6c726561, 0x64794163, 0x74697665, 0x0, // name = ServantAlreadyActive 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_ServantAlreadyActive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_ServantAlreadyActive), (unsigned char *) &_oc_PortableServer_POA_ServantAlreadyActive, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_ServantAlreadyActive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_ServantAlreadyActive), (char *) &_oc_PortableServer_POA_ServantAlreadyActive, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_ServantAlreadyActive = &_tc__tc_PortableServer_POA_ServantAlreadyActive; // copy constructor @@ -1802,7 +1802,7 @@ static const CORBA::Long _oc_PortableServer_POA_ServantNotActive[] = 17, 0x53657276, 0x616e744e, 0x6f744163, 0x74697665, 0x0, // name = ServantNotActive 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_ServantNotActive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_ServantNotActive), (unsigned char *) &_oc_PortableServer_POA_ServantNotActive, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_ServantNotActive (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_ServantNotActive), (char *) &_oc_PortableServer_POA_ServantNotActive, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_ServantNotActive = &_tc__tc_PortableServer_POA_ServantNotActive; // copy constructor @@ -1836,7 +1836,7 @@ static const CORBA::Long _oc_PortableServer_POA_WrongAdapter[] = 13, 0x57726f6e, 0x67416461, 0x70746572, 0x0, // name = WrongAdapter 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_WrongAdapter (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_WrongAdapter), (unsigned char *) &_oc_PortableServer_POA_WrongAdapter, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_WrongAdapter (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_WrongAdapter), (char *) &_oc_PortableServer_POA_WrongAdapter, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_WrongAdapter = &_tc__tc_PortableServer_POA_WrongAdapter; // copy constructor @@ -1870,7 +1870,7 @@ static const CORBA::Long _oc_PortableServer_POA_WrongPolicy[] = 12, 0x57726f6e, 0x67506f6c, 0x69637900, // name = WrongPolicy 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_POA_WrongPolicy (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_WrongPolicy), (unsigned char *) &_oc_PortableServer_POA_WrongPolicy, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA_WrongPolicy (CORBA::tk_struct, sizeof (_oc_PortableServer_POA_WrongPolicy), (char *) &_oc_PortableServer_POA_WrongPolicy, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::POA::_tc_WrongPolicy = &_tc__tc_PortableServer_POA_WrongPolicy; CORBA::Boolean PortableServer::POA::_is_a (const CORBA::Char *value, CORBA::Environment &_tao_environment) @@ -1889,7 +1889,7 @@ static const CORBA::Long _oc_PortableServer_POA[] = 27, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f50, 0x4f413a31, 0x2e300000, // repository ID = IDL:PortableServer/POA:1.0 4, 0x504f4100, // name = POA, }; -static CORBA::TypeCode _tc__tc_PortableServer_POA (CORBA::tk_objref, sizeof (_oc_PortableServer_POA), (unsigned char *) &_oc_PortableServer_POA, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_POA (CORBA::tk_objref, sizeof (_oc_PortableServer_POA), (char *) &_oc_PortableServer_POA, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_POA = &_tc__tc_PortableServer_POA; PortableServer::Current_ptr PortableServer::Current::_duplicate (PortableServer::Current_ptr obj) @@ -1972,7 +1972,7 @@ static const CORBA::Long _oc_PortableServer_Current_NoContext[] = 10, 0x4e6f436f, 0x6e746578, 0x74000000, // name = NoContext 0, // member count }; -static CORBA::TypeCode _tc__tc_PortableServer_Current_NoContext (CORBA::tk_struct, sizeof (_oc_PortableServer_Current_NoContext), (unsigned char *) &_oc_PortableServer_Current_NoContext, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_Current_NoContext (CORBA::tk_struct, sizeof (_oc_PortableServer_Current_NoContext), (char *) &_oc_PortableServer_Current_NoContext, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::Current::_tc_NoContext = &_tc__tc_PortableServer_Current_NoContext; PortableServer::POA_ptr PortableServer::Current::get_POA (CORBA::Environment &env) @@ -2022,7 +2022,7 @@ static const CORBA::Long _oc_PortableServer_Current[] = 31, 0x49444c3a, 0x506f7274, 0x61626c65, 0x53657276, 0x65722f43, 0x75727265, 0x6e743a31, 0x2e300000, // repository ID = IDL:PortableServer/Current:1.0 8, 0x43757272, 0x656e7400, // name = Current, }; -static CORBA::TypeCode _tc__tc_PortableServer_Current (CORBA::tk_objref, sizeof (_oc_PortableServer_Current), (unsigned char *) &_oc_PortableServer_Current, CORBA::B_FALSE); +static CORBA::TypeCode _tc__tc_PortableServer_Current (CORBA::tk_objref, sizeof (_oc_PortableServer_Current), (char *) &_oc_PortableServer_Current, CORBA::B_FALSE); CORBA::TypeCode_ptr PortableServer::_tc_Current = &_tc__tc_PortableServer_Current; char * diff --git a/TAO/tao/tc_const.cpp b/TAO/tao/tc_const.cpp index 7c49a9f5ea7..d694a1f3057 100644 --- a/TAO/tao/tc_const.cpp +++ b/TAO/tao/tc_const.cpp @@ -85,19 +85,19 @@ static const CORBA::Long _oc_string [] = 0 // ... unbounded string }; static CORBA::TypeCode tc_string (CORBA::tk_string, - sizeof _oc_string, - (u_char *) &_oc_string, - CORBA::B_FALSE); + sizeof _oc_string, + (char*)&_oc_string, + CORBA::B_FALSE); TAO_Export CORBA::TypeCode_ptr CORBA::_tc_string = &tc_string; static const CORBA::Long _oc_wstring [] = { // CDR typecode octets - TAO_ENCAP_BYTE_ORDER, // native endian + padding; "tricky" + TAO_ENCAP_BYTE_ORDER, // native endian + padding; "tricky" 0 // ... unbounded string }; static CORBA::TypeCode tc_wstring (CORBA::tk_wstring, sizeof _oc_wstring, - (u_char *) &_oc_wstring, + (char *) &_oc_wstring, CORBA::B_FALSE); TAO_Export CORBA::TypeCode_ptr CORBA::_tc_wstring = &tc_wstring; @@ -137,7 +137,7 @@ static const u_char oc_objref [] = static CORBA::TypeCode tc_objref (CORBA::tk_objref, sizeof oc_objref, - (u_char *) &oc_objref, + (char *) &oc_objref, CORBA::B_FALSE); TAO_Export CORBA::TypeCode_ptr CORBA::_tc_Object = &tc_objref; diff --git a/TAO/tao/typecode.cpp b/TAO/tao/typecode.cpp index 94a89c53c89..7e8c10cf06f 100644 --- a/TAO/tao/typecode.cpp +++ b/TAO/tao/typecode.cpp @@ -47,8 +47,8 @@ CORBA_TypeCode::CORBA_TypeCode (CORBA::TCKind kind) // non-empty parameter lists. See "corba.hh" for details. CORBA_TypeCode::CORBA_TypeCode (CORBA::TCKind kind, - CORBA::ULong length, - CORBA::Octet *buffer, + size_t length, + char *buffer, CORBA::Boolean orb_owns_tc, CORBA::TypeCode_ptr parent) : length_ (length), @@ -84,9 +84,6 @@ CORBA_TypeCode::CORBA_TypeCode (CORBA::TCKind kind, if (!parent_) { - // No parent. We are free standing. - ptr_arith_t temp; - // Allocate a buffer to hold the encapsulated stream. We // allocate extra space since we need a buffer that is aligned // on a 4 byte word boundary. As a result, it is quite possible @@ -96,12 +93,13 @@ CORBA_TypeCode::CORBA_TypeCode (CORBA::TCKind kind, // to remain dangling. Hence we save a handle to the original // allocated buffer. - this->non_aligned_buffer_ = new CORBA::Octet [length + 4]; + this->non_aligned_buffer_ = new char [length + 4]; - temp = (ptr_arith_t) non_aligned_buffer_; + // No parent. We are free standing. + ptr_arith_t temp = (ptr_arith_t) non_aligned_buffer_; temp += 3; temp &= ~0x03; - this->buffer_ = (CORBA::Octet *) temp; + this->buffer_ = ACE_reinterpret_cast(char*,temp); (void) ACE_OS::memcpy (this->buffer_, buffer, (size_t) length); @@ -384,8 +382,8 @@ CORBA_TypeCode::skip_typecode (CDR &stream) case CORBA::tk_array: case CORBA::tk_alias: case CORBA::tk_except: - return stream.get_ulong (temp) != CORBA::B_FALSE - && stream.skip_bytes (temp) != CORBA::B_FALSE; + return (stream.get_ulong (temp) != CORBA::B_FALSE + && stream.rd_ptr (temp) != CORBA::B_FALSE); } return CORBA::B_TRUE; @@ -1173,9 +1171,8 @@ CORBA_TypeCode::private_name (CORBA::Environment &env) const { this->private_state_->tc_name_known_ = CORBA::B_TRUE; - // skip past the length field. - this->private_state_->tc_name_ = (CORBA::String) (stream.next + - CDR::LONG_SIZE); + // "Read" the string without copying. + stream.get_string (this->private_state_->tc_name_); return this->private_state_->tc_name_; } @@ -1479,13 +1476,8 @@ CORBA_TypeCode::private_member_name (CORBA::ULong index, // return the required one. for (CORBA::ULong i = 0; i < mcount; i++) { - // the ith entry will have the name of the ith member - this->private_state_->tc_member_name_list_ [i] = (char *) - (stream.next + 4); // just point to it. The string - // starts after 4 bytes that encodes - // the length // now skip this name - if (!stream.skip_string ()) + if (!stream.get_string (this->private_state_->tc_member_name_list_ [i])) { env.exception (new CORBA::BAD_TYPECODE (CORBA::COMPLETED_NO)); @@ -1541,11 +1533,8 @@ CORBA_TypeCode::private_member_name (CORBA::ULong index, // return the required one. for (CORBA::ULong i = 0; i < mcount; i++) { - // the ith entry will have the name of the ith member - this->private_state_->tc_member_name_list_ [i] = (char *) - (stream.next + 4); // just point to it - if (!stream.skip_string () // skip this name - || (!skip_typecode (stream) // skip the typecode + if (!stream.get_string (this->private_state_->tc_member_name_list_ [i]) + || (!skip_typecode (stream) != CORBA::TypeCode::TRAVERSE_CONTINUE)) { env.exception (new CORBA::BAD_TYPECODE (CORBA::COMPLETED_NO)); @@ -1621,10 +1610,8 @@ CORBA_TypeCode::private_member_name (CORBA::ULong index, (CORBA::COMPLETED_NO)); return 0; } - this->private_state_->tc_member_name_list_ [i] = (char *) - (stream.next + 4); // just point to it. // skip typecode for member - if (!stream.skip_string () // skip this name + if (!stream.get_string (this->private_state_->tc_member_name_list_ [i]) || (!skip_typecode (stream))) // skip typecode { env.exception (new CORBA::BAD_TYPECODE diff --git a/TAO/tao/typecode.h b/TAO/tao/typecode.h index 99083f93b32..db1cb634940 100644 --- a/TAO/tao/typecode.h +++ b/TAO/tao/typecode.h @@ -135,8 +135,8 @@ public: // with no parameters. CORBA_TypeCode (CORBA::TCKind kind, - CORBA::ULong length, - CORBA::Octet *buffer, + size_t length, + char *buffer, CORBA::Boolean orb_owns_tc, CORBA::TypeCode_ptr parent = 0); // This constructor is used both for typecode constants and for @@ -238,10 +238,10 @@ public: // This is implemented as a counted set of bytes, in marshaled CDR // format. - CORBA::ULong length_; + size_t length_; // length of the encapsulated stream - CORBA::Octet *buffer_; + char* buffer_; // the encapsulated stream CORBA::TCKind kind_; @@ -386,7 +386,7 @@ private: CORBA_TypeCode (const CORBA::TypeCode &src); CORBA_TypeCode &operator = (const CORBA::TypeCode &src); - CORBA::Octet *non_aligned_buffer_; + char *non_aligned_buffer_; // original buffer that may possibly be non-aligned. We still need a // handle to the allocated memory so that all of it can be freed by // the destructor diff --git a/TAO/taoconfig.mk b/TAO/taoconfig.mk index dd5628d0a45..424d36476ef 100644 --- a/TAO/taoconfig.mk +++ b/TAO/taoconfig.mk @@ -12,5 +12,3 @@ endif LDFLAGS := $(patsubst -L$(ACE_ROOT)/ace, -L$(TAO_ROOT)/tao -L$(ACE_ROOT)/ace, $(LDFLAGS)) CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/tao/compat $(TSS_ORB_FLAG)#-H -clean: - -/bin/rm -rf *.o Log $(BIN) obj.* core Templates.DB .make.state diff --git a/TAO/tests/CDR/Makefile b/TAO/tests/CDR/Makefile new file mode 100644 index 00000000000..04e712f88b4 --- /dev/null +++ b/TAO/tests/CDR/Makefile @@ -0,0 +1,57 @@ +#---------------------------------------------------------------------------- +# +# $Id$ +# +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +# Local macros +#---------------------------------------------------------------------------- + +ifndef TAO_ROOT + TAO_ROOT = $(ACE_ROOT)/TAO +endif # ! TAO_ROOT + +LDLIBS = -lTAO +LDFLAGS += -L$(TAO_ROOT)/tao + +PROG_SRCS = \ + basic_types.cpp \ + tc.cpp \ + +LSRC = $(PROG_SRCS) + +BASIC_TYPES_OBJS = basic_types.o +TC_OBJS = tc.o + +BIN = basic_types tc +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.bin.GNU +include $(ACE_ROOT)/include/makeinclude/rules.local.GNU + +CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/tao/compat $(TSS_ORB_FLAG)#-H + +basic_types: $(addprefix $(VDIR),$(BASIC_TYPES_OBJS)) + $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) + +tc: $(addprefix $(VDIR),$(TC_OBJS)) + $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) + +clean: + -/bin/rm -rf *.o Log $(BIN) obj.* core Templates.DB .make.state + +# DO NOT DELETE THIS LINE -- g++dep uses it. +# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. +# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/TAO/tests/CDR/basic_types.cpp b/TAO/tests/CDR/basic_types.cpp new file mode 100644 index 00000000000..759249b7cbf --- /dev/null +++ b/TAO/tests/CDR/basic_types.cpp @@ -0,0 +1,90 @@ +// +// $Id$ +// + +#include "tao/corba.h" + +int +main (int , char *[]) +{ + CDR cdr; + + CORBA::Octet o = 1; + CORBA::Short s = 2; + CORBA::Long l = 4; + + const int n = 4096; + for (int i = 0; i < n; ++i) + { + if (cdr.put_octet (o) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "put_octet[%d] failed\n", i), 1); + } + if (cdr.put_short (s) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "put_short[%d] failed\n", i), 1); + } + if (cdr.put_octet (o) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "put_octet-2[%d] failed\n", i), 1); + } + if (cdr.put_long (l) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "put_long[%d] failed\n", i), 1); + } + if (cdr.put_long (l) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "put_long-2[%d] failed\n", i), 1); + } + } + + CORBA::Octet xo; + CORBA::Short xs; + CORBA::Long xl; + + for (int j = 0; j < n; ++j) + { + if (cdr.get_octet (xo) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "get_octet[%d] failed\n", j), 1); + } + if (xo != o) + { + ACE_ERROR_RETURN ((LM_ERROR, "octet[%d] differs\n", j), 1); + } + if (cdr.get_short (xs) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "get_short[%d] failed\n", j), 1); + } + if (xs != s) + { + ACE_ERROR_RETURN ((LM_ERROR, "short[%d] differs\n", j), 1); + } + if (cdr.get_octet (xo) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "get_octet-2[%d] failed\n", j), 1); + } + if (xo != o) + { + ACE_ERROR_RETURN ((LM_ERROR, "octet-2[%d] differs\n", j), 1); + } + if (cdr.get_long (xl) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "get_long[%d] failed\n", j), 1); + } + if (xl != l) + { + ACE_ERROR_RETURN ((LM_ERROR, "long[%d] differs\n", j), 1); + } + if (cdr.get_long (xl) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "get_long-2[%d] failed\n", j), 1); + } + if (xl != l) + { + ACE_ERROR_RETURN ((LM_ERROR, "long-2[%d] differs\n", j), 1); + } + } + + return 0; +} diff --git a/TAO/tests/CDR/tc.cpp b/TAO/tests/CDR/tc.cpp new file mode 100644 index 00000000000..6461e173f2f --- /dev/null +++ b/TAO/tests/CDR/tc.cpp @@ -0,0 +1,128 @@ +// +// $Id$ +// + +#include "tao/corba.h" + +// In this version of TAO typecodes are based on CDR, we have to +// verify that CDR offers the services needed for Typecode... + +static CORBA::TypeCode_ptr tcs[]= { + CORBA::_tc_null, + CORBA::_tc_void, + CORBA::_tc_short, + CORBA::_tc_long, + CORBA::_tc_ushort, + CORBA::_tc_ulong, + CORBA::_tc_float, + CORBA::_tc_double, + CORBA::_tc_boolean, + CORBA::_tc_char, + CORBA::_tc_octet, + CORBA::_tc_any, + CORBA::_tc_TypeCode, + CORBA::_tc_Principal, + CORBA::_tc_Object, + // CORBA::_tc_struct, + // CORBA::_tc_union, + // CORBA::_tc_enum, + CORBA::_tc_string, + // CORBA::_tc_sequence, + // CORBA::_tc_array, + // CORBA::_tc_alias, + // CORBA::_tc_except, + CORBA::_tc_longlong, + CORBA::_tc_ulonglong, + CORBA::_tc_longdouble, + CORBA::_tc_wchar, + CORBA::_tc_wstring, + CORBA::_tc_UNKNOWN, + CORBA::_tc_BAD_PARAM, + CORBA::_tc_NO_MEMORY, + CORBA::_tc_IMP_LIMIT, + CORBA::_tc_COMM_FAILURE, + CORBA::_tc_INV_OBJREF, + CORBA::_tc_OBJECT_NOT_EXIST, + CORBA::_tc_NO_PERMISSION, + CORBA::_tc_INTERNAL, + CORBA::_tc_MARSHAL, + CORBA::_tc_INITIALIZE, + CORBA::_tc_NO_IMPLEMENT, + CORBA::_tc_BAD_TYPECODE, + CORBA::_tc_BAD_OPERATION, + CORBA::_tc_NO_RESOURCES, + CORBA::_tc_NO_RESPONSE, + CORBA::_tc_PERSIST_STORE, + CORBA::_tc_BAD_INV_ORDER, + CORBA::_tc_TRANSIENT, + CORBA::_tc_FREE_MEM, + CORBA::_tc_INV_IDENT, + CORBA::_tc_INV_FLAG, + CORBA::_tc_INTF_REPOS, + CORBA::_tc_BAD_CONTEXT, + CORBA::_tc_OBJ_ADAPTER, + CORBA::_tc_DATA_CONVERSION, + CORBA::_tc_Bounds, + CORBA::_tc_BadKind +}; +static int n = sizeof (tcs) / sizeof (tcs[0]); + +int +main (int argc, char *argv[]) +{ + TAO_TRY + { + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "", + TAO_TRY_ENV); + TAO_CHECK_ENV; + + for (CORBA::TypeCode_ptr* i = tcs; i != tcs + n; ++i) + { + CORBA::TypeCode_ptr tc = *i; + + CORBA::TCKind k = tc->kind (TAO_TRY_ENV); + TAO_CHECK_ENV; + + switch (k) + { + case CORBA::tk_objref: + case CORBA::tk_struct: + case CORBA::tk_union: + case CORBA::tk_enum: + case CORBA::tk_alias: + case CORBA::tk_except: + { + const char* id = tc->id (TAO_TRY_ENV); + TAO_CHECK_ENV; + + const char* name = tc->name (TAO_TRY_ENV); + TAO_CHECK_ENV; + + CORBA::ULong length = 0; // tc->length (TAO_TRY_ENV); + TAO_CHECK_ENV; + + ACE_DEBUG ((LM_DEBUG, + "ID = '%s'\n" + "%{%{% NAME = %s%$" + " KIND = %d%$" + " LENGTH = %d" + "%}%}\n", + id, name, k, length)); + } + break; + default: + { + ACE_DEBUG ((LM_DEBUG, "basic type: %d\n", k)); + } + break; + } + } + } + TAO_CATCHANY + { + TAO_TRY_ENV.print_exception ("TC"); + } + TAO_ENDTRY; + + return 0; +} diff --git a/TAO/tests/Makefile b/TAO/tests/Makefile index 6bad6db3b11..4aebdf4609a 100644 --- a/TAO/tests/Makefile +++ b/TAO/tests/Makefile @@ -13,7 +13,8 @@ DIRS = Cubit \ POA \ Param_Test \ - Thruput + Thruput \ + CDR \ # The following tests have not been updated yet # Demux_Test |