summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_structure.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_structure.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_structure.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/TAO/TAO_IDL/be/be_structure.cpp b/TAO/TAO_IDL/be/be_structure.cpp
new file mode 100644
index 00000000000..d26a250cebf
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_structure.cpp
@@ -0,0 +1,109 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// be_structure.cpp
+//
+// = DESCRIPTION
+// Extension of class AST_Structure that provides additional means for C++
+// mapping.
+//
+// = AUTHOR
+// Copyright 1994-1995 by Sun Microsystems, Inc.
+// and
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "be_structure.h"
+#include "be_codegen.h"
+#include "be_helper.h"
+#include "be_visitor.h"
+#include "be_extern.h"
+
+#include "ast_field.h"
+#include "utl_identifier.h"
+#include "idl_defines.h"
+#include "global_extern.h"
+
+ACE_RCSID (be,
+ be_structure,
+ "$Id$")
+
+be_structure::be_structure (void)
+ : COMMON_Base (),
+ AST_Decl (),
+ AST_Type (),
+ AST_ConcreteType (),
+ UTL_Scope (),
+ AST_Structure (),
+ be_scope (),
+ be_decl (),
+ be_type ()
+{
+}
+
+be_structure::be_structure (UTL_ScopedName *n,
+ bool local,
+ bool abstract)
+ : COMMON_Base (local,
+ abstract),
+ AST_Decl (AST_Decl::NT_struct,
+ n),
+ AST_Type (AST_Decl::NT_struct,
+ n),
+ AST_ConcreteType (AST_Decl::NT_struct,
+ n),
+ UTL_Scope (AST_Decl::NT_struct),
+ AST_Structure (n,
+ local,
+ abstract),
+ be_scope (AST_Decl::NT_struct),
+ be_decl (AST_Decl::NT_struct,
+ n),
+ be_type (AST_Decl::NT_struct,
+ n)
+{
+ if (!this->imported ())
+ {
+ idl_global->aggregate_seen_ = true;
+ }
+}
+
+void
+be_structure::redefine (AST_Structure *from)
+{
+ be_structure *bs = be_structure::narrow_from_decl (from);
+ this->common_varout_gen_ = bs->common_varout_gen_;
+ AST_Structure::redefine (from);
+}
+
+void
+be_structure::destroy (void)
+{
+ // Call the destroy methods of our base classes.
+ this->be_scope::destroy ();
+ this->be_type::destroy ();
+ this->AST_Structure::destroy ();
+}
+
+int
+be_structure::accept (be_visitor *visitor)
+{
+ return visitor->visit_structure (this);
+}
+
+AST_Field *
+be_structure::be_add_field (AST_Field *f)
+{
+ return this->fe_add_field (f);
+}
+
+// Narrowing.
+IMPL_NARROW_METHODS3 (be_structure, AST_Structure, be_scope, be_type)
+IMPL_NARROW_FROM_DECL (be_structure)
+IMPL_NARROW_FROM_SCOPE (be_structure)