summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-03-23 20:53:44 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-03-23 20:53:44 +0000
commit8cfd157be6db4ed2fe147a940b506582e2810fb9 (patch)
tree3749123f7973c1135e4a9879bab5dc29345dc757
parentb4b33db3d1e7513cf21c41d0fa9617fd7554b5a0 (diff)
downloadATCD-8cfd157be6db4ed2fe147a940b506582e2810fb9.tar.gz
ChangeLogTag: Tue Mar 23 14:34:06 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp176
-rw-r--r--TAO/CIAO/CIDLC/ServantSourceGenerator.cpp25
-rw-r--r--TAO/CIAO/ChangeLog21
3 files changed, 102 insertions, 120 deletions
diff --git a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
index 1eab014edab..7d7b83e7d6d 100644
--- a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
+++ b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp
@@ -298,81 +298,79 @@ namespace
Traversal::Belongs read_belongs_;
};
- struct FacetEmitter : Traversal::ProviderData,
+ struct InterfaceEmitter : Traversal::UnconstrainedInterface,
+ EmitterBase
+ {
+ InterfaceEmitter (Context& c)
+ : EmitterBase (c)
+ {}
+
+ bool
+ add (UnconstrainedInterface& i)
+ {
+ return interfaces_.insert (&i).second;
+ }
+
+ virtual void
+ traverse (UnconstrainedInterface& i)
+ {
+ if (add (i))
+ {
+ Traversal::UnconstrainedInterface::traverse (i);
+ }
+ }
+
+ private:
+ std::set<UnconstrainedInterface*> interfaces_;
+ };
+
+ struct FacetEmitter : Traversal::UnconstrainedInterface,
EmitterBase
{
FacetEmitter (Context& c)
- : EmitterBase (c),
- simple_type_name_emitter_ (c.os ()),
- stripped_type_name_emitter_ (c.os ()),
- enclosing_type_name_emitter_ (c.os ())
+ : EmitterBase (c)
{
- simple_belongs_.node_traverser (simple_type_name_emitter_);
- stripped_belongs_.node_traverser (stripped_type_name_emitter_);
- enclosing_belongs_.node_traverser (enclosing_type_name_emitter_);
}
virtual void
- traverse (SemanticGraph::Provider& p)
+ traverse (UnconstrainedInterface& i)
{
+ ScopedName scoped (i.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+
// Open a namespace.
os << STRS[GLUE_NS]
- << regex::perl_s (p.scoped_name ().scope_name ().scope_name ().str (),
+ << regex::perl_s (i.scoped_name ().scope_name ().str (),
"/::/_/")
- << "{";
-
- os << "class " << ctx.export_macro () << " ";
-
- Traversal::ProviderData::belongs (p, simple_belongs_);
-
- os << "_Servant" << endl
- << ": public virtual POA_";
-
- Traversal::ProviderData::belongs (p, stripped_belongs_);
-
- os << "," << endl
- << STRS[INH_RCSB]
- << endl
<< "{"
- << "public:" << endl;
-
- Traversal::ProviderData::belongs (p, simple_belongs_);
-
- os << "_Servant (" << endl;
-
- Traversal::ProviderData::belongs (p, enclosing_belongs_);
-
- os << "::CCM_";
-
- Traversal::ProviderData::belongs (p, simple_belongs_);
-
- os << "_ptr executor," << endl
- << "::Components::CCMContext_ptr ctx);" << endl;
-
- os << "virtual ~";
-
- Traversal::ProviderData::belongs (p, simple_belongs_);
-
- os << "_Servant (void);" << endl;
+ << "class " << ctx.export_macro () << " " << i.name ()
+ << "_Servant" << endl
+ << ": public virtual POA_" << stripped << "," << endl
+ << STRS[INH_RCSB] << endl
+ << "{"
+ << "public:" << endl
+ << i.name () << "_Servant (" << endl
+ << i.scoped_name ().scope_name () << "::CCM_" << i.name ()
+ << "_ptr executor," << endl
+ << "::Components::CCMContext_ptr ctx);" << endl
+ << "virtual ~" << i.name () << "_Servant (void);" << endl;
{
- Traversal::Belongs belongs_;
- Traversal::Interface interface_emitter;
- belongs_.node_traverser (interface_emitter);
+ InterfaceEmitter interface_emitter (ctx);
- Traversal::Defines defines;
- Traversal::Inherits inherits;
- interface_emitter.edge_traverser (defines);
- interface_emitter.edge_traverser (inherits);
+ Traversal::Defines defines_;
+ Traversal::Inherits inherits_;
+ interface_emitter.edge_traverser (defines_);
+ interface_emitter.edge_traverser (inherits_);
AttributeEmitter attribute_emitter (ctx);
ReadOnlyAttributeEmitter read_only_attribute_emitter (ctx);
- defines.node_traverser (attribute_emitter);
- defines.node_traverser (read_only_attribute_emitter);
+ defines_.node_traverser (attribute_emitter);
+ defines_.node_traverser (read_only_attribute_emitter);
OperationEmitter operation_emitter (ctx);
- defines.node_traverser (operation_emitter);
- inherits.node_traverser (interface_emitter);
+ defines_.node_traverser (operation_emitter);
+ inherits_.node_traverser (interface_emitter);
Traversal::Receives receives;
Traversal::Belongs returns;
@@ -405,41 +403,26 @@ namespace
inout_belongs.node_traverser (inout_arg_emitter);
out_belongs.node_traverser (out_arg_emitter);
- belongs (p, belongs_);
+ inherits (i, inherits_);
+ names (i, defines_);
}
os << "// Get component implementation." << endl
<< "virtual CORBA::Object_ptr" << endl
<< "_get_component (" << endl
<< STRS[ENV_SNGL_HDR] << ")" << endl
- << STRS[EXCP_SNGL] << ";" << endl;
-
- os << "protected:" << endl
- << "// Facet executor." << endl;
-
- Traversal::ProviderData::belongs (p, enclosing_belongs_);
-
- os << "::CCM_";
-
- Traversal::ProviderData::belongs (p, simple_belongs_);
-
- os << "_var executor_;" << endl;
-
- os << "// Context object." << endl
+ << STRS[EXCP_SNGL] << ";" << endl
+ << "protected:" << endl
+ << "// Facet executor." << endl
+ << i.scoped_name ().scope_name ()<< "::CCM_" << i.name ()
+ << "_var executor_;" << endl
+ << "// Context object." << endl
<< "::Components::CCMContext_var ctx_;" << endl
- << "};" << endl << endl;
+ << "};" << endl;
// Close the CIAO_GLUE namespace.
os << "}" << endl;
}
-
- private:
- SimpleTypeNameEmitter simple_type_name_emitter_;
- StrippedTypeNameEmitter stripped_type_name_emitter_;
- EnclosingTypeNameEmitter enclosing_type_name_emitter_;
- Traversal::Belongs simple_belongs_;
- Traversal::Belongs stripped_belongs_;
- Traversal::Belongs enclosing_belongs_;
};
struct ContextEmitter : Traversal::Component, EmitterBase
@@ -669,8 +652,15 @@ namespace
// This can be moved later to ServantEmitter::pre() or out on its own.
{
Traversal::Defines defines;
+
+ Traversal::Provider provider;
+ defines.node_traverser (provider);
+
+ Traversal::Belongs belongs;
+ provider.edge_traverser (belongs);
+
FacetEmitter facet_emitter (ctx);
- defines.node_traverser (facet_emitter);
+ belongs.node_traverser (facet_emitter);
names (t, defines);
}
@@ -813,32 +803,6 @@ namespace
}
};
- struct InterfaceEmitter : Traversal::UnconstrainedInterface,
- EmitterBase
- {
- InterfaceEmitter (Context& c)
- : EmitterBase (c)
- {}
-
- bool
- add (UnconstrainedInterface& i)
- {
- return interfaces_.insert (&i).second;
- }
-
- virtual void
- traverse (UnconstrainedInterface& i)
- {
- if (add (i))
- {
- Traversal::UnconstrainedInterface::traverse (i);
- }
- }
-
- private:
- std::set<UnconstrainedInterface*> interfaces_;
- };
-
struct ServantEmitter : Traversal::Component, EmitterBase
{
ServantEmitter (Context& c)
diff --git a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
index 53cd5d2ee0d..dc622ad0921 100644
--- a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
+++ b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
@@ -420,12 +420,8 @@ namespace
EmitterBase
{
FacetEmitter (Context& c)
- : EmitterBase (c),
- scope_type_name_emitter_ (c.os ()),
- simple_type_name_emitter_ (c.os ())
+ : EmitterBase (c)
{
- scope_belongs_.node_traverser (scope_type_name_emitter_);
- simple_belongs_.node_traverser (simple_type_name_emitter_);
}
virtual void
@@ -536,12 +532,6 @@ namespace
// Close the CIAO_GLUE namespace.
os << "}" << endl;
}
-
- private:
- EnclosingTypeNameEmitter scope_type_name_emitter_;
- SimpleTypeNameEmitter simple_type_name_emitter_;
- Traversal::Belongs scope_belongs_;
- Traversal::Belongs simple_belongs_;
};
struct ContextEmitter : Traversal::Component, EmitterBase
@@ -1423,11 +1413,13 @@ namespace
: EmitterBase (c),
type_name_emitter_ (c.os ()),
simple_type_name_emitter_ (c.os ()),
- servant_type_name_emitter_ (c.os ())
+ servant_type_name_emitter_ (c.os ()),
+ enclosing_type_name_emitter_ (c.os ())
{
belongs_.node_traverser (type_name_emitter_);
simple_belongs_.node_traverser (simple_type_name_emitter_);
servant_belongs_.node_traverser (servant_type_name_emitter_);
+ enclosing_belongs_.node_traverser (enclosing_type_name_emitter_);
}
virtual void
@@ -1443,8 +1435,11 @@ namespace
<< "{"
<< "if (::CORBA::is_nil (this->provide_"
<< p.name () << "_.in ()))" << endl
- << "{"
- << p.scoped_name ().scope_name ().scope_name () << "::CCM_";
+ << "{";
+
+ Traversal::ProviderData::belongs (p, enclosing_belongs_);
+
+ os << "::CCM_";
Traversal::ProviderData::belongs (p, simple_belongs_);
@@ -1520,9 +1515,11 @@ namespace
TypeNameEmitter type_name_emitter_;
SimpleTypeNameEmitter simple_type_name_emitter_;
ServantTypeNameEmitter servant_type_name_emitter_;
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
Traversal::Belongs belongs_;
Traversal::Belongs simple_belongs_;
Traversal::Belongs servant_belongs_;
+ Traversal::Belongs enclosing_belongs_;
};
struct ConsumesEmitter : Traversal::ConsumerData,
diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog
index 9e9f66b7a0f..e32dfa37291 100644
--- a/TAO/CIAO/ChangeLog
+++ b/TAO/CIAO/ChangeLog
@@ -1,3 +1,24 @@
+Tue Mar 23 14:34:06 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Modified code generated by FacetEmitter class to generate
+ the _Servant class for a facet in the scope where the IDL
+ interface the facet employs is defined, as mandated by the
+ CCM spec.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Change generation of the declaration of a local variable
+ which is a _var of the executor class for a facet to match the
+ scope of the declaration of the executor class itself, which
+ must be, as mentioned above, in the same scope as the declaration
+ of the IDL interface used by the facet.
+
+ Thanks to Jessica Pistole <Jessica.Pistole@jhuapl.edu> for
+ sending the example IDL/CIDL files that demostrated the
+ problem.
+
Tue Mar 16 11:22:44 2004 Venkita Subramonian <venkita@cs.wustl.edu>
* docs/static_ciao_contents.html: