diff options
Diffstat (limited to 'TAO/CIAO/CIDLC/ServantSourceGenerator.cpp')
-rw-r--r-- | TAO/CIAO/CIDLC/ServantSourceGenerator.cpp | 1787 |
1 files changed, 838 insertions, 949 deletions
diff --git a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp index d1047e699aa..29c8411f4db 100644 --- a/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp +++ b/TAO/CIAO/CIDLC/ServantSourceGenerator.cpp @@ -3,13 +3,19 @@ // 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 "TypeNameEmitter.hpp" - -#include "CCF/CodeGenerationKit/Regex.hpp" #include <ostream> +#include "CCF/CodeGenerationKit/Regex.hpp" + using namespace CCF::CIDL; using namespace CCF::CIDL::SemanticGraph; using namespace StringLiterals; @@ -18,137 +24,51 @@ using std::string; namespace { - class Context - { - 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 + struct RepoIdEmitter : Traversal::Type, + EmitterBase { - public: - EmitterBase (Context& c) - : ctx (c), - os (ctx.os ()) + RepoIdEmitter (Context& c) + : EmitterBase (c) { } - 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]) << "\""; } - - private: - std::ostream& os; }; - struct ModuleEmitter : Traversal::Module, EmitterBase + struct ConsumerRepoIdEmitter : Traversal::Type, + EmitterBase { - ModuleEmitter (Context& c) + ConsumerRepoIdEmitter (Context& c) : EmitterBase (c) { } virtual void - pre (Type& t) - { - os << "namespace " << t.name () << "{"; - } - - virtual void - post (Type&) + traverse (SemanticGraph::Type& t) { - os << "}"; + string holder (t.context ().get<string> (STRS[REPO_ID])); + os << "\"" << holder.substr (0, holder.rfind (':')) + << "Consumer:1.0\""; } }; - struct FlatNameEmitter : Traversal::Type + struct FlatNameEmitter : Traversal::Type, + EmitterBase { - FlatNameEmitter (std::ostream& os_) - : os (os_) - {} - - virtual void - traverse (SemanticGraph::Type& t) + FlatNameEmitter (Context& c) + : EmitterBase (c) { - 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) { - string holder (t.context ().get<string> (STRS[REPO_ID])); - os << "\"" << holder.substr (0, holder.rfind (':')) - << "Consumer:1.0\""; + os << regex::perl_s (t.scoped_name ().str (), "/::/_/"); } - - private: - std::ostream& os; }; struct OperationExecEmitter : Traversal::Operation, @@ -224,24 +144,6 @@ 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 @@ -267,7 +169,7 @@ namespace T& scope) : EmitterBase (c), scope_ (scope), - ace_check_return_emitter_ (c.os ()) + ace_check_return_emitter_ (c) { ace_check_returns_.node_traverser (ace_check_return_emitter_); } @@ -318,7 +220,7 @@ namespace virtual void raises_pre (Type&) { - os << STRS[EXCP_START] << endl + os << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl; } @@ -371,457 +273,6 @@ 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 { @@ -860,12 +311,15 @@ namespace }; struct FacetWriteAttributeEmitter - : WriteAttributeEmitter<SemanticGraph::Interface> + : WriteAttributeSourceEmitter<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) - : WriteAttributeEmitter<SemanticGraph::Interface> (c, i, false) + : WriteAttributeSourceEmitter<SemanticGraph::Interface> (c, + i, + false, + false) {} virtual void @@ -873,7 +327,7 @@ namespace { os << "template <typename T>" << endl; - WriteAttributeEmitter<SemanticGraph::Interface>::pre (a); + WriteAttributeSourceEmitter<SemanticGraph::Interface>::pre (a); } virtual void @@ -890,11 +344,11 @@ namespace }; struct FacetAttributeEmitter - : AttributeEmitter<SemanticGraph::Interface> + : AttributeSourceEmitter<SemanticGraph::Interface> { FacetAttributeEmitter (Context& c, SemanticGraph::Interface& i) - : AttributeEmitter<SemanticGraph::Interface> (c, i) + : AttributeSourceEmitter<SemanticGraph::Interface> (c, i) {} // ReadWriteAttribute @@ -919,7 +373,7 @@ namespace { os << "template <typename T>" << endl; - AttributeEmitter<SemanticGraph::Interface>::pre (a); + AttributeSourceEmitter<SemanticGraph::Interface>::pre (a); } virtual void @@ -944,7 +398,7 @@ namespace { os << "template <typename T>" << endl; - AttributeEmitter<SemanticGraph::Interface>::pre (a); + AttributeSourceEmitter<SemanticGraph::Interface>::pre (a); } virtual void @@ -967,9 +421,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 << "{" << "}"; @@ -1001,15 +455,15 @@ namespace operation_emitter.edge_traverser (returns); operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (os); - ParameterEmitter<Traversal::InOutParameter> inout_param (os); - ParameterEmitter<Traversal::OutParameter> out_param (os); + ParameterEmitter<Traversal::InParameter> in_param (ctx); + ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); + ParameterEmitter<Traversal::OutParameter> out_param (ctx); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (os); - TypeNameEmitter type_name_emitter (os); + ReturnTypeNameEmitter return_type_emitter (ctx); + FullTypeNameEmitter type_name_emitter (ctx); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -1018,9 +472,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (os); - INOUTArgTypeNameEmitter inout_arg_emitter (os); - OUTArgTypeNameEmitter out_arg_emitter (os); + INArgTypeNameEmitter in_arg_emitter (ctx); + INOUTArgTypeNameEmitter inout_arg_emitter (ctx); + OUTArgTypeNameEmitter out_arg_emitter (ctx); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -1030,32 +484,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 - << "ACE_THROW_SPEC ((CORBA::SystemException))" << endl + << STRS[EXCP_SNGL] << 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] << ");" << endl + << STRS[ENV_SNGL_ARG] << ");" << "}" << "::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] << ");" << endl + << STRS[ENV_SNGL_ARG] << ");" << "}" - << STRS[ACE_TR] << " (CORBA::INTERNAL (), 0);" << endl + << STRS[ACE_TR] << " ( ::CORBA::INTERNAL (), 0);" << endl << "}" << endl; i.context ().set ("facet_src_gen", true); @@ -1078,8 +532,8 @@ namespace { ContextPortsEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c.os ()), - simple_type_name_emitter_ (c.os ()), + type_name_emitter_ (c), + simple_type_name_emitter_ (c), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -1114,21 +568,22 @@ namespace os << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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] << " ());" << endl + << "ACE_THROW ( " << STRS[EXCP_AC] << " ());" << "}" - << "if (CORBA::is_nil (c))" << endl + << "if ( ::CORBA::is_nil (c))" << endl << "{" - << "ACE_THROW (" << STRS[EXCP_IC] << " ());" << endl + << "ACE_THROW ( " << STRS[EXCP_IC] << " ());" << "}" - << "this->ciao_uses_" << u.name () << "_ =" << endl; + << "this->ciao_uses_" << u.name () << "_ =" << endl + << " "; Traversal::SingleUserData::belongs (u, belongs_); @@ -1141,14 +596,14 @@ namespace << scope_.name () << "_Context::disconnect_" << u.name () << " (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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] << " (" << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_NC] << " ()," << endl; Traversal::SingleUserData::belongs (u, belongs_); @@ -1170,27 +625,29 @@ namespace << STRS[EXCP_SNGL] << endl << "{" << u.scoped_name () << "Connections *tmp_retv = 0;" - << "ACE_NEW_THROW_EX (" << endl + << "ACE_NEW_THROW_EX (" << "tmp_retv," << endl << u.scoped_name () << "Connections (" << endl << "this->ciao_uses_" << u.name () << "_.current_size ())," << endl - << "CORBA::NO_MEMORY ());" << endl << endl + << "::CORBA::NO_MEMORY ());" << 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 ();" - << " iter != this->ciao_uses_" << u.name () << "_.end ();" - << " ++iter)" << endl + << " this->ciao_uses_" << u.name () << "_.begin ();" << endl + << "iter != this->ciao_uses_" << u.name () << "_.end ();" + << endl + << "++iter)" << endl << "{" << "ACE_Active_Map_Manager< " << endl; @@ -1206,10 +663,10 @@ namespace << STRS[ENV_ARG] << ");" << STRS[ACE_CR] << " (0);" << endl; - os << "ACE_NEW_THROW_EX (" << endl + os << "ACE_NEW_THROW_EX (" << "retv[i].ck.inout ()," << endl - << "CIAO::Map_Key_Cookie (entry.ext_id_)," << endl - << "CORBA::NO_MEMORY ());" << endl + << "::CIAO::Map_Key_Cookie (entry.ext_id_)," << endl + << "::CORBA::NO_MEMORY ());" << endl << "++i;" << endl << "}"; @@ -1224,14 +681,15 @@ namespace os << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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_); @@ -1246,16 +704,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 (" << endl + << "ACE_NEW_THROW_EX (" << "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 @@ -1268,7 +727,7 @@ namespace << u.name () << " (" << endl << STRS[COMP_CK] << " * ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{"; @@ -1278,10 +737,10 @@ namespace os << "_var retv;" << "ACE_Active_Map_Manager_Key key;" << endl; - os << "if (ck == 0 || ! CIAO::Map_Key_Cookie::extract (ck, key))" + os << "if (! CIAO::Map_Key_Cookie::extract (ck, key))" << endl << "{" - << STRS[ACE_TR] << " (" << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " ()," << endl; Traversal::MultiUserData::belongs (u, belongs_); @@ -1292,7 +751,7 @@ namespace os << "if (this->ciao_uses_" << u.name () << "_.unbind (key, retv) != 0)" << endl << "{" - << STRS[ACE_TR] << " (" << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " ()," << endl; Traversal::MultiUserData::belongs (u, belongs_); @@ -1317,15 +776,16 @@ namespace << STRS[ENV_SRC] << ")" << endl << STRS[EXCP_SNGL] << endl << "{" - << "for (ACE_Active_Map_Manager< " << endl; //@@ gcc bug + << "for (ACE_Active_Map_Manager< " << endl + << " "; Traversal::PublisherData::belongs (p, belongs_); os << "Consumer_var>::iterator iter =" << endl - << "this->ciao_publishes_" << p.name () - << "_map_.begin ();" + << " this->ciao_publishes_" << p.name () + << "_map_.begin ();" << endl << "iter != this->ciao_publishes_" << p.name () - << "_map_.end ();" + << "_map_.end ();" << endl << "++iter)" << endl << "{" << "(*iter).int_id_->push_"; @@ -1339,11 +799,11 @@ namespace << "}"; os << "for (ACE_Active_Map_Manager< " << endl - << STRS[COMP_ECB] << "_var>::iterator giter =" << endl - << "this->ciao_publishes_" << p.name () - << "_generic_map_.begin ();" + << " " << STRS[COMP_ECB] << "_var>::iterator giter =" << endl + << " this->ciao_publishes_" << p.name () + << "_generic_map_.begin ();" << endl << "giter != this->ciao_publishes_" << p.name () - << "_generic_map_.end ();" + << "_generic_map_.end ();" << endl << "++giter)" << endl << "{" << "(*giter).int_id_->push_event" << " (" << endl @@ -1361,18 +821,19 @@ namespace os << "Consumer_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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_); @@ -1382,10 +843,10 @@ namespace << "_map_.bind (sub.in (), key);" << "sub._retn ();" << endl << STRS[COMP_CK] << " * retv = 0;" - << "ACE_NEW_THROW_EX (" << endl + << "ACE_NEW_THROW_EX (" << "retv," << endl << "::CIAO::Map_Key_Cookie (key)," << endl - << "CORBA::NO_MEMORY ());" << endl + << "::CORBA::NO_MEMORY ());" << endl << "return retv;" << endl << "}"; @@ -1394,26 +855,26 @@ namespace << p.name () << "_generic (" << endl << STRS[COMP_ECB] << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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 (" << endl + << "ACE_NEW_THROW_EX (" << "retv," << endl << "::CIAO::Map_Key_Cookie (key)," << endl - << "CORBA::NO_MEMORY ());" << endl + << "::CORBA::NO_MEMORY ());" << endl << "return retv;" << endl << "}"; @@ -1424,7 +885,7 @@ namespace << p.name () << " (" << endl << STRS[COMP_CK] << " *ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{" @@ -1432,7 +893,7 @@ namespace << "if (ck == 0 || ::CIAO::Map_Key_Cookie::extract (ck, key) == false)" << endl << "{" - << STRS[ACE_TR] << " (" << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " ()," << endl; Traversal::PublisherData::belongs (p, belongs_); @@ -1454,7 +915,7 @@ namespace os << "if (this->ciao_publishes_" << p.name () << "_generic_map_.unbind (key, ecb) != 0)" << endl << "{" - << STRS[ACE_TR] << " (" << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " ()," << endl; Traversal::PublisherData::belongs (p, belongs_); @@ -1500,19 +961,19 @@ namespace os << "Consumer_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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 - << "}" << endl - << "if (! CORBA::is_nil (this->ciao_emits_" << e.name () + << "ACE_THROW ( ::CORBA::BAD_PARAM ());" << endl + << "}" + << "if (! ::CORBA::is_nil (this->ciao_emits_" << e.name () << "_consumer_.in ()))" << endl << "{" - << "ACE_THROW (" << STRS[EXCP_AC] << " ());" << endl - << "}" << endl + << "ACE_THROW ( " << STRS[EXCP_AC] << " ());" << endl + << "}" << "this->ciao_emits_" << e.name () << "_consumer_ = " << endl; @@ -1527,27 +988,27 @@ namespace << scope_.name () << "_Context::disconnect_" << e.name () << " (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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] << " (" << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_NC] << " ()," << endl; Traversal::EmitterData::belongs (e, belongs_); os << "Consumer::_nil ());" << endl - << "}" << endl + << "}" << "return this->ciao_emits_" << e.name () << "_consumer_._retn ();" << endl << "}"; } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; Traversal::Belongs belongs_; Traversal::Belongs simple_belongs_; @@ -1560,7 +1021,7 @@ namespace { SwappableGetConsumersEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c.os ()) + type_name_emitter_ (c) { belongs_.node_traverser (type_name_emitter_); } @@ -1573,10 +1034,10 @@ namespace << "{" << "_ciao_size = this->ciao_publishes_" << p.name () << "_map_.current_size ();" << endl - << "ACE_NEW_THROW_EX (" << endl + << "ACE_NEW_THROW_EX (" << "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; @@ -1586,12 +1047,13 @@ namespace 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 @@ -1612,15 +1074,15 @@ namespace << "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 (" << endl + << "ACE_NEW_THROW_EX (" << "cd," << endl << "OBV_Components::ConsumerDescription ()," << endl - << "CORBA::NO_MEMORY ());" << endl + << "::CORBA::NO_MEMORY ());" << endl << "::Components::ConsumerDescription_var safe = cd;" << "safe->name (\"\");" << "safe->type_id (\"\");" @@ -1638,7 +1100,7 @@ namespace } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; }; @@ -1736,23 +1198,23 @@ namespace << t.name () << "_Context::get_registered_consumers (" << endl << "const char *publisher_name" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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. { @@ -1771,7 +1233,7 @@ namespace component_emitter.traverse (t); } - os << STRS[ACE_TR] << " (" << STRS[EXCP_IN] << " (), 0);" + os << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);" << "}"; } @@ -1796,12 +1258,12 @@ namespace // Nested classes used by ServantEmitter. private: - struct NavigationEmitsEmitter : Traversal::EmitterData, - EmitterBase + struct EmitsConnectEmitter : Traversal::EmitterData, + EmitterBase { - NavigationEmitsEmitter (Context& c) + EmitsConnectEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c.os ()) + type_name_emitter_ (c) { belongs_.node_traverser (type_name_emitter_); } @@ -1815,17 +1277,18 @@ 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 () @@ -1837,10 +1300,30 @@ namespace } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter 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 { @@ -1866,7 +1349,7 @@ namespace PublishesEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c.os ()), + type_name_emitter_ (c), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -1883,7 +1366,7 @@ namespace os << "Consumer_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "))" << endl << "{"; @@ -1908,7 +1391,7 @@ namespace << "_Servant::subscribe_" << p.name () << "_generic (" << endl << STRS[COMP_ECB] << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "))" << endl << "{"; @@ -1932,7 +1415,7 @@ namespace << "_Servant::unsubscribe_" << p.name () << " (" << endl << STRS[COMP_CK] << " *ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{"; @@ -1940,7 +1423,7 @@ namespace if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ("; + << STRS[ACE_CR] << " ( "; Traversal::PublisherData::belongs (p, belongs_); @@ -1955,7 +1438,7 @@ namespace } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; SemanticGraph::Component& scope_; }; @@ -1966,7 +1449,7 @@ namespace { UsesConnectEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c.os ()) + type_name_emitter_ (c) { belongs_.node_traverser (type_name_emitter_); } @@ -1988,9 +1471,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 @@ -2019,9 +1502,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 @@ -2032,7 +1515,7 @@ namespace } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; }; @@ -2064,6 +1547,12 @@ 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 @@ -2077,7 +1566,7 @@ namespace { UsesEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c.os ()), + type_name_emitter_ (c), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -2094,7 +1583,7 @@ namespace os << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_AC] << "," << endl << STRS[EXCP_IC] << "))" << endl @@ -2111,7 +1600,7 @@ namespace << scope_.name () << "_Servant::disconnect_" << u.name () << " (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_NC] << "))" << endl << "{" @@ -2146,7 +1635,7 @@ namespace os << "_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_ECL] << "," << endl << STRS[EXCP_IC] << "))" << endl @@ -2164,7 +1653,7 @@ namespace << u.name () << " (" << endl << STRS[COMP_CK] << " * ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IC] << "))" << endl << "{" @@ -2188,7 +1677,7 @@ namespace } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; SemanticGraph::Component& scope_; }; @@ -2198,7 +1687,7 @@ namespace { PublishesSubscribeEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c.os ()) + type_name_emitter_ (c) { belongs_.node_traverser (type_name_emitter_); } @@ -2212,7 +1701,8 @@ namespace Traversal::PublisherData::belongs (p, belongs_); - os << "Consumer_var sub =" << endl; + os << "Consumer_var sub =" << endl + << " "; Traversal::PublisherData::belongs (p, belongs_); @@ -2221,15 +1711,16 @@ namespace << 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 @@ -2240,7 +1731,7 @@ namespace << "}" << "else" << endl << "{" - << STRS[ACE_TR] << " (" << STRS[EXCP_IC] << " (), 0);" << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);" << endl << "}" << "}" << "else" << endl @@ -2253,7 +1744,7 @@ namespace } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; }; @@ -2283,7 +1774,7 @@ namespace { EmitsEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c.os ()), + type_name_emitter_ (c), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -2300,7 +1791,7 @@ namespace os << "Consumer_ptr c" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_AC] << "))" << endl << "{" @@ -2316,7 +1807,7 @@ namespace << scope_.name () << "_Servant::disconnect_" << e.name () << " (" << endl << STRS[ENV_SNGL_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_NC] << "))" << endl << "{" @@ -2327,25 +1818,24 @@ namespace } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; Traversal::Belongs belongs_; SemanticGraph::Component& scope_; }; - struct ServantTypeNameEmitter : Traversal::Type + struct ServantTypeNameEmitter : Traversal::Type, + EmitterBase { - ServantTypeNameEmitter (std::ostream& os_) - : os (os_) - {} + ServantTypeNameEmitter (Context& c) + : EmitterBase (c) + { + } virtual void traverse (SemanticGraph::Type& t) { os << t.name () << "_Servant"; } - - private: - std::ostream& os; }; struct FacetProvidesEmitter : Traversal::ProviderData, @@ -2354,11 +1844,11 @@ namespace FacetProvidesEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (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 ()), + type_name_emitter_ (c), + simple_type_name_emitter_ (c), + servant_type_name_emitter_ (c), + enclosing_type_name_emitter_ (c), + repo_id_emitter_ (c), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -2386,7 +1876,7 @@ namespace if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " ("; + << STRS[ACE_CR] << " ( "; Traversal::ProviderData::belongs (p, belongs_); @@ -2404,9 +1894,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_); @@ -2417,14 +1907,15 @@ namespace Traversal::ProviderData::belongs (p, belongs_); - os << "_var fo =" << endl; + os << "_var fo =" << endl + << " "; Traversal::ProviderData::belongs (p, belongs_); - os << "::_narrow (" << endl + os << "::_narrow (" << "obj.in ()" << endl << STRS[ENV_ARG] << ");" - << STRS[ACE_CR] << " ("; + << STRS[ACE_CR] << " ( "; Traversal::ProviderData::belongs (p, belongs_); @@ -2447,7 +1938,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 << "{" @@ -2495,18 +1986,18 @@ namespace os << "ACE_CString obj_id (this->ins_name_);" << "obj_id += \"_" << p.name () << "\";" << 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 + 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 << "this->container_->ports_servant_activator ();" << endl << "if (!sa->register_port_activator (tmp))" << endl << "{" @@ -2519,29 +2010,34 @@ 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 (" << endl - << "\"" << p.name () << "\"," << endl - << "obj.in ());" << endl; + << "this->add_facet (\"" << p.name () << "\"," << endl + << "obj.in ()" << endl + << STRS[ENV_ARG] << ");" + << STRS[ACE_CR] << " ( "; + + Traversal::ProviderData::belongs (p, belongs_); + + os << "::_nil ());" << endl; os << "return obj._retn ();" << endl << "}"; } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; ServantTypeNameEmitter servant_type_name_emitter_; EnclosingTypeNameEmitter enclosing_type_name_emitter_; @@ -2559,9 +2055,9 @@ namespace { ConsumesEmitter (Context& c, SemanticGraph::Component& scope) : EmitterBase (c), - type_name_emitter_ (c.os ()), - simple_type_name_emitter_ (c.os ()), - repo_id_emitter_ (c.os ()), + type_name_emitter_ (c), + simple_type_name_emitter_ (c), + repo_id_emitter_ (c), scope_ (scope) { belongs_.node_traverser (type_name_emitter_); @@ -2590,10 +2086,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 << "{" @@ -2613,7 +2109,7 @@ namespace << "{" << "}"; - os << "CORBA::Object_ptr" << endl + os << "::CORBA::Object_ptr" << endl << scope_.name () << "_Servant::"; Traversal::ConsumerData::belongs (c, simple_belongs_); @@ -2661,14 +2157,15 @@ namespace << "_Servant::push_event (" << endl << "::Components::EventBase *ev" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << 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_); @@ -2684,7 +2181,7 @@ namespace << STRS[ENV_ARG] << ");" << endl << "return;" << endl << "}" - << "ACE_THROW (" << STRS[EXCP_BET] << " ());" << endl + << "ACE_THROW ( " << STRS[EXCP_BET] << " ());" << endl << "}"; os << "CORBA::Boolean" << endl @@ -2700,21 +2197,21 @@ 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 @@ -2722,7 +2219,7 @@ namespace << "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; @@ -2759,9 +2256,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_); @@ -2769,14 +2266,15 @@ 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_); @@ -2799,14 +2297,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::"; @@ -2845,19 +2343,19 @@ namespace os << "ACE_CString obj_id (this->ins_name_);" << "obj_id += \"_" << c.name () << "\";" << 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 + 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 << "if (!sa->register_port_activator (tmp))" << endl << "{" << "return "; @@ -2869,40 +2367,45 @@ 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] << " ("; + << " ::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 (" << endl - << "\"" << c.name () << "\"," << endl - << "ecb.in ());" << endl; + os << "this->add_consumer (\"" << c.name () << "\"," << endl + << "ecb.in ()" << endl + << STRS[ENV_ARG] << ");" + << STRS[ACE_CR] << " ( "; + + Traversal::ConsumerData::belongs (c, belongs_); + + os << "Consumer::_nil ());" << endl; os << "return ecb._retn ();" << endl << "}"; } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; ConsumerRepoIdEmitter repo_id_emitter_; Traversal::Belongs belongs_; @@ -2918,8 +2421,9 @@ namespace { RegisterValueFactoryEmitter (Context& c) : EmitterBase (c), - type_name_emitter_ (c.os ()), - cerr_type_name_emitter_ (cerr), + c_ (cerr, c.export_macro (), c.cl ()), + type_name_emitter_ (c), + cerr_type_name_emitter_ (c_), gen_factory_ (true) { belongs_.node_traverser (type_name_emitter_); @@ -3002,8 +2506,9 @@ namespace } private: - TypeNameEmitter type_name_emitter_; - TypeNameEmitter cerr_type_name_emitter_; + Context c_; + FullTypeNameEmitter type_name_emitter_; + FullTypeNameEmitter cerr_type_name_emitter_; Traversal::Belongs belongs_; Traversal::Belongs cerr_belongs_; bool gen_factory_; @@ -3088,8 +2593,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; } @@ -3112,8 +2617,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; } }; @@ -3131,13 +2636,231 @@ namespace { Traversal::Belongs delegate_belongs; - SetAttributeDelegationEmitter delegater (ctx.os (), a); + SetAttributeDelegationEmitter delegater (ctx, 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) @@ -3159,7 +2882,7 @@ namespace << " comp_svnt_base (exe, h, hs, c)," << endl << " ins_name_ (ins_name)" << endl << "{" - << "ACE_NEW (" << endl + << "ACE_NEW (" << "this->context_," << endl << t.name () << "_Context (h, c, this));" << endl; @@ -3185,9 +2908,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 << "{" @@ -3229,7 +2952,7 @@ namespace << "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; @@ -3314,7 +3037,7 @@ namespace << "const char *name," << endl << "::CORBA::Object_ptr connection" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_IC] << "," << endl @@ -3333,7 +3056,7 @@ namespace << 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. @@ -3353,15 +3076,15 @@ 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] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_IC] << "," << endl @@ -3373,13 +3096,13 @@ namespace 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] << " (" << endl - << STRS[EXCP_IN] << " ()," << endl + << STRS[ACE_TR] << " ( " + << STRS[EXCP_BP] << "," << endl << "::CORBA::Object::_nil ());" << endl << "}"; @@ -3400,9 +3123,61 @@ namespace component_emitter.traverse (t); } - os << STRS[ACE_TR] << " (" << endl + os << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " ()," << endl - << "::CORBA::Object::_nil ());" << 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 ();" << "}"; // Generate generic operations for receptacles. @@ -3428,7 +3203,7 @@ namespace << "const char * emitter_name," << endl << STRS[COMP_ECB] << "_ptr consumer" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_AC] << "," << endl @@ -3438,12 +3213,12 @@ namespace if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << "ACE_CHECK;" << endl; + << STRS[ACE_CK] << ";" << endl; } os << "if (emitter_name == 0)" << endl << "{" - << "ACE_THROW (::CORBA::BAD_PARAM ());" << endl + << STRS[ACE_TH] << " ( " << STRS[EXCP_BP] << ");" << endl << "}"; // Generate an IF block for each 'emits' declaration. @@ -3457,23 +3232,168 @@ namespace component_emitter.edge_traverser (defines); component_emitter.edge_traverser (inherits); - NavigationEmitsEmitter navigation_emits_emitter (ctx); - defines.node_traverser (navigation_emits_emitter); + EmitsConnectEmitter emits_connect_emitter (ctx); + defines.node_traverser (emits_connect_emitter); component_emitter.traverse (t); } os << STRS[ACE_UA] << " (consumer);" - << "ACE_THROW (" + << STRS[ACE_TH] << " ( " << 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] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_IC] << "," << endl @@ -3490,7 +3410,7 @@ namespace << 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 << "}"; @@ -3511,7 +3431,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 @@ -3520,7 +3440,7 @@ namespace << "const char *publisher_name," << endl << STRS[COMP_CK] << " *ck" << endl << STRS[ENV_SRC] << ")" << endl - << STRS[EXCP_START] << endl + << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl << STRS[EXCP_IN] << "," << endl << STRS[EXCP_IC] << "))" << endl @@ -3529,7 +3449,7 @@ namespace if (swapping) { os << "this->activate_component (" << STRS[ENV_SNGL_ARG] << ");" - << STRS[ACE_CR] << " (" << STRS[COMP_ECB] + << STRS[ACE_CR] << " ( " << STRS[COMP_ECB] << "::_nil ());" << endl; } @@ -3537,7 +3457,7 @@ namespace << STRS[ACE_UA] << " (ck);" << endl << "if (publisher_name == 0)" << endl << "{" - << STRS[ACE_TR] << " (" << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " ()," << endl << STRS[COMP_ECB] << "::_nil ());" << endl << "}"; @@ -3559,7 +3479,7 @@ namespace component_emitter.traverse (t); } - os << STRS[ACE_TR] << " (" << endl + os << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " ()," << endl << STRS[COMP_ECB] << "::_nil ());" << endl << "}"; @@ -3581,25 +3501,24 @@ 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] << endl + << STRS[EXCP_START] << " " << 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] << " (" << endl - << "::CORBA::BAD_PARAM ()," << endl + << STRS[ACE_TR] << " ( " << STRS[EXCP_BP] << "," << endl << "::CORBA::Object::_nil ());" << endl << "}"; @@ -3620,8 +3539,9 @@ 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. @@ -3643,7 +3563,7 @@ namespace interface_emitter.edge_traverser (defines); interface_emitter.edge_traverser (interface_inherits); - AttributeEmitter<SemanticGraph::Component> attribute_emitter (ctx, t); + AttributeSourceEmitter<SemanticGraph::Component> attribute_emitter (ctx, t); defines.node_traverser (attribute_emitter); OperationEmitter<SemanticGraph::Component> operation_emitter (ctx, t); @@ -3657,15 +3577,15 @@ namespace operation_emitter.edge_traverser (returns); operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (os); - ParameterEmitter<Traversal::InOutParameter> inout_param (os); - ParameterEmitter<Traversal::OutParameter> out_param (os); + ParameterEmitter<Traversal::InParameter> in_param (ctx); + ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); + ParameterEmitter<Traversal::OutParameter> out_param (ctx); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (os); - TypeNameEmitter type_name_emitter (os); + ReturnTypeNameEmitter return_type_emitter (ctx); + FullTypeNameEmitter type_name_emitter (ctx); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -3674,9 +3594,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (os); - INOUTArgTypeNameEmitter inout_arg_emitter (os); - OUTArgTypeNameEmitter out_arg_emitter (os); + INArgTypeNameEmitter in_arg_emitter (ctx); + INOUTArgTypeNameEmitter inout_arg_emitter (ctx); + OUTArgTypeNameEmitter out_arg_emitter (ctx); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -3697,7 +3617,7 @@ namespace Traversal::Defines defines; component_emitter.edge_traverser (defines); - AttributeEmitter<SemanticGraph::Component> attribute_emitter (ctx, t); + AttributeSourceEmitter<SemanticGraph::Component> attribute_emitter (ctx, t); defines.node_traverser (attribute_emitter); component_emitter.traverse (t); @@ -3739,8 +3659,8 @@ namespace { HomeEmitter (Context& c) : EmitterBase (c), - repo_id_emitter_ (c.os ()), - flat_name_emitter_ (c.os ()) + repo_id_emitter_ (c), + flat_name_emitter_ (c) { repo_id_manages_.node_traverser (repo_id_emitter_); flat_name_manages_.node_traverser (flat_name_emitter_); @@ -3804,10 +3724,10 @@ namespace { FactoryOperationEmitter (Context& c, SemanticGraph::Home& home) : EmitterBase (c), - return_type_name_emitter_ (c.os ()), - enclosing_type_name_emitter_ (c.os ()), - simple_type_name_emitter_ (c.os ()), - type_name_emitter_ (c.os ()), + return_type_name_emitter_ (c), + enclosing_type_name_emitter_ (c), + simple_type_name_emitter_ (c), + type_name_emitter_ (c), scope_ (home) { returns_.node_traverser (return_type_name_emitter_); @@ -3858,7 +3778,7 @@ namespace virtual void raises_pre (SemanticGraph::HomeFactory&) { - os << STRS[EXCP_START] << endl + os << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl; } @@ -3894,7 +3814,7 @@ namespace operation_emitter.traverse (hf); } - os << STRS[ACE_CR] << " ("; + os << STRS[ACE_CR] << " ( "; Traversal::Home::manages (scope_, manages_); @@ -3918,7 +3838,7 @@ namespace << "_ciao_ec.in ()" << endl << STRS[ENV_ARG] << ");" << endl; - os << STRS[ACE_CR] << " ("; + os << STRS[ACE_CR] << " ( "; Traversal::Home::manages (scope_, manages_); @@ -3941,7 +3861,7 @@ namespace ReturnTypeNameEmitter return_type_name_emitter_; EnclosingTypeNameEmitter enclosing_type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; Traversal::Returns returns_; Traversal::Manages enclosing_manages_; Traversal::Manages simple_manages_; @@ -3955,10 +3875,10 @@ namespace { FinderOperationEmitter (Context& c, SemanticGraph::Home& home) : EmitterBase (c), - type_name_emitter_ (c.os ()), - return_type_name_emitter_ (c.os ()), - enclosing_type_name_emitter_ (c.os ()), - simple_type_name_emitter_ (c.os ()), + type_name_emitter_ (c), + return_type_name_emitter_ (c), + enclosing_type_name_emitter_ (c), + simple_type_name_emitter_ (c), scope_ (home) { returns_.node_traverser (return_type_name_emitter_); @@ -4009,7 +3929,7 @@ namespace virtual void raises_pre (SemanticGraph::HomeFinder&) { - os << STRS[EXCP_START] << endl + os << STRS[EXCP_START] << " " << STRS[EXCP_SYS] << "," << endl; } @@ -4023,8 +3943,7 @@ namespace post (SemanticGraph::HomeFinder& hf) { os << "{" - << STRS[ACE_TR] << " (" << endl - << "::CORBA::NO_IMPLEMENT ()," << endl; + << STRS[ACE_TR] << " ( ::CORBA::NO_IMPLEMENT ()," << endl; Traversal::HomeFinder::returns (hf, simple_returns_); @@ -4039,7 +3958,7 @@ namespace } private: - TypeNameEmitter type_name_emitter_; + FullTypeNameEmitter type_name_emitter_; ReturnTypeNameEmitter return_type_name_emitter_; EnclosingTypeNameEmitter enclosing_type_name_emitter_; SimpleTypeNameEmitter simple_type_name_emitter_; @@ -4108,15 +4027,15 @@ namespace home_operation_emitter.edge_traverser (returns); home_operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (os); - ParameterEmitter<Traversal::InOutParameter> inout_param (os); - ParameterEmitter<Traversal::OutParameter> out_param (os); + ParameterEmitter<Traversal::InParameter> in_param (ctx); + ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); + ParameterEmitter<Traversal::OutParameter> out_param (ctx); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (os); - TypeNameEmitter type_name_emitter (os); + ReturnTypeNameEmitter return_type_emitter (ctx); + FullTypeNameEmitter type_name_emitter (ctx); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -4125,9 +4044,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (os); - INOUTArgTypeNameEmitter inout_arg_emitter (os); - OUTArgTypeNameEmitter out_arg_emitter (os); + INArgTypeNameEmitter in_arg_emitter (ctx); + INOUTArgTypeNameEmitter inout_arg_emitter (ctx); + OUTArgTypeNameEmitter out_arg_emitter (ctx); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -4155,7 +4074,7 @@ namespace interface_emitter.edge_traverser (defines); interface_emitter.edge_traverser (interface_inherits); - AttributeEmitter<SemanticGraph::Home> attribute_emitter (ctx, t); + AttributeSourceEmitter<SemanticGraph::Home> attribute_emitter (ctx, t); defines.node_traverser (attribute_emitter); OperationEmitter<SemanticGraph::Home> operation_emitter (ctx, t); @@ -4169,15 +4088,15 @@ namespace operation_emitter.edge_traverser (returns); operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (os); - ParameterEmitter<Traversal::InOutParameter> inout_param (os); - ParameterEmitter<Traversal::OutParameter> out_param (os); + ParameterEmitter<Traversal::InParameter> in_param (ctx); + ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); + ParameterEmitter<Traversal::OutParameter> out_param (ctx); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (os); - TypeNameEmitter type_name_emitter (os); + ReturnTypeNameEmitter return_type_emitter (ctx); + FullTypeNameEmitter type_name_emitter (ctx); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -4186,9 +4105,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (os); - INOUTArgTypeNameEmitter inout_arg_emitter (os); - OUTArgTypeNameEmitter out_arg_emitter (os); + INArgTypeNameEmitter in_arg_emitter (ctx); + INOUTArgTypeNameEmitter inout_arg_emitter (ctx); + OUTArgTypeNameEmitter out_arg_emitter (ctx); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -4223,15 +4142,15 @@ namespace finder_operation_emitter.edge_traverser (returns); finder_operation_emitter.edge_traverser (raises); - ParameterEmitter<Traversal::InParameter> in_param (os); - ParameterEmitter<Traversal::InOutParameter> inout_param (os); - ParameterEmitter<Traversal::OutParameter> out_param (os); + ParameterEmitter<Traversal::InParameter> in_param (ctx); + ParameterEmitter<Traversal::InOutParameter> inout_param (ctx); + ParameterEmitter<Traversal::OutParameter> out_param (ctx); receives.node_traverser (in_param); receives.node_traverser (inout_param); receives.node_traverser (out_param); - ReturnTypeNameEmitter return_type_emitter (os); - TypeNameEmitter type_name_emitter (os); + ReturnTypeNameEmitter return_type_emitter (ctx); + FullTypeNameEmitter type_name_emitter (ctx); returns.node_traverser (return_type_emitter); raises.node_traverser (type_name_emitter); @@ -4240,9 +4159,9 @@ namespace inout_param.edge_traverser (inout_belongs); out_param.edge_traverser (out_belongs); - INArgTypeNameEmitter in_arg_emitter (os); - INOUTArgTypeNameEmitter inout_arg_emitter (os); - OUTArgTypeNameEmitter out_arg_emitter (os); + INArgTypeNameEmitter in_arg_emitter (ctx); + INOUTArgTypeNameEmitter inout_arg_emitter (ctx); + OUTArgTypeNameEmitter out_arg_emitter (ctx); in_belongs.node_traverser (in_arg_emitter); inout_belongs.node_traverser (inout_arg_emitter); out_belongs.node_traverser (out_arg_emitter); @@ -4263,7 +4182,7 @@ namespace Traversal::Defines defines; home_emitter.edge_traverser (defines); - AttributeEmitter<SemanticGraph::Home> attribute_emitter (ctx, t); + AttributeSourceEmitter<SemanticGraph::Home> attribute_emitter (ctx, t); defines.node_traverser (attribute_emitter); home_emitter.traverse (t); @@ -4280,7 +4199,7 @@ namespace << regex::perl_s (t.scoped_name ().str (), "/::/_/") << "_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 << "{" @@ -4314,30 +4233,6 @@ 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_, @@ -4453,9 +4348,3 @@ ServantSourceEmitter::generate (TranslationUnit& u) unit.traverse (u); } -/* - * Local Variables: - * mode: C++ - * c-basic-offset: 2 - * End: - */ |