summaryrefslogtreecommitdiff
path: root/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/CIDLC/ServantSourceGenerator.cpp')
-rw-r--r--TAO/CIAO/CIDLC/ServantSourceGenerator.cpp415
1 files changed, 214 insertions, 201 deletions
diff --git a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
index c389eade22e..a83c7673f4f 100644
--- a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
+++ b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp
@@ -24,41 +24,41 @@ namespace
Context (std::ostream& os,
string export_macro,
CommandLine const& cl)
- : os_ (os),
- export_macro_ (export_macro),
- cl_ (cl)
+ : os_ (os),
+ export_macro_ (export_macro),
+ cl_ (cl)
{
}
- std::ostream&
- os ()
- {
- return os_;
- }
+ std::ostream&
+ os ()
+ {
+ return os_;
+ }
- string
- export_macro ()
- {
- return export_macro_;
- }
+ string
+ export_macro ()
+ {
+ return export_macro_;
+ }
- CommandLine const&
- cl ()
- {
- return cl_;
- }
+ CommandLine const&
+ cl ()
+ {
+ return cl_;
+ }
- string
- composition_name ()
- {
- return composition_name_;
- }
+ string
+ composition_name ()
+ {
+ return composition_name_;
+ }
- void
- composition_name (const string& name)
- {
- composition_name_ = name;
- }
+ void
+ composition_name (const string& name)
+ {
+ composition_name_ = name;
+ }
private:
std::ostream& os_;
@@ -280,13 +280,13 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");";
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");";
- Traversal::Operation::returns (o, ace_check_returns_);
+ Traversal::Operation::returns (o, ace_check_returns_);
- os << endl;
- }
+ os << endl;
+ }
}
virtual void
@@ -439,9 +439,9 @@ namespace
traverse (Interface& i)
{
if (add (i))
- {
- Traversal::Interface::traverse (i);
- }
+ {
+ Traversal::Interface::traverse (i);
+ }
}
private:
@@ -451,7 +451,7 @@ namespace
// Generates the set operation of a ReadWriteAttribute.
template <typename T>
struct WriteAttributeEmitter : Traversal::ReadWriteAttribute,
- EmitterBase
+ EmitterBase
{
WriteAttributeEmitter (Context& c, T& scope, bool swapping)
: EmitterBase (c),
@@ -520,9 +520,9 @@ namespace
os << "{";
if (swapping_)
- {
- this->gen_swapping_set ();
- }
+ {
+ this->gen_swapping_set ();
+ }
os << "this->executor_->" << a.name () << " (" << endl
<< a.name () << endl
@@ -550,8 +550,8 @@ namespace
// Generates operations associated with attributes.
template <typename T>
struct AttributeEmitter : Traversal::ReadAttribute,
- Traversal::ReadWriteAttribute,
- EmitterBase
+ Traversal::ReadWriteAttribute,
+ EmitterBase
{
AttributeEmitter (Context& c, T& scope)
: EmitterBase (c),
@@ -640,9 +640,9 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- this->gen_swapping_get (a);
- }
+ {
+ this->gen_swapping_get (a);
+ }
os << "return this->executor_->" << a.name () << " (" << endl
<< STRS[ENV_SNGL_ARG] << ");" << endl
@@ -719,9 +719,9 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- this->gen_swapping_get (a);
- }
+ {
+ this->gen_swapping_get (a);
+ }
os << "return this->executor_->" << a.name () << " (" << endl
<< STRS[ENV_SNGL_ARG] << ");" << endl
@@ -750,7 +750,7 @@ namespace
// @@@ (JP) Need to support exceptions.
template <typename T>
struct ReadOnlyAttributeEmitter : Traversal::ReadAttribute,
- EmitterBase
+ EmitterBase
{
ReadOnlyAttributeEmitter (Context& c,
T& scope)
@@ -803,9 +803,9 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- this->gen_swapping_get (a);
- }
+ {
+ this->gen_swapping_get (a);
+ }
os << "return this->executor_->" << a.name () << " (" << endl
<< STRS[ENV_SNGL_ARG] << ");" << endl
@@ -1068,13 +1068,13 @@ namespace
: EmitterBase (c)
{}
- // Nested classes used by ContextEmitter.
+ // Nested classes used by ContextEmitter.
private:
struct ContextPortsEmitter : Traversal::SingleUserData,
- Traversal::MultiUserData,
- Traversal::PublisherData,
- Traversal::EmitterData,
- EmitterBase
+ Traversal::MultiUserData,
+ Traversal::PublisherData,
+ Traversal::EmitterData,
+ EmitterBase
{
ContextPortsEmitter (Context& c, SemanticGraph::Component& scope)
: EmitterBase (c),
@@ -1684,14 +1684,14 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- os << "," << endl
- << " ug_ctx_svnt_base (h, c, sv)" << endl;
- }
+ {
+ os << "," << endl
+ << " ug_ctx_svnt_base (h, c, sv)" << endl;
+ }
else
- {
- os << endl;
- }
+ {
+ os << endl;
+ }
os << "{"
<< "}";
@@ -1726,55 +1726,55 @@ namespace
// Extra *_Context methods for swapping container.
if (swapping)
- {
- os << "// Operations defined in " << t.scoped_name ().scope_name ()
- << "::CCM_" << t.name () << "_Context" << endl
- << "// that enable component swapping in the container"
- << endl << endl;
-
- os << STRS[COMP_CD] << " *" << endl
- << t.name () << "_Context::get_registered_consumers (" << endl
- << "const char *publisher_name" << endl
- << STRS[ENV_SRC] << ")" << endl
- << STRS[EXCP_START] << endl
- << STRS[EXCP_SYS] << "," << endl
- << STRS[EXCP_IN] << "," << endl
- << STRS[EXCP_IC] << "))" << endl
- << "{"
- << "if (publisher_name == 0)" << endl
- << "{"
- << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);"
- << "}"
- << STRS[COMP_CD] << " *tmp = 0;"
- << STRS[COMP_CD] << "_var retval;"
- << "CORBA::ULong _ciao_index = 0;"
- << "CORBA::ULong _ciao_size = 0;"
- << STRS[ACE_UA] << " (tmp);"
- << STRS[ACE_UA] << " (retval);"
- << STRS[ACE_UA] << " (_ciao_index);"
- << STRS[ACE_UA] << " (_ciao_size);" << endl;
-
- // Generate IF block for each event sources.
{
- Traversal::Component component_emitter;
-
- Traversal::Inherits inherits;
- inherits.node_traverser (component_emitter);
-
- Traversal::Defines defines;
- component_emitter.edge_traverser (defines);
- component_emitter.edge_traverser (inherits);
-
- SwappableGetConsumersEmitter get_consumers_emitter (ctx);
- defines.node_traverser (get_consumers_emitter);
-
- component_emitter.traverse (t);
+ os << "// Operations defined in " << t.scoped_name ().scope_name ()
+ << "::CCM_" << t.name () << "_Context" << endl
+ << "// that enable component swapping in the container"
+ << endl << endl;
+
+ os << STRS[COMP_CD] << " *" << endl
+ << t.name () << "_Context::get_registered_consumers (" << endl
+ << "const char *publisher_name" << endl
+ << STRS[ENV_SRC] << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{"
+ << "if (publisher_name == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);"
+ << "}"
+ << STRS[COMP_CD] << " *tmp = 0;"
+ << STRS[COMP_CD] << "_var retval;"
+ << "CORBA::ULong _ciao_index = 0;"
+ << "CORBA::ULong _ciao_size = 0;"
+ << STRS[ACE_UA] << " (tmp);"
+ << STRS[ACE_UA] << " (retval);"
+ << STRS[ACE_UA] << " (_ciao_index);"
+ << STRS[ACE_UA] << " (_ciao_size);" << endl;
+
+ // Generate IF block for each event sources.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ SwappableGetConsumersEmitter get_consumers_emitter (ctx);
+ defines.node_traverser (get_consumers_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);"
+ << "}";
}
- os << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);"
- << "}";
- }
-
os << "// CIAO-specific." << endl << endl;
os << t.name () << "_Context *" << endl
@@ -1794,10 +1794,10 @@ namespace
: EmitterBase (c)
{}
- // Nested classes used by ServantEmitter.
+ // Nested classes used by ServantEmitter.
private:
struct NavigationEmitsEmitter : Traversal::EmitterData,
- EmitterBase
+ EmitterBase
{
NavigationEmitsEmitter (Context& c)
: EmitterBase (c),
@@ -1892,10 +1892,10 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (0);" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (0);" << endl;
+ }
os << "return this->context_->subscribe_" << p.name ()
<< " (" << endl
@@ -1914,10 +1914,10 @@ namespace
<< "{";
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (0);" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (0);" << endl;
+ }
os << "return this->context_->subscribe_" << p.name ()
<< "_generic (" << endl
@@ -1938,14 +1938,14 @@ namespace
<< "{";
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (";
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (";
- Traversal::PublisherData::belongs (p, belongs_);
+ Traversal::PublisherData::belongs (p, belongs_);
- os << "Consumer::_nil ());" << endl;
- }
+ os << "Consumer::_nil ());" << endl;
+ }
os << "return this->context_->unsubscribe_"
<< p.name () << " (" << endl
@@ -2103,6 +2103,8 @@ namespace
<< endl
<< "c" << endl
<< STRS[ENV_ARG] << ");" << endl
+ << "this->add_receptacle (\"" << u.name ()
+ << "\", c, 0);" << endl
<< "}";
Traversal::SingleUserData::belongs (u, belongs_);
@@ -2151,10 +2153,14 @@ namespace
<< STRS[EXCP_ECL] << "," << endl
<< STRS[EXCP_IC] << "))" << endl
<< "{"
- << "return this->context_->connect_" << u.name () << " ("
+ << "::Components::Cookie * cookie = "
+ "this->context_->connect_" << u.name () << " ("
<< endl
<< "c" << endl
<< STRS[ENV_ARG] << ");" << endl
+ << "this->add_receptacle (\"" << u.name ()
+ << "\", c, cookie);" << endl
+ << "return cookie;" << endl
<< "}";
Traversal::MultiUserData::belongs (u, belongs_);
@@ -2384,14 +2390,14 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (";
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (";
- Traversal::ProviderData::belongs (p, belongs_);
+ Traversal::ProviderData::belongs (p, belongs_);
- os << "::_nil ());" << endl;
- }
+ os << "::_nil ());" << endl;
+ }
os << "if (! ::CORBA::is_nil (this->provide_"
<< p.name () << "_.in ()))" << endl
@@ -2899,7 +2905,7 @@ namespace
os << "return ecb._retn ();" << endl
<< "}";
- }
+ }
private:
TypeNameEmitter type_name_emitter_;
@@ -2976,29 +2982,29 @@ namespace
}
if (gen_factory_)
- {
- os << "CIAO_REGISTER_OBV_FACTORY (" << endl;
+ {
+ os << "CIAO_REGISTER_OBV_FACTORY (" << endl;
- Traversal::ConsumerData::belongs (c, belongs_);
+ Traversal::ConsumerData::belongs (c, belongs_);
- os << "_init," << endl;
+ os << "_init," << endl;
- Traversal::ConsumerData::belongs (c, belongs_);
+ Traversal::ConsumerData::belongs (c, belongs_);
- os << ");" << endl;
- }
+ os << ");" << endl;
+ }
else
- {
- cerr << " " << endl
- << "event type ";
+ {
+ cerr << " " << endl
+ << "event type ";
- Traversal::ConsumerData::belongs (c, cerr_belongs_);
+ Traversal::ConsumerData::belongs (c, cerr_belongs_);
- cerr << " consumed by " << c.scoped_name () << endl
- << "has an operation, factory declaration,"
- << " or private member. "
- << "ORB registration of default factory not generated" << endl;
- }
+ cerr << " consumed by " << c.scoped_name () << endl
+ << "has an operation, factory declaration,"
+ << " or private member. "
+ << "ORB registration of default factory not generated" << endl;
+ }
}
private:
@@ -3163,24 +3169,29 @@ namespace
<< "this->context_," << endl
<< t.name () << "_Context (h, c, this));" << endl;
+ os << "// Set the instance id of the component on the context" << endl
+ << endl
+ << "this->context_->_ciao_instance_id (this->ins_name_);" << endl;
+
+
// Generate the macro to register a value factory for each
// eventtype consumed.
if (!ctx.cl ().get_value ("suppress-register-factory", false))
- {
- Traversal::Component component_emitter;
+ {
+ Traversal::Component component_emitter;
- Traversal::Inherits inherits;
- inherits.node_traverser (component_emitter);
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
- Traversal::Defines defines;
- component_emitter.edge_traverser (defines);
- component_emitter.edge_traverser (inherits);
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
- RegisterValueFactoryEmitter factory_emitter (ctx);
- defines.node_traverser (factory_emitter);
+ RegisterValueFactoryEmitter factory_emitter (ctx);
+ defines.node_traverser (factory_emitter);
- component_emitter.traverse (t);
- }
+ component_emitter.traverse (t);
+ }
os << "ACE_TRY_NEW_ENV" << endl
<< "{"
@@ -3224,10 +3235,10 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << "ACE_CHECK;" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << "ACE_CHECK;" << endl;
+ }
os << "for (CORBA::ULong i = 0; i < descr.length (); ++i)" << endl
<< "{"
@@ -3323,10 +3334,10 @@ namespace
<< "{";
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (0);" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (0);" << endl;
+ }
os << "// If the component has no receptacles, this will be unused."
<< endl
@@ -3371,10 +3382,10 @@ namespace
<< STRS[ACE_UA] << " (ck);" << endl;
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (CORBA::Object::_nil ());" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (CORBA::Object::_nil ());" << endl;
+ }
os << "if (name == 0)" << endl
<< "{"
@@ -3436,10 +3447,10 @@ namespace
<< "{";
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << "ACE_CHECK;" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << "ACE_CHECK;" << endl;
+ }
os << "if (emitter_name == 0)" << endl
<< "{"
@@ -3481,10 +3492,10 @@ namespace
<< "{";
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (0);" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (0);" << endl;
+ }
os << "// Just in case there are no if blocks" << endl
<< STRS[ACE_UA] << " (subscribe);" << endl
@@ -3527,11 +3538,11 @@ namespace
<< "{";
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (" << STRS[COMP_ECB]
- << "::_nil ());" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (" << STRS[COMP_ECB]
+ << "::_nil ());" << endl;
+ }
os << "// Just in case there are no if blocks" << endl
<< STRS[ACE_UA] << " (ck);" << endl
@@ -3591,10 +3602,10 @@ namespace
<< "{";
if (swapping)
- {
- os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
- << STRS[ACE_CR] << " (CORBA::Object::_nil ());" << endl;
- }
+ {
+ os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"
+ << STRS[ACE_CR] << " (CORBA::Object::_nil ());" << endl;
+ }
os << "if (name == 0)" << endl
<< "{"
@@ -3603,6 +3614,7 @@ namespace
<< "::CORBA::Object::_nil ());" << endl
<< "}";
+
// Generate an IF block for each facet inside provide_facet().
{
Traversal::Component component_emitter;
@@ -3622,6 +3634,7 @@ namespace
os << " return CORBA::Object::_nil ();"
<< "}";
+
os << "// Supported operations." << endl << endl;
// Generate operations for all supported interfaces.
@@ -3746,7 +3759,7 @@ namespace
flat_name_manages_.node_traverser (flat_name_emitter_);
}
- // Nested classes used by this emitter.
+ // Nested classes used by this emitter.
private:
struct HomeOpExecReturnEmitter : Traversal::Type
{
@@ -4067,15 +4080,15 @@ namespace
bool swapping = (swap_option == "upgradeable");
if (swapping)
- {
- os << ", \"" << ctx.composition_name ();
+ {
+ os << ", \"" << ctx.composition_name ();
- Traversal::Home::manages (t, flat_name_manages_);
+ Traversal::Home::manages (t, flat_name_manages_);
- os << "\", ";
+ os << "\", ";
- Traversal::Home::manages (t, repo_id_manages_);
- }
+ Traversal::Home::manages (t, repo_id_manages_);
+ }
os << ")" << endl
<< "{"
@@ -4358,9 +4371,9 @@ ServantSourceEmitter::pre (TranslationUnit&)
string file_name ("");
if (! file_.empty ())
- {
- file_name = file_.leaf ();
- }
+ {
+ file_name = file_.leaf ();
+ }
string file_suffix = cl_.get_value ("svnt-hdr-file-suffix",
"_svnt.h");
@@ -4409,7 +4422,7 @@ ServantSourceEmitter::generate (TranslationUnit& u)
//--
Traversal::Root root;
-// includes.node_traverser (region);
+ // includes.node_traverser (region);
contains_root.node_traverser (root);
// Layer 3