diff options
Diffstat (limited to 'TAO/CIAO/CIDLC/ServantSourceGenerator.cpp')
-rw-r--r-- | TAO/CIAO/CIDLC/ServantSourceGenerator.cpp | 2005 |
1 files changed, 1057 insertions, 948 deletions
diff --git a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp index 29c8411f4db..249d51308a2 100644 --- a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp +++ b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp @@ -3,19 +3,13 @@ // cvs-id : $Id$ #include "ServantSourceGenerator.hpp" -#include "CorbaTypeNameEmitters.hpp" -#include "UtilityTypeNameEmitters.hpp" -#include "ParameterEmitter_T.hpp" -#include "AttributeSourceEmitters_T.hpp" -#include "CompositionEmitter.hpp" -#include "ModuleEmitter.hpp" -#include "InterfaceEmitter.hpp" #include "Literals.hpp" - -#include <ostream> +#include "TypeNameEmitter.hpp" #include "CCF/CodeGenerationKit/Regex.hpp" +#include <ostream> + using namespace CCF::CIDL; using namespace CCF::CIDL::SemanticGraph; using namespace StringLiterals; @@ -24,51 +18,137 @@ using std::string; namespace { - struct RepoIdEmitter : Traversal::Type, - EmitterBase + class Context { - RepoIdEmitter (Context& c) - : EmitterBase (c) + public: + Context (std::ostream& os, + string export_macro, + CommandLine const& cl) + : os_ (os), + export_macro_ (export_macro), + cl_ (cl) + { + } + + std::ostream& + os () + { + return os_; + } + + string + export_macro () + { + return export_macro_; + } + + CommandLine const& + cl () + { + return cl_; + } + + string + composition_name () + { + return composition_name_; + } + + void + composition_name (const string& name) + { + composition_name_ = name; + } + + private: + std::ostream& os_; + string export_macro_; + CommandLine const& cl_; + string composition_name_; + }; + + class EmitterBase + { + public: + EmitterBase (Context& c) + : ctx (c), + os (ctx.os ()) { } + protected: + Context& ctx; + std::ostream& os; + }; + + struct RepoIdEmitter : Traversal::Type + { + RepoIdEmitter (std::ostream& os_) + : os (os_) + {} + virtual void traverse (SemanticGraph::Type& t) { os << "\"" << t.context ().get<string> (STRS[REPO_ID]) << "\""; } - }; - struct ConsumerRepoIdEmitter : Traversal::Type, - EmitterBase + private: + std::ostream& os; + }; + + struct ModuleEmitter : Traversal::Module, EmitterBase { - ConsumerRepoIdEmitter (Context& c) + ModuleEmitter (Context& c) : EmitterBase (c) { } virtual void - traverse (SemanticGraph::Type& t) + pre (Type& t) { - string holder (t.context ().get<string> (STRS[REPO_ID])); - os << "\"" << holder.substr (0, holder.rfind (':')) - << "Consumer:1.0\""; + os << "namespace " << t.name () << "{"; + } + + virtual void + post (Type&) + { + os << "}"; } }; - struct FlatNameEmitter : Traversal::Type, - EmitterBase + struct FlatNameEmitter : Traversal::Type { - FlatNameEmitter (Context& c) - : EmitterBase (c) + FlatNameEmitter (std::ostream& os_) + : os (os_) + {} + + virtual void + traverse (SemanticGraph::Type& t) { + os << regex::perl_s (t.scoped_name ().str (), "/::/_/"); } + private: + std::ostream& os; + }; + + struct ConsumerRepoIdEmitter : Traversal::Type + { + ConsumerRepoIdEmitter (std::ostream& os_) + : os (os_) + {} + virtual void traverse (SemanticGraph::Type& t) { - os << regex::perl_s (t.scoped_name ().str (), "/::/_/"); + string holder (t.context ().get<string> (STRS[REPO_ID])); + os << "\"" << holder.substr (0, holder.rfind (':')) + << "Consumer:1.0\""; } + + private: + std::ostream& os; }; struct OperationExecEmitter : Traversal::Operation, @@ -144,6 +224,24 @@ namespace std::ostream& os; }; + // For generating parameter names. + template <typename T> + struct ParameterEmitter : T + { + ParameterEmitter (std::ostream& os_) + : os (os_) + {} + + virtual void + name (typename T::Type& p) + { + os << " " << p.name (); + } + + private: + std::ostream& os; + }; + // For generating parameter names in operation delegation. template <typename T> struct ParameterExecEmitter : T @@ -169,24 +267,24 @@ namespace T& scope) : EmitterBase (c), scope_ (scope), - ace_check_return_emitter_ (c) + ace_check_return_emitter_ (c.os ()) { ace_check_returns_.node_traverser (ace_check_return_emitter_); } - + // Overridden by facet and home operation emitters to do nothing. virtual void gen_swap_related (Type& o) { string swap_option = ctx.cl ().get_value ("custom-container", ""); bool swapping = (swap_option == "upgradeable"); - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"; - + Traversal::Operation::returns (o, ace_check_returns_); - + os << endl; } } @@ -220,7 +318,7 @@ namespace virtual void raises_pre (Type&) { - os << STRS[EXCP_START] << " " + os << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl; } @@ -241,7 +339,7 @@ namespace { os << "{"; - this->gen_swap_related (o); + this->gen_swap_related (o); OperationExecEmitter operation_emitter (ctx); @@ -273,6 +371,457 @@ namespace Traversal::Returns ace_check_returns_; }; + // Generic scoped typename emitter used by various other emitters. + struct TypeNameEmitter : Traversal::Type + { + TypeNameEmitter (std::ostream& os_) + : os (os_) + {} + + virtual void + traverse (SemanticGraph::Type& t) + { + os << t.scoped_name (); + } + + private: + std::ostream& os; + }; + + // Generic local typename emitter used by various other emitters. + struct SimpleTypeNameEmitter : Traversal::Type + { + SimpleTypeNameEmitter (std::ostream& os_) + : os (os_) + {} + + virtual void + traverse (SemanticGraph::Type& t) + { + os << t.name (); + } + + private: + std::ostream& os; + }; + + // Generate name of type's enclosing scope. + struct EnclosingTypeNameEmitter : Traversal::Type + { + EnclosingTypeNameEmitter (std::ostream& os_) + : os (os_) + {} + + virtual void + traverse (SemanticGraph::Type& t) + { + os << t.scoped_name ().scope_name (); + } + + private: + std::ostream& os; + }; + + struct InterfaceEmitter : Traversal::Interface, + EmitterBase + { + InterfaceEmitter (Context& c) + : EmitterBase (c) + {} + + bool + add (Interface& i) + { + return interfaces_.insert (&i).second; + } + + virtual void + traverse (Interface& i) + { + if (add (i)) + { + Traversal::Interface::traverse (i); + } + } + + private: + std::set<Interface*> interfaces_; + }; + + // Generates the set operation of a ReadWriteAttribute. + template <typename T> + struct WriteAttributeEmitter : Traversal::ReadWriteAttribute, + EmitterBase + { + WriteAttributeEmitter (Context& c, T& scope, bool swapping) + : EmitterBase (c), + scope_ (scope), + write_type_name_emitter_ (c.os ()), + type_name_emitter_ (c.os ()), + swapping_ (swapping) + { + write_belongs_.node_traverser (write_type_name_emitter_); + + edge_traverser (set_raises_); + set_raises_.node_traverser (type_name_emitter_); + } + + virtual void + gen_swapping_set () + { + os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" + << "ACE_CHECK;" << endl; + } + + virtual void + pre (SemanticGraph::ReadWriteAttribute&) + { + os << "void" << endl; + } + + virtual void + name (SemanticGraph::ReadWriteAttribute& a) + { + os << scope_.name () << "_Servant::" << a.name () << " (" << endl; + + Traversal::ReadWriteAttribute::belongs (a, write_belongs_); + + os << " " << a.name () << endl + << STRS[ENV_SRC] << ")" << endl; + } + + virtual void + get_raises (SemanticGraph::ReadWriteAttribute&) + { + } + + virtual void + set_raises_none (SemanticGraph::ReadWriteAttribute&) + { + os << STRS[EXCP_SNGL]; + } + + virtual void + set_raises_pre (SemanticGraph::ReadWriteAttribute&) + { + os << STRS[EXCP_START] << endl + << STRS[EXCP_SYS] << "," << endl; + } + + virtual void + set_raises_post (SemanticGraph::ReadWriteAttribute&) + { + os << "))" << endl; + } + + virtual void + post (SemanticGraph::ReadWriteAttribute& a) + { + os << "{"; + + if (swapping_) + { + this->gen_swapping_set (); + } + + os << "this->executor_->" << a.name () << " (" << endl + << a.name () << endl + << STRS[ENV_ARG] << ");" << endl + << "}"; + } + + virtual void + comma (SemanticGraph::ReadWriteAttribute&) + { + os << "," << endl; + } + + protected: + T& scope_; + Traversal::Belongs write_belongs_; + + private: + INArgTypeNameEmitter write_type_name_emitter_; + TypeNameEmitter type_name_emitter_; + Traversal::SetRaises set_raises_; + bool swapping_; + }; + + // Generates operations associated with attributes. + template <typename T> + struct AttributeEmitter : Traversal::ReadAttribute, + Traversal::ReadWriteAttribute, + EmitterBase + { + AttributeEmitter (Context& c, T& scope) + : EmitterBase (c), + scope_ (scope), + read_type_name_emitter_ (c.os ()), + type_name_emitter_ (c.os ()), + ace_check_return_emitter_ (c.os ()) + { + read_belongs_.node_traverser (read_type_name_emitter_); + ace_check_return_belongs_.node_traverser (ace_check_return_emitter_); + + edge_traverser (get_raises_); + get_raises_.node_traverser (type_name_emitter_); + } + + // ReadWriteAttribute + // + + // Overridden by facet attribute emitter. + virtual void + gen_swapping_get (SemanticGraph::ReadWriteAttribute& a) + { + os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"; + + Traversal::ReadWriteAttribute::belongs (a, ace_check_return_belongs_); + + os << endl; + } + + // Overridden by facet attribute emitter. + virtual void + gen_write_operation (SemanticGraph::ReadWriteAttribute& a, + bool swapping) + { + WriteAttributeEmitter<T> write_attribute_emitter (ctx, + scope_, + swapping); + write_attribute_emitter.traverse (a); + } + + virtual void + pre (SemanticGraph::ReadWriteAttribute& a) + { + Traversal::ReadWriteAttribute::belongs (a, read_belongs_); + + os << endl; + } + + virtual void + name (SemanticGraph::ReadWriteAttribute& a) + { + os << scope_.name () << "_Servant::" << a.name () << " (" << endl + << STRS[ENV_SNGL_SRC] << ")" << endl; + } + + virtual void + get_raises_none (SemanticGraph::ReadWriteAttribute&) + { + os << STRS[EXCP_SNGL] << endl; + } + + virtual void + get_raises_pre (SemanticGraph::ReadWriteAttribute&) + { + os << STRS[EXCP_START] << endl + << STRS[EXCP_SYS] << "," << endl; + } + + virtual void + get_raises_post (SemanticGraph::ReadWriteAttribute&) + { + os << "))" << endl; + } + + virtual void + set_raises (SemanticGraph::ReadWriteAttribute&) + { + } + + virtual void + post (SemanticGraph::ReadWriteAttribute& a) + { + os << "{"; + + string swap_option = ctx.cl ().get_value ("custom-container", ""); + bool swapping = (swap_option == "upgradeable"); + + if (swapping) + { + this->gen_swapping_get (a); + } + + os << "return this->executor_->" << a.name () << " (" << endl + << STRS[ENV_SNGL_ARG] << ");" << endl + << "}"; + + this->gen_write_operation (a, swapping); + } + + virtual void + comma (SemanticGraph::ReadWriteAttribute&) + { + os << "," << endl; + } + + // ReadAttribute + // + + // Overridden by facet attribute emitter to do nothing. + virtual void + gen_swapping_get (SemanticGraph::ReadAttribute& a) + { + os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"; + + Traversal::ReadAttribute::belongs (a, ace_check_return_belongs_); + + os << endl; + } + + virtual void + pre (SemanticGraph::ReadAttribute& a) + { + Traversal::ReadAttribute::belongs (a, read_belongs_); + + os << endl; + } + + virtual void + name (SemanticGraph::ReadAttribute& a) + { + os << scope_.name () << "_Servant::" << a.name () << " (" << endl + << STRS[ENV_SNGL_SRC] << ")" << endl; + } + + virtual void + get_raises_none (SemanticGraph::ReadAttribute&) + { + os << STRS[EXCP_SNGL] << endl; + } + + virtual void + get_raises_pre (SemanticGraph::ReadAttribute&) + { + os << STRS[EXCP_START] << endl + << STRS[EXCP_SYS] << "," << endl; + } + + virtual void + get_raises_post (SemanticGraph::ReadAttribute&) + { + os << "))" << endl; + } + + virtual void + set_raises (SemanticGraph::ReadAttribute&) + { + } + + virtual void + post (SemanticGraph::ReadAttribute& a) + { + os << "{"; + + string swap_option = ctx.cl ().get_value ("custom-container", ""); + bool swapping = (swap_option == "upgradeable"); + + if (swapping) + { + this->gen_swapping_get (a); + } + + os << "return this->executor_->" << a.name () << " (" << endl + << STRS[ENV_SNGL_ARG] << ");" << endl + << "}"; + } + + virtual void + comma (SemanticGraph::ReadAttribute&) + { + os << "," << endl; + } + + protected: + T& scope_; + + private: + ReturnTypeNameEmitter read_type_name_emitter_; + TypeNameEmitter type_name_emitter_; + AceCheckReturnEmitter ace_check_return_emitter_; + Traversal::Belongs read_belongs_; + Traversal::Belongs ace_check_return_belongs_; + Traversal::GetRaises get_raises_; + }; + + // Generates operations associated with readonly attributes. + // @@@ (JP) Need to support exceptions. + template <typename T> + struct ReadOnlyAttributeEmitter : Traversal::ReadAttribute, + EmitterBase + { + ReadOnlyAttributeEmitter (Context& c, + T& scope) + : EmitterBase (c), + scope_ (scope), + read_type_name_emitter_ (c.os ()), + ace_check_return_emitter_ (c.os ()) + { + read_belongs_.node_traverser (read_type_name_emitter_); + ace_check_return_belongs_.node_traverser (ace_check_return_emitter_); + } + + // Overridden by facet attribute emitter to do nothing. + + virtual void + gen_swapping_get (SemanticGraph::ReadAttribute& a) + { + os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");"; + + Traversal::ReadAttribute::belongs (a, ace_check_return_belongs_); + + os << endl; + } + + virtual void + name (SemanticGraph::ReadAttribute& a) + { + os << scope_.name () << "_Servant::" << a.name (); + } + + virtual void + traverse (SemanticGraph::ReadAttribute& a) + { + // Does nothing here, overridden for facet attributes. + this->pre (a); + + Traversal::ReadAttribute::belongs (a, read_belongs_); + + os << endl; + + // Overridden for facet attributes. + this->name (a); + + os << " (" << endl + << STRS[ENV_SNGL_SRC] << ")" << endl + << STRS[EXCP_SNGL] << endl + << "{"; + + string swap_option = ctx.cl ().get_value ("custom-container", ""); + bool swapping = (swap_option == "upgradeable"); + + if (swapping) + { + this->gen_swapping_get (a); + } + + os << "return this->executor_->" << a.name () << " (" << endl + << STRS[ENV_SNGL_ARG] << ");" << endl + << "}"; + } + + protected: + T& scope_; + + private: + ReturnTypeNameEmitter read_type_name_emitter_; + AceCheckReturnEmitter ace_check_return_emitter_; + Traversal::Belongs read_belongs_; + Traversal::Belongs ace_check_return_belongs_; + }; + struct FacetEmitter : Traversal::UnconstrainedInterface, EmitterBase { @@ -295,7 +844,7 @@ namespace gen_swap_related (Type&) { } - + virtual void pre (Type&) { @@ -309,25 +858,22 @@ namespace << scope_.name () << "_Servant_T<T>::" << o.name (); } }; - + struct FacetWriteAttributeEmitter - : WriteAttributeSourceEmitter<SemanticGraph::Interface> + : WriteAttributeEmitter<SemanticGraph::Interface> { // Since swapping does not affect facets, we can just pass 'false' // to the base class constructor, and not override gen_swapping_set(). FacetWriteAttributeEmitter (Context& c, SemanticGraph::Interface& i) - : WriteAttributeSourceEmitter<SemanticGraph::Interface> (c, - i, - false, - false) + : WriteAttributeEmitter<SemanticGraph::Interface> (c, i, false) {} - + virtual void pre (SemanticGraph::ReadWriteAttribute& a) { os << "template <typename T>" << endl; - - WriteAttributeSourceEmitter<SemanticGraph::Interface>::pre (a); + + WriteAttributeEmitter<SemanticGraph::Interface>::pre (a); } virtual void @@ -335,27 +881,27 @@ namespace { os << scope_.name () << "_Servant_T<T>::" << a.name () << " (" << endl; - + Traversal::ReadWriteAttribute::belongs (a, write_belongs_); - + os << " " << a.name () << endl << STRS[ENV_SRC] << ")" << endl; } }; struct FacetAttributeEmitter - : AttributeSourceEmitter<SemanticGraph::Interface> + : AttributeEmitter<SemanticGraph::Interface> { FacetAttributeEmitter (Context& c, SemanticGraph::Interface& i) - : AttributeSourceEmitter<SemanticGraph::Interface> (c, i) + : AttributeEmitter<SemanticGraph::Interface> (c, i) {} - + // ReadWriteAttribute // - + // No-op override because we don't want to generate any swapping - // code for facets. + // code for facets. virtual void gen_swapping_get (SemanticGraph::ReadWriteAttribute&) { } @@ -367,13 +913,13 @@ namespace FacetWriteAttributeEmitter write_attribute_emitter (ctx, scope_); write_attribute_emitter.traverse (a); } - + virtual void pre (SemanticGraph::ReadWriteAttribute& a) { os << "template <typename T>" << endl; - - AttributeSourceEmitter<SemanticGraph::Interface>::pre (a); + + AttributeEmitter<SemanticGraph::Interface>::pre (a); } virtual void @@ -386,19 +932,19 @@ namespace // ReadAttribute // - + // No-op override because we don't want to generate any swapping - // code for facets. + // code for facets. virtual void gen_swapping_get (SemanticGraph::ReadAttribute&) { } - + virtual void pre (SemanticGraph::ReadAttribute& a) { os << "template <typename T>" << endl; - - AttributeSourceEmitter<SemanticGraph::Interface>::pre (a); + + AttributeEmitter<SemanticGraph::Interface>::pre (a); } virtual void @@ -421,9 +967,9 @@ namespace << i.scoped_name ().scope_name () << "::CCM_" << i.name () << "_ptr executor," << endl << "::Components::CCMContext_ptr c)" << endl - << " : executor_ ( " << i.scoped_name ().scope_name () << "::CCM_" + << ": executor_ (" << i.scoped_name ().scope_name () << "::CCM_" << i.name () << "::_duplicate (executor))," << endl - << " ctx_ ( ::Components::CCMContext::_duplicate (c))" << endl + << "ctx_ (::Components::CCMContext::_duplicate (c))" << endl << "{" << "}"; @@ -455,15 +1001,15 @@ namespace operation_emitter.edge_traverser (returns); operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (ctx); - ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); - ParameterEmitter<Traversal::OutParameter> out_param (ctx); + ParameterEmitter<Traversal::InParameter> in_param (os); + ParameterEmitter<Traversal::InOutParameter> inout_param (os); + ParameterEmitter<Traversal::OutParameter> out_param (os); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (ctx); - FullTypeNameEmitter type_name_emitter (ctx); + ReturnTypeNameEmitter return_type_emitter (os); + TypeNameEmitter type_name_emitter (os); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -472,9 +1018,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (ctx); - INOUTArgTypeNameEmitter inout_arg_emitter (ctx); - OUTArgTypeNameEmitter out_arg_emitter (ctx); + INArgTypeNameEmitter in_arg_emitter (os); + INOUTArgTypeNameEmitter inout_arg_emitter (os); + OUTArgTypeNameEmitter out_arg_emitter (os); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -484,32 +1030,32 @@ namespace } os << "template <typename T>" << endl - << "::CORBA::Object_ptr" << endl + << "CORBA::Object_ptr" << endl << i.name () << "_Servant_T<T>::_get_component (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_SNGL] << endl + << "ACE_THROW_SPEC ((CORBA::SystemException))" << endl << "{" << STRS[COMP_SC] << "_var sc =" << endl - << " " << STRS[COMP_SC] << "::_narrow (" << endl - << " this->ctx_.in ()" << endl - << " " << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( ::CORBA::Object::_nil ());" << endl - << "if (! ::CORBA::is_nil (sc.in ()))" << endl + << STRS[COMP_SC] << "::_narrow (" << endl + << "this->ctx_.in ()" << endl + << STRS[ENV_ARG] << ");" + << STRS[ACE_CR] << " (CORBA::Object::_nil ());" << endl + << "if (! CORBA::is_nil (sc.in ()))" << endl << "{" << "return sc->get_CCM_object (" << endl - << STRS[ENV_SNGL_ARG] << ");" + << STRS[ENV_SNGL_ARG] << ");" << endl << "}" << "::Components::EntityContext_var ec =" << endl << "::Components::EntityContext::_narrow (" << endl << "this->ctx_.in ()" << endl << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( ::CORBA::Object::_nil ());" << endl - << "if (! ::CORBA::is_nil (ec.in ()))" << endl + << STRS[ACE_CR] << " (CORBA::Object::_nil ());" << endl + << "if (! CORBA::is_nil (ec.in ()))" << endl << "{" << "return ec->get_CCM_object (" << endl - << STRS[ENV_SNGL_ARG] << ");" + << STRS[ENV_SNGL_ARG] << ");" << endl << "}" - << STRS[ACE_TR] << " ( ::CORBA::INTERNAL (), 0);" << endl + << STRS[ACE_TR] << " (CORBA::INTERNAL (), 0);" << endl << "}" << endl; i.context ().set ("facet_src_gen", true); @@ -532,8 +1078,8 @@ namespace { ContextPortsEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c), - simple_type_name_emitter_ (c), + type_name_emitter_ (c.os ()), + simple_type_name_emitter_ (c.os ()), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -568,22 +1114,21 @@ namespace os << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_AC] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{" - << "if (! ::CORBA::is_nil (this->ciao_uses_" + << "if (!CORBA::is_nil (this->ciao_uses_" << u.name () << "_.in ()))" << endl << "{" - << "ACE_THROW ( " << STRS[EXCP_AC] << " ());" + << "ACE_THROW (" << STRS[EXCP_AC] << " ());" << endl << "}" - << "if ( ::CORBA::is_nil (c))" << endl + << "if (CORBA::is_nil (c))" << endl << "{" - << "ACE_THROW ( " << STRS[EXCP_IC] << " ());" + << "ACE_THROW (" << STRS[EXCP_IC] << " ());" << endl << "}" - << "this->ciao_uses_" << u.name () << "_ =" << endl - << " "; + << "this->ciao_uses_" << u.name () << "_ =" << endl; Traversal::SingleUserData::belongs (u, belongs_); @@ -596,14 +1141,14 @@ namespace << scope_.name () << "_Context::disconnect_" << u.name () << " (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_NC] << "))" << endl << "{" - << "if ( ::CORBA::is_nil (this->ciao_uses_" + << "if (CORBA::is_nil (this->ciao_uses_" << u.name () << "_.in ()))" << endl << "{" - << STRS[ACE_TR] << " ( " + << STRS[ACE_TR] << " (" << endl << STRS[EXCP_NC] << " ()," << endl; Traversal::SingleUserData::belongs (u, belongs_); @@ -625,29 +1170,27 @@ namespace << STRS[EXCP_SNGL] << endl << "{" << u.scoped_name () << "Connections *tmp_retv = 0;" - << "ACE_NEW_THROW_EX (" + << "ACE_NEW_THROW_EX (" << endl << "tmp_retv," << endl << u.scoped_name () << "Connections (" << endl << "this->ciao_uses_" << u.name () << "_.current_size ())," << endl - << "::CORBA::NO_MEMORY ());" << endl + << "CORBA::NO_MEMORY ());" << endl << endl << u.scoped_name () << "Connections_var retv" << " = tmp_retv;" << endl << "retv->length (this->ciao_uses_" << u.name () << "_.current_size ());" << endl; - os << "::CORBA::ULong i = 0;" << endl; + os << "CORBA::ULong i = 0;" << endl; - os << "for (ACE_Active_Map_Manager< " << endl - << " "; + os << "for (ACE_Active_Map_Manager< " << endl; Traversal::MultiUserData::belongs (u, belongs_); os << "_var>::iterator iter =" << endl - << " this->ciao_uses_" << u.name () << "_.begin ();" << endl - << "iter != this->ciao_uses_" << u.name () << "_.end ();" - << endl - << "++iter)" << endl + << " this->ciao_uses_" << u.name () << "_.begin ();" + << " iter != this->ciao_uses_" << u.name () << "_.end ();" + << " ++iter)" << endl << "{" << "ACE_Active_Map_Manager< " << endl; @@ -663,10 +1206,10 @@ namespace << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl; - os << "ACE_NEW_THROW_EX (" - << "retv[i].ck.inout ()," << endl - << "::CIAO::Map_Key_Cookie (entry.ext_id_)," << endl - << "::CORBA::NO_MEMORY ());" << endl + os << "ACE_NEW_THROW_EX (" << endl + << "retv[i].ck," << endl + << "CIAO::Map_Key_Cookie (entry.ext_id_)," << endl + << "CORBA::NO_MEMORY ());" << endl << "++i;" << endl << "}"; @@ -681,15 +1224,14 @@ namespace os << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{" - << "if ( ::CORBA::is_nil (c))" << endl + << "if (CORBA::is_nil (c))" << endl << "{" - << STRS[ACE_TR] << " ( " - << STRS[EXCP_IC] << " (), 0);" << endl + << STRS[ACE_TR] << " (" << STRS[EXCP_IC] << " (), 0);" << endl << "}"; Traversal::MultiUserData::belongs (u, belongs_); @@ -704,18 +1246,17 @@ namespace os << "if (this->ciao_uses_" << u.name () << "_.bind (conn.in (), key) == -1)" << endl << "{" - << STRS[ACE_TR] << " ( " - << STRS[EXCP_IC] << " (), 0);" << endl + << STRS[ACE_TR] << " (" << STRS[EXCP_IC] << " (), 0);" << endl << "}"; os << "conn._retn ();" << endl; os << STRS[COMP_CK] << " * ck = 0;" - << "ACE_NEW_THROW_EX (" + << "ACE_NEW_THROW_EX (" << endl << "ck," << endl - << "::CIAO::Map_Key_Cookie (key)," << endl - << "::CORBA::NO_MEMORY ());" << endl; - + << "CIAO::Map_Key_Cookie (key)," << endl + << "CORBA::NO_MEMORY ());" << endl; + os << "return ck;" << endl << "}"; @@ -727,7 +1268,7 @@ namespace << u.name () << " (" << endl << STRS[COMP_CK] << " * ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{"; @@ -737,10 +1278,10 @@ namespace os << "_var retv;" << "ACE_Active_Map_Manager_Key key;" << endl; - os << "if (! CIAO::Map_Key_Cookie::extract (ck, key))" + os << "if (ck == 0 || ! CIAO::Map_Key_Cookie::extract (ck, key))" << endl << "{" - << STRS[ACE_TR] << " ( " + << STRS[ACE_TR] << " (" << endl << STRS[EXCP_IC] << " ()," << endl; Traversal::MultiUserData::belongs (u, belongs_); @@ -751,7 +1292,7 @@ namespace os << "if (this->ciao_uses_" << u.name () << "_.unbind (key, retv) != 0)" << endl << "{" - << STRS[ACE_TR] << " ( " + << STRS[ACE_TR] << " (" << endl << STRS[EXCP_IC] << " ()," << endl; Traversal::MultiUserData::belongs (u, belongs_); @@ -776,16 +1317,15 @@ namespace << STRS[ENV_SRC] << ")" << endl << STRS[EXCP_SNGL] << endl << "{" - << "for (ACE_Active_Map_Manager< " << endl - << " "; + << "for (ACE_Active_Map_Manager< " << endl; //@@ gcc bug Traversal::PublisherData::belongs (p, belongs_); os << "Consumer_var>::iterator iter =" << endl - << " this->ciao_publishes_" << p.name () - << "_map_.begin ();" << endl + << "this->ciao_publishes_" << p.name () + << "_map_.begin ();" << "iter != this->ciao_publishes_" << p.name () - << "_map_.end ();" << endl + << "_map_.end ();" << "++iter)" << endl << "{" << "(*iter).int_id_->push_"; @@ -797,13 +1337,13 @@ namespace << STRS[ENV_ARG] << ");" << "ACE_CHECK;" << endl << "}"; - + os << "for (ACE_Active_Map_Manager< " << endl - << " " << STRS[COMP_ECB] << "_var>::iterator giter =" << endl - << " this->ciao_publishes_" << p.name () - << "_generic_map_.begin ();" << endl + << STRS[COMP_ECB] << "_var>::iterator giter =" << endl + << "this->ciao_publishes_" << p.name () + << "_generic_map_.begin ();" << "giter != this->ciao_publishes_" << p.name () - << "_generic_map_.end ();" << endl + << "_generic_map_.end ();" << "++giter)" << endl << "{" << "(*giter).int_id_->push_event" << " (" << endl @@ -821,19 +1361,18 @@ namespace os << "Consumer_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "))" << endl << "{" - << "if ( ::CORBA::is_nil (c))" << endl + << "if (CORBA::is_nil (c))" << endl << "{" - << STRS[ACE_TR] << " ( ::CORBA::BAD_PARAM (), 0);" << endl + << STRS[ACE_TR] << " (CORBA::BAD_PARAM (), 0);" << endl << "}"; Traversal::PublisherData::belongs (p, belongs_); - os << "Consumer_var sub =" << endl - << " "; + os<< "Consumer_var sub =" << endl; Traversal::PublisherData::belongs (p, belongs_); @@ -843,10 +1382,10 @@ namespace << "_map_.bind (sub.in (), key);" << "sub._retn ();" << endl << STRS[COMP_CK] << " * retv = 0;" - << "ACE_NEW_THROW_EX (" + << "ACE_NEW_THROW_EX (" << endl << "retv," << endl << "::CIAO::Map_Key_Cookie (key)," << endl - << "::CORBA::NO_MEMORY ());" << endl + << "CORBA::NO_MEMORY ());" << endl << "return retv;" << endl << "}"; @@ -855,26 +1394,26 @@ namespace << p.name () << "_generic (" << endl << STRS[COMP_ECB] << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "))" << endl << "{" - << "if ( ::CORBA::is_nil (c))" << endl + << "if (CORBA::is_nil (c))" << endl << "{" - << STRS[ACE_TR] << " ( ::CORBA::BAD_PARAM (), 0);" << endl + << STRS[ACE_TR] << " (CORBA::BAD_PARAM (), 0);" << endl << "}"; os << STRS[COMP_ECB] << "_var sub =" << endl - << " " << STRS[COMP_ECB] << "::_duplicate (c);" << endl + << STRS[COMP_ECB] << "::_duplicate (c);" << endl << "ACE_Active_Map_Manager_Key key;" << "this->ciao_publishes_" << p.name () << "_generic_map_.bind (sub.in (), key);" << "sub._retn ();" << endl << STRS[COMP_CK] << " * retv = 0;" - << "ACE_NEW_THROW_EX (" + << "ACE_NEW_THROW_EX (" << endl << "retv," << endl << "::CIAO::Map_Key_Cookie (key)," << endl - << "::CORBA::NO_MEMORY ());" << endl + << "CORBA::NO_MEMORY ());" << endl << "return retv;" << endl << "}"; @@ -885,7 +1424,7 @@ namespace << p.name () << " (" << endl << STRS[COMP_CK] << " *ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{" @@ -893,14 +1432,14 @@ namespace << "if (ck == 0 || ::CIAO::Map_Key_Cookie::extract (ck, key) == false)" << endl << "{" - << STRS[ACE_TR] << " ( " + << STRS[ACE_TR] << " (" << endl << STRS[EXCP_IC] << " ()," << endl; Traversal::PublisherData::belongs (p, belongs_); os << "Consumer::_nil ());" << endl << "}"; - + Traversal::PublisherData::belongs (p, belongs_); os << "Consumer_var retv;" @@ -909,13 +1448,13 @@ namespace << "{" << "return retv._retn ();" << endl << "}"; - + os << STRS[COMP_ECB] << "_var ecb;" << endl; - + os << "if (this->ciao_publishes_" << p.name () << "_generic_map_.unbind (key, ecb) != 0)" << endl << "{" - << STRS[ACE_TR] << " ( " + << STRS[ACE_TR] << " (" << endl << STRS[EXCP_IC] << " ()," << endl; Traversal::PublisherData::belongs (p, belongs_); @@ -961,19 +1500,19 @@ namespace os << "Consumer_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_AC] << "))" << endl << "{" - << "if ( ::CORBA::is_nil (c))" << endl + << "if (CORBA::is_nil (c))" << endl << "{" - << "ACE_THROW ( ::CORBA::BAD_PARAM ());" << endl - << "}" - << "if (! ::CORBA::is_nil (this->ciao_emits_" << e.name () + << "ACE_THROW (CORBA::BAD_PARAM ());" << endl + << "}" << endl + << "if (! CORBA::is_nil (this->ciao_emits_" << e.name () << "_consumer_.in ()))" << endl << "{" - << "ACE_THROW ( " << STRS[EXCP_AC] << " ());" << endl - << "}" + << "ACE_THROW (" << STRS[EXCP_AC] << " ());" << endl + << "}" << endl << "this->ciao_emits_" << e.name () << "_consumer_ = " << endl; @@ -988,44 +1527,44 @@ namespace << scope_.name () << "_Context::disconnect_" << e.name () << " (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_NC] << "))" << endl << "{" - << "if ( ::CORBA::is_nil (this->ciao_emits_" << e.name () + << "if (CORBA::is_nil (this->ciao_emits_" << e.name () << "_consumer_.in ()))" << endl << "{" - << STRS[ACE_TR] << " ( " + << STRS[ACE_TR] << " (" << endl << STRS[EXCP_NC] << " ()," << endl; Traversal::EmitterData::belongs (e, belongs_); os << "Consumer::_nil ());" << endl - << "}" + << "}" << endl << "return this->ciao_emits_" << e.name () << "_consumer_._retn ();" << endl << "}"; } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; Traversal::Belongs belongs_; Traversal::Belongs simple_belongs_; SemanticGraph::Component& scope_; }; - + struct SwappableGetConsumersEmitter : Traversal::PublisherData, Traversal::EmitterData, EmitterBase { SwappableGetConsumersEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c) + type_name_emitter_ (c.os ()) { belongs_.node_traverser (type_name_emitter_); } - + virtual void traverse (SemanticGraph::Publisher& p) { @@ -1034,55 +1573,54 @@ namespace << "{" << "_ciao_size = this->ciao_publishes_" << p.name () << "_map_.current_size ();" << endl - << "ACE_NEW_THROW_EX (" + << "ACE_NEW_THROW_EX (" << endl << "tmp," << endl << STRS[COMP_CD] << " (_ciao_size)," << endl - << "::CORBA::NO_MEMORY ());" << endl + << "CORBA::NO_MEMORY ());" << endl << "retval = tmp;" << "retval->length (_ciao_size);" << endl << "ACE_Active_Map_Manager<" << endl; - + Traversal::PublisherData::belongs (p, belongs_); os << "Consumer_var>::iterator end =" << endl << " this->ciao_publishes_" << p.name () << "_map_.end ();" << endl - << "for (ACE_Active_Map_Manager<" << endl - << " "; - + << "for (ACE_Active_Map_Manager<" << endl; + Traversal::PublisherData::belongs (p, belongs_); os << "Consumer_var>::iterator iter =" << endl - << " this->ciao_publishes_" << p.name () + << " this->ciao_publishes_" << p.name () << "_map_.begin ();" << "iter != end;" << "++iter)" << endl << "{" << "ACE_Active_Map_Manager<" << endl; - + Traversal::PublisherData::belongs (p, belongs_); os << "Consumer_var>::entry &e = *iter;" << endl; - + Traversal::PublisherData::belongs (p, belongs_); os << "Consumer_var c =" << endl; - + Traversal::PublisherData::belongs (p, belongs_); os << "Consumer::_narrow (" << endl << "e.int_id_.in ()" << endl << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl - << "if ( ::CORBA::is_nil (c.in ()))" + << "if (CORBA::is_nil (c.in ()))" << "{" - << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);" + << STRS[ACE_TR] << " (" << STRS[EXCP_IC] << " (), 0);" << "}" << "::Components::ConsumerDescription *cd = 0;" - << "ACE_NEW_THROW_EX (" + << "ACE_NEW_THROW_EX (" << endl << "cd," << endl << "OBV_Components::ConsumerDescription ()," << endl - << "::CORBA::NO_MEMORY ());" << endl + << "CORBA::NO_MEMORY ());" << endl << "::Components::ConsumerDescription_var safe = cd;" << "safe->name (\"\");" << "safe->type_id (\"\");" @@ -1100,7 +1638,7 @@ namespace } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; }; @@ -1141,10 +1679,10 @@ namespace << t.name () << "_Servant *sv)" << endl << " : ACE_NESTED_CLASS (CIAO, Context_Impl_Base (h, c)), " << endl << " ctx_svnt_base (h, c, sv)"; - + string swap_option = ctx.cl ().get_value ("custom-container", ""); bool swapping = (swap_option == "upgradeable"); - + if (swapping) { os << "," << endl @@ -1154,7 +1692,7 @@ namespace { os << endl; } - + os << "{" << "}"; @@ -1198,24 +1736,24 @@ namespace << t.name () << "_Context::get_registered_consumers (" << endl << "const char *publisher_name" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << 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[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; - + << 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; @@ -1233,10 +1771,10 @@ namespace 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 @@ -1258,12 +1796,12 @@ namespace // Nested classes used by ServantEmitter. private: - struct EmitsConnectEmitter : Traversal::EmitterData, - EmitterBase + struct NavigationEmitsEmitter : Traversal::EmitterData, + EmitterBase { - EmitsConnectEmitter (Context& c) + NavigationEmitsEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c) + type_name_emitter_ (c.os ()) { belongs_.node_traverser (type_name_emitter_); } @@ -1277,18 +1815,17 @@ namespace Traversal::EmitterData::belongs (t, belongs_); - os << "Consumer_var _ciao_consumer =" << endl - << " "; + os << "Consumer_var _ciao_consumer =" << endl; Traversal::EmitterData::belongs (t, belongs_); os << "Consumer::_narrow (" << endl - << " consumer" << endl - << " " << STRS[ENV_ARG] << ");" + << "consumer" << endl + << STRS[ENV_ARG] << ");" << "ACE_CHECK;" << endl - << "if ( ::CORBA::is_nil (_ciao_consumer.in ()))" << endl + << "if (::CORBA::is_nil (_ciao_consumer.in ()))" << endl << "{" - << "ACE_THROW ( " << STRS[EXCP_IC] << " ());" + << "ACE_THROW (" << STRS[EXCP_IC] << " ());" << endl << "}" << "this->connect_" << t.name () @@ -1300,30 +1837,10 @@ namespace } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; }; - struct EmitsDisconnectEmitter : Traversal::EmitterData, - EmitterBase - { - EmitsDisconnectEmitter (Context& c) - : EmitterBase (c) - { - } - - virtual void - traverse (Type& t) - { - os << "if (ACE_OS::strcmp (source_name, \"" - << t.name () << "\") == 0)" << endl - << "{" - << "return this->disconnect_" << t.name () - << " (" << STRS[ENV_SNGL_ARG] << ");" << endl - << "}"; - } - }; - struct NavigationGetFacetExecEmitter : Traversal::ProviderData, EmitterBase { @@ -1349,7 +1866,7 @@ namespace PublishesEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c), + type_name_emitter_ (c.os ()), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -1366,20 +1883,20 @@ namespace os << "Consumer_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "))" << endl << "{"; - + string swap_option = ctx.cl ().get_value ("custom-container", ""); bool swapping = (swap_option == "upgradeable"); - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl; } - + os << "return this->context_->subscribe_" << p.name () << " (" << endl << "c" << endl @@ -1391,17 +1908,17 @@ namespace << "_Servant::subscribe_" << p.name () << "_generic (" << endl << STRS[COMP_ECB] << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "))" << endl << "{"; - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl; } - + os << "return this->context_->subscribe_" << p.name () << "_generic (" << endl << "c" << endl @@ -1415,21 +1932,21 @@ namespace << "_Servant::unsubscribe_" << p.name () << " (" << endl << STRS[COMP_CK] << " *ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{"; - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ( "; + << STRS[ACE_CR] << " ("; Traversal::PublisherData::belongs (p, belongs_); os << "Consumer::_nil ());" << endl; } - + os << "return this->context_->unsubscribe_" << p.name () << " (" << endl << "ck" << endl @@ -1438,7 +1955,7 @@ namespace } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; SemanticGraph::Component& scope_; }; @@ -1449,7 +1966,7 @@ namespace { UsesConnectEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c) + type_name_emitter_ (c.os ()) { belongs_.node_traverser (type_name_emitter_); } @@ -1471,9 +1988,9 @@ namespace << "connection" << endl << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl - << "if ( ::CORBA::is_nil (_ciao_conn.in ()))" << endl + << "if (::CORBA::is_nil (_ciao_conn.in ()))" << endl << "{" - << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);" + << STRS[ACE_TR] << " (" << STRS[EXCP_IC] << " (), 0);" << endl << "}" << "// Simplex connect." << endl @@ -1502,9 +2019,9 @@ namespace << "connection" << endl << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl - << "if ( ::CORBA::is_nil (_ciao_conn.in ()))" << endl + << "if (::CORBA::is_nil (_ciao_conn.in ()))" << endl << "{" - << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);" + << STRS[ACE_TR] << " (" << STRS[EXCP_IC] << " (), 0);" << endl << "}" << "// Multiplex connect." << endl @@ -1515,7 +2032,7 @@ namespace } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; }; @@ -1547,12 +2064,6 @@ namespace << u.name () << "\") == 0)" << endl << "{" << "// Multiplex disconnect." << endl - << "if (ck == 0)" << endl - << "{" - << STRS[ACE_TR] << " ( " - << STRS[EXCP_CR] << " ()," << endl - << "::CORBA::Object::_nil ());" << endl - << "}" << "return this->disconnect_" << u.name () << " (" << endl << "ck" << endl << STRS[ENV_ARG] << ");" << endl @@ -1566,7 +2077,7 @@ namespace { UsesEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c), + type_name_emitter_ (c.os ()), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -1583,7 +2094,7 @@ namespace os << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_AC] << "," << endl << STRS[EXCP_IC] << "))" << endl @@ -1600,7 +2111,7 @@ namespace << scope_.name () << "_Servant::disconnect_" << u.name () << " (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_NC] << "))" << endl << "{" @@ -1635,7 +2146,7 @@ namespace os << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "," << endl << STRS[EXCP_IC] << "))" << endl @@ -1653,7 +2164,7 @@ namespace << u.name () << " (" << endl << STRS[COMP_CK] << " * ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{" @@ -1677,7 +2188,7 @@ namespace } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; SemanticGraph::Component& scope_; }; @@ -1687,7 +2198,7 @@ namespace { PublishesSubscribeEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c) + type_name_emitter_ (c.os ()) { belongs_.node_traverser (type_name_emitter_); } @@ -1698,31 +2209,29 @@ namespace os << "if (ACE_OS::strcmp (publisher_name, \"" << p.name () << "\") == 0)" << endl << "{"; - + Traversal::PublisherData::belongs (p, belongs_); - os << "Consumer_var sub =" << endl - << " "; + os << "Consumer_var sub =" << endl; Traversal::PublisherData::belongs (p, belongs_); - + os << "Consumer::_narrow (" << endl << "subscribe" << endl << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl; - - os << "if ( ::CORBA::is_nil (sub.in ()))" << endl + + os << "if (CORBA::is_nil (sub.in ()))" << endl << "{" - << "::CORBA::Boolean substitutable =" << endl - << " subscribe->ciao_is_substitutable (" << endl - << " "; + << "CORBA::Boolean substitutable =" << endl + << "subscribe->ciao_is_substitutable (" << endl; Traversal::PublisherData::belongs (p, belongs_); - + os << "::_tao_obv_static_repository_id ()" << endl - << " " << STRS[ENV_ARG] << ");" + << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl; - + os << "if (substitutable)" << endl << "{" << "return this->subscribe_" << p.name () << "_generic (" << endl @@ -1731,7 +2240,7 @@ namespace << "}" << "else" << endl << "{" - << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);" << endl + << STRS[ACE_TR] << " (" << STRS[EXCP_IC] << " (), 0);" << endl << "}" << "}" << "else" << endl @@ -1740,11 +2249,11 @@ namespace << "sub.in ()" << endl << STRS[ENV_ARG] << ");" << endl << "}" - << "}"; + << "}"; } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; }; @@ -1774,7 +2283,7 @@ namespace { EmitsEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c), + type_name_emitter_ (c.os ()), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -1791,7 +2300,7 @@ namespace os << "Consumer_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_AC] << "))" << endl << "{" @@ -1807,7 +2316,7 @@ namespace << scope_.name () << "_Servant::disconnect_" << e.name () << " (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_NC] << "))" << endl << "{" @@ -1818,24 +2327,25 @@ namespace } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; SemanticGraph::Component& scope_; }; - struct ServantTypeNameEmitter : Traversal::Type, - EmitterBase + struct ServantTypeNameEmitter : Traversal::Type { - ServantTypeNameEmitter (Context& c) - : EmitterBase (c) - { - } + ServantTypeNameEmitter (std::ostream& os_) + : os (os_) + {} virtual void traverse (SemanticGraph::Type& t) { os << t.name () << "_Servant"; } + + private: + std::ostream& os; }; struct FacetProvidesEmitter : Traversal::ProviderData, @@ -1844,11 +2354,11 @@ namespace FacetProvidesEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c), - simple_type_name_emitter_ (c), - servant_type_name_emitter_ (c), - enclosing_type_name_emitter_ (c), - repo_id_emitter_ (c), + type_name_emitter_ (c.os ()), + simple_type_name_emitter_ (c.os ()), + servant_type_name_emitter_ (c.os ()), + enclosing_type_name_emitter_ (c.os ()), + repo_id_emitter_ (c.os ()), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -1869,20 +2379,20 @@ namespace << STRS[ENV_SNGL_SRC] << ")" << endl << STRS[EXCP_SNGL] << endl << "{"; - + string swap_option = ctx.cl ().get_value ("custom-container", ""); bool swapping = (swap_option == "upgradeable"); - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ( "; - + << STRS[ACE_CR] << " ("; + Traversal::ProviderData::belongs (p, belongs_); - + os << "::_nil ());" << endl; } - + os << "if (! ::CORBA::is_nil (this->provide_" << p.name () << "_.in ()))" << endl << "{" @@ -1894,9 +2404,9 @@ namespace << "}"; os << "::CORBA::Object_var obj =" << endl - << " this->provide_" << p.name () << "_i (" + << "this->provide_" << p.name () << "_i (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ( "; + << STRS[ACE_CR] << " ("; Traversal::ProviderData::belongs (p, belongs_); @@ -1907,15 +2417,14 @@ namespace Traversal::ProviderData::belongs (p, belongs_); - os << "_var fo =" << endl - << " "; + os << "_var fo =" << endl; Traversal::ProviderData::belongs (p, belongs_); - os << "::_narrow (" + os << "::_narrow (" << endl << "obj.in ()" << endl << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( "; + << STRS[ACE_CR] << " ("; Traversal::ProviderData::belongs (p, belongs_); @@ -1938,7 +2447,7 @@ namespace << STRS[EXCP_SNGL] << endl << "{" << "::CORBA::Object_ptr ret =" << endl - << " this->lookup_facet (\"" << p.name () << "\");" << endl; + << "this->lookup_facet (\"" << p.name () << "\");" << endl; os << "if (! ::CORBA::is_nil (ret))" << endl << "{" @@ -1982,26 +2491,26 @@ namespace << " " << scope_.name () << "_Servant" << endl << " >" << endl << "MACRO_MADNESS_TYPEDEF;" << endl; - + os << "ACE_CString obj_id (this->ins_name_);" << "obj_id += \"_" << p.name () << "\";" << endl; - - os << "ACE_NEW_THROW_EX (" - << "tmp," << endl - << "MACRO_MADNESS_TYPEDEF (" << endl - << "obj_id.c_str ()," << endl - << "\"" << p.name () << "\"," << endl - << "::CIAO::Port_Activator::Facet," << endl - << "0," << endl - << "this->context_," << endl - << "this)," << endl - << "::CORBA::NO_MEMORY ());" << endl; - - os << "::CIAO::Servant_Activator *sa = " << endl + + os << "ACE_NEW_THROW_EX ( " << endl + << " tmp," << endl + << " MACRO_MADNESS_TYPEDEF (" << endl + << " obj_id.c_str ()," << endl + << " \"" << p.name () << "\"," << endl + << " CIAO::Port_Activator::Facet," << endl + << " 0," << endl + << " this->context_," << endl + << " this)," << endl + << " CORBA::NO_MEMORY ());" << endl; + + os << "CIAO::Servant_Activator *sa = " << endl << "this->container_->ports_servant_activator ();" << endl << "if (!sa->register_port_activator (tmp))" << endl << "{" - << "return "; + << "return "; Traversal::ProviderData::belongs (p, belongs_); @@ -2010,34 +2519,29 @@ namespace os << "::CORBA::Object_var obj =" << endl << " this->container_->generate_reference (" << endl - << " obj_id.c_str ()," << endl - << " "; + << " obj_id.c_str ()," << endl + << " "; Traversal::ProviderData::belongs (p, repo_id_belongs_); os << "," << endl - << " ::CIAO::Container::Facet_Consumer" << endl - << " " << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( "; + << " CIAO::Container::Facet_Consumer" << endl + << " " << STRS[ENV_ARG] << ");" + << STRS[ACE_CR] << " ("; Traversal::ProviderData::belongs (p, belongs_); os << "::_nil ());" << endl - << "this->add_facet (\"" << p.name () << "\"," << endl - << "obj.in ()" << endl - << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( "; - - Traversal::ProviderData::belongs (p, belongs_); - - os << "::_nil ());" << endl; + << "this->add_facet (" << endl + << "\"" << p.name () << "\"," << endl + << "obj.in ());" << endl; os << "return obj._retn ();" << endl << "}"; } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; ServantTypeNameEmitter servant_type_name_emitter_; EnclosingTypeNameEmitter enclosing_type_name_emitter_; @@ -2055,9 +2559,9 @@ namespace { ConsumesEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c), - simple_type_name_emitter_ (c), - repo_id_emitter_ (c), + type_name_emitter_ (c.os ()), + simple_type_name_emitter_ (c.os ()), + repo_id_emitter_ (c.os ()), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -2086,10 +2590,10 @@ namespace << c.scoped_name ().scope_name ().scope_name () << "::CCM_" << c.scoped_name ().scope_name ().simple_name () << "_Context_ptr c)" << endl - << " : executor_ ( " << c.scoped_name ().scope_name ().scope_name () + << ": executor_ (" << c.scoped_name ().scope_name ().scope_name () << "::CCM_" << c.scoped_name ().scope_name ().simple_name () << "::_duplicate (executor))," << endl - << " ctx_ ( " << c.scoped_name ().scope_name ().scope_name () + << "ctx_ (" << c.scoped_name ().scope_name ().scope_name () << "::CCM_" << c.scoped_name ().scope_name ().simple_name () << "_Context::_duplicate (c))" << endl << "{" @@ -2109,7 +2613,7 @@ namespace << "{" << "}"; - os << "::CORBA::Object_ptr" << endl + os << "CORBA::Object_ptr" << endl << scope_.name () << "_Servant::"; Traversal::ConsumerData::belongs (c, simple_belongs_); @@ -2157,15 +2661,14 @@ namespace << "_Servant::push_event (" << endl << "::Components::EventBase *ev" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_BET] << "))" << endl << "{"; Traversal::ConsumerData::belongs (c, belongs_); - os << "_var ev_type =" << endl - << " "; + os << "_var ev_type =" << endl; Traversal::ConsumerData::belongs (c, belongs_); @@ -2181,11 +2684,11 @@ namespace << STRS[ENV_ARG] << ");" << endl << "return;" << endl << "}" - << "ACE_THROW ( " << STRS[EXCP_BET] << " ());" << endl + << "ACE_THROW (" << STRS[EXCP_BET] << " ());" << endl << "}"; - + os << "CORBA::Boolean" << endl - << scope_.name () << "_Servant::"; + << scope_.name () << "_Servant::"; Traversal::ConsumerData::belongs (c, simple_belongs_); @@ -2197,42 +2700,42 @@ namespace << "{" << "if (event_repo_id == 0)" << endl << "{" - << STRS[ACE_TR] << " ( ::CORBA::BAD_PARAM (), false);" << endl + << STRS[ACE_TR] << " (CORBA::BAD_PARAM (), false);" << endl << "}" << scope_.name () << "_Context *ctx =" << endl - << " " << scope_.name () << "_Context::_narrow (" << endl - << " this->ctx_.in ()" << endl - << " " << STRS[ENV_ARG] << ");" + << scope_.name () << "_Context::_narrow (" << endl + << "this->ctx_.in ()" << endl + << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (false);" << endl; - + os << "CORBA::ORB_ptr orb = ctx->_ciao_the_Container ()->the_ORB ();" << endl; - + os << "CORBA::ValueFactory f =" << endl - << " orb->lookup_value_factory (" << endl - << " event_repo_id" << endl - << " " << STRS[ENV_ARG] << ");" + << "orb->lookup_value_factory (" << endl + << "event_repo_id" << endl + << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (false);" << endl; - + os << "if (f == 0)" << endl << "{" << "return false;" << endl << "}" << "CORBA::ValueBase_var v =" << endl - << " f->create_for_unmarshal (" << STRS[ENV_SNGL_ARG] << ");" + << "f->create_for_unmarshal (" << STRS[ENV_SNGL_ARG] << ");" << STRS[ACE_CR] << " (false);" << endl; - + os << "f->_remove_ref ();" << endl; - + os << "if (v.in () == 0)" << endl << "{" << "return false;" << endl << "}"; - + os << "return dynamic_cast< "; - + Traversal::ConsumerData::belongs (c, belongs_); - + os << " *> (v.in ()) != 0;" << endl << "}" << endl; @@ -2256,9 +2759,9 @@ namespace << "}"; os << "::Components::EventConsumerBase_var obj =" << endl - << " this->get_consumer_" << c.name () << "_i (" << endl - << " " << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ( "; + << "this->get_consumer_" << c.name () << "_i (" << endl + << STRS[ENV_SNGL_ARG] << ");" + << STRS[ACE_CR] << " ("; Traversal::ConsumerData::belongs (c, belongs_); @@ -2266,15 +2769,14 @@ namespace Traversal::ConsumerData::belongs (c, belongs_); - os << "Consumer_var eco =" << endl - << " "; + os << "Consumer_var eco =" << endl; Traversal::ConsumerData::belongs (c, belongs_); os << "Consumer::_narrow (" << endl - << " obj.in ()" << endl - << " " << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( "; + << "obj.in ()" << endl + << STRS[ENV_ARG] << ");" + << STRS[ACE_CR] << " ("; Traversal::ConsumerData::belongs (c, belongs_); @@ -2297,14 +2799,14 @@ namespace << STRS[EXCP_SNGL] << endl << "{" << "::Components::EventConsumerBase_ptr ret =" << endl - << " this->lookup_consumer (\"" << c.name () << "\");" << endl; + << "this->lookup_consumer (\"" << c.name () << "\");" << endl; os << "if (! ::CORBA::is_nil (ret))" << endl << "{" << "return ret;" << "}"; - os << "::CIAO::Port_Activator_T<" << endl; + os << "CIAO::Port_Activator_T<" << endl; os << scope_.name () << "_Servant::"; @@ -2339,23 +2841,23 @@ namespace << " " << scope_.name () << "_Servant" << endl << " >" << endl << "MACRO_MADNESS_TYPEDEF;" << endl; - + os << "ACE_CString obj_id (this->ins_name_);" << "obj_id += \"_" << c.name () << "\";" << endl; - - os << "ACE_NEW_THROW_EX (" << endl - << "tmp," << endl - << "MACRO_MADNESS_TYPEDEF (" - << "obj_id.c_str ()," << endl - << "\"" << c.name () << "\"," << endl - << "::CIAO::Port_Activator::Sink," << endl - << "this->executor_.in ()," << endl - << "this->context_," << endl - << "this)," << endl - << "::CORBA::NO_MEMORY ());" << endl; - - os << "::CIAO::Servant_Activator *sa =" << endl - << " this->container_->ports_servant_activator ();" << endl + + os << "ACE_NEW_THROW_EX ( " << endl + << " tmp," << endl + << " MACRO_MADNESS_TYPEDEF (" << endl + << " obj_id.c_str ()," << endl + << " \"" << c.name () << "\"," << endl + << " CIAO::Port_Activator::Sink," << endl + << " this->executor_.in ()," << endl + << " this->context_," << endl + << " this)," << endl + << " CORBA::NO_MEMORY ());" << endl; + + os << "CIAO::Servant_Activator *sa = " << endl + << "this->container_->ports_servant_activator ();" <<endl << "if (!sa->register_port_activator (tmp))" << endl << "{" << "return "; @@ -2367,45 +2869,40 @@ namespace os << "::CORBA::Object_var obj =" << endl << " this->container_->generate_reference (" << endl - << " obj_id.c_str ()," << endl - << " "; + << " obj_id.c_str ()," << endl + << " "; Traversal::ConsumerData::belongs (c, repo_id_belongs_); os << "," << endl - << " ::CIAO::Container::Facet_Consumer" << endl - << " " << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( "; + << " CIAO::Container::Facet_Consumer" << endl + << " " << STRS[ENV_ARG] << ");" + << STRS[ACE_CR] << " ("; Traversal::ConsumerData::belongs (c, belongs_); os << "Consumer::_nil ());" << endl; os << "::Components::EventConsumerBase_var ecb =" << endl - << " ::Components::EventConsumerBase::_narrow (" << endl - << " obj.in ()" << endl - << " " << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( "; - - Traversal::ConsumerData::belongs (c, belongs_); - - os << "Consumer::_nil ());" << endl; - - os << "this->add_consumer (\"" << c.name () << "\"," << endl - << "ecb.in ()" << endl + << "::Components::EventConsumerBase::_narrow (" << endl + << "obj.in ()" << endl << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ( "; + << STRS[ACE_CR] << " ("; Traversal::ConsumerData::belongs (c, belongs_); os << "Consumer::_nil ());" << endl; + os << "this->add_consumer (" << endl + << "\"" << c.name () << "\"," << endl + << "ecb.in ());" << endl; + os << "return ecb._retn ();" << endl << "}"; } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; ConsumerRepoIdEmitter repo_id_emitter_; Traversal::Belongs belongs_; @@ -2421,9 +2918,8 @@ namespace { RegisterValueFactoryEmitter (Context& c) : EmitterBase (c), - c_ (cerr, c.export_macro (), c.cl ()), - type_name_emitter_ (c), - cerr_type_name_emitter_ (c_), + type_name_emitter_ (c.os ()), + cerr_type_name_emitter_ (cerr), gen_factory_ (true) { belongs_.node_traverser (type_name_emitter_); @@ -2455,14 +2951,14 @@ namespace Traversal::Inherits inherits; inherits.node_traverser (event_type_operations); event_type_operations.edge_traverser (inherits); - + Traversal::Defines include_inherit_defines; - event_type_operations.edge_traverser (include_inherit_defines); + event_type_operations.edge_traverser (include_inherit_defines); OperationExistsEmitter op_emitter (this); include_inherit_defines.node_traverser (op_emitter); - + Traversal::Supports supports; - event_type_operations.edge_traverser (supports); + event_type_operations.edge_traverser (supports); Traversal::Interface iface; supports.node_traverser (iface); inherits.node_traverser (iface); @@ -2497,7 +2993,7 @@ namespace << "event type "; Traversal::ConsumerData::belongs (c, cerr_belongs_); - + cerr << " consumed by " << c.scoped_name () << endl << "has an operation, factory declaration," << " or private member. " @@ -2506,9 +3002,8 @@ namespace } private: - Context c_; - FullTypeNameEmitter type_name_emitter_; - FullTypeNameEmitter cerr_type_name_emitter_; + TypeNameEmitter type_name_emitter_; + TypeNameEmitter cerr_type_name_emitter_; Traversal::Belongs belongs_; Traversal::Belongs cerr_belongs_; bool gen_factory_; @@ -2559,14 +3054,14 @@ namespace private: RegisterValueFactoryEmitter* r_; }; - + struct PrivateExistsEmitter : Traversal::ValueTypePrivateMember { PrivateExistsEmitter (RegisterValueFactoryEmitter* r) : r_ (r) { } - + virtual void traverse (Type&) { @@ -2593,8 +3088,8 @@ namespace traverse (SemanticGraph::Provider& p) { os << "obj_var =" << endl - << " this->provide_" << p.name () << "_i (" << endl - << " " << STRS[ENV_SNGL_ARG] << ");" + << "this->provide_" << p.name () << "_i (" << endl + << STRS[ENV_SNGL_ARG] << ");" << "ACE_CHECK;" << endl; } @@ -2617,8 +3112,8 @@ namespace traverse (SemanticGraph::Consumer& p) { os << "ecb_var =" << endl - << " this->get_consumer_" << p.name () << "_i (" << endl - << " " << STRS[ENV_SNGL_ARG] << ");" + << "this->get_consumer_" << p.name () << "_i (" << endl + << STRS[ENV_SNGL_ARG] << ");" << "ACE_CHECK;" << endl; } }; @@ -2635,232 +3130,14 @@ namespace pre (SemanticGraph::ReadWriteAttribute& a) { Traversal::Belongs delegate_belongs; - - SetAttributeDelegationEmitter delegater (ctx, a); + + SetAttributeDelegationEmitter delegater (ctx.os (), a); delegate_belongs.node_traverser (delegater); Traversal::ReadWriteAttribute::belongs (a, delegate_belongs); } }; - struct UsesSizeCalculator : Traversal::SingleUserData, - Traversal::MultiUserData, - EmitterBase - { - UsesSizeCalculator (Context& c, unsigned long& size) - : EmitterBase (c), - size_ (size) - { - } - - virtual void - traverse (SemanticGraph::SingleUser&) - { - ++size_; - } - - virtual void - traverse (SemanticGraph::MultiUser&) - { - ++size_; - } - - private: - unsigned long& size_; - }; - - struct UsesGetAllEmitter : Traversal::SingleUserData, - Traversal::MultiUserData, - EmitterBase - { - UsesGetAllEmitter (Context& c) - : EmitterBase (c), - type_name_emitter_ (c), - repo_id_emitter_ (c), - slot_ (0UL) - { - belongs_.node_traverser (type_name_emitter_); - repo_id_belongs_.node_traverser (repo_id_emitter_); - } - - virtual void - traverse (SemanticGraph::SingleUser& u) - { - os << "::CIAO::Servant_Impl_Base::describe_simplex_receptacle<" - << endl - << " "; - - Traversal::SingleUserData::belongs (u, belongs_); - - os << "_var" << endl - << " > (\"" << u.name () << "\"," << endl; - - Traversal::SingleUserData::belongs (u, repo_id_belongs_); - - os << "," << endl - << "this->context_->ciao_uses_" << u.name () << "_," << endl - << "safe_retval," << endl - << slot_ << "UL);" << endl; - - ++slot_; - } - - virtual void - traverse (SemanticGraph::MultiUser& u) - { - os << "::CIAO::Servant_Impl_Base::describe_multiplex_receptacle<" - << endl - << " "; - - Traversal::MultiUserData::belongs (u, belongs_); - - os << "_var" << endl - << " > (\"" << u.name () << "\"," << endl; - - Traversal::MultiUserData::belongs (u, repo_id_belongs_); - - os << "," << endl - << "this->context_->ciao_uses_" << u.name () << "_," << endl - << "safe_retval," << endl - << slot_ << "UL);" << endl; - - ++slot_; - } - - private: - FullTypeNameEmitter type_name_emitter_; - RepoIdEmitter repo_id_emitter_; - Traversal::Belongs belongs_; - Traversal::Belongs repo_id_belongs_; - unsigned long slot_; - }; - - struct PublishesSizeCalculator : Traversal::PublisherData, - EmitterBase - { - PublishesSizeCalculator (Context& c, unsigned long& size) - : EmitterBase (c), - size_ (size) - { - } - - virtual void - traverse (SemanticGraph::Publisher&) - { - ++size_; - } - - private: - unsigned long& size_; - }; - - struct PublishesGetAllEmitter : Traversal::PublisherData, - EmitterBase - { - PublishesGetAllEmitter (Context& c) - : EmitterBase (c), - type_name_emitter_ (c), - repo_id_emitter_ (c), - slot_ (0UL) - { - belongs_.node_traverser (type_name_emitter_); - repo_id_belongs_.node_traverser (repo_id_emitter_); - } - - virtual void - traverse (SemanticGraph::Publisher& p) - { - os << "::CIAO::Servant_Impl_Base::describe_pub_event_source<" - << endl - << " "; - - Traversal::PublisherData::belongs (p, belongs_); - - os << "Consumer_var" << endl - << " > (\"" << p.name () << "\"," << endl; - - Traversal::PublisherData::belongs (p, repo_id_belongs_); - - os << "," << endl - << "this->context_->ciao_publishes_" << p.name () - << "_map_," << endl - << "safe_retval," << endl - << slot_ << "UL);" << endl; - - ++slot_; - } - - private: - FullTypeNameEmitter type_name_emitter_; - RepoIdEmitter repo_id_emitter_; - Traversal::Belongs belongs_; - Traversal::Belongs repo_id_belongs_; - unsigned long slot_; - }; - - struct EmitsSizeCalculator : Traversal::EmitterData, - EmitterBase - { - EmitsSizeCalculator (Context& c, unsigned long& size) - : EmitterBase (c), - size_ (size) - { - } - - virtual void - traverse (SemanticGraph::Emitter&) - { - ++size_; - } - - private: - unsigned long& size_; - }; - - struct EmitsGetAllEmitter : Traversal::EmitterData, - EmitterBase - { - EmitsGetAllEmitter (Context& c) - : EmitterBase (c), - type_name_emitter_ (c), - repo_id_emitter_ (c), - slot_ (0UL) - { - belongs_.node_traverser (type_name_emitter_); - repo_id_belongs_.node_traverser (repo_id_emitter_); - } - - virtual void - traverse (SemanticGraph::Emitter& e) - { - os << "::CIAO::Servant_Impl_Base::describe_emit_event_source<" - << endl - << " "; - - Traversal::EmitterData::belongs (e, belongs_); - - os << "Consumer_var" << endl - << " > (\"" << e.name () << "\"," << endl; - - Traversal::EmitterData::belongs (e, repo_id_belongs_); - - os << "," << endl - << "this->context_->ciao_emits_" << e.name () - << "_consumer_," << endl - << "safe_retval," << endl - << slot_ << "UL);" << endl; - - ++slot_; - } - - private: - FullTypeNameEmitter type_name_emitter_; - RepoIdEmitter repo_id_emitter_; - Traversal::Belongs belongs_; - Traversal::Belongs repo_id_belongs_; - unsigned long slot_; - }; - public: virtual void pre (Type& t) @@ -2882,7 +3159,7 @@ namespace << " comp_svnt_base (exe, h, hs, c)," << endl << " ins_name_ (ins_name)" << endl << "{" - << "ACE_NEW (" + << "ACE_NEW (" << endl << "this->context_," << endl << t.name () << "_Context (h, c, this));" << endl; @@ -2908,9 +3185,9 @@ namespace os << "ACE_TRY_NEW_ENV" << endl << "{" << "::Components::SessionComponent_var scom =" << endl - << " ::Components::SessionComponent::_narrow (" << endl - << " exe" << endl - << " " << STRS[ENV_ARG] << ");" + << "::Components::SessionComponent::_narrow (" << endl + << "exe" << endl + << STRS[ENV_ARG] << ");" << "ACE_TRY_CHECK;" << endl << "if (! ::CORBA::is_nil (scom.in ()))" << endl << "{" @@ -2942,17 +3219,17 @@ namespace << STRS[ENV_SRC] << ")" << endl << "{" << "ACE_ENV_EMIT_CODE (ACE_UNUSED_ARG (ACE_TRY_ENV));" << endl; - + string swap_option = ctx.cl ().get_value ("custom-container", ""); bool swapping = (swap_option == "upgradeable"); - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" << "ACE_CHECK;" << endl; } - - os << "for ( ::CORBA::ULong i = 0; i < descr.length (); ++i)" << endl + + os << "for (CORBA::ULong i = 0; i < descr.length (); ++i)" << endl << "{" << "const char *descr_name = descr[i]->name ();" << "::CORBA::Any &descr_value = descr[i]->value ();" << endl; @@ -3037,26 +3314,26 @@ namespace << "const char *name," << endl << "::CORBA::Object_ptr connection" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_IC] << "," << endl << STRS[EXCP_AC] << "," << endl << STRS[EXCP_ECL] << "))" << endl << "{"; - + if (swapping) { 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 << STRS[ACE_UA] << " (connection);" << endl << "if (name == 0)" << endl << "{" - << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);" << endl + << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);" << endl << "}"; // Generate IF block in connect operation for each receptacle. @@ -3076,33 +3353,32 @@ namespace component_emitter.traverse (t); } - os << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);" << endl + os << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);" << endl << "}"; - os << "::CORBA::Object_ptr" << endl + os << "CORBA::Object_ptr" << endl << t.name () << "_Servant::disconnect (" << endl << "const char *name," << endl << STRS[COMP_CK] << " * ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_IC] << "," << endl << STRS[EXCP_CR] << "," << endl << STRS[EXCP_NC] << "))" << endl - << "{" - << STRS[ACE_UA] << " (ck);" << endl; - + << "{"; + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ( ::CORBA::Object::_nil ());" << endl; + << STRS[ACE_CR] << " (CORBA::Object::_nil ());" << endl; } - + os << "if (name == 0)" << endl << "{" - << STRS[ACE_TR] << " ( " - << STRS[EXCP_BP] << "," << endl + << STRS[ACE_TR] << " (" << endl + << STRS[EXCP_IN] << " ()," << endl << "::CORBA::Object::_nil ());" << endl << "}"; @@ -3123,61 +3399,10 @@ namespace component_emitter.traverse (t); } - os << STRS[ACE_TR] << " ( " + os << STRS[ACE_TR] << " (" << endl << STRS[EXCP_IN] << " ()," << endl - << "::CORBA::Object::_nil ());" - << "}"; - - os << STRS[COMP_RD] << " *" << endl - << t.name () << "_Servant::get_all_receptacles (" << endl - << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_SNGL] << endl - << "{" - << STRS[COMP_RD] << " *retval = 0;" - << "ACE_NEW_RETURN (retval," << endl - << STRS[COMP_RD] << "," << endl - << "0);" - << STRS[COMP_RD] << "_var safe_retval = retval;"; - - unsigned long size = 0; - - // Calculate the number of uses ports. - { - 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); - - UsesSizeCalculator size_calculator (ctx, size); - defines.node_traverser (size_calculator); - - component_emitter.traverse (t); - } - - os << "safe_retval->length (" << size << "UL);" << endl; - - // Generate a sequence element assignment for each uses port. - { - 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); - - UsesGetAllEmitter get_all_emitter (ctx); - defines.node_traverser (get_all_emitter); - - component_emitter.traverse (t); - } - - os << "return safe_retval._retn ();" + << "::CORBA::Object::_nil ());" << endl + << STRS[ACE_UA] << " (ck);" << endl << "}"; // Generate generic operations for receptacles. @@ -3203,22 +3428,22 @@ namespace << "const char * emitter_name," << endl << STRS[COMP_ECB] << "_ptr consumer" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_AC] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{"; - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CK] << ";" << endl; + << "ACE_CHECK;" << endl; } - + os << "if (emitter_name == 0)" << endl << "{" - << STRS[ACE_TH] << " ( " << STRS[EXCP_BP] << ");" << endl + << "ACE_THROW (::CORBA::BAD_PARAM ());" << endl << "}"; // Generate an IF block for each 'emits' declaration. @@ -3232,185 +3457,40 @@ namespace component_emitter.edge_traverser (defines); component_emitter.edge_traverser (inherits); - EmitsConnectEmitter emits_connect_emitter (ctx); - defines.node_traverser (emits_connect_emitter); + NavigationEmitsEmitter navigation_emits_emitter (ctx); + defines.node_traverser (navigation_emits_emitter); component_emitter.traverse (t); } os << STRS[ACE_UA] << " (consumer);" - << STRS[ACE_TH] << " ( " + << "ACE_THROW (" << STRS[EXCP_IN] << " ());" << endl << "}"; - os << STRS[COMP_ECB] << "_ptr" << endl - << t.name () << "_Servant::disconnect_consumer (" << endl - << "const char *source_name" << endl - << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "," << endl - << STRS[EXCP_NC] << "))" << endl - << "{"; - - if (swapping) - { - os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ( " - << STRS[COMP_ECB] << "::_nil ());" << endl; - } - - os << "if (source_name == 0)" << endl - << "{" - << STRS[ACE_TR] << " ( " << STRS[EXCP_BP] << "," << endl - << STRS[COMP_ECB] << "::_nil ());" << endl - << "}"; - - // Generate an IF block for each 'emits' declaration. - { - 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); - - EmitsDisconnectEmitter emits_disconnect_emitter (ctx); - defines.node_traverser (emits_disconnect_emitter); - - component_emitter.traverse (t); - } - - os << STRS[ACE_TR] << " ( " - << STRS[EXCP_IN] << " ()," << endl - << STRS[COMP_ECB] << "::_nil ());" << endl - << "}"; - - os << STRS[COMP_PD] << " *" << endl - << t.name () << "_Servant::get_all_publishers (" << endl - << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_SNGL] << endl - << "{" - << STRS[COMP_PD] << " *retval = 0;" - << "ACE_NEW_RETURN (retval," << endl - << STRS[COMP_PD] << "," << endl - << "0);" - << STRS[COMP_PD] << "_var safe_retval = retval;"; - - size = 0UL; - - { - 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); - - PublishesSizeCalculator publishes_size_calculator (ctx, size); - defines.node_traverser (publishes_size_calculator); - - component_emitter.traverse (t); - } - - os << "safe_retval->length (" << size << "UL);" << endl; - - { - 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); - - PublishesGetAllEmitter publishes_get_all_emitter (ctx); - defines.node_traverser (publishes_get_all_emitter); - - component_emitter.traverse (t); - } - - os << "return safe_retval._retn ();" - << "}"; - - os << STRS[COMP_ED] << " *" << endl - << t.name () << "_Servant::get_all_emitters (" << endl - << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_SNGL] << endl - << "{" - << STRS[COMP_ED] << " *retval = 0;" - << "ACE_NEW_RETURN (retval," << endl - << STRS[COMP_ED] << "," << endl - << "0);" - << STRS[COMP_ED] << "_var safe_retval = retval;"; - - size = 0UL; - - { - 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); - - EmitsSizeCalculator emits_size_calculator (ctx, size); - defines.node_traverser (emits_size_calculator); - - component_emitter.traverse (t); - } - - os << "safe_retval->length (" << size << "UL);" << endl; - - { - 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); - - EmitsGetAllEmitter emits_get_all_emitter (ctx); - defines.node_traverser (emits_get_all_emitter); - - component_emitter.traverse (t); - } - - os << "return safe_retval._retn ();" - << "}"; - os << STRS[COMP_CK] << " *" << endl << t.name () << "_Servant::subscribe (" << endl << "const char *publisher_name," << endl << STRS[COMP_ECB] << "_ptr subscribe" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_IC] << "," << endl << STRS[EXCP_ECL] << "))" << endl << "{"; - + if (swapping) { 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 << "if (publisher_name == 0)" << endl << "{" - << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);" + << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);" << endl << "}"; @@ -3431,7 +3511,7 @@ namespace component_emitter.traverse (t); } - os << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);" << endl + os << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);" << endl << "}"; os << STRS[COMP_ECB] << "_ptr" << endl @@ -3440,24 +3520,24 @@ namespace << "const char *publisher_name," << endl << STRS[COMP_CK] << " *ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{"; - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ( " << STRS[COMP_ECB] + << STRS[ACE_CR] << " (" << STRS[COMP_ECB] << "::_nil ());" << endl; } - + os << "// Just in case there are no if blocks" << endl << STRS[ACE_UA] << " (ck);" << endl << "if (publisher_name == 0)" << endl << "{" - << STRS[ACE_TR] << " ( " + << STRS[ACE_TR] << " (" << endl << STRS[EXCP_IN] << " ()," << endl << STRS[COMP_ECB] << "::_nil ());" << endl << "}"; @@ -3479,7 +3559,7 @@ namespace component_emitter.traverse (t); } - os << STRS[ACE_TR] << " ( " + os << STRS[ACE_TR] << " (" << endl << STRS[EXCP_IN] << " ()," << endl << STRS[COMP_ECB] << "::_nil ());" << endl << "}"; @@ -3501,24 +3581,25 @@ namespace component_emitter.traverse (t); } - os << "::CORBA::Object_ptr" << endl + os << "CORBA::Object_ptr" << endl << t.name () << "_Servant::get_facet_executor (" << endl << "const char *name" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << " " + << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "))" << endl << "{"; - + if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ( ::CORBA::Object::_nil ());" << endl; + << STRS[ACE_CR] << " (CORBA::Object::_nil ());" << endl; } - + os << "if (name == 0)" << endl << "{" - << STRS[ACE_TR] << " ( " << STRS[EXCP_BP] << "," << endl + << STRS[ACE_TR] << " (" << endl + << "::CORBA::BAD_PARAM ()," << endl << "::CORBA::Object::_nil ());" << endl << "}"; @@ -3539,9 +3620,8 @@ namespace component_emitter.traverse (t); } - os << "return ::CORBA::Object::_nil ();" + os << " return CORBA::Object::_nil ();" << "}"; - os << "// Supported operations." << endl << endl; // Generate operations for all supported interfaces. @@ -3563,7 +3643,7 @@ namespace interface_emitter.edge_traverser (defines); interface_emitter.edge_traverser (interface_inherits); - AttributeSourceEmitter<SemanticGraph::Component> attribute_emitter (ctx, t); + AttributeEmitter<SemanticGraph::Component> attribute_emitter (ctx, t); defines.node_traverser (attribute_emitter); OperationEmitter<SemanticGraph::Component> operation_emitter (ctx, t); @@ -3577,15 +3657,15 @@ namespace operation_emitter.edge_traverser (returns); operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (ctx); - ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); - ParameterEmitter<Traversal::OutParameter> out_param (ctx); + ParameterEmitter<Traversal::InParameter> in_param (os); + ParameterEmitter<Traversal::InOutParameter> inout_param (os); + ParameterEmitter<Traversal::OutParameter> out_param (os); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (ctx); - FullTypeNameEmitter type_name_emitter (ctx); + ReturnTypeNameEmitter return_type_emitter (os); + TypeNameEmitter type_name_emitter (os); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -3594,9 +3674,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (ctx); - INOUTArgTypeNameEmitter inout_arg_emitter (ctx); - OUTArgTypeNameEmitter out_arg_emitter (ctx); + INArgTypeNameEmitter in_arg_emitter (os); + INOUTArgTypeNameEmitter inout_arg_emitter (os); + OUTArgTypeNameEmitter out_arg_emitter (os); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -3617,7 +3697,7 @@ namespace Traversal::Defines defines; component_emitter.edge_traverser (defines); - AttributeSourceEmitter<SemanticGraph::Component> attribute_emitter (ctx, t); + AttributeEmitter<SemanticGraph::Component> attribute_emitter (ctx, t); defines.node_traverser (attribute_emitter); component_emitter.traverse (t); @@ -3659,8 +3739,8 @@ namespace { HomeEmitter (Context& c) : EmitterBase (c), - repo_id_emitter_ (c), - flat_name_emitter_ (c) + repo_id_emitter_ (c.os ()), + flat_name_emitter_ (c.os ()) { repo_id_manages_.node_traverser (repo_id_emitter_); flat_name_manages_.node_traverser (flat_name_emitter_); @@ -3706,7 +3786,7 @@ namespace gen_swap_related (SemanticGraph::Operation&) { } - + virtual void traverse (SemanticGraph::HomeFactory&) { @@ -3724,10 +3804,10 @@ namespace { FactoryOperationEmitter (Context& c, SemanticGraph::Home& home) : EmitterBase (c), - return_type_name_emitter_ (c), - enclosing_type_name_emitter_ (c), - simple_type_name_emitter_ (c), - type_name_emitter_ (c), + return_type_name_emitter_ (c.os ()), + enclosing_type_name_emitter_ (c.os ()), + simple_type_name_emitter_ (c.os ()), + type_name_emitter_ (c.os ()), scope_ (home) { returns_.node_traverser (return_type_name_emitter_); @@ -3778,7 +3858,7 @@ namespace virtual void raises_pre (SemanticGraph::HomeFactory&) { - os << STRS[EXCP_START] << " " + os << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl; } @@ -3814,7 +3894,7 @@ namespace operation_emitter.traverse (hf); } - os << STRS[ACE_CR] << " ( "; + os << STRS[ACE_CR] << " ("; Traversal::Home::manages (scope_, manages_); @@ -3838,7 +3918,7 @@ namespace << "_ciao_ec.in ()" << endl << STRS[ENV_ARG] << ");" << endl; - os << STRS[ACE_CR] << " ( "; + os << STRS[ACE_CR] << " ("; Traversal::Home::manages (scope_, manages_); @@ -3861,7 +3941,7 @@ namespace ReturnTypeNameEmitter return_type_name_emitter_; EnclosingTypeNameEmitter enclosing_type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; Traversal::Returns returns_; Traversal::Manages enclosing_manages_; Traversal::Manages simple_manages_; @@ -3875,10 +3955,10 @@ namespace { FinderOperationEmitter (Context& c, SemanticGraph::Home& home) : EmitterBase (c), - type_name_emitter_ (c), - return_type_name_emitter_ (c), - enclosing_type_name_emitter_ (c), - simple_type_name_emitter_ (c), + type_name_emitter_ (c.os ()), + return_type_name_emitter_ (c.os ()), + enclosing_type_name_emitter_ (c.os ()), + simple_type_name_emitter_ (c.os ()), scope_ (home) { returns_.node_traverser (return_type_name_emitter_); @@ -3929,7 +4009,7 @@ namespace virtual void raises_pre (SemanticGraph::HomeFinder&) { - os << STRS[EXCP_START] << " " + os << STRS[EXCP_START] << endl << STRS[EXCP_SYS] << "," << endl; } @@ -3943,7 +4023,8 @@ namespace post (SemanticGraph::HomeFinder& hf) { os << "{" - << STRS[ACE_TR] << " ( ::CORBA::NO_IMPLEMENT ()," << endl; + << STRS[ACE_TR] << " (" << endl + << "::CORBA::NO_IMPLEMENT ()," << endl; Traversal::HomeFinder::returns (hf, simple_returns_); @@ -3958,7 +4039,7 @@ namespace } private: - FullTypeNameEmitter type_name_emitter_; + TypeNameEmitter type_name_emitter_; ReturnTypeNameEmitter return_type_name_emitter_; EnclosingTypeNameEmitter enclosing_type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; @@ -3981,21 +4062,21 @@ namespace << "::CIAO::Session_Container *c)" << endl << " : ACE_NESTED_CLASS (CIAO, Home_Servant_Impl_Base (c))," << endl << " home_svnt_base (exe, c, ins_name"; - + string swap_option = ctx.cl ().get_value ("custom-container", ""); bool swapping = (swap_option == "upgradeable"); - + if (swapping) - { + { os << ", \"" << ctx.composition_name (); - + Traversal::Home::manages (t, flat_name_manages_); - + os << "\", "; - + Traversal::Home::manages (t, repo_id_manages_); } - + os << ")" << endl << "{" << "}"; @@ -4027,15 +4108,15 @@ namespace home_operation_emitter.edge_traverser (returns); home_operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (ctx); - ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); - ParameterEmitter<Traversal::OutParameter> out_param (ctx); + ParameterEmitter<Traversal::InParameter> in_param (os); + ParameterEmitter<Traversal::InOutParameter> inout_param (os); + ParameterEmitter<Traversal::OutParameter> out_param (os); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (ctx); - FullTypeNameEmitter type_name_emitter (ctx); + ReturnTypeNameEmitter return_type_emitter (os); + TypeNameEmitter type_name_emitter (os); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -4044,9 +4125,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (ctx); - INOUTArgTypeNameEmitter inout_arg_emitter (ctx); - OUTArgTypeNameEmitter out_arg_emitter (ctx); + INArgTypeNameEmitter in_arg_emitter (os); + INOUTArgTypeNameEmitter inout_arg_emitter (os); + OUTArgTypeNameEmitter out_arg_emitter (os); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -4074,7 +4155,7 @@ namespace interface_emitter.edge_traverser (defines); interface_emitter.edge_traverser (interface_inherits); - AttributeSourceEmitter<SemanticGraph::Home> attribute_emitter (ctx, t); + AttributeEmitter<SemanticGraph::Home> attribute_emitter (ctx, t); defines.node_traverser (attribute_emitter); OperationEmitter<SemanticGraph::Home> operation_emitter (ctx, t); @@ -4088,15 +4169,15 @@ namespace operation_emitter.edge_traverser (returns); operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (ctx); - ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); - ParameterEmitter<Traversal::OutParameter> out_param (ctx); + ParameterEmitter<Traversal::InParameter> in_param (os); + ParameterEmitter<Traversal::InOutParameter> inout_param (os); + ParameterEmitter<Traversal::OutParameter> out_param (os); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (ctx); - FullTypeNameEmitter type_name_emitter (ctx); + ReturnTypeNameEmitter return_type_emitter (os); + TypeNameEmitter type_name_emitter (os); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -4105,9 +4186,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (ctx); - INOUTArgTypeNameEmitter inout_arg_emitter (ctx); - OUTArgTypeNameEmitter out_arg_emitter (ctx); + INArgTypeNameEmitter in_arg_emitter (os); + INOUTArgTypeNameEmitter inout_arg_emitter (os); + OUTArgTypeNameEmitter out_arg_emitter (os); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -4142,15 +4223,15 @@ namespace finder_operation_emitter.edge_traverser (returns); finder_operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (ctx); - ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); - ParameterEmitter<Traversal::OutParameter> out_param (ctx); + ParameterEmitter<Traversal::InParameter> in_param (os); + ParameterEmitter<Traversal::InOutParameter> inout_param (os); + ParameterEmitter<Traversal::OutParameter> out_param (os); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (ctx); - FullTypeNameEmitter type_name_emitter (ctx); + ReturnTypeNameEmitter return_type_emitter (os); + TypeNameEmitter type_name_emitter (os); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -4159,9 +4240,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (ctx); - INOUTArgTypeNameEmitter inout_arg_emitter (ctx); - OUTArgTypeNameEmitter out_arg_emitter (ctx); + INArgTypeNameEmitter in_arg_emitter (os); + INOUTArgTypeNameEmitter inout_arg_emitter (os); + OUTArgTypeNameEmitter out_arg_emitter (os); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -4182,7 +4263,7 @@ namespace Traversal::Defines defines; home_emitter.edge_traverser (defines); - AttributeSourceEmitter<SemanticGraph::Home> attribute_emitter (ctx, t); + AttributeEmitter<SemanticGraph::Home> attribute_emitter (ctx, t); defines.node_traverser (attribute_emitter); home_emitter.traverse (t); @@ -4195,11 +4276,9 @@ namespace os << "extern \"C\" " << ctx.export_macro () << " ::PortableServer::Servant" << endl - << "create" - << regex::perl_s (t.scoped_name ().str (), "/::/_/") - << "_Servant (" << endl + << "create" << t.name () << "_Servant (" << endl << "::Components::HomeExecutorBase_ptr p," << endl - << "::CIAO::Session_Container *c," << endl + << "CIAO::Session_Container *c," << endl << "const char *ins_name" << endl << STRS[ENV_SRC] << ")" << endl << "{" @@ -4233,6 +4312,30 @@ namespace Traversal::Manages repo_id_manages_; Traversal::Manages flat_name_manages_; }; + + //@@ There is exactly the same code in header generator. + // + struct CompositionEmitter : Traversal::Composition, EmitterBase + { + CompositionEmitter (Context& c) + : EmitterBase (c) + { + } + + virtual void + pre (Type& t) + { + ctx.composition_name (t.name ().str ()); + + os << STRS[CIDL_NS] << t.name () << "{"; + } + + virtual void + post (Type&) + { + os << "}"; + } + }; } ServantSourceEmitter::ServantSourceEmitter (std::ostream& os_, @@ -4261,13 +4364,13 @@ ServantSourceEmitter::pre (TranslationUnit&) "_svnt.h"); file_name = regex::perl_s (file_name, - "/^(.+?)(\\.(idl|cidl|cdl))?$/$1" + "/(\\.(idl|cidl|cdl))?$/" + file_suffix + "/"); string swap_option = cl_.get_value ("custom-container", ""); bool swapping = (swap_option == "upgradeable"); - + os << "#include \"" << file_name << "\"" << endl << "#include \"Cookies.h\"" << endl << "#include \"ciao/Servant_Activator.h\"" << endl @@ -4348,3 +4451,9 @@ ServantSourceEmitter::generate (TranslationUnit& u) unit.traverse (u); } +/* + * Local Variables: + * mode: C++ + * c-basic-offset: 2 + * End: + */ |