summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-07-24 17:53:21 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-07-24 17:53:21 +0000
commit3102808cdb08b81bac12930afc08cb6d27afe876 (patch)
tree8ef2c2cfb95641f1495de9d8a3ef8dd4566886ac
parente3351bedff7f50952eb37058ea1d7b299e150b62 (diff)
downloadATCD-3102808cdb08b81bac12930afc08cb6d27afe876.tar.gz
ChangeLogTag: Fri Jul 24 17:49:30 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--modules/TAO/ChangeLog25
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_consumes.cpp3
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_extended_port.cpp77
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_porttype.cpp4
-rw-r--r--modules/TAO/TAO_IDL/ast/ast_redef.cpp11
-rw-r--r--modules/TAO/TAO_IDL/be/be_extended_port.cpp50
-rw-r--r--modules/TAO/TAO_IDL/be/be_porttype.cpp2
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor.cpp6
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_extended_port.h56
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_porttype.h4
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor.h2
-rw-r--r--modules/TAO/TAO_IDL/include/ast_decl.h1
-rw-r--r--modules/TAO/TAO_IDL/include/ast_extended_port.h44
-rw-r--r--modules/TAO/TAO_IDL/include/ast_porttype.h4
-rw-r--r--modules/TAO/TAO_IDL/include/ast_visitor.h2
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;