summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_state_argument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_state_argument.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_state_argument.cpp2307
1 files changed, 0 insertions, 2307 deletions
diff --git a/TAO/TAO_IDL/be/be_state_argument.cpp b/TAO/TAO_IDL/be/be_state_argument.cpp
deleted file mode 100644
index a5198b16d3e..00000000000
--- a/TAO/TAO_IDL/be/be_state_argument.cpp
+++ /dev/null
@@ -1,2307 +0,0 @@
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// be_state_argument.cpp
-//
-// = DESCRIPTION
-// state based code generation for arguments.
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-// return type for argument
-be_state_argument::be_state_argument (void)
-{
-}
-
-// generate code for the mapping of the argument.
-// The different cases below have the following meaning:
-// TAO_ARGUMENT_CH
-// TAO_ARGUMENT_CS
-// TAO_ARGUMENT_SH -- all three generate the arguments in the signature of the
-// method . The CH case uses the ACE_NESTED_CLASS macro to
-// keep the MSVC++ compiler happy
-// The rest of the enumerated constants are self-explanatory
-//
-// There are 3 levels of nested switch statements
-// Level (1): The "type" of each argument, e.g., predefined, structure, ...
-// Level (2): The direction - in, inout, out
-// Level (3): The current state we are in
-
-int
-be_state_argument::gen_code (be_type *bt, be_decl *d, be_type *type)
-{
- TAO_OutStream *os = 0; // output stream
- TAO_NL nl; // end line
- TAO_CodeGen *cg = TAO_CODEGEN::instance ();
- be_argument *arg; // argument node
- be_interface *bif; // interface inside which the operation that uses this
- // argument was defined
-
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- os = cg->client_header ();
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- os = cg->client_stubs ();
- break;
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- os = cg->server_header ();
- break;
- case TAO_CodeGen::TAO_ARGUMENT_SS:
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- os = cg->server_skeletons ();
- break;
- }
-
- // retrieve the argument node
- arg = be_argument::narrow_from_decl (d);
- if (!arg)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument.cpp - "
- "Bad argument\n"),
- -1);
- }
-
- // get the scope of the arg which is the operation. Its scope is the
- // interface node. We need this interface node for generating the
- // ACE_NESTED_CLASS macro
- bif = be_interface::narrow_from_scope (ScopeAsDecl (arg->defined_in
- ())->defined_in ());
- if (!bif)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument.cpp - "
- "Bad interface\n"),
- -1);
- }
-
- if (!type) // not a recursive call
- type = bt;
- else // recursively called thru a typedef. "type" will have the most primitive
- // base class of the typedef
- ACE_ASSERT (bt->node_type () == AST_Decl::NT_typedef);
-
- // find the direction of the argument. Depending on the direction and the
- // type, generate the mapping
- switch (type->node_type ()) // LEVEL (1) switch on node type of the "type"
- {
- case AST_Decl::NT_interface: // type is an obj reference
- case AST_Decl::NT_interface_fwd: // type is an obj reference
- {
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- // what state are we in
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // assign to a CORBA::Object_ptr
- *os << "CORBA::Object_ptr _tao_base_" << arg->local_name ()
- << " = " << arg->local_name () << "; // cast it" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- // pass the cast value
- *os << ", &_tao_base_" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing for in parameters
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << "_ptr ";
- *os << arg->local_name () << ";" << nl;
- // we also declare a corresponding CORBA::Object_ptr to be
- // passed to the decoder
- *os << "CORBA::Object_ptr _tao_base_" << arg->local_name ()
- << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &_tao_base_" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_IN, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", &_tao_base_" << arg->local_name () << ", 0, " <<
- "_tao_environment); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // convert from the CORBA::Object_ptr to the interface type
- // using a _narrow
- *os << arg->local_name () << " = " << bt->name () <<
- "::_narrow (_tao_base_" << arg->local_name () << ", " <<
- "_tao_environment);" << nl;
- *os << "if (_tao_environment.exception ()) return;" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // we must release the in parameter
- *os << "CORBA::release (" << arg->local_name () << ");" << nl;
- *os << "CORBA::release (_tao_base_" << arg->local_name () <<
- ");" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif, "_ptr") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_ptr " << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // switch state
- break;
- case AST_Argument::dir_INOUT: // inout
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // assign to a CORBA::Object_ptr
- *os << "CORBA::Object_ptr _tao_base_" << arg->local_name ()
- << " = " << arg->local_name () << ";" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &_tao_base_" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // reassign to the inout parameter doing a _narrow
- *os << arg->local_name () << " = " << bt->name () <<
- "::_narrow (_tao_base_" << arg->local_name () << ", env);"
- << nl;
- *os << "CORBA::release (_tao_base_" << arg->local_name () <<
- ");" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << "_ptr ";
- *os << arg->local_name () << ";" << nl;
- // we also declare a corresponding CORBA::Object_ptr to be
- // passed to the decoder
- *os << "CORBA::Object_ptr *_tao_base_" << arg->local_name ()
- << " = new CORBA::Object_ptr;" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", _tao_base_" << arg->local_name () <<
- ", 1); // ORB owns" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_INOUT, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", _tao_base_" << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // convert from the CORBA::Object_ptr to the interface type
- // using a _narrow
- *os << arg->local_name () << " = " << bt->name () <<
- "::_narrow (*_tao_base_" << arg->local_name () << ", " <<
- "_tao_environment);" << nl;
- *os << "if (_tao_environment.exception ()) return;" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // assign modified interface obj ref to object_ptr
- *os << "CORBA::release (*_tao_base_" << arg->local_name () <<
- "); // first release old obj" << nl;
- *os << "*_tao_base_" << arg->local_name () << " = " <<
- arg->local_name () << ";" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif, "_ptr") << " &" <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_ptr &" << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- case AST_Argument::dir_OUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // assign to a CORBA::Object_ptr
- *os << "CORBA::Object_ptr _tao_base_" << arg->local_name ()
- << ";" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &_tao_base_" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // reassign to the inout parameter doing a _narrow
- *os << arg->local_name () << " = " << bt->name () <<
- "::_narrow (_tao_base_" << arg->local_name () << ", env);"
- << nl;
- *os << "// free the Object_ptr" << nl;
- *os << "CORBA::release (_tao_base_" << arg->local_name () <<
- ");" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << "_ptr " << arg->local_name () << ";" <<
- nl;
- *os << bt->name () << "_out " << arg->local_name () <<
- "_out (" << arg->local_name () << ");" << nl;
- // we also declare a corresponding CORBA::Object_ptr to be
- // passed to the decoder
- *os << "CORBA::Object_ptr *_tao_base_" << arg->local_name ()
- << " = new CORBA::Object_ptr;" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", _tao_base_" << arg->local_name () <<
- ", 1); // ORB owns" << nl;
-#endif
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- " = nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_OUT, _tao_environment);" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // out parameter is cast to Object_ptr
- *os << "*_tao_base_" << arg->local_name () << " = " <<
- arg->local_name () << "_out.ptr ();" << nl;
- *os << "nv_" << arg->local_name () << "->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", _tao_base_" << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << "_out, ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif, "_out") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_out " << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- } // end switch direction
- } // end of case interface/interface_fwd
- break;
- case AST_Decl::NT_pre_defined: // type is predefined type
- {
- be_predefined_type *bpd = be_predefined_type::narrow_from_decl (type);
-
- // check if the type is an any
- if (bpd->pt () == AST_PredefinedType::PT_any)
- {
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- *os << bt->name () << " ";
- // declare a variable
- *os << arg->local_name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_IN, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", &" << arg->local_name () << ", 0, " <<
- "_tao_environment); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // XXXASG - TODO
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- // XXXASG - TODO
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // XXXASG - TODO
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // XXXASG - TODO
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing since the Any will call its destructor
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // keep MSVC++ happy
- *os << "const " << bt->nested_type_name (bif) << " &" <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << "const " << bt->name () << " &" << arg->local_name
- () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- case AST_Argument::dir_INOUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " *";
- *os << arg->local_name () << " = new " << bt->name () <<
- ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- ", 1); // ORB owns" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_INOUT, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // XXXASG - TODO very similar to ObjRef
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- // XXXASG - TODO very similar to ObjRef
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // XXXASG - TODO very similar to ObjRef
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- *os << "const " << bt->nested_type_name (bif) << " &" <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << " &" << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- case AST_Argument::dir_OUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " *" << arg->local_name () <<
- " = 0;" << nl;
- *os << bt->name () << "_out " << arg->local_name () <<
- "_out (" << arg->local_name () << ");" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", " << arg->local_name () <<
- ", 1); // ORB owns" << nl;
-#endif
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name ()
- << " = nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_OUT, _tao_environment);" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // TODO
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
-#if 0 // causing ambiguity on NT compiler
- *os << arg->local_name () << " = " << arg->local_name ()
- << "_out;" << nl;
-#endif
- *os << "nv_" << arg->local_name () << "->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- *os << bt->nested_type_name (bif, "_out") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_out " << arg->local_name () <<
- ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- } // end switch direction
- } // end of if
- else if (bpd->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object
- {
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << "_ptr " << arg->local_name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_IN, _tao_environment)->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", &" << arg->local_name () << ", 0, " <<
- "_tao_environment); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // no casting necessary as we already are object_ptr
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing to be done as we are Object_ptr
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- //release the in parameter
- *os << "CORBA::release (" << arg->local_name () << ");"
- << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- *os << bt->nested_type_name (bif, "_ptr") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_ptr " << arg->local_name () <<
- ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end of switch state
- break;
- case AST_Argument::dir_INOUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << "_ptr *" << arg->local_name () <<
- " = new " << bt->name () << "_ptr;" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", " << arg->local_name () <<
- ", 1); // ORB owns" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_INOUT, _tao_environment)->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- *os << bt->nested_type_name (bif, "_ptr") << " &" <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_ptr &" << arg->local_name () <<
- ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- case AST_Argument::dir_OUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << "_ptr *" << arg->local_name () <<
- " = new " << bt->name () << "_ptr;" << nl;
- *os << bt->name () << "_out ";
- *os << arg->local_name () << "_out (*" << arg->local_name
- () << ");" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- ", 0); // ORB doesn't own" << nl;
-#endif
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name ()
- << " = nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_OUT, _tao_environment);" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // declare a variable
- *os << bt->name () << "_ptr _tao_base_" <<
- arg->local_name () << ";" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &_tao_base_" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // this was causing an ambiguity on NT compiler
- // assign to the _out parameter
- *os << arg->local_name () << " = _tao_base_" <<
- arg->local_name () << ";" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << "_out, ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
-#if 0 // causing ambiguity on NT compiler
- *os << "*" << arg->local_name () << " = " <<
- arg->local_name () << "_out;" << nl;
-#endif
- *os << "nv_" << arg->local_name () << "->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- *os << bt->nested_type_name (bif, "_out") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_out " << arg->local_name () <<
- ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- } // end switch direction
- } // end else if
- else // simple predefined types
- {
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " " << arg->local_name () << ";" <<
- nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_IN, _tao_environment)->value ()"
- << "->replace (" << bt->tc_name ()
- << ", &" << arg->local_name () << ", 0, " <<
- "_tao_environment); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- *os << bt->nested_type_name (bif) << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << " " << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- case AST_Argument::dir_INOUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " *" << arg->local_name () <<
- " = new " << bt->name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", " << arg->local_name () <<
- "); // ORB owns " << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_INOUT, _tao_environment)->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- *os << bt->nested_type_name (bif) << " &" <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << " &" << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- case AST_Argument::dir_OUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " *" << arg->local_name () <<
- " = new " << bt->name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", " << arg->local_name () <<
- ", 1); // ORB owns" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_OUT, _tao_environment)->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- *os << bt->nested_type_name (bif, "_out") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_out " << arg->local_name () <<
- ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end of switch
- break;
- } // end switch direction
- } // end of else
- } // end of case predefined
- break;
- case AST_Decl::NT_string: // type is a string
- {
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
-#if 0
- // XXXASG- check for memory leak here - TODO
- // declare a variable
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->name ();
- else
- *os << "char *";
-#endif
- *os << "char *" << arg->local_name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_IN, _tao_environment)->value ()->replace ("
- << bt->tc_name () << ", &" << arg->local_name () <<
- ", 0, _tao_environment); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // we need to free the "in" string that got decoded
- *os << "CORBA::string_free (" << arg->local_name () << ");"
- << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
-#if 0
- *os << "const ";
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->nested_type_name (bif);
- else
- *os << "char *";
-#endif
- *os << "const char *" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- {
-#if 0
- *os << "const ";
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->name ();
- else
- *os << "char *";
-#endif
- *os << "const char *" << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- case AST_Argument::dir_INOUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
-#if 0
- // declare a variable
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- *os << bt->name () << " *" << arg->local_name () <<
- " = new " << bt->name () << ";" << nl;
- }
- else
- {
- *os << "char **" << arg->local_name () <<
- " = new char *;" << nl;
- }
-#endif
- *os << "char **" << arg->local_name () << " = new char *;" <<
- nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_INOUT, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
-#if 0
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->nested_type_name (bif, " &");
- else
- *os << "char *&";
-#endif
- *os << "char *&" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- {
-#if 0
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->name ();
- else
- *os << "char *&";
-#endif
- *os << "char *&" << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- case AST_Argument::dir_OUT:
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
-#if 0
- // declare a variable
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- *os << bt->name () << " *" << arg->local_name () <<
- " = new " << bt->name () << ";" << nl;
- }
- else
- {
- *os << "char **" << arg->local_name () <<
- " = new char *;" << nl;
- }
- // now declare a _out variable to be passed as a parameter
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->name () << "_out";
- else
- *os << "CORBA::String_out";
-#endif
- *os << "char **" << arg->local_name () <<
- " = new char *;" << nl;
- *os << "CORBA::String_out " << arg->local_name () <<
- "_out (*" << arg->local_name () << ");" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", _tao_base_" << arg->local_name () <<
- ", 1); // ORB owns" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_OUT, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
-#if 0
- // declare a string variable
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->name ();
- else
- *os << "char *";
-#endif
- *os << "char *_tao_base_" << arg->local_name () << ";" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &_tao_base_" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // assign the _tao_base_<string> variable to the out
- // parameter
- *os << arg->local_name () << " = _tao_base_" <<
- arg->local_name () << ";" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << "_out, ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
-#if 0 // causing ambiguity on NT compiler
- // out parameter is cast back to the real parameter
- *os << "*" << arg->local_name () << " = " <<
- arg->local_name () << "_out;" << nl;
-#endif
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
-#if 0
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->nested_type_name (bif, "_out");
- else
- *os << "CORBA::String_out";
-#endif
- *os << "CORBA::String_out " << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
-#if 0
- if (bt->node_type () == AST_Decl::NT_typedef)
- *os << bt->name () << "_out";
- else
- *os << "CORBA::String_out";
-#endif
- *os << "CORBA::String_out " << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- break;
- } // end switch direction
- } // end case string
- break;
- case AST_Decl::NT_array: // type is an array
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " " << arg->local_name ()
- << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", " << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_INOUT, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", &" << arg->local_name () << ", 0, " <<
- "_tao_environment); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // XXXASG TODO
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- // XXXASG TODO
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // XXXASG TODO
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << "const " << bt->nested_type_name (bif) << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << "const " << bt->name () << " " << arg->local_name ()
- << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- } // end case
- break;
- case AST_Argument::dir_INOUT:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name ();
- if (bt->size_type () == be_decl::VARIABLE)
- {
- *os << "_slice *";
- }
- *os << " " << arg->local_name () << ";" << nl;
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", " << arg->local_name () <<
- "); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // TODO XXXASG
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- // TODO XXXASG
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // TODO XXXASG
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- if (bt->size_type () == be_decl::VARIABLE)
- {
- *os << bt->nested_type_name (bif, "_slice") << " *" <<
- arg->local_name () << ", ";
- }
- else
- {
- *os << bt->nested_type_name (bif) << " " <<
- arg->local_name () << ", ";
- }
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name ();
- if (bt->size_type () == be_decl::VARIABLE)
- {
- *os << "_slice *";
- }
- *os << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- } // end case
- break;
- case AST_Argument::dir_OUT:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << "_slice *" << arg->local_name () << ";" <<
- nl;
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", " << arg->local_name () <<
- ", 1); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // TODO XXXASG
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- // TODO XXXASG
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // TODO XXXASG
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif, "_out") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_out " << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- }
- break;
- } // end of switch direction
- break;
- case AST_Decl::NT_sequence: // type is a sequence
- case AST_Decl::NT_struct: // type is a struct
- case AST_Decl::NT_union: // type is a union
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " " << arg->local_name () <<
- ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_IN, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", &" << arg->local_name () << ", 0, " <<
- "_tao_environment); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing - the destructor will ensure proper memory release
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << "const " << bt->nested_type_name (bif) << " &" <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << "const " << bt->name () << " &" << arg->local_name ()
- << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- }
- break;
- case AST_Argument::dir_INOUT:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " *" << arg->local_name () <<
- " = new " << bt->name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_INOUT, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
-#if 0
- // if we are sequence, call init manager
- if (type->node_type () == AST_Decl::NT_sequence)
- {
- be_sequence *seq = be_sequence::narrow_from_decl (type);
- // init_mgr method for managed types
- switch (seq->managed_type ())
- {
- case be_sequence::MNG_OBJREF:
- case be_sequence::MNG_STRING:
- *os << arg->local_name () << ".init_mgr ();" << nl;
- break;
- default:
- break;
- }
- }
-#endif
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif) << " &" << arg->local_name
- () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << " &" << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- } // end case
- break;
- case AST_Argument::dir_OUT:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // for a variable sized type, the caller allocates a pointer
- if (bt->size_type () == be_decl::VARIABLE)
- {
- // declare a variable
- *os << bt->name () << " *" << arg->local_name () <<
- " = 0;" << nl;
- *os << bt->name () << "_out " << arg->local_name () <<
- "_out (" << arg->local_name () << ");" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", " << arg->local_name () <<
- ", 0); // ORB does not own" << nl;
-#endif
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name ()
- << " = nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_OUT, _tao_environment);" << nl;
- }
- else
- {
- // declare a variable
- *os << bt->name () << " *" << arg->local_name () <<
- " = new " << bt->name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- ", 0); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name () <<
- "\", CORBA::ARG_OUT, _tao_environment)->value ()->" <<
- "replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- } // end else
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // declare a variable. We need this only if we are variable
- // sized. If we are fixed sized, we already know our size and
- // hence we have already been allocated
- if (bt->size_type () == be_decl::VARIABLE)
- {
- *os << bt->name () << " *_tao_base_" << arg->local_name
- () << " = new " << bt->name () << ";" << nl;
- }
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- if (bt->size_type () == be_decl::VARIABLE)
- {
- *os << ", _tao_base_" << arg->local_name ();
- }
- else
- {
- // simply pass our address
- *os << ", &" << arg->local_name ();
- }
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
-#if 0
- // if we are sequence, call init manager
- if (type->node_type () == AST_Decl::NT_sequence)
- {
- be_sequence *seq = be_sequence::narrow_from_decl (type);
- // init_mgr method for managed types
- switch (seq->managed_type ())
- {
- case be_sequence::MNG_OBJREF:
- case be_sequence::MNG_STRING:
- *os << "_tao_base_" << arg->local_name () <<
- "->init_mgr ();" << nl;
- break;
- default:
- break;
- }
- }
-#endif
- if (bt->size_type () == be_decl::VARIABLE)
- {
- *os << arg->local_name () << " = _tao_base_" <<
- arg->local_name () << ";" << nl;
- }
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- if (bt->size_type () == be_decl::VARIABLE)
- *os << arg->local_name () << "_out, ";
- else
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- if (bt->size_type () == be_decl::VARIABLE)
- {
-#if 0 // causing ambiguity on NT compiler
- *os << arg->local_name () << " = " << arg->local_name ()
- << "_out;" << nl;
-#endif
- *os << "nv_" << arg->local_name () << "->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif, "_out") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_out " << arg->local_name () << ", ";
- break;
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- } // end case
- break;
- } // end switch direction
- break;
- case AST_Decl::NT_enum: // type is an enum
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " " << arg->local_name () << ";" <<
- nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_IN, _tao_environment)->value ()"
- << "->replace (" << bt->tc_name ()
- << ", &" << arg->local_name () << ", 0, " <<
- "_tao_environment); // ORB does not own" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif) << " " << arg->local_name
- () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << " " << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end of switch state
- } // end case
- break;
- case AST_Argument::dir_INOUT:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " *" << arg->local_name () <<
- " = new " << bt->name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_INOUT, _tao_environment)->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif) << " &" << arg->local_name
- () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << " &" << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- } // end case
- break;
- case AST_Argument::dir_OUT:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS:
- {
- // declare a variable
- *os << bt->name () << " *" << arg->local_name () <<
- " = new " << bt->name () << ";" << nl;
-#if 0
- // now define a NamedValue_ptr
- *os << "CORBA::NamedValue_ptr nv_" << arg->local_name () <<
- ";" << nl;
- // declare an Any
- *os << "CORBA::Any any_" << arg->local_name () << " (" <<
- bt->tc_name () << ", &" << arg->local_name () <<
- "); // ORB does not own" << nl;
-#endif
- // insert into the Any
- *os << "(void) nvlist->add_item (\"" << arg->local_name
- () << "\", CORBA::ARG_OUT, _tao_environment)->" <<
- "value ()->replace (" << bt->tc_name ()
- << ", " << arg->local_name () << ", 1, " <<
- "_tao_environment); // ORB owns" << nl;
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- {
- *os << ", &" << arg->local_name ();
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_DOCALL_CS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- {
- *os << "*" << arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS:
- {
- // nothing
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- {
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif, "_out") << " " <<
- arg->local_name () << ", ";
- }
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- {
- *os << bt->name () << "_out " << arg->local_name () << ", ";
- }
- break;
- default:
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_state_argument - unknown state\n"), -1);
- }
- } // end switch state
- } // end case
- break;
- } // end switch direction
- break;
- case AST_Decl::NT_native:
- {
- switch (arg->direction ())
- {
- case AST_Argument::dir_IN:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif) << " "
- << arg->local_name () << ", ";
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- *os << bt->name () << " " << arg->local_name () << ", ";
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- *os << "env.exception (new CORBA::MARSHAL " <<
- "(CORBA::COMPLETED_NO));" << nl;
- break;
- default:
- break;
- }
- case AST_Argument::dir_INOUT:
- case AST_Argument::dir_OUT:
- {
- switch (cg->state ())
- {
- case TAO_CodeGen::TAO_ARGUMENT_CH:
- // to keep the MSVC++ compiler happy
- *os << bt->nested_type_name (bif) << " &"
- << arg->local_name () << ", ";
- break;
- case TAO_CodeGen::TAO_ARGUMENT_CS:
- case TAO_CodeGen::TAO_ARGUMENT_SH:
- *os << bt->name () << " &"
- << arg->local_name () << ", ";
- break;
- case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS:
- case TAO_CodeGen::TAO_ARGUMENT_DOCALL_CS:
- *os << "env.exception (new CORBA::MARSHAL " <<
- "(CORBA::COMPLETED_NO));" << nl;
- break;
- default:
- break;
- }
- }
- }
- }
- }
- break;
- case AST_Decl::NT_except: // type is an exception
- {
- // XXXASG TODO: is this allowed ???
- }
- break;
- case AST_Decl::NT_typedef: // type is a typedef
- {
- be_type *temp;
- be_typedef *t = be_typedef::narrow_from_decl (bt);
-
- if (!t)
- return -1;
-
- temp = t->primitive_base_type ();
- // make a recursive call
- return this->gen_code (t, d, temp);
- } // end of case
- break;
- } //end switch node type
- return 0;
-}