summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_field.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_field.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_field.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/TAO/TAO_IDL/be/be_field.cpp b/TAO/TAO_IDL/be/be_field.cpp
new file mode 100644
index 00000000000..d33847bed01
--- /dev/null
+++ b/TAO/TAO_IDL/be/be_field.cpp
@@ -0,0 +1,78 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// be_field.cpp
+//
+// = DESCRIPTION
+// Extension of class AST_Field that provides additional means for C++
+// mapping.
+//
+// = AUTHOR
+// Copyright 1994-1995 by Sun Microsystems, Inc.
+// and
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "be_field.h"
+#include "be_visitor.h"
+#include "be_type.h"
+#include "global_extern.h"
+#include "ace/Log_Msg.h"
+
+ACE_RCSID (be,
+ be_field,
+ "$Id$")
+
+be_field::be_field (void)
+ : COMMON_Base (),
+ AST_Decl (),
+ AST_Field (),
+ be_decl ()
+{
+}
+
+be_field::be_field (AST_Type *ft,
+ UTL_ScopedName *n,
+ Visibility vis)
+ : COMMON_Base (ft->is_local (),
+ ft->is_abstract ()),
+ AST_Decl (AST_Decl::NT_field,
+ n),
+ AST_Field (ft,
+ n,
+ vis),
+ be_decl (AST_Decl::NT_field,
+ n)
+{
+ // This covers valuetype fields as well, which is what we want.
+ AST_Decl::NodeType nt =
+ ft->unaliased_type ()->node_type ();
+
+ if (nt == AST_Decl::NT_string || nt == AST_Decl::NT_wstring)
+ {
+ idl_global->string_member_seen_ = true;
+ }
+}
+
+int
+be_field::accept (be_visitor *visitor)
+{
+ return visitor->visit_field (this);
+}
+
+void
+be_field::destroy (void)
+{
+ this->be_decl::destroy ();
+ this->AST_Field::destroy ();
+}
+
+// Narrowing
+IMPL_NARROW_METHODS2 (be_field, AST_Field, be_decl)
+IMPL_NARROW_FROM_DECL (be_field)