diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:11 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:11 +0000 |
commit | 6b846cf03c0bcbd8c276cb0af61a181e5f98eaae (patch) | |
tree | da50d054f9c761c3f6a5923f6979e93306c56d68 /TAO/TAO_IDL/be/be_type.cpp | |
parent | 0e555b9150d38e3b3473ba325b56db2642e6352b (diff) | |
download | ATCD-6b846cf03c0bcbd8c276cb0af61a181e5f98eaae.tar.gz |
Repo restructuring
Diffstat (limited to 'TAO/TAO_IDL/be/be_type.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_type.cpp | 344 |
1 files changed, 0 insertions, 344 deletions
diff --git a/TAO/TAO_IDL/be/be_type.cpp b/TAO/TAO_IDL/be/be_type.cpp deleted file mode 100644 index 8e4ca8254b3..00000000000 --- a/TAO/TAO_IDL/be/be_type.cpp +++ /dev/null @@ -1,344 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// be_type.cpp -// -// = DESCRIPTION -// Extension of class AST_Type that provides additional means for C++ -// mapping. -// -// = AUTHOR -// Copyright 1994-1995 by Sun Microsystems, Inc. -// and -// Aniruddha Gokhale -// -// ============================================================================ - -#include "be_type.h" -#include "be_scope.h" -#include "be_visitor.h" -#include "be_codegen.h" -#include "be_helper.h" -#include "utl_identifier.h" -#include "idl_defines.h" -#include "nr_extern.h" - -ACE_RCSID (be, - be_type, - "$Id$") - -be_type::be_type (void) - : COMMON_Base (), - AST_Decl (), - AST_Type (), - be_decl (), - tc_name_ (0), - common_varout_gen_ (false), - seen_in_sequence_ (false), - seen_in_operation_ (false) -{ -} - -be_type::be_type (AST_Decl::NodeType nt, - UTL_ScopedName *n) - : COMMON_Base (), - AST_Decl (nt, - n), - AST_Type (nt, - n), - be_decl (nt, - n), - tc_name_ (0), - common_varout_gen_ (false), - seen_in_sequence_ (false), - seen_in_operation_ (false) -{ - if (n != 0) - { - this->gen_fwd_helper_name (); - } -} - -be_type::~be_type (void) -{ -} - -// 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 -// predefined types. - -void -be_type::compute_tc_name (void) -{ - static char namebuf [NAMEBUFSIZE]; - UTL_ScopedName *n = this->name (); - - this->tc_name_ = 0; - - ACE_OS::memset (namebuf, - '\0', - NAMEBUFSIZE); - - while (n->tail () != 0) - { - // Does not exist. - if (this->tc_name_ == 0) - { - ACE_NEW (this->tc_name_, - UTL_ScopedName (n->head ()->copy (), - 0)); - } - else - { - UTL_ScopedName *conc_name = 0; - ACE_NEW (conc_name, - UTL_ScopedName (n->head ()->copy (), - 0)); - - this->tc_name_->nconc (conc_name); - } - - n = (UTL_ScopedName *)n->tail (); - } - - ACE_OS::sprintf (namebuf, - "_tc_%s", - n->last_component ()->get_string ()); - - Identifier *id = 0; - ACE_NEW (id, - Identifier (namebuf)); - - // Does not exist. - if (this->tc_name_ == 0) - { - ACE_NEW (this->tc_name_, - UTL_ScopedName (id, - 0)); - } - else - { - UTL_ScopedName *conc_name = 0; - ACE_NEW (conc_name, - UTL_ScopedName (id, - 0)); - - this->tc_name_->nconc (conc_name); - } -} - -// Retrieve typecode name. -UTL_ScopedName * -be_type::tc_name (void) -{ - // Compute and init the member. - if (this->tc_name_ == 0) - { - this->compute_tc_name (); - } - - return this->tc_name_; -} - -// This works for the "special" names generated for smart proxy -// classes. The form of these names is -// scope'TAO_'+flat_name+'_Smart_Proxy_Base'. -// -// We can use the flat_name() method for the local_name parm but have -// to construct the full name ourselves. -const char * -be_type::nested_sp_type_name (be_decl *use_scope, - const char *suffix, - const char *prefix) -{ - // Our defining scope. - be_decl *fu_scope = 0; - - char fu_name [NAMEBUFSIZE]; - char fl_name [NAMEBUFSIZE]; - - ACE_OS::memset (fu_name, - '\0', - NAMEBUFSIZE); - - ACE_OS::memset (fl_name, - '\0', - NAMEBUFSIZE); - - fu_scope = this->defined_in () - ? be_scope::narrow_from_scope (this->defined_in ())->decl () - : 0; - - ACE_OS::strcat (fu_name, - fu_scope->full_name ()); - - ACE_OS::strcat (fu_name, - "::TAO_"); - - ACE_OS::strcat (fu_name, - this->flat_name()); - - ACE_OS::strcat (fl_name, - "TAO_"); - - ACE_OS::strcat (fl_name, - this->flat_name()); - - return this->nested_name (fl_name, - fu_name, - use_scope, - suffix, - prefix); -} - -void -be_type::gen_fwd_helper_name (void) -{ - AST_Decl *parent = ScopeAsDecl (this->defined_in ()); - Identifier *segment = 0; - char *tmp = 0; - this->fwd_helper_name_.clear (1); - - if (parent != 0 && parent->node_type () != AST_Decl::NT_root) - { - for (UTL_IdListActiveIterator i (parent->name ()); - !i.is_done (); - i.next ()) - { - segment = i.item (); - tmp = segment->get_string (); - - if (ACE_OS::strcmp (tmp, "") == 0) - { - continue; - } - - this->fwd_helper_name_ += tmp; - this->fwd_helper_name_ += "::"; - } - } - else - { - this->fwd_helper_name_= ""; - } - - this->fwd_helper_name_ += "tao_"; - this->fwd_helper_name_ += this->local_name ()->get_string (); -} - -const char * -be_type::fwd_helper_name (void) const -{ - return this->fwd_helper_name_.fast_rep (); -} - -void -be_type::fwd_helper_name (const char *name) -{ - this->fwd_helper_name_ = name; -} - -void -be_type::gen_common_varout (TAO_OutStream *os) -{ - if (this->common_varout_gen_ == 1) - { - return; - } - - *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl - << "// " << __FILE__ << ":" << __LINE__; - - AST_Type::SIZE_TYPE st = this->size_type (); - - *os << be_nl << be_nl - << (this->node_type () == AST_Decl::NT_struct ? "struct " - : "class ") - << this->local_name () << ";"; - - *os << be_nl << be_nl - << "typedef" << be_idt_nl - << (st == AST_Type::FIXED ? "TAO_Fixed_Var_T<" - : "TAO_Var_Var_T<") - << be_idt << be_idt_nl - << this->local_name () << be_uidt_nl - << ">" << be_uidt_nl - << this->local_name () << "_var;" << be_uidt_nl << be_nl; - - if (st == AST_Type::FIXED) - { - *os << "typedef" << be_idt_nl - << this->local_name () << " &" << be_nl - << this->local_name () << "_out;" << be_uidt; - } - else - { - *os << "typedef" << be_idt_nl - << "TAO_Out_T<" << be_idt << be_idt_nl - << this->local_name () << be_uidt_nl - << ">" << be_uidt_nl - << this->local_name () << "_out;" << be_uidt; - } - - this->common_varout_gen_ = 1; -} - -bool -be_type::seen_in_sequence (void) const -{ - return this->seen_in_sequence_; -} - -void -be_type::seen_in_sequence (bool val) -{ - this->seen_in_sequence_ = val; -} - -bool -be_type::seen_in_operation (void) const -{ - return this->seen_in_operation_; -} - -void -be_type::seen_in_operation (bool val) -{ - this->seen_in_operation_ = val; -} - -AST_Decl::NodeType -be_type::base_node_type (void) const -{ - return const_cast<be_type*> (this)->node_type (); -} - -// Cleanup method -void -be_type::destroy (void) -{ - if (this->tc_name_ != 0) - { - this->tc_name_->destroy (); - delete this->tc_name_; - this->tc_name_ = 0; - } - - this->be_decl::destroy (); -} - -int -be_type::accept (be_visitor *visitor) -{ - return visitor->visit_type (this); -} - -// Narrowing. -IMPL_NARROW_METHODS2 (be_type, AST_Type, be_decl) -IMPL_NARROW_FROM_DECL (be_type) |