summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-07-08 22:43:38 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-07-08 22:43:38 +0000
commit5fa4ea4080d7d000f07b0bc442791707f1dc4b4c (patch)
tree264176aed4b04f9e5f6006179f14e2cbbe5b5b51
parent9deabd51cfc8d1108c6ad924d792e7009f7f5482 (diff)
downloadATCD-5fa4ea4080d7d000f07b0bc442791707f1dc4b4c.tar.gz
ChangeLogTag: Wed Jul 8 22:37:55 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--modules/TAO/ChangeLog28
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_decl.cpp2
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_porttype.cpp54
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_template_interface.cpp3
-rw-r--r--modules/TAO/TAO_IDL/be/be_porttype.cpp36
-rw-r--r--modules/TAO/TAO_IDL/be/be_template_interface.cpp7
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor.cpp10
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_porttype.h50
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_template_interface.h2
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor.h84
-rw-r--r--modules/TAO/TAO_IDL/include/ast_decl.h1
-rw-r--r--modules/TAO/TAO_IDL/include/ast_porttype.h40
-rw-r--r--modules/TAO/TAO_IDL/include/ast_visitor.h20
-rw-r--r--modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp10
-rw-r--r--modules/TAO/orbsvcs/IFR_Service/ifr_visitor.h6
15 files changed, 307 insertions, 46 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog
index 5d4e10b1170..b46fcfa14a6 100644
--- a/modules/TAO/ChangeLog
+++ b/modules/TAO/ChangeLog
@@ -1,3 +1,31 @@
+Wed Jul 8 22:37:55 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * TAO_IDL/ast/ast_porttype.cpp:
+ * TAO_IDL/include/ast_porttype.h:
+ * TAO_IDL/be/be_porttype.cpp:
+ * TAO_IDL/be_include/be_porttype.h:
+
+ New files, containing frontend and backend definitions
+ of classes corresponding to the IDL3+ keyword 'porttype'.
+
+ * TAO_IDL/include/ast_decl.h:
+ * TAO_IDL/include/ast_visitor.h:
+ * TAO_IDL/be/be_template_interface.cpp:
+ * TAO_IDL/be/be_visitor.cpp:
+ * TAO_IDL/ast/ast_template_interface.cpp:
+ * TAO_IDL/ast/ast_decl.cpp:
+ * TAO_IDL/be_include/be_template_interface.h:
+ * TAO_IDL/be_include/be_visitor.h:
+
+ Added traversal methods for the new port type classes,
+ and other changes relating to the new AST node types.
+
+ * orbsvcs/IFR_Service/ifr_visitor.h:
+ * orbsvcs/IFR_Service/ifr_visitor.cpp:
+
+ Added the new traversal methods to make this visitor base
+ class concrete.
+
Wed Jul 8 20:22:56 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/include/fe_template_interface_header.h:
diff --git a/modules/TAO/TAO_IDL/ast/ast_decl.cpp b/modules/TAO/TAO_IDL/ast/ast_decl.cpp
index 296d80f9eeb..838916a89b9 100644
--- a/modules/TAO/TAO_IDL/ast/ast_decl.cpp
+++ b/modules/TAO/TAO_IDL/ast/ast_decl.cpp
@@ -784,6 +784,8 @@ AST_Decl::node_type_to_string (NodeType nt)
return "typename";
case NT_fixed:
return "fixed";
+ case NT_porttype:
+ return "porttype";
// No useful output for these.
case NT_enum_val:
case NT_field:
diff --git a/modules/TAO/TAO_IDL/ast/ast_porttype.cpp b/modules/TAO/TAO_IDL/ast/ast_porttype.cpp
new file mode 100644
index 00000000000..63f1b566c5b
--- /dev/null
+++ b/modules/TAO/TAO_IDL/ast/ast_porttype.cpp
@@ -0,0 +1,54 @@
+// $Id$
+
+#include "ast_porttype.h"
+#include "ast_visitor.h"
+
+#include "utl_identifier.h"
+#include "utl_indenter.h"
+#include "global_extern.h"
+
+ACE_RCSID (ast,
+ ast_porttype,
+ "$Id$")
+
+AST_PortType::AST_PortType (
+ UTL_ScopedName *n,
+ const FE_Utils::T_PARAMLIST_INFO *template_params)
+ : COMMON_Base (false,
+ false),
+ AST_Decl (AST_Decl::NT_porttype,
+ n),
+ template_params_ (*template_params)
+{
+}
+
+AST_PortType::~AST_PortType (void)
+{
+}
+
+FE_Utils::T_PARAMLIST_INFO &
+AST_PortType::template_params (void)
+{
+ return this->template_params_;
+}
+
+void
+AST_PortType::destroy (void)
+{
+ this->AST_Decl::destroy ();
+}
+
+void
+AST_PortType::dump (ACE_OSTREAM_TYPE &o)
+{
+}
+
+int
+AST_PortType::ast_accept (ast_visitor *visitor)
+{
+ return visitor->visit_porttype (this);
+}
+
+IMPL_NARROW_FROM_DECL(AST_PortType)
+IMPL_NARROW_FROM_SCOPE(AST_PortType)
+
diff --git a/modules/TAO/TAO_IDL/ast/ast_template_interface.cpp b/modules/TAO/TAO_IDL/ast/ast_template_interface.cpp
index 56991db2640..deb681f9f6d 100644
--- a/modules/TAO/TAO_IDL/ast/ast_template_interface.cpp
+++ b/modules/TAO/TAO_IDL/ast/ast_template_interface.cpp
@@ -127,8 +127,7 @@ AST_Template_Interface::dump (ACE_OSTREAM_TYPE &o)
int
AST_Template_Interface::ast_accept (ast_visitor *visitor)
{
- // TODO
- return visitor->visit_interface (this);
+ return visitor->visit_template_interface (this);
}
IMPL_NARROW_FROM_DECL(AST_Template_Interface)
diff --git a/modules/TAO/TAO_IDL/be/be_porttype.cpp b/modules/TAO/TAO_IDL/be/be_porttype.cpp
new file mode 100644
index 00000000000..5a3ad8dda35
--- /dev/null
+++ b/modules/TAO/TAO_IDL/be/be_porttype.cpp
@@ -0,0 +1,36 @@
+// $Id$
+
+#include "be_porttype.h"
+#include "be_visitor.h"
+
+ACE_RCSID (be,
+ be_porttype,
+ "$Id$")
+
+be_porttype::be_porttype (
+ UTL_ScopedName *n,
+ const FE_Utils::T_PARAMLIST_INFO *template_params)
+ : COMMON_Base (false,
+ false),
+ AST_Decl (AST_Decl::NT_porttype,
+ n),
+ AST_PortType (n,
+ template_params)
+{
+}
+
+be_porttype::~be_porttype (void)
+{
+}
+
+void
+be_porttype::destroy (void)
+{
+ this->AST_PortType::destroy ();
+}
+
+int
+be_porttype::accept (be_visitor *visitor)
+{
+ return visitor->visit_porttype (this);
+}
diff --git a/modules/TAO/TAO_IDL/be/be_template_interface.cpp b/modules/TAO/TAO_IDL/be/be_template_interface.cpp
index 828123dbbfc..6b1b48ee719 100644
--- a/modules/TAO/TAO_IDL/be/be_template_interface.cpp
+++ b/modules/TAO/TAO_IDL/be/be_template_interface.cpp
@@ -1,6 +1,7 @@
// $Id$
#include "be_template_interface.h"
+#include "be_visitor.h"
ACE_RCSID (be,
be_template_interface,
@@ -51,3 +52,9 @@ be_template_interface::destroy (void)
this->be_type::destroy ();
}
+int
+be_template_interface::accept(be_visitor *visitor)
+{
+ return visitor->visit_template_interface (this);
+}
+
diff --git a/modules/TAO/TAO_IDL/be/be_visitor.cpp b/modules/TAO/TAO_IDL/be/be_visitor.cpp
index d5393a4c3af..a372c499f79 100644
--- a/modules/TAO/TAO_IDL/be/be_visitor.cpp
+++ b/modules/TAO/TAO_IDL/be/be_visitor.cpp
@@ -72,6 +72,11 @@ int be_visitor::visit_interface_fwd (be_interface_fwd *)
return 0;
}
+int be_visitor::visit_template_interface (be_template_interface *)
+{
+ return 0;
+}
+
int be_visitor::visit_valuebox (be_valuebox *)
{
return 0;
@@ -107,6 +112,11 @@ int be_visitor::visit_component_fwd (be_component_fwd *)
return 0;
}
+int be_visitor::visit_porttype (be_porttype *)
+{
+ return 0;
+}
+
int be_visitor::visit_home (be_home *)
{
return 0;
diff --git a/modules/TAO/TAO_IDL/be_include/be_porttype.h b/modules/TAO/TAO_IDL/be_include/be_porttype.h
new file mode 100644
index 00000000000..37c64d3d60c
--- /dev/null
+++ b/modules/TAO/TAO_IDL/be_include/be_porttype.h
@@ -0,0 +1,50 @@
+//
+// $Id$
+//
+
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO_IDL_BE
+//
+// = FILENAME
+// be_porttype.h
+//
+// = DESCRIPTION
+// Extension of class AST_PortType for C++ code generation.
+//
+// = AUTHOR
+// Jeff Parsons
+//
+// ============================================================================
+
+#ifndef BE_PORTTYPE_H
+#define BE_PORTTYPE_H
+
+#include "ast_porttype.h"
+
+class be_visitor;
+
+class be_porttype : public virtual AST_PortType
+{
+ //
+ // = TITLE
+ // be_porttype
+ //
+ // = DESCRIPTION
+ // Extension of class AST_PortType for C++ code generation.
+ //
+public:
+ be_porttype (
+ UTL_ScopedName *n,
+ const FE_Utils::T_PARAMLIST_INFO *template_params);
+
+ virtual ~be_porttype (void);
+
+ virtual void destroy (void);
+
+ virtual int accept (be_visitor *visitor);
+};
+
+#endif // BE_PORTTYPE_H
diff --git a/modules/TAO/TAO_IDL/be_include/be_template_interface.h b/modules/TAO/TAO_IDL/be_include/be_template_interface.h
index 9a572bdc093..b2990bd0934 100644
--- a/modules/TAO/TAO_IDL/be_include/be_template_interface.h
+++ b/modules/TAO/TAO_IDL/be_include/be_template_interface.h
@@ -50,6 +50,8 @@ public:
virtual ~be_template_interface (void);
virtual void destroy (void);
+
+ virtual int accept (be_visitor *visitor);
};
#endif /* TAO_BE_TEMPLATE_INTERFACE_H */ \ No newline at end of file
diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor.h b/modules/TAO/TAO_IDL/be_include/be_visitor.h
index 7f33f3ad8a1..3cbd86de877 100644
--- a/modules/TAO/TAO_IDL/be_include/be_visitor.h
+++ b/modules/TAO/TAO_IDL/be_include/be_visitor.h
@@ -6,7 +6,7 @@
// ============================================================================
//
// = LIBRARY
-// TAO IDL
+// TAO_IDL_BE
//
// = FILENAME
// be_visitor.h
@@ -32,6 +32,7 @@ class be_predefined_type;
class be_module;
class be_interface;
class be_interface_fwd;
+class be_template_interface;
class be_valuebox;
class be_valuetype;
class be_valuetype_fwd;
@@ -39,6 +40,7 @@ class be_eventtype;
class be_eventtype_fwd;
class be_component;
class be_component_fwd;
+class be_porttype;
class be_home;
class be_factory;
class be_structure;
@@ -82,119 +84,125 @@ public:
virtual ~be_visitor (void);
virtual int visit_decl (be_decl *d);
- // visit a decl node
+ // Visit a decl node.
virtual int visit_scope (be_scope *node);
- // visit the scope
+ // Visit the scope.
virtual int visit_type (be_type *node);
- // visit the type
+ // Visit the type.
virtual int visit_predefined_type (be_predefined_type *node);
- // visit the predefined type
+ // Visit the predefined type.
virtual int visit_module (be_module *node);
- // visit module
+ // Visit module.
virtual int visit_interface (be_interface *node);
- // visit interface
+ // Visit interface.
virtual int visit_interface_fwd (be_interface_fwd *node);
- // visit interface_fwd
+ // Visit interface_fwd.
+
+ virtual int visit_template_interface (be_template_interface *node);
+ // Visit template interface.
virtual int visit_valuebox (be_valuebox *node);
- // visit valuebox
+ // Visit valuebox.
virtual int visit_valuetype (be_valuetype *node);
- // visit valuetype
+ // Visit valuetype.
virtual int visit_valuetype_fwd (be_valuetype_fwd *node);
- // visit valuetype_fwd
+ // Visit valuetype_fwd.
virtual int visit_eventtype (be_eventtype *node);
- // visit eventtype
+ // Visit eventtype.
virtual int visit_eventtype_fwd (be_eventtype_fwd *node);
- // visit eventtype_fwd
+ // Visit eventtype_fwd.
virtual int visit_component (be_component *node);
- // visit component
+ // Visit component.
virtual int visit_component_fwd (be_component_fwd *node);
- // visit component_fwd
+ // Visit component_fwd.
+
+ virtual int visit_porttype (be_porttype *node);
+ // Visit porttype.
virtual int visit_home (be_home *node);
- // visit component home
+ // Visit component home.
virtual int visit_factory (be_factory *node);
// Visit a OBV factory construct.
virtual int visit_structure (be_structure *node);
- // visit a structure
+ // Visit a structure.
virtual int visit_structure_fwd (be_structure_fwd *node);
- // visit a structure
+ // Visit a structure.
virtual int visit_exception (be_exception *node);
- // visit exception
+ // Visit exception.
virtual int visit_expression (be_expression *node);
- // visit expression
+ // Visit expression.
virtual int visit_enum (be_enum *node);
- // visit an enum
+ // Visit an enum.
virtual int visit_operation (be_operation *node);
- // visit an operation
+ // Visit an operation.
virtual int visit_field (be_field *node);
- // visit a field
+ // Visit a field.
virtual int visit_argument (be_argument *node);
- // visit argument
+ // Visit argument.
virtual int visit_attribute (be_attribute *node);
- // visit an attribute
+ // Visit an attribute.
virtual int visit_union (be_union *node);
- // visit union
+ // Visit union.
virtual int visit_union_fwd (be_union_fwd *node);
- // visit union
+ // Visit union.
virtual int visit_union_branch (be_union_branch *node);
- // visit union branch
+ // Visit union branch.
virtual int visit_union_label (be_union_label *node);
- // visit union label
+ // Visit union label.
virtual int visit_constant (be_constant *node);
- // visit a constant
+ // Visit a constant.
virtual int visit_enum_val (be_enum_val *node);
- // visit enum val
+ // Visit enum val.
virtual int visit_array (be_array *node);
- // visit an array
+ // Visit an array.
virtual int visit_sequence (be_sequence *node);
- // visit a sequence
+ // Visit a sequence.
virtual int visit_string (be_string *node);
- // visit a string
+ // Visit a string.
virtual int visit_typedef (be_typedef *node);
- // visit a typedef
+ // Visit a typedef.
virtual int visit_root (be_root *node);
- // visit a root
+ // Visit a root.
virtual int visit_native (be_native *node);
- // visit a native
+ // Visit a native.
protected:
be_visitor (void);
- // constructor is protected
+ // Constructor is protected.
};
#endif // TAO_BE_VISITOR_H
diff --git a/modules/TAO/TAO_IDL/include/ast_decl.h b/modules/TAO/TAO_IDL/include/ast_decl.h
index 9e6d26f7dfe..5a1a50247ce 100644
--- a/modules/TAO/TAO_IDL/include/ast_decl.h
+++ b/modules/TAO/TAO_IDL/include/ast_decl.h
@@ -161,6 +161,7 @@ public:
, NT_valuebox // Denotes an value box
, NT_type // Template interface parameter
, NT_fixed // Denotes (unsupported) fixed type
+ , NT_porttype // Denotes a port type
};
// Operations.
diff --git a/modules/TAO/TAO_IDL/include/ast_porttype.h b/modules/TAO/TAO_IDL/include/ast_porttype.h
new file mode 100644
index 00000000000..a91e76049e3
--- /dev/null
+++ b/modules/TAO/TAO_IDL/include/ast_porttype.h
@@ -0,0 +1,40 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+
+#ifndef AST_PORTTYPE_H
+#define AST_PORTTYPE_H
+
+#include "ast_decl.h"
+
+#include "fe_utils.h"
+
+class TAO_IDL_FE_Export AST_PortType : public virtual AST_Decl
+{
+public:
+ AST_PortType (
+ UTL_ScopedName *n,
+ const FE_Utils::T_PARAMLIST_INFO *template_params);
+
+ virtual ~AST_PortType (void);
+
+ FE_Utils::T_PARAMLIST_INFO &template_params (void);
+
+ // Cleanup function.
+ virtual void destroy (void);
+
+ // Narrowing.
+
+ DEF_NARROW_FROM_DECL(AST_PortType);
+ DEF_NARROW_FROM_SCOPE(AST_PortType);
+
+ // AST Dumping.
+ virtual void dump (ACE_OSTREAM_TYPE &o);
+
+ // Visiting.
+ virtual int ast_accept (ast_visitor *visitor);
+
+private:
+ FE_Utils::T_PARAMLIST_INFO template_params_;
+};
+
+#endif // AST_PORTTYPE_H
diff --git a/modules/TAO/TAO_IDL/include/ast_visitor.h b/modules/TAO/TAO_IDL/include/ast_visitor.h
index 1fbb566a744..6aa39eda38f 100644
--- a/modules/TAO/TAO_IDL/include/ast_visitor.h
+++ b/modules/TAO/TAO_IDL/include/ast_visitor.h
@@ -29,11 +29,13 @@ class AST_PredefinedType;
class AST_Module;
class AST_Interface;
class AST_InterfaceFwd;
+class AST_Template_Interface;
class AST_ValueBox;
class AST_ValueType;
class AST_ValueTypeFwd;
class AST_Component;
class AST_ComponentFwd;
+class AST_PortType;
class AST_EventType;
class AST_EventTypeFwd;
class AST_Home;
@@ -100,13 +102,16 @@ public:
// Visit interface.
virtual int visit_interface_fwd (AST_InterfaceFwd *node) = 0;
- // Visit interface_fwd
-
+ // Visit interface_fwd.
+
+ virtual int visit_template_interface (AST_Template_Interface *node) = 0;
+ // Visit template interface.
+
virtual int visit_valuetype (AST_ValueType *node) = 0;
// Visit valuetype.
virtual int visit_valuetype_fwd (AST_ValueTypeFwd *node) = 0;
- // Visit valuetype_fwd
+ // Visit valuetype_fwd.
virtual int visit_component (AST_Component *node) = 0;
// Visit component.
@@ -115,13 +120,16 @@ public:
// Visit home.
virtual int visit_component_fwd (AST_ComponentFwd *node) = 0;
- // Visit component_fwd
+ // Visit component_fwd.
+
+ virtual int visit_porttype (AST_PortType *node) = 0;
+ // Visit porttype.
virtual int visit_eventtype (AST_EventType *node) = 0;
// Visit eventtype.
virtual int visit_eventtype_fwd (AST_EventTypeFwd *node) = 0;
- // Visit eventtype_fwd
+ // Visit eventtype_fwd.
virtual int visit_factory (AST_Factory *node) = 0;
// Visit a OBV factory construct.
@@ -133,7 +141,7 @@ public:
// Visit a structure.
virtual int visit_exception (AST_Exception *node) = 0;
- // Visit exception
+ // Visit exception.
virtual int visit_expression (AST_Expression *node) = 0;
// Visit expression.
diff --git a/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp b/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp
index 40ea9e4afe3..fa9004dfdc6 100644
--- a/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp
+++ b/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp
@@ -76,6 +76,11 @@ ifr_visitor::visit_interface_fwd (AST_InterfaceFwd *)
return 0;
}
+int ifr_visitor::visit_template_interface (AST_Template_Interface *)
+{
+ return 0;
+}
+
int
ifr_visitor::visit_valuebox (AST_ValueBox *)
{
@@ -106,6 +111,11 @@ ifr_visitor::visit_component_fwd (AST_ComponentFwd *)
return 0;
}
+int ifr_visitor::visit_porttype (AST_PortType *)
+{
+ return 0;
+}
+
int
ifr_visitor::visit_eventtype (AST_EventType *)
{
diff --git a/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.h b/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.h
index 0d5a80a760b..9473870c197 100644
--- a/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.h
+++ b/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.h
@@ -67,6 +67,9 @@ public:
virtual int visit_interface_fwd (AST_InterfaceFwd *node);
// Visit a forward interface declaration
+ virtual int visit_template_interface (AST_Template_Interface *node);
+ // Visit template interface.
+
virtual int visit_valuebox (AST_ValueBox *node);
// Visit valuebox.
@@ -82,6 +85,9 @@ public:
virtual int visit_component_fwd (AST_ComponentFwd *node);
// Visit component_fwd
+ virtual int visit_porttype (AST_PortType *node);
+ // Visit porttype.
+
virtual int visit_eventtype (AST_EventType *node);
// Visit valuetype.