diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-07-17 19:06:27 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-07-17 19:06:27 +0000 |
commit | 781222ed1a2288359330a54d400c957c0ef75939 (patch) | |
tree | b45cb080bbdc4662d1bd38cf0641c0f3637e30ff | |
parent | 38032177c0847fd602cca8f85517ed2b219eadab (diff) | |
download | ATCD-781222ed1a2288359330a54d400c957c0ef75939.tar.gz |
ChangeLogTag: Fri Jul 17 19:03:02 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
33 files changed, 972 insertions, 266 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog index ddd42cf5197..4d14b659983 100644 --- a/modules/TAO/ChangeLog +++ b/modules/TAO/ChangeLog @@ -1,3 +1,51 @@ +Fri Jul 17 19:03:02 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/include/ast_provides.h: + * TAO_IDL/include/ast_uses.h: + * TAO_IDL/include/ast_consumes.h: + * TAO_IDL/include/ast_publishes.h: + * TAO_IDL/include/ast_emits.h: + * TAO_IDL/be/be_provides.cpp: + * TAO_IDL/be/be_consumes.cpp: + * TAO_IDL/be/be_uses.cpp: + * TAO_IDL/be/be_emits.cpp: + * TAO_IDL/be/be_publishes.cpp: + * TAO_IDL/ast/ast_provides.cpp: + * TAO_IDL/ast/ast_consumes.cpp: + * TAO_IDL/ast/ast_publishes.cpp: + * TAO_IDL/ast/ast_emits.cpp: + * TAO_IDL/ast/ast_uses.cpp: + * TAO_IDL/be_include/be_publishes.h: + * TAO_IDL/be_include/be_uses.h: + * TAO_IDL/be_include/be_emits.h: + * TAO_IDL/be_include/be_provides.h: + * TAO_IDL/be_include/be_consumes.h: + + New files, making component and porttype + port declarations full-fledged nodes in + the AST. Formerly they were stored as + a list of info structs. + + * TAO_IDL/include/ast_decl.h: + * TAO_IDL/include/ast_template_interface.h: + * TAO_IDL/include/ast_field.h: + * TAO_IDL/include/ast_visitor.h: + * TAO_IDL/include/ast_component.h: + * TAO_IDL/be/be_visitor.cpp: + * TAO_IDL/ast/ast_attribute.cpp: + * TAO_IDL/ast/ast_decl.cpp: + * TAO_IDL/ast/ast_field.cpp: + * TAO_IDL/be_include/be_visitor.h: + + Changes corresponding to the new nodes + above, and cosmetic changes. + + * orbsvcs/IFR_Service/ifr_visitor.h: + * orbsvcs/IFR_Service/ifr_visitor.cpp: + + Added new visit_* methods corresponding to the new + nodes. + Fri Jul 17 15:07:49 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/fe/idl.yy: diff --git a/modules/TAO/TAO_IDL/ast/ast_attribute.cpp b/modules/TAO/TAO_IDL/ast/ast_attribute.cpp index c80f7a06748..45cab3b2a3c 100644 --- a/modules/TAO/TAO_IDL/ast/ast_attribute.cpp +++ b/modules/TAO/TAO_IDL/ast/ast_attribute.cpp @@ -124,7 +124,7 @@ AST_Attribute::dump (ACE_OSTREAM_TYPE &o) { this->dump_i (o, (this->pd_readonly == true ? "readonly attribute " : "attribute ")); - AST_Field::dump (o); + this->AST_Field::dump (o); } int @@ -318,6 +318,4 @@ AST_Attribute::fe_add_set_exceptions (UTL_NameList *t) return t; } - - IMPL_NARROW_FROM_DECL(AST_Attribute) diff --git a/modules/TAO/TAO_IDL/ast/ast_consumes.cpp b/modules/TAO/TAO_IDL/ast/ast_consumes.cpp new file mode 100644 index 00000000000..be09e325a3a --- /dev/null +++ b/modules/TAO/TAO_IDL/ast/ast_consumes.cpp @@ -0,0 +1,47 @@ +// $Id$ + +#include "ast_consumes.h" +#include "ast_eventtype.h" +#include "ast_visitor.h" + +AST_Consumes::AST_Consumes (UTL_ScopedName *n, + AST_EventType *consumes_type) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_consumes, + n), + AST_Field (AST_Decl::NT_consumes, + consumes_type, + n) +{ +} + +AST_Consumes::~AST_Consumes (void) +{ +} + +AST_EventType * +AST_Consumes::consumes_type (void) const +{ + return AST_EventType::narrow_from_decl (this->field_type ()); +} + +void +AST_Consumes::dump (ACE_OSTREAM_TYPE &o) +{ + this->dump_i (o, "consumes "); + this->AST_Field::dump (o); +} + +int +AST_Consumes::ast_accept (ast_visitor *visitor) +{ + return visitor->visit_consumes (this); +} + +void +AST_Consumes::destroy (void) +{ + this->AST_Field::destroy (); +} + +IMPL_NARROW_FROM_DECL(AST_Consumes) diff --git a/modules/TAO/TAO_IDL/ast/ast_decl.cpp b/modules/TAO/TAO_IDL/ast/ast_decl.cpp index 838916a89b9..1552945b531 100644 --- a/modules/TAO/TAO_IDL/ast/ast_decl.cpp +++ b/modules/TAO/TAO_IDL/ast/ast_decl.cpp @@ -786,6 +786,16 @@ AST_Decl::node_type_to_string (NodeType nt) return "fixed"; case NT_porttype: return "porttype"; + case NT_provides: + return "provides"; + case NT_uses: + return "uses"; + case NT_publishes: + return "publishes"; + case NT_emits: + return "emits"; + case NT_consumes: + return "consumes"; // No useful output for these. case NT_enum_val: case NT_field: diff --git a/modules/TAO/TAO_IDL/ast/ast_emits.cpp b/modules/TAO/TAO_IDL/ast/ast_emits.cpp new file mode 100644 index 00000000000..b9f2b1b040d --- /dev/null +++ b/modules/TAO/TAO_IDL/ast/ast_emits.cpp @@ -0,0 +1,47 @@ +// $Id$ + +#include "ast_emits.h" +#include "ast_eventtype.h" +#include "ast_visitor.h" + +AST_Emits::AST_Emits (UTL_ScopedName *n, + AST_EventType *emits_type) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_emits, + n), + AST_Field (AST_Decl::NT_emits, + emits_type, + n) +{ +} + +AST_Emits::~AST_Emits (void) +{ +} + +AST_EventType * +AST_Emits::emits_type (void) const +{ + return AST_EventType::narrow_from_decl (this->field_type ()); +} + +void +AST_Emits::dump (ACE_OSTREAM_TYPE &o) +{ + this->dump_i (o, "emits "); + this->AST_Field::dump (o); +} + +int +AST_Emits::ast_accept (ast_visitor *visitor) +{ + return visitor->visit_emits (this); +} + +void +AST_Emits::destroy (void) +{ + this->AST_Field::destroy (); +} + +IMPL_NARROW_FROM_DECL(AST_Emits) diff --git a/modules/TAO/TAO_IDL/ast/ast_field.cpp b/modules/TAO/TAO_IDL/ast/ast_field.cpp index dd3f10a3a06..bcdd73b68d1 100644 --- a/modules/TAO/TAO_IDL/ast/ast_field.cpp +++ b/modules/TAO/TAO_IDL/ast/ast_field.cpp @@ -79,13 +79,15 @@ trademarks or registered trademarks of Sun Microsystems, Inc. #include "ast_visitor.h" #include "utl_identifier.h" -ACE_RCSID (ast, ast_field, "$Id$") +ACE_RCSID (ast, + ast_field, + "$Id$") AST_Field::AST_Field (void) : COMMON_Base (), AST_Decl (), - pd_field_type (0), - pd_visibility (vis_NA), + ref_type_ (0), + visibility_ (vis_NA), anonymous_type_ (false) { } @@ -97,8 +99,8 @@ AST_Field::AST_Field (AST_Type *ft, : COMMON_Base (), AST_Decl (AST_Decl::NT_field, n), - pd_field_type (ft), - pd_visibility (vis), + ref_type_ (ft), + visibility_ (vis), anonymous_type_ (false) { AST_Decl::NodeType fnt = ft->node_type (); @@ -117,8 +119,8 @@ AST_Field::AST_Field (AST_Decl::NodeType nt, : COMMON_Base (), AST_Decl (nt, n), - pd_field_type (ft), - pd_visibility (vis), + ref_type_ (ft), + visibility_ (vis), anonymous_type_ (false) { AST_Decl::NodeType fnt = ft->node_type (); @@ -137,7 +139,7 @@ AST_Field::~AST_Field (void) void AST_Field::dump (ACE_OSTREAM_TYPE &o) { - switch (this->pd_visibility) + switch (this->visibility_) { case vis_PRIVATE: this->dump_i (o, "private "); @@ -151,7 +153,7 @@ AST_Field::dump (ACE_OSTREAM_TYPE &o) break; } - this->pd_field_type->local_name ()->dump (o); + this->ref_type_->local_name ()->dump (o); this->dump_i (o, " "); @@ -169,9 +171,9 @@ AST_Field::destroy (void) { if (this->anonymous_type_) { - this->pd_field_type->destroy (); - delete this->pd_field_type; - this->pd_field_type = 0; + this->ref_type_->destroy (); + delete this->ref_type_; + this->ref_type_ = 0; } this->AST_Decl::destroy (); @@ -180,21 +182,19 @@ AST_Field::destroy (void) AST_Type * AST_Field::field_type (void) const { - return this->pd_field_type; + return this->ref_type_; } AST_Field::Visibility AST_Field::visibility (void) { - return this->pd_visibility; + return this->visibility_; } int AST_Field::contains_wstring (void) { - return this->pd_field_type->contains_wstring (); + return this->ref_type_->contains_wstring (); } - - IMPL_NARROW_FROM_DECL(AST_Field) diff --git a/modules/TAO/TAO_IDL/ast/ast_provides.cpp b/modules/TAO/TAO_IDL/ast/ast_provides.cpp new file mode 100644 index 00000000000..b2a756d215d --- /dev/null +++ b/modules/TAO/TAO_IDL/ast/ast_provides.cpp @@ -0,0 +1,47 @@ +// $Id$ + +#include "ast_provides.h" +#include "ast_interface.h" +#include "ast_visitor.h" + +AST_Provides::AST_Provides (UTL_ScopedName *n, + AST_Interface *provides_type) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_provides, + n), + AST_Field (AST_Decl::NT_provides, + provides_type, + n) +{ +} + +AST_Provides::~AST_Provides (void) +{ +} + +AST_Interface * +AST_Provides::provides_type (void) const +{ + return AST_Interface::narrow_from_decl (this->field_type ()); +} + +void +AST_Provides::dump (ACE_OSTREAM_TYPE &o) +{ + this->dump_i (o, "provides "); + this->AST_Field::dump (o); +} + +int +AST_Provides::ast_accept (ast_visitor *visitor) +{ + return visitor->visit_provides (this); +} + +void +AST_Provides::destroy (void) +{ + this->AST_Field::destroy (); +} + +IMPL_NARROW_FROM_DECL(AST_Provides) diff --git a/modules/TAO/TAO_IDL/ast/ast_publishes.cpp b/modules/TAO/TAO_IDL/ast/ast_publishes.cpp new file mode 100644 index 00000000000..6fb1f7add33 --- /dev/null +++ b/modules/TAO/TAO_IDL/ast/ast_publishes.cpp @@ -0,0 +1,47 @@ +// $Id$ + +#include "ast_publishes.h" +#include "ast_eventtype.h" +#include "ast_visitor.h" + +AST_Publishes::AST_Publishes (UTL_ScopedName *n, + AST_EventType *publishes_type) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_publishes, + n), + AST_Field (AST_Decl::NT_publishes, + publishes_type, + n) +{ +} + +AST_Publishes::~AST_Publishes (void) +{ +} + +AST_EventType * +AST_Publishes::publishes_type (void) const +{ + return AST_EventType::narrow_from_decl (this->field_type ()); +} + +void +AST_Publishes::dump (ACE_OSTREAM_TYPE &o) +{ + this->dump_i (o, "publishes "); + this->AST_Field::dump (o); +} + +int +AST_Publishes::ast_accept (ast_visitor *visitor) +{ + return visitor->visit_publishes (this); +} + +void +AST_Publishes::destroy (void) +{ + this->AST_Field::destroy (); +} + +IMPL_NARROW_FROM_DECL(AST_Publishes) diff --git a/modules/TAO/TAO_IDL/ast/ast_uses.cpp b/modules/TAO/TAO_IDL/ast/ast_uses.cpp new file mode 100644 index 00000000000..bce4af2ab81 --- /dev/null +++ b/modules/TAO/TAO_IDL/ast/ast_uses.cpp @@ -0,0 +1,49 @@ +// $Id$ + +#include "ast_uses.h" +#include "ast_interface.h" +#include "ast_visitor.h" + +AST_Uses::AST_Uses (UTL_ScopedName *n, + AST_Interface *uses_type, + bool is_multiple) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_uses, + n), + AST_Field (AST_Decl::NT_uses, + uses_type, + n), + is_multiple_ (is_multiple) +{ +} + +AST_Uses::~AST_Uses (void) +{ +} + +AST_Interface * +AST_Uses::uses_type (void) const +{ + return AST_Interface::narrow_from_decl (this->field_type ()); +} + +void +AST_Uses::dump (ACE_OSTREAM_TYPE &o) +{ + this->dump_i (o, "uses "); + this->AST_Field::dump (o); +} + +int +AST_Uses::ast_accept (ast_visitor *visitor) +{ + return visitor->visit_uses (this); +} + +void +AST_Uses::destroy (void) +{ + this->AST_Field::destroy (); +} + +IMPL_NARROW_FROM_DECL(AST_Uses) diff --git a/modules/TAO/TAO_IDL/be/be_consumes.cpp b/modules/TAO/TAO_IDL/be/be_consumes.cpp new file mode 100644 index 00000000000..4417ab37d4d --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_consumes.cpp @@ -0,0 +1,39 @@ +// $Id$ + +#include "be_consumes.h" +#include "be_eventtype.h" +#include "be_visitor.h" + +be_consumes::be_consumes (UTL_ScopedName *n, + be_eventtype *consumes_type) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_consumes, + n), + AST_Field (AST_Decl::NT_consumes, + consumes_type, + n), + AST_Consumes (n, + consumes_type), + be_decl (AST_Decl::NT_consumes, + n) +{ +} + +be_consumes::~be_consumes (void) +{ +} + +int +be_consumes::accept (be_visitor *visitor) +{ + return visitor->visit_consumes (this); +} + +void +be_consumes::destroy (void) +{ + this->AST_Consumes::destroy (); + this->be_decl::destroy (); +} + +IMPL_NARROW_FROM_DECL(be_consumes) diff --git a/modules/TAO/TAO_IDL/be/be_emits.cpp b/modules/TAO/TAO_IDL/be/be_emits.cpp new file mode 100644 index 00000000000..5271e8b9257 --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_emits.cpp @@ -0,0 +1,39 @@ +// $Id$ + +#include "be_emits.h" +#include "be_eventtype.h" +#include "be_visitor.h" + +be_emits::be_emits (UTL_ScopedName *n, + be_eventtype *emits_type) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_emits, + n), + AST_Field (AST_Decl::NT_emits, + emits_type, + n), + AST_Emits (n, + emits_type), + be_decl (AST_Decl::NT_emits, + n) +{ +} + +be_emits::~be_emits (void) +{ +} + +int +be_emits::accept (be_visitor *visitor) +{ + return visitor->visit_emits (this); +} + +void +be_emits::destroy (void) +{ + this->AST_Emits::destroy (); + this->be_decl::destroy (); +} + +IMPL_NARROW_FROM_DECL(be_emits) diff --git a/modules/TAO/TAO_IDL/be/be_provides.cpp b/modules/TAO/TAO_IDL/be/be_provides.cpp new file mode 100644 index 00000000000..8219ef022ce --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_provides.cpp @@ -0,0 +1,39 @@ +// $Id$ + +#include "be_provides.h" +#include "be_interface.h" +#include "be_visitor.h" + +be_provides::be_provides (UTL_ScopedName *n, + be_interface *provides_type) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_provides, + n), + AST_Field (AST_Decl::NT_provides, + provides_type, + n), + AST_Provides (n, + provides_type), + be_decl (AST_Decl::NT_provides, + n) +{ +} + +be_provides::~be_provides (void) +{ +} + +int +be_provides::accept (be_visitor *visitor) +{ + return visitor->visit_provides (this); +} + +void +be_provides::destroy (void) +{ + this->AST_Provides::destroy (); + this->be_decl::destroy (); +} + +IMPL_NARROW_FROM_DECL(be_provides) diff --git a/modules/TAO/TAO_IDL/be/be_publishes.cpp b/modules/TAO/TAO_IDL/be/be_publishes.cpp new file mode 100644 index 00000000000..e4cadb283e9 --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_publishes.cpp @@ -0,0 +1,39 @@ +// $Id$ + +#include "be_publishes.h" +#include "be_eventtype.h" +#include "be_visitor.h" + +be_publishes::be_publishes (UTL_ScopedName *n, + be_eventtype *publishes_type) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_publishes, + n), + AST_Field (AST_Decl::NT_publishes, + publishes_type, + n), + AST_Publishes (n, + publishes_type), + be_decl (AST_Decl::NT_publishes, + n) +{ +} + +be_publishes::~be_publishes (void) +{ +} + +int +be_publishes::accept (be_visitor *visitor) +{ + return visitor->visit_publishes (this); +} + +void +be_publishes::destroy (void) +{ + this->AST_Publishes::destroy (); + this->be_decl::destroy (); +} + +IMPL_NARROW_FROM_DECL(be_publishes) diff --git a/modules/TAO/TAO_IDL/be/be_uses.cpp b/modules/TAO/TAO_IDL/be/be_uses.cpp new file mode 100644 index 00000000000..6dd81cade00 --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_uses.cpp @@ -0,0 +1,41 @@ +// $Id$ + +#include "be_uses.h" +#include "be_interface.h" +#include "be_visitor.h" + +be_uses::be_uses (UTL_ScopedName *n, + be_interface *uses_type, + bool is_multiple) + : COMMON_Base (), + AST_Decl (AST_Decl::NT_uses, + n), + AST_Field (AST_Decl::NT_uses, + uses_type, + n), + AST_Uses (n, + uses_type, + is_multiple), + be_decl (AST_Decl::NT_uses, + n) +{ +} + +be_uses::~be_uses (void) +{ +} + +int +be_uses::accept (be_visitor *visitor) +{ + return visitor->visit_uses (this); +} + +void +be_uses::destroy (void) +{ + this->AST_Uses::destroy (); + this->be_decl::destroy (); +} + +IMPL_NARROW_FROM_DECL(be_uses) diff --git a/modules/TAO/TAO_IDL/be/be_visitor.cpp b/modules/TAO/TAO_IDL/be/be_visitor.cpp index a372c499f79..66382a62e3c 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor.cpp @@ -117,6 +117,36 @@ int be_visitor::visit_porttype (be_porttype *) return 0; } +int +be_visitor::visit_provides (be_provides *) +{ + return 0; +} + +int +be_visitor::visit_uses (be_uses *) +{ + return 0; +} + +int +be_visitor::visit_publishes (be_publishes *) +{ + return 0; +} + +int +be_visitor::visit_emits (be_emits *) +{ + return 0; +} + +int +be_visitor::visit_consumes (be_consumes *) +{ + return 0; +} + int be_visitor::visit_home (be_home *) { return 0; diff --git a/modules/TAO/TAO_IDL/be_include/be_consumes.h b/modules/TAO/TAO_IDL/be_include/be_consumes.h new file mode 100644 index 00000000000..6ca19c19cff --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_consumes.h @@ -0,0 +1,34 @@ +// -*- C++ -*- +// $Id$ + +#ifndef BE_CONSUMES_H +#define BE_CONSUMES_H + +#include "ast_consumes.h" + +#include "be_decl.h" + +class be_eventtype; +class be_visitor; + +class be_consumes : public virtual AST_Consumes, + public virtual be_decl +{ +public: + be_consumes (UTL_ScopedName *n, + be_eventtype *consumes_type); + + virtual ~be_consumes (void); + + // Narrowing. + DEF_NARROW_FROM_DECL(be_consumes); + + // Visiting. + virtual int accept (be_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // BE_CONSUMES_H + diff --git a/modules/TAO/TAO_IDL/be_include/be_emits.h b/modules/TAO/TAO_IDL/be_include/be_emits.h new file mode 100644 index 00000000000..9b9f6a3c154 --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_emits.h @@ -0,0 +1,34 @@ +// -*- C++ -*- +// $Id$ + +#ifndef BE_EMITS_H +#define BE_EMITS_H + +#include "ast_emits.h" + +#include "be_decl.h" + +class be_eventtype; +class be_visitor; + +class be_emits : public virtual AST_Emits, + public virtual be_decl +{ +public: + be_emits (UTL_ScopedName *n, + be_eventtype *emits_type); + + virtual ~be_emits (void); + + // Narrowing. + DEF_NARROW_FROM_DECL(be_emits); + + // Visiting. + virtual int accept (be_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // BE_EMITS_H + diff --git a/modules/TAO/TAO_IDL/be_include/be_provides.h b/modules/TAO/TAO_IDL/be_include/be_provides.h new file mode 100644 index 00000000000..743893935fc --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_provides.h @@ -0,0 +1,34 @@ +// -*- C++ -*- +// $Id$ + +#ifndef BE_PROVIDES_H +#define BE_PROVIDES_H + +#include "ast_provides.h" + +#include "be_decl.h" + +class be_interface; +class be_visitor; + +class be_provides : public virtual AST_Provides, + public virtual be_decl +{ +public: + be_provides (UTL_ScopedName *n, + be_interface *provides_type); + + virtual ~be_provides (void); + + // Narrowing. + DEF_NARROW_FROM_DECL(be_provides); + + // Visiting. + virtual int accept (be_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // BE_PROVIDES_H + diff --git a/modules/TAO/TAO_IDL/be_include/be_publishes.h b/modules/TAO/TAO_IDL/be_include/be_publishes.h new file mode 100644 index 00000000000..90a6dde390f --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_publishes.h @@ -0,0 +1,34 @@ +// -*- C++ -*- +// $Id$ + +#ifndef BE_PUBLISHES_H +#define BE_PUBLISHES_H + +#include "ast_publishes.h" + +#include "be_decl.h" + +class be_eventtype; +class be_visitor; + +class be_publishes : public virtual AST_Publishes, + public virtual be_decl +{ +public: + be_publishes (UTL_ScopedName *n, + be_eventtype *publishes_type); + + virtual ~be_publishes (void); + + // Narrowing. + DEF_NARROW_FROM_DECL(be_publishes); + + // Visiting. + virtual int accept (be_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // BE_PUBLISHES_H + diff --git a/modules/TAO/TAO_IDL/be_include/be_uses.h b/modules/TAO/TAO_IDL/be_include/be_uses.h new file mode 100644 index 00000000000..9a53c32bffe --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_uses.h @@ -0,0 +1,35 @@ +// -*- C++ -*- +// $Id$ + +#ifndef BE_USES_H +#define BE_USES_H + +#include "ast_uses.h" + +#include "be_decl.h" + +class be_interface; +class be_visitor; + +class be_uses : public virtual AST_Uses, + public virtual be_decl +{ +public: + be_uses (UTL_ScopedName *n, + be_interface *uses_type, + bool is_multiple); + + virtual ~be_uses (void); + + // Narrowing. + DEF_NARROW_FROM_DECL(be_uses); + + // Visiting. + virtual int accept (be_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // BE_USES_H + diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor.h b/modules/TAO/TAO_IDL/be_include/be_visitor.h index 3cbd86de877..839f8853489 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor.h @@ -41,6 +41,11 @@ class be_eventtype_fwd; class be_component; class be_component_fwd; class be_porttype; +class be_provides; +class be_uses; +class be_publishes; +class be_emits; +class be_consumes; class be_home; class be_factory; class be_structure; @@ -84,125 +89,53 @@ public: virtual ~be_visitor (void); virtual int visit_decl (be_decl *d); - // Visit a decl node. - virtual int visit_scope (be_scope *node); - // Visit the scope. - virtual int visit_type (be_type *node); - // Visit the type. - virtual int visit_predefined_type (be_predefined_type *node); - // Visit the predefined type. - virtual int visit_module (be_module *node); - // Visit module. - virtual int visit_interface (be_interface *node); - // Visit interface. - virtual int visit_interface_fwd (be_interface_fwd *node); - // Visit interface_fwd. - virtual int visit_template_interface (be_template_interface *node); - // Visit template interface. - virtual int visit_valuebox (be_valuebox *node); - // Visit valuebox. - virtual int visit_valuetype (be_valuetype *node); - // Visit valuetype. - virtual int visit_valuetype_fwd (be_valuetype_fwd *node); - // Visit valuetype_fwd. - virtual int visit_eventtype (be_eventtype *node); - // Visit eventtype. - virtual int visit_eventtype_fwd (be_eventtype_fwd *node); - // Visit eventtype_fwd. - virtual int visit_component (be_component *node); - // Visit component. - virtual int visit_component_fwd (be_component_fwd *node); - // Visit component_fwd. - virtual int visit_porttype (be_porttype *node); - // Visit porttype. - + virtual int visit_provides (be_provides *node); + virtual int visit_uses (be_uses *node); + virtual int visit_publishes (be_publishes *node); + virtual int visit_emits (be_emits *node); + virtual int visit_consumes (be_consumes *node); virtual int visit_home (be_home *node); - // 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. - virtual int visit_structure_fwd (be_structure_fwd *node); - // Visit a structure. - virtual int visit_exception (be_exception *node); - // Visit exception. - virtual int visit_expression (be_expression *node); - // Visit expression. - virtual int visit_enum (be_enum *node); - // Visit an enum. - virtual int visit_operation (be_operation *node); - // Visit an operation. - virtual int visit_field (be_field *node); - // Visit a field. - virtual int visit_argument (be_argument *node); - // Visit argument. - virtual int visit_attribute (be_attribute *node); - // Visit an attribute. - virtual int visit_union (be_union *node); - // Visit union. - virtual int visit_union_fwd (be_union_fwd *node); - // Visit union. - virtual int visit_union_branch (be_union_branch *node); - // Visit union branch. - virtual int visit_union_label (be_union_label *node); - // Visit union label. - virtual int visit_constant (be_constant *node); - // Visit a constant. - virtual int visit_enum_val (be_enum_val *node); - // Visit enum val. - virtual int visit_array (be_array *node); - // Visit an array. - virtual int visit_sequence (be_sequence *node); - // Visit a sequence. - virtual int visit_string (be_string *node); - // Visit a string. - virtual int visit_typedef (be_typedef *node); - // Visit a typedef. - virtual int visit_root (be_root *node); - // Visit a root. - virtual int visit_native (be_native *node); - // Visit a native. protected: + // Not abstract but we want to force subclassing anyway. be_visitor (void); - // Constructor is protected. }; #endif // TAO_BE_VISITOR_H diff --git a/modules/TAO/TAO_IDL/include/ast_component.h b/modules/TAO/TAO_IDL/include/ast_component.h index c77bdf6dd5c..42ee6c769ac 100644 --- a/modules/TAO/TAO_IDL/include/ast_component.h +++ b/modules/TAO/TAO_IDL/include/ast_component.h @@ -7,7 +7,8 @@ #include "ast_interface.h" #include "ace/Unbounded_Queue.h" -class TAO_IDL_FE_Export AST_Component : public virtual AST_Interface +class TAO_IDL_FE_Export AST_Component + : public virtual AST_Interface { public: AST_Component (void); diff --git a/modules/TAO/TAO_IDL/include/ast_consumes.h b/modules/TAO/TAO_IDL/include/ast_consumes.h new file mode 100644 index 00000000000..0e25f8321a3 --- /dev/null +++ b/modules/TAO/TAO_IDL/include/ast_consumes.h @@ -0,0 +1,37 @@ +// -*- C++ -*- +// $Id$ + +#ifndef AST_CONSUMES_H +#define AST_CONSUMES_H + +#include "ast_field.h" + +class AST_EventType; +class AST_Visitor; + +class TAO_IDL_FE_Export AST_Consumes : public virtual AST_Field +{ +public: + AST_Consumes (UTL_ScopedName *n, + AST_EventType *consumes_type); + + virtual ~AST_Consumes (void); + + // Data Accessor. + AST_EventType *consumes_type (void) const; + + // Narrowing. + DEF_NARROW_FROM_DECL(AST_Consumes); + + // AST Dumping. + virtual void dump (ACE_OSTREAM_TYPE &o); + + // Visiting. + virtual int ast_accept (ast_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // AST_CONSUMES_H + diff --git a/modules/TAO/TAO_IDL/include/ast_decl.h b/modules/TAO/TAO_IDL/include/ast_decl.h index 5a1a50247ce..6321b31bd74 100644 --- a/modules/TAO/TAO_IDL/include/ast_decl.h +++ b/modules/TAO/TAO_IDL/include/ast_decl.h @@ -162,6 +162,11 @@ public: , NT_type // Template interface parameter , NT_fixed // Denotes (unsupported) fixed type , NT_porttype // Denotes a port type + , NT_provides // Denotes a facet + , NT_uses // Denotes a receptacle + , NT_publishes // Denotes an event source + , NT_emits // Denotes a one-to-one event source + , NT_consumes // Denotes an event sink }; // Operations. diff --git a/modules/TAO/TAO_IDL/include/ast_emits.h b/modules/TAO/TAO_IDL/include/ast_emits.h new file mode 100644 index 00000000000..f7e4d6a0b8a --- /dev/null +++ b/modules/TAO/TAO_IDL/include/ast_emits.h @@ -0,0 +1,37 @@ +// -*- C++ -*- +// $Id$ + +#ifndef AST_EMITS_H +#define AST_EMITS_H + +#include "ast_field.h" + +class AST_EventType; +class AST_Visitor; + +class TAO_IDL_FE_Export AST_Emits : public virtual AST_Field +{ +public: + AST_Emits (UTL_ScopedName *n, + AST_EventType *emits_type); + + virtual ~AST_Emits (void); + + // Data Accessor. + AST_EventType *emits_type (void) const; + + // Narrowing. + DEF_NARROW_FROM_DECL(AST_Emits); + + // AST Dumping. + virtual void dump (ACE_OSTREAM_TYPE &o); + + // Visiting. + virtual int ast_accept (ast_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // AST_EMITS_H + diff --git a/modules/TAO/TAO_IDL/include/ast_field.h b/modules/TAO/TAO_IDL/include/ast_field.h index 16898525203..e03487c0699 100644 --- a/modules/TAO/TAO_IDL/include/ast_field.h +++ b/modules/TAO/TAO_IDL/include/ast_field.h @@ -1,4 +1,4 @@ -// This may look like C, but it's really -*- C++ -*- +// -*- C++ -*- // $Id$ /* @@ -136,10 +136,10 @@ public: private: // Data. - AST_Type *pd_field_type; + AST_Type *ref_type_; // Base type for field. - Visibility pd_visibility; + Visibility visibility_; // Used with valuetype and eventtype fields. bool anonymous_type_; diff --git a/modules/TAO/TAO_IDL/include/ast_provides.h b/modules/TAO/TAO_IDL/include/ast_provides.h new file mode 100644 index 00000000000..b3be49e3b65 --- /dev/null +++ b/modules/TAO/TAO_IDL/include/ast_provides.h @@ -0,0 +1,37 @@ +// -*- C++ -*- +// $Id$ + +#ifndef AST_PROVIDES_H +#define AST_PROVIDES_H + +#include "ast_field.h" + +class AST_Interface; +class AST_Visitor; + +class TAO_IDL_FE_Export AST_Provides : public virtual AST_Field +{ +public: + AST_Provides (UTL_ScopedName *n, + AST_Interface *provides_type); + + virtual ~AST_Provides (void); + + // Data Accessor. + AST_Interface *provides_type (void) const; + + // Narrowing. + DEF_NARROW_FROM_DECL(AST_Provides); + + // AST Dumping. + virtual void dump (ACE_OSTREAM_TYPE &o); + + // Visiting. + virtual int ast_accept (ast_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // AST_PROVIDES_H + diff --git a/modules/TAO/TAO_IDL/include/ast_publishes.h b/modules/TAO/TAO_IDL/include/ast_publishes.h new file mode 100644 index 00000000000..f10c99a235a --- /dev/null +++ b/modules/TAO/TAO_IDL/include/ast_publishes.h @@ -0,0 +1,37 @@ +// -*- C++ -*- +// $Id$ + +#ifndef AST_PUBLISHES_H +#define AST_PUBLISHES_H + +#include "ast_field.h" + +class AST_EventType; +class AST_Visitor; + +class TAO_IDL_FE_Export AST_Publishes : public virtual AST_Field +{ +public: + AST_Publishes (UTL_ScopedName *n, + AST_EventType *publishes_type); + + virtual ~AST_Publishes (void); + + // Data Accessor. + AST_EventType *publishes_type (void) const; + + // Narrowing. + DEF_NARROW_FROM_DECL(AST_Publishes); + + // AST Dumping. + virtual void dump (ACE_OSTREAM_TYPE &o); + + // Visiting. + virtual int ast_accept (ast_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // AST_PUBLISHES_H + diff --git a/modules/TAO/TAO_IDL/include/ast_template_interface.h b/modules/TAO/TAO_IDL/include/ast_template_interface.h index 1c3dfaf9122..524456115a9 100644 --- a/modules/TAO/TAO_IDL/include/ast_template_interface.h +++ b/modules/TAO/TAO_IDL/include/ast_template_interface.h @@ -1,4 +1,4 @@ -// This may look like C, but it's really -*- C++ -*- +// -*- C++ -*- // $Id$ #ifndef AST_TEMPLATE_INTERFACE_H diff --git a/modules/TAO/TAO_IDL/include/ast_uses.h b/modules/TAO/TAO_IDL/include/ast_uses.h new file mode 100644 index 00000000000..d483ae7504d --- /dev/null +++ b/modules/TAO/TAO_IDL/include/ast_uses.h @@ -0,0 +1,37 @@ +// -*- C++ -*- +// $Id$ + +#ifndef AST_USES_H +#define AST_USES_H + +#include "ast_field.h" + +class AST_Interface; +class AST_Visitor; + +class TAO_IDL_FE_Export AST_Uses : public virtual AST_Field +{ +public: + AST_Uses (UTL_ScopedName *n, + AST_Interface *uses_type); + + virtual ~AST_Uses (void); + + // Data Accessor. + AST_Interface *uses_type (void) const; + + // Narrowing. + DEF_NARROW_FROM_DECL(AST_Uses); + + // AST Dumping. + virtual void dump (ACE_OSTREAM_TYPE &o); + + // Visiting. + virtual int ast_accept (ast_visitor *visitor); + + // Cleanup. + virtual void destroy (void); +}; + +#endif // AST_USES_H + diff --git a/modules/TAO/TAO_IDL/include/ast_visitor.h b/modules/TAO/TAO_IDL/include/ast_visitor.h index 6aa39eda38f..d10f2768f28 100644 --- a/modules/TAO/TAO_IDL/include/ast_visitor.h +++ b/modules/TAO/TAO_IDL/include/ast_visitor.h @@ -36,6 +36,11 @@ class AST_ValueTypeFwd; class AST_Component; class AST_ComponentFwd; class AST_PortType; +class AST_Provides; +class AST_Uses; +class AST_Publishes; +class AST_Emits; +class AST_Consumes; class AST_EventType; class AST_EventTypeFwd; class AST_Home; @@ -77,128 +82,56 @@ class TAO_IDL_FE_Export ast_visitor // be the root of their own subtree of specialized visitor classes. // public: - ast_visitor (void); - // Constructor. - virtual ~ast_visitor (void); - // Destructor. virtual int visit_decl (AST_Decl *d) = 0; - // Visit a decl node. - virtual int visit_scope (UTL_Scope *node) = 0; - // Visit the scope - virtual int visit_type (AST_Type *node) = 0; - // Visit the type. - virtual int visit_predefined_type (AST_PredefinedType *node) = 0; - // Visit the predefined type. - virtual int visit_module (AST_Module *node) = 0; - // Visit module. - virtual int visit_interface (AST_Interface *node) = 0; - // Visit interface. - virtual int visit_interface_fwd (AST_InterfaceFwd *node) = 0; - // 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. - virtual int visit_component (AST_Component *node) = 0; - // Visit component. - virtual int visit_home (AST_Home *node) = 0; - // Visit home. - virtual int visit_component_fwd (AST_ComponentFwd *node) = 0; - // Visit component_fwd. - virtual int visit_porttype (AST_PortType *node) = 0; - // Visit porttype. - + virtual int visit_provides (AST_Provides *node) = 0; + virtual int visit_uses (AST_Uses *node) = 0; + 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_eventtype (AST_EventType *node) = 0; - // Visit eventtype. - virtual int visit_eventtype_fwd (AST_EventTypeFwd *node) = 0; - // Visit eventtype_fwd. - virtual int visit_factory (AST_Factory *node) = 0; - // Visit a OBV factory construct. - virtual int visit_structure (AST_Structure *node) = 0; - // Visit a structure. - virtual int visit_structure_fwd (AST_StructureFwd *node) = 0; - // Visit a structure. - virtual int visit_exception (AST_Exception *node) = 0; - // Visit exception. - virtual int visit_expression (AST_Expression *node) = 0; - // Visit expression. - virtual int visit_enum (AST_Enum *node) = 0; - // Visit an enum. - virtual int visit_operation (AST_Operation *node) = 0; - // Visit an operation. - virtual int visit_field (AST_Field *node) = 0; - // Visit a field. - virtual int visit_argument (AST_Argument *node) = 0; - // Visit argument. - virtual int visit_attribute (AST_Attribute *node) = 0; - // Visit an attribute. - virtual int visit_union (AST_Union *node) = 0; - // Visit union. - virtual int visit_union_fwd (AST_UnionFwd *node) = 0; - // Visit union. - virtual int visit_union_branch (AST_UnionBranch *node) = 0; - // Visit union branch. - virtual int visit_union_label (AST_UnionLabel *node) = 0; - // Visit union label. - virtual int visit_constant (AST_Constant *node) = 0; - // Visit a constant. - virtual int visit_enum_val (AST_EnumVal *node) = 0; - // Visit enum val. - virtual int visit_array (AST_Array *node) = 0; - // Visit an array. - virtual int visit_sequence (AST_Sequence *node) = 0; - // Visit a sequence. - virtual int visit_string (AST_String *node) = 0; - // Visit a string. - virtual int visit_typedef (AST_Typedef *node) = 0; - // Visit a typedef. - virtual int visit_root (AST_Root *node) = 0; - // Visit a root. - virtual int visit_native (AST_Native *node) = 0; - // Visit a native. - virtual int visit_valuebox (AST_ValueBox *node) = 0; - // Visit a valuebox. + +protected: + // For abstract class. + ast_visitor (void); }; #endif /* TAO_IDL_FE_DLL_AST_VISITOR_H */ diff --git a/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp b/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp index fa9004dfdc6..a07a8eacb73 100644 --- a/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp +++ b/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.cpp @@ -116,6 +116,36 @@ int ifr_visitor::visit_porttype (AST_PortType *) return 0; } +int +ifr_visitor::visit_provides (AST_Provides *) +{ + return 0; +} + +int +ifr_visitor::visit_uses (AST_Uses *) +{ + return 0; +} + +int +ifr_visitor::visit_publishes (AST_Publishes *) +{ + return 0; +} + +int +ifr_visitor::visit_emits (AST_Emits *) +{ + return 0; +} + +int +ifr_visitor::visit_consumes (AST_Consumes *) +{ + 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 9473870c197..8dd43c0cf63 100644 --- a/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.h +++ b/modules/TAO/orbsvcs/IFR_Service/ifr_visitor.h @@ -40,131 +40,59 @@ class ifr_visitor : public ast_visitor // derived visitors that override only a few. // public: - ifr_visitor (void); - // Constructor. - virtual ~ifr_visitor (void); - // Destructor. - + virtual int visit_decl (AST_Decl *d); - // Visit a decl node. - virtual int visit_scope (UTL_Scope *node); - // Visit the scope. - virtual int visit_type (AST_Type *node); - // Visit the type. - virtual int visit_predefined_type (AST_PredefinedType *node); - // Visit the predefined type. - virtual int visit_module (AST_Module *node); - // Visit module. - virtual int visit_interface (AST_Interface *node); - // Visit interface. - 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. - virtual int visit_valuetype (AST_ValueType *node); - // Visit valuetype. - virtual int visit_valuetype_fwd (AST_ValueTypeFwd *node); - // Visit valuetype_fwd - virtual int visit_component (AST_Component *node); - // Visit component. - virtual int visit_component_fwd (AST_ComponentFwd *node); - // Visit component_fwd - virtual int visit_porttype (AST_PortType *node); - // Visit porttype. - + virtual int visit_provides (AST_Provides *node); + virtual int visit_uses (AST_Uses *node); + virtual int visit_publishes (AST_Publishes *node); + virtual int visit_emits (AST_Emits *node); + virtual int visit_consumes (AST_Consumes *node); virtual int visit_eventtype (AST_EventType *node); - // Visit valuetype. - virtual int visit_eventtype_fwd (AST_EventTypeFwd *node); - // Visit valuetype_fwd - virtual int visit_home (AST_Home *node); - // Visit component home. - virtual int visit_factory (AST_Factory *node); - // Visit a factory construct. - virtual int visit_structure (AST_Structure *node); - // Visit a structure. - virtual int visit_structure_fwd (AST_StructureFwd *node); - // Visit a forward structure declaration. - virtual int visit_exception (AST_Exception *node); - // Visit exception - virtual int visit_expression (AST_Expression *node); - // Visit expression. - virtual int visit_enum (AST_Enum *node); - // Visit an enum. - virtual int visit_operation (AST_Operation *node); - // Visit an operation. - virtual int visit_field (AST_Field *node); - // Visit a field. - virtual int visit_argument (AST_Argument *node); - // Visit argument. - virtual int visit_attribute (AST_Attribute *node); - // Visit an attribute. - virtual int visit_union (AST_Union *node); - // Visit union. - virtual int visit_union_fwd (AST_UnionFwd *node); - // Visit a forward union declaration. - virtual int visit_union_branch (AST_UnionBranch *node); - // Visit union branch. - virtual int visit_union_label (AST_UnionLabel *node); - // Visit union label. - virtual int visit_constant (AST_Constant *node); - // Visit a constant. - virtual int visit_enum_val (AST_EnumVal *node); - // Visit enum val. - virtual int visit_array (AST_Array *node); - // Visit an array. - virtual int visit_sequence (AST_Sequence *node); - // Visit a sequence. - virtual int visit_string (AST_String *node); - // Visit a string. - virtual int visit_typedef (AST_Typedef *node); - // Visit a typedef. - virtual int visit_root (AST_Root *node); - // Visit the root. - virtual int visit_native (AST_Native *node); - // Visit a native. ACE_Lock &lock (void) const; // Accessor for our lock. + +protected: + // Not abstract but we want to force subclassing anyway. + ifr_visitor (void); private: ACE_Lock *lock_; |