diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-07-24 17:53:21 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-07-24 17:53:21 +0000 |
commit | 3102808cdb08b81bac12930afc08cb6d27afe876 (patch) | |
tree | 8ef2c2cfb95641f1495de9d8a3ef8dd4566886ac | |
parent | e3351bedff7f50952eb37058ea1d7b299e150b62 (diff) | |
download | ATCD-3102808cdb08b81bac12930afc08cb6d27afe876.tar.gz |
ChangeLogTag: Fri Jul 24 17:49:30 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | modules/TAO/ChangeLog | 25 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/ast/ast_consumes.cpp | 3 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/ast/ast_extended_port.cpp | 77 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/ast/ast_porttype.cpp | 4 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/ast/ast_redef.cpp | 11 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be/be_extended_port.cpp | 50 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be/be_porttype.cpp | 2 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be/be_visitor.cpp | 6 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be_include/be_extended_port.h | 56 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be_include/be_porttype.h | 4 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/be_include/be_visitor.h | 2 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/include/ast_decl.h | 1 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/include/ast_extended_port.h | 44 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/include/ast_porttype.h | 4 | ||||
-rw-r--r-- | modules/TAO/TAO_IDL/include/ast_visitor.h | 2 |
15 files changed, 280 insertions, 11 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog index 2a7a64dd6ba..dd67fdf0de9 100644 --- a/modules/TAO/ChangeLog +++ b/modules/TAO/ChangeLog @@ -1,3 +1,28 @@ +Fri Jul 24 17:49:30 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/ast/ast_consumes.cpp: + * TAO_IDL/include/ast_extended_port.h: + * TAO_IDL/be/be_extended_port.cpp: + * TAO_IDL/be_include/be_extended_port.h: + + New files, defining an extended port, which + is found in a component, and is an instantiation + of a porttype declaration. + + * TAO_IDL/ast/ast_extended_port.cpp: + * TAO_IDL/ast/ast_porttype.cpp: + * TAO_IDL/ast/ast_redef.cpp: + * TAO_IDL/be/be_porttype.cpp: + * TAO_IDL/be/be_visitor.cpp: + * TAO_IDL/be_include/be_porttype.h: + * TAO_IDL/be_include/be_visitor.h: + * TAO_IDL/include/ast_decl.h: + * TAO_IDL/include/ast_porttype.h: + * TAO_IDL/include/ast_visitor.h: + + Other changes corresponding to the new extended + port classes. + Fri Jul 24 15:38:24 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/fe/idl.yy: diff --git a/modules/TAO/TAO_IDL/ast/ast_consumes.cpp b/modules/TAO/TAO_IDL/ast/ast_consumes.cpp index be09e325a3a..7c3b6162783 100644 --- a/modules/TAO/TAO_IDL/ast/ast_consumes.cpp +++ b/modules/TAO/TAO_IDL/ast/ast_consumes.cpp @@ -6,7 +6,8 @@ AST_Consumes::AST_Consumes (UTL_ScopedName *n, AST_EventType *consumes_type) - : COMMON_Base (), + : COMMON_Base (false, + false), AST_Decl (AST_Decl::NT_consumes, n), AST_Field (AST_Decl::NT_consumes, diff --git a/modules/TAO/TAO_IDL/ast/ast_extended_port.cpp b/modules/TAO/TAO_IDL/ast/ast_extended_port.cpp new file mode 100644 index 00000000000..003d9a7e6ed --- /dev/null +++ b/modules/TAO/TAO_IDL/ast/ast_extended_port.cpp @@ -0,0 +1,77 @@ +// $Id$ + +#include "ast_extended_port.h" +#include "ast_porttype.h" +#include "ast_visitor.h" + +#include "utl_identifier.h" +#include "utl_indenter.h" +#include "utl_namelist.h" +#include "global_extern.h" + +ACE_RCSID (ast, + ast_extended_port, + "$Id$") + +AST_Extended_Port::AST_Extended_Port ( + UTL_ScopedName *n, + AST_PortType *porttype_ref, + UTL_NameList *template_args) + : COMMON_Base (false, + false), + AST_Decl (AST_Decl::NT_ext_port, + n), + AST_Field (AST_Decl::NT_ext_port, + porttype_ref, + n), + template_args_ (template_args) +{ +} + +AST_Extended_Port::~AST_Extended_Port (void) +{ +} + +AST_PortType * +AST_Extended_Port::port_type (void) const +{ + return AST_PortType::narrow_from_decl (this->field_type ()); +} + +UTL_NameList * +AST_Extended_Port::template_args (void) const +{ + return this->template_args_; +} + +void +AST_Extended_Port::destroy (void) +{ + if (this->template_args_ != 0) + { + this->template_args_->destroy (); + delete this->template_args_; + this->template_args_ = 0; + } + + this->AST_Field::destroy (); +} + +void +AST_Extended_Port::dump (ACE_OSTREAM_TYPE &o) +{ + this->dump_i (o, "port "); + + this->local_name ()->dump (o); + + // TODO - template args +} + +int +AST_Extended_Port::ast_accept (ast_visitor *visitor) +{ + return visitor->visit_extended_port (this); +} + +IMPL_NARROW_FROM_DECL (AST_Extended_Port) + diff --git a/modules/TAO/TAO_IDL/ast/ast_porttype.cpp b/modules/TAO/TAO_IDL/ast/ast_porttype.cpp index 93d14ebe45a..f1187b0bf7c 100644 --- a/modules/TAO/TAO_IDL/ast/ast_porttype.cpp +++ b/modules/TAO/TAO_IDL/ast/ast_porttype.cpp @@ -24,6 +24,8 @@ AST_PortType::AST_PortType ( false), AST_Decl (AST_Decl::NT_porttype, n), + AST_Type (AST_Decl::NT_porttype, + n), UTL_Scope (AST_Decl::NT_porttype), AST_Template_Common (template_params) { @@ -36,7 +38,7 @@ AST_PortType::~AST_PortType (void) void AST_PortType::destroy (void) { - this->AST_Decl::destroy (); + this->AST_Type::destroy (); this->AST_Template_Common::destroy (); } diff --git a/modules/TAO/TAO_IDL/ast/ast_redef.cpp b/modules/TAO/TAO_IDL/ast/ast_redef.cpp index ae596e059e9..e84098c2cdf 100644 --- a/modules/TAO/TAO_IDL/ast/ast_redef.cpp +++ b/modules/TAO/TAO_IDL/ast/ast_redef.cpp @@ -103,11 +103,6 @@ can_be_redefined (AST_Decl *d) case AST_Decl::NT_enum: case AST_Decl::NT_typedef: case AST_Decl::NT_valuebox: - case AST_Decl::NT_provides: - case AST_Decl::NT_uses: - case AST_Decl::NT_publishes: - case AST_Decl::NT_emits: - case AST_Decl::NT_consumes: return true; case AST_Decl::NT_union_branch: @@ -116,6 +111,12 @@ can_be_redefined (AST_Decl *d) case AST_Decl::NT_op: case AST_Decl::NT_pre_defined: case AST_Decl::NT_factory: + case AST_Decl::NT_provides: + case AST_Decl::NT_uses: + case AST_Decl::NT_publishes: + case AST_Decl::NT_emits: + case AST_Decl::NT_consumes: + case AST_Decl::NT_ext_port: default: return false; } diff --git a/modules/TAO/TAO_IDL/be/be_extended_port.cpp b/modules/TAO/TAO_IDL/be/be_extended_port.cpp new file mode 100644 index 00000000000..deb2f3379ed --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_extended_port.cpp @@ -0,0 +1,50 @@ +// $Id$ + +#include "be_extended_port.h" +#include "be_visitor.h" + +#include "ast_porttype.h" + +ACE_RCSID (be, + be_extended_port, + "$Id$") + +be_extended_port::be_extended_port ( + UTL_ScopedName *n, + AST_PortType *porttype_ref, + UTL_NameList *template_args) + : COMMON_Base (false, + false), + AST_Decl (AST_Decl::NT_ext_port, + n), + AST_Field (AST_Decl::NT_ext_port, + porttype_ref, + n), + AST_Extended_Port (n, + porttype_ref, + template_args), + be_field (porttype_ref, + n) +{ +} + +be_extended_port::~be_extended_port (void) +{ +} + +void +be_extended_port::destroy (void) +{ + this->AST_Extended_Port::destroy (); + this->be_field::destroy (); +} + + +int +be_extended_port::accept (be_visitor *visitor) +{ + return visitor->visit_extended_port (this); +} + +IMPL_NARROW_FROM_DECL (be_extended_port) + diff --git a/modules/TAO/TAO_IDL/be/be_porttype.cpp b/modules/TAO/TAO_IDL/be/be_porttype.cpp index a70b046ab12..cf333dfb668 100644 --- a/modules/TAO/TAO_IDL/be/be_porttype.cpp +++ b/modules/TAO/TAO_IDL/be/be_porttype.cpp @@ -20,6 +20,8 @@ be_porttype::be_porttype ( template_params), be_scope (AST_Decl::NT_porttype), be_decl (AST_Decl::NT_porttype, + n), + be_type (AST_Decl::NT_porttype, n) { } diff --git a/modules/TAO/TAO_IDL/be/be_visitor.cpp b/modules/TAO/TAO_IDL/be/be_visitor.cpp index bfe9f20a83d..64a70354ab2 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor.cpp @@ -153,6 +153,12 @@ be_visitor::visit_consumes (be_consumes *) return 0; } +int +be_visitor::visit_extended_port (be_extended_port *) +{ + return 0; +} + int be_visitor::visit_home (be_home *) { return 0; diff --git a/modules/TAO/TAO_IDL/be_include/be_extended_port.h b/modules/TAO/TAO_IDL/be_include/be_extended_port.h new file mode 100644 index 00000000000..193853007be --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_extended_port.h @@ -0,0 +1,56 @@ +// +// $Id$ +// + +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO_IDL_BE +// +// = FILENAME +// be_extended_port.h +// +// = DESCRIPTION +// Extension of class AST_Extended_Port for C++ code generation. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef BE_EXTENDED_PORT_H +#define BE_EXTENDED_PORT_H + +#include "ast_extended_port.h" + +#include "be_field.h" + +class be_visitor; + +class be_extended_port : public virtual AST_Extended_Port, + public virtual be_field +{ + // + // = TITLE + // be_extended_port + // + // = DESCRIPTION + // Extension of class AST_Extended_Port for C++ code generation. + // +public: + be_extended_port ( + UTL_ScopedName *n, + AST_PortType *porttype_ref, + UTL_NameList *template_args); + + virtual ~be_extended_port (void); + + virtual void destroy (void); + + virtual int accept (be_visitor *visitor); + + DEF_NARROW_FROM_DECL (be_extended_port); +}; + +#endif // BE_EXTENDED_PORT_H diff --git a/modules/TAO/TAO_IDL/be_include/be_porttype.h b/modules/TAO/TAO_IDL/be_include/be_porttype.h index dba84e7f824..0e7abef9f75 100644 --- a/modules/TAO/TAO_IDL/be_include/be_porttype.h +++ b/modules/TAO/TAO_IDL/be_include/be_porttype.h @@ -25,13 +25,13 @@ #include "ast_porttype.h" #include "be_scope.h" -#include "be_decl.h" +#include "be_type.h" class be_visitor; class be_porttype : public virtual AST_PortType, public virtual be_scope, - public virtual be_decl + public virtual be_type { // // = TITLE diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor.h b/modules/TAO/TAO_IDL/be_include/be_visitor.h index 006bf87a433..2bc0cb4058c 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor.h @@ -47,6 +47,7 @@ class be_uses; class be_publishes; class be_emits; class be_consumes; +class be_extended_port; class be_home; class be_factory; class be_structure; @@ -113,6 +114,7 @@ public: virtual int visit_publishes (be_publishes *node); virtual int visit_emits (be_emits *node); virtual int visit_consumes (be_consumes *node); + virtual int visit_extended_port (be_extended_port *node); virtual int visit_home (be_home *node); virtual int visit_factory (be_factory *node); virtual int visit_structure (be_structure *node); diff --git a/modules/TAO/TAO_IDL/include/ast_decl.h b/modules/TAO/TAO_IDL/include/ast_decl.h index 6321b31bd74..6d3a1f976a1 100644 --- a/modules/TAO/TAO_IDL/include/ast_decl.h +++ b/modules/TAO/TAO_IDL/include/ast_decl.h @@ -167,6 +167,7 @@ public: , NT_publishes // Denotes an event source , NT_emits // Denotes a one-to-one event source , NT_consumes // Denotes an event sink + , NT_ext_port // Denotes an extended port }; // Operations. diff --git a/modules/TAO/TAO_IDL/include/ast_extended_port.h b/modules/TAO/TAO_IDL/include/ast_extended_port.h new file mode 100644 index 00000000000..1c677e91261 --- /dev/null +++ b/modules/TAO/TAO_IDL/include/ast_extended_port.h @@ -0,0 +1,44 @@ +// -*- C++ -*- +// $Id$ + +#ifndef AST_EXTENDED_PORT_H +#define AST_EXTENDED_PORT_H + +#include "ast_field.h" + +class AST_PortType; +class UTL_NameList; + +class TAO_IDL_FE_Export AST_Extended_Port + : public virtual AST_Field +{ +public: + AST_Extended_Port ( + UTL_ScopedName *n, + AST_PortType *porttype_ref, + UTL_NameList *template_args); + + virtual ~AST_Extended_Port (void); + + AST_PortType *port_type (void) const; + UTL_NameList *template_args (void) const; + + // Cleanup function. + virtual void destroy (void); + + // Narrowing. + + DEF_NARROW_FROM_DECL (AST_Extended_Port); + + // AST Dumping. + virtual void dump (ACE_OSTREAM_TYPE &o); + + // Visiting. + virtual int ast_accept (ast_visitor *visitor); + +protected: + UTL_NameList *template_args_; +}; + +#endif /* AST_EXTENDED_PORT_H */ + diff --git a/modules/TAO/TAO_IDL/include/ast_porttype.h b/modules/TAO/TAO_IDL/include/ast_porttype.h index 870bdc5fe3a..62dfbf46780 100644 --- a/modules/TAO/TAO_IDL/include/ast_porttype.h +++ b/modules/TAO/TAO_IDL/include/ast_porttype.h @@ -4,7 +4,7 @@ #ifndef AST_PORTTYPE_H #define AST_PORTTYPE_H -#include "ast_decl.h" +#include "ast_type.h" #include "ast_template_common.h" #include "utl_scope.h" @@ -15,7 +15,7 @@ class AST_Emits; class AST_Consumes; class TAO_IDL_FE_Export AST_PortType - : public virtual AST_Decl, + : public virtual AST_Type, public virtual UTL_Scope, public virtual AST_Template_Common { diff --git a/modules/TAO/TAO_IDL/include/ast_visitor.h b/modules/TAO/TAO_IDL/include/ast_visitor.h index da1e42578c7..e4bb5db8113 100644 --- a/modules/TAO/TAO_IDL/include/ast_visitor.h +++ b/modules/TAO/TAO_IDL/include/ast_visitor.h @@ -42,6 +42,7 @@ class AST_Uses; class AST_Publishes; class AST_Emits; class AST_Consumes; +class AST_Extended_Port; class AST_EventType; class AST_EventTypeFwd; class AST_Home; @@ -107,6 +108,7 @@ public: virtual int visit_publishes (AST_Publishes *node) = 0; virtual int visit_emits (AST_Emits *node) = 0; virtual int visit_consumes (AST_Consumes *node) = 0; + virtual int visit_extended_port (AST_Extended_Port *node) = 0; virtual int visit_eventtype (AST_EventType *node) = 0; virtual int visit_eventtype_fwd (AST_EventTypeFwd *node) = 0; virtual int visit_factory (AST_Factory *node) = 0; |