diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_state_sequence.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_state_sequence.cpp | 442 |
1 files changed, 0 insertions, 442 deletions
diff --git a/TAO/TAO_IDL/be/be_state_sequence.cpp b/TAO/TAO_IDL/be/be_state_sequence.cpp deleted file mode 100644 index 92e7b869da5..00000000000 --- a/TAO/TAO_IDL/be/be_state_sequence.cpp +++ /dev/null @@ -1,442 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// be_state_sequence.cpp -// -// = DESCRIPTION -// state based code generation for sequences. -// -// = AUTHOR -// Aniruddha Gokhale -// -// ============================================================================ - -#include "idl.h" -#include "idl_extern.h" -#include "be.h" - -// return type for sequence -be_state_sequence::be_state_sequence (void) -{ -} - -// generate code for sequence type -int -be_state_sequence::gen_code (be_type *bt, be_decl *d, be_type *type) -{ - TAO_OutStream *os = 0; // output stream - TAO_CodeGen *cg = TAO_CODEGEN::instance (); - be_sequence *seq; - - seq = be_sequence::narrow_from_decl (d); - if (!seq) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "Bad sequence type\n"), - -1); - } - - switch (cg->state ()) - { - case TAO_CodeGen::TAO_SEQUENCE_BASE_CH: - case TAO_CodeGen::TAO_SEQUENCE_BODY_CH: - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH: - os = cg->client_header (); // get client header stream - break; - case TAO_CodeGen::TAO_SEQUENCE_BASE_CS: - case TAO_CodeGen::TAO_SEQUENCE_BODY_CS: - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CS: - os = cg->client_stubs (); // get client stubs stream - break; - case TAO_CodeGen::TAO_SEQUENCE_BASE_CI: - case TAO_CodeGen::TAO_SEQUENCE_BODY_CI: - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CI: - os = cg->client_inline (); // get client inline stream - break; - default: - return -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); - - // enclosing scope in which the sequence element type occurs - be_decl *scope; - if (!bt->defined_in ()) // no outer scope for us - scope = 0; - else - { - scope = be_scope::narrow_from_scope (bt->defined_in ())->decl (); - if (!scope) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "bad scope for seq elem type\n"), - -1); - } - } - - // for sequences, all we do is generate the type - switch (type->node_type ()) - { - case AST_Decl::NT_interface: // type is an obj reference - case AST_Decl::NT_interface_fwd: // type is an obj reference - case AST_Decl::NT_string: // type is a string - { - switch (cg->state ()) - { - // if it is the case of sequence base, we generate the code for - // managed types - case TAO_CodeGen::TAO_SEQUENCE_BASE_CH: - if (seq->gen_managed_type_ch () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "codegen for managed type\n"), - -1); - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BASE_CS: - if (seq->gen_managed_type_cs () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "codegen for managed type\n"), - -1); - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BASE_CI: - if (seq->gen_managed_type_ci () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "codegen for managed type\n"), - -1); - } - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH: // managed type returned by - // operator [] - { - if ((type->node_type () == AST_Decl::NT_interface) - || (type->node_type () == AST_Decl::NT_interface_fwd)) - { - if (scope) - { - *os << "ACE_NESTED_CLASS (" << scope->name () << "," << - seq->local_name () << "::TAO_ObjRefMngType) "; - } - else - { - *os << seq->local_name () << "::TAO_ObjRefMngType "; - } - } - else // must be a string - { - if (scope) - { - *os << "ACE_NESTED_CLASS (" << scope->name () << "," << - seq->local_name () << "::TAO_StrMngType) "; - } - else - { - *os << seq->local_name () << "::TAO_StrMngType "; - } - } - } - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CI: - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CS: - { - if ((type->node_type () == AST_Decl::NT_interface) - || (type->node_type () == AST_Decl::NT_interface_fwd)) - { - *os << seq->name () << "::TAO_ObjRefMngType "; - } - else // must be a string - { - *os << seq->name () << "::TAO_StrMngType "; - } - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CH: - { - if ((type->node_type () == AST_Decl::NT_interface) - || (type->node_type () == AST_Decl::NT_interface_fwd)) - { - *os << bt->nested_type_name (scope, "_ptr"); - } - else // must be a string - { - *os << "char *"; - } - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CI: - case TAO_CodeGen::TAO_SEQUENCE_BODY_CS: - { - if ((type->node_type () == AST_Decl::NT_interface) - || (type->node_type () == AST_Decl::NT_interface_fwd)) - { - *os << bt->name () << "_ptr"; - } - else // must be a string - { - *os << "char *"; - } - } - break; - default: - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "bad state\n"), - -1); - } - } - } - break; - case AST_Decl::NT_pre_defined: // type is predefined type - { - be_predefined_type *bpd = be_predefined_type::narrow_from_decl (type); - - if (!bpd) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "bad type\n"), - -1); - } - if (bpd->pt () == AST_PredefinedType::PT_pseudo) - { - // managed types for pseudo objs - switch (cg->state ()) - { - case TAO_CodeGen::TAO_SEQUENCE_BASE_CH: - if (seq->gen_managed_type_ch () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "codegen for managed type\n"), - -1); - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BASE_CS: - if (seq->gen_managed_type_cs () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "codegen for managed type\n"), - -1); - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BASE_CI: - if (seq->gen_managed_type_ci () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "codegen for managed type\n"), - -1); - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CH: - *os << bt->nested_type_name (scope, "_ptr"); - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CS: - case TAO_CodeGen::TAO_SEQUENCE_BODY_CI: - *os << bt->name () << "_ptr"; - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH: // managed type returned by - // operator [] - { - if (scope) - { - *os << "ACE_NESTED_CLASS (" << scope->name () << "," << - seq->local_name () << "::TAO_ObjRefMngType ) "; - } - else - { - *os << seq->local_name () << "::TAO_ObjRefMngType "; - } - } - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CI: - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CS: - { - *os << seq->name () << "::TAO_ObjRefMngType "; - } - break; - default: - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "bad state\n"), - -1); - } - } // end switch state - } // if pseudo - else - { - // rest of the predefined types - switch (cg->state ()) - { - case TAO_CodeGen::TAO_SEQUENCE_BASE_CH: - case TAO_CodeGen::TAO_SEQUENCE_BASE_CS: - case TAO_CodeGen::TAO_SEQUENCE_BASE_CI: - // nothing to be done - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH: - *os << bt->nested_type_name (scope, " &"); - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CH: - *os << bt->nested_type_name (scope, " "); - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CI: - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CS: - *os << bt->name () << " &"; - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CS: - case TAO_CodeGen::TAO_SEQUENCE_BODY_CI: - *os << bt->name () << " "; - break; - default: - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "bad state\n"), - -1); - } - } // end of switch - } // end else - } // end case predefined type - break; - case AST_Decl::NT_enum: // type is an enum - case AST_Decl::NT_array: // type is an array - case AST_Decl::NT_struct: // type is a struct - case AST_Decl::NT_union: // type is a union - { - switch (cg->state ()) - { - case TAO_CodeGen::TAO_SEQUENCE_BASE_CH: - case TAO_CodeGen::TAO_SEQUENCE_BASE_CS: - case TAO_CodeGen::TAO_SEQUENCE_BASE_CI: - // nothing to do because we cannot have anonymous data types here - // that are enums or structures or unions. - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CH: - *os << bt->nested_type_name (scope, " "); - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH: - *os << bt->nested_type_name (scope, " &"); - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CS: - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CI: - *os << bt->name () << " &"; - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CS: - case TAO_CodeGen::TAO_SEQUENCE_BODY_CI: - *os << bt->name () << " "; - break; - default: - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "bad state\n"), - -1); - } - } - } - break; - case AST_Decl::NT_sequence: // type is a sequence - { - switch (cg->state ()) - { - case TAO_CodeGen::TAO_SEQUENCE_BASE_CH: - { - // generate the base type sequence - if (bt->gen_client_header () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "Bad sequence type\n"), - -1); - } - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BASE_CS: - { - // generate the base type sequence - if (bt->gen_client_stubs () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "Bad sequence type\n"), - -1); - } - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BASE_CI: - { - // generate the base type sequence - if (bt->gen_client_inline () == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "Bad sequence type\n"), - -1); - } - } - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CH: - *os << bt->nested_type_name (scope, " "); - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH: - *os << bt->nested_type_name (scope, " &"); - break; - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CS: - case TAO_CodeGen::TAO_SEQELEM_RETTYPE_CI: - *os << bt->name () << " &"; - break; - case TAO_CodeGen::TAO_SEQUENCE_BODY_CS: - case TAO_CodeGen::TAO_SEQUENCE_BODY_CI: - *os << bt->name () << " "; - break; - default: - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_state_sequence.cpp - " - "bad state\n"), - -1); - } - } - } - break; - case AST_Decl::NT_except: // type is an exception - { - // XXXASG: Is this case valid ??? - } - break; - case AST_Decl::NT_typedef: // type is a typedef - { - be_type *temp; // most primitive base type - 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); - } - //break; unreachable statement! - } // end of switch - return 0; -} |