diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-07-08 22:43:38 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-07-08 22:43:38 +0000 |
commit | 5fa4ea4080d7d000f07b0bc442791707f1dc4b4c (patch) | |
tree | 264176aed4b04f9e5f6006179f14e2cbbe5b5b51 | |
parent | 9deabd51cfc8d1108c6ad924d792e7009f7f5482 (diff) | |
download | ATCD-5fa4ea4080d7d000f07b0bc442791707f1dc4b4c.tar.gz |
ChangeLogTag: Wed Jul 8 22:37:55 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | modules/TAO/ChangeLog | 28 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/ast/ast_decl.cpp | 2 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/ast/ast_porttype.cpp | 54 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/ast/ast_template_interface.cpp | 3 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be/be_porttype.cpp | 36 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be/be_template_interface.cpp | 7 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be/be_visitor.cpp | 10 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be_include/be_porttype.h | 50 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be_include/be_template_interface.h | 2 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be_include/be_visitor.h | 84 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/include/ast_decl.h | 1 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/include/ast_porttype.h | 40 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/include/ast_visitor.h | 20 | ||||
-rw-r--r-- | modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp | 10 | ||||
-rw-r--r-- | modules/TAO/orbsvcs/IFR_Service/ifr_visitor.h | 6 |
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. |