diff options
Diffstat (limited to 'TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp')
-rw-r--r-- | TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp | 425 |
1 files changed, 128 insertions, 297 deletions
diff --git a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp index b24cccd7f10..c8fe1b94155 100644 --- a/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp +++ b/TAO/CIAO/CIDLC/ServantHeaderGenerator.cpp @@ -132,7 +132,7 @@ namespace virtual void post (Type&) { - os << ";" << endl; + os << ";" << endl << endl; } virtual void @@ -300,7 +300,7 @@ namespace Traversal::Belongs read_belongs_; }; - struct InterfaceEmitter : Traversal::UnconstrainedInterface, + struct InterfaceEmitter : Traversal::Interface, EmitterBase { InterfaceEmitter (Context& c) @@ -308,22 +308,22 @@ namespace {} bool - add (UnconstrainedInterface& i) + add (Interface& i) { return interfaces_.insert (&i).second; } virtual void - traverse (UnconstrainedInterface& i) + traverse (Interface& i) { if (add (i)) { - Traversal::UnconstrainedInterface::traverse (i); + Traversal::Interface::traverse (i); } } private: - std::set<UnconstrainedInterface*> interfaces_; + std::set<Interface*> interfaces_; }; struct FacetEmitter : Traversal::UnconstrainedInterface, @@ -736,21 +736,33 @@ namespace os << STRS[GLUE_NS] << regex::perl_s (t.scoped_name ().scope_name ().str (), "/::/_/") << "{"; + + os << "class " << t.name () << "_Servant;" << endl; os << "class " << ctx.export_macro () << " " << t.name () << "_Context" << endl - << ": public virtual " << t.scoped_name ().scope_name () << "::CCM_" - << t.name () << "_Context," - << endl - << "public virtual TAO_Local_RefCounted_Object" - << endl + << " : public virtual CIAO::Context_Impl<" << endl + << " " << t.scoped_name ().scope_name () << "::CCM_" + << t.name () << "_Context," << endl + << " " << t.name () << "_Servant," << endl + << " " << t.scoped_name () << "," << endl + << " " << t.scoped_name () << "_var" << endl + << " >" << endl << "{" << "public:" << endl; os << "// We will allow the servant glue code we generate to " << "access our state." << endl - << "friend class " << t.name () << "_Servant;" - << endl; + << "friend class " << t.name () << "_Servant;" << endl; + + os << "/// Hack for VC6." << endl + << "typedef CIAO::Context_Impl<" << endl + << " " << t.scoped_name ().scope_name () << "::CCM_" + << t.name () << "_Context," << endl + << " " << t.name () << "_Servant," << endl + << " " << t.scoped_name () << "," << endl + << " " << t.scoped_name () << "_var" << endl + << " > ctx_svnt_base;" << endl; os << t.name () << "_Context (" << endl << "::Components::CCMHome_ptr home," << endl @@ -760,55 +772,6 @@ namespace os << "virtual ~" << t.name () << "_Context (void);" << endl; - os << "// Operations from ::Components::CCMContext." << endl << endl; - - os << "virtual ::Components::Principal_ptr" << endl - << "get_caller_principal (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl; - - os << "virtual ::Components::CCMHome_ptr" << endl - << "get_CCM_home (" << endl - << STRS[ENV_SNGL_HDR_NOTUSED] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl ; - - os << "virtual CORBA::Boolean" << endl - << "get_rollback_only (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IS] << "));" << endl; - - os << "virtual ::Components::Transaction::UserTransaction_ptr" << endl - << "get_user_transaction (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IS] << "));" << endl; - - os << "virtual CORBA::Boolean" << endl - << "is_caller_in_role (" << endl - << "const char *role" << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl; - - os << "virtual void" << endl - << "set_rollback_only (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IS] << "));" << endl; - - os << "// Operations from " << STRS[COMP_SC] << " interface." - << endl << endl; - - os << "virtual CORBA::Object_ptr" << endl - << "get_CCM_object (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IS] << "));" << endl; - os << "// Operations for " << t.name () << " receptacles" << " and event sources," << endl << "// defined in " << t.scoped_name ().scope_name () << "::CCM_" @@ -831,9 +794,7 @@ namespace component_emitter.traverse (t); } - os << "// CIAO-specific." << endl << endl - << "::CIAO::Session_Container *" << endl - << "_ciao_the_Container (void) const;" << endl; + os << "// CIAO-specific." << endl << endl; os << "static " << t.name () << "_Context *" << endl << "_narrow (" << endl @@ -880,13 +841,8 @@ namespace } virtual void - post (Type& t) + post (Type&) { - os << "::Components::CCMHome_var home_;" << endl - << "::CIAO::Session_Container *container_;" << endl << endl - << t.name () << "_Servant *servant_;" << endl - << t.scoped_name () << "_var component_;" << endl; - // Component context class closer. os << "};"; @@ -1219,12 +1175,12 @@ namespace } virtual void - traverse (SemanticGraph::SingleUser& u) + traverse (SemanticGraph::SingleUser&) { } virtual void - traverse (SemanticGraph::MultiUser& u) + traverse (SemanticGraph::MultiUser&) { } @@ -1238,12 +1194,12 @@ namespace } virtual void - traverse (SemanticGraph::Emitter& e) + traverse (SemanticGraph::Emitter&) { } virtual void - traverse (SemanticGraph::Publisher& p) + traverse (SemanticGraph::Publisher&) { } @@ -1276,12 +1232,11 @@ namespace << " " << t.scoped_name ().scope_name () << "::CCM_" << t.name () << "_var," << endl << " " << t.name () << "_Context" << endl - << " >," << endl - << " " << STRS[INH_RCSB] << endl + << " >" << endl << "{" << "public:" << endl; - os << "/// Hack for VC6 the most sucky compiler" << endl + os << "/// Hack for VC6." << endl << "typedef CIAO::Servant_Impl<" << endl << " POA_" << stripped << "," << endl << " " << t.scoped_name ().scope_name () << "::CCM_" @@ -1289,7 +1244,7 @@ namespace << " " << t.scoped_name ().scope_name () << "::CCM_" << t.name () << "_var," << endl << " " << t.name () << "_Context" << endl - << " > our_base;" << endl << endl; + << " > comp_svnt_base;" << endl << endl; os << t.name () << "_Servant (" << endl << t.scoped_name ().scope_name () << "::CCM_" << t.name () @@ -1409,24 +1364,6 @@ namespace component_emitter.traverse (t); } - os << "// Operations for Navigation interface." << endl << endl; - - os << "virtual CORBA::Object_ptr" << endl - << "provide_facet (" << endl - << "const char *name" << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "));" << endl << endl; - - os << "virtual ::Components::FacetDescriptions *" << endl - << "get_named_facets (" << endl - << "const " << STRS[COMP_NAMES] << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "));" << endl << endl; - os << "// Operations for Receptacles interface." << endl << endl; os << "virtual " << STRS[COMP_CK] << " *" << endl @@ -1453,37 +1390,8 @@ namespace << STRS[EXCP_CR] << "," << endl << STRS[EXCP_NC] << "));" << endl << endl; - os << "virtual ::Components::ConnectionDescriptions *" << endl - << "get_connections (" << endl - << "const char *name" << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "));" << endl << endl; - - os << "virtual ::Components::ReceptacleDescriptions *" << endl - << "get_all_receptacles (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl << endl; - - os << "virtual ::Components::ReceptacleDescriptions *" << endl - << "get_named_receptacles (" << endl - << "const " << STRS[COMP_NAMES] << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "));" << endl << endl; - os << "// Operations for Events interface." << endl << endl; - os << "virtual " << STRS[COMP_ECB] << "_ptr" << endl - << "get_consumer (" << endl - << "const char *sink_name" << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "));" << endl << endl; - os << "virtual " << STRS[COMP_CK] << " *" << endl << "subscribe (" << endl << "const char *publisher_name," << endl @@ -1516,70 +1424,6 @@ namespace << STRS[EXCP_AC] << "," << endl << STRS[EXCP_IC] << "));" << endl << endl; - os << "virtual " << STRS[COMP_ECB] << "_ptr" << endl - << "disconnect_consumer (" << endl - << "const char *source_name" << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "," << endl - << STRS[EXCP_NC] << "));" << endl << endl; - - os << "virtual ::Components::ConsumerDescriptions *" << endl - << "get_named_consumers (" << endl - << "const " << STRS[COMP_NAMES] << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "));" << endl << endl; - - os << "virtual ::Components::EmitterDescriptions *" << endl - << "get_all_emitters (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl << endl; - - os << "virtual ::Components::EmitterDescriptions *" << endl - << "get_named_emitters(" << endl - << "const " << STRS[COMP_NAMES] << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "));" << endl << endl; - - os << "virtual ::Components::PublisherDescriptions *" << endl - << "get_all_publishers (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl << endl; - - os << "virtual ::Components::PublisherDescriptions *" << endl - << "get_named_publishers (" << endl - << "const " << STRS[COMP_NAMES] << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_IN] << "));" << endl << endl; - - os << "// Operations for CCMObject interface." << endl << endl; - - os << "virtual CORBA::IRObject_ptr" << endl - << "get_component_def (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl << endl; - - os << "virtual void" << endl - << "configuration_complete (" << endl - << STRS[ENV_SNGL_HDR_NOTUSED] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_ICF] << "));" << endl << endl; - - os << "virtual void" << endl - << "remove (" << endl - << STRS[ENV_SNGL_HDR_NOTUSED] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_RF] << "));" << endl << endl; - os << "// CIAO specific operations on the servant " << endl << "CORBA::Object_ptr" << endl << "get_facet_executor (const char *name" << endl @@ -1631,7 +1475,7 @@ namespace } virtual void - post (Type& t) + post (Type&) { // Component servant class closer. os << "};"; @@ -1861,15 +1705,94 @@ namespace os << "class " << ctx.export_macro () << " " << t.name () << "_Servant" << endl - << ": public virtual POA_" << stripped << "," << endl - << STRS[INH_RCSB] << endl + << " : public virtual CIAO::Home_Servant_Impl<" << endl + << " POA_" << stripped << "," << endl + << " " << t.scoped_name ().scope_name () << "::CCM_" + << t.name () << "," << endl + << " " << t.scoped_name ().scope_name () << "::CCM_" + << t.name () << "_var," << endl + << " "; + + Traversal::Home::manages (t, manages_); + + os << "," << endl + << " "; + + Traversal::Home::manages (t, manages_); + + os << "_var," << endl + << " "; + + Traversal::Home::manages (t, enclosing_manages_); + + os << "::CCM_"; + + Traversal::Home::manages (t, simple_manages_); + + os << "," << endl + << " "; + + Traversal::Home::manages (t, enclosing_manages_); + + os << "::CCM_"; + + Traversal::Home::manages (t, simple_manages_); + + os << "_var," << endl + << " "; + + Traversal::Home::manages (t, simple_manages_); + + os << "_Servant" << endl + << " >" << endl << "{" - << "public:" << endl; + << "public:" << endl + << "/// Hack for VC6." << endl + << "typedef CIAO::Home_Servant_Impl<" << endl + << " POA_" << stripped << "," << endl + << " " << t.scoped_name ().scope_name () << "::CCM_" + << t.name () << "," << endl + << " " << t.scoped_name ().scope_name () << "::CCM_" + << t.name () << "_var," << endl + << " "; + + Traversal::Home::manages (t, manages_); + + os << "," << endl + << " "; + + Traversal::Home::manages (t, manages_); + + os << "_var," << endl + << " "; + + Traversal::Home::manages (t, enclosing_manages_); + + os << "::CCM_"; + + Traversal::Home::manages (t, simple_manages_); + + os << "," << endl + << " "; + + Traversal::Home::manages (t, enclosing_manages_); + + os << "::CCM_"; + + Traversal::Home::manages (t, simple_manages_); + + os << "_var," << endl + << " "; + + Traversal::Home::manages (t, simple_manages_); + + os << "_Servant" << endl + << " > home_svnt_base;" << endl << endl; os << t.name () << "_Servant (" << endl << t.scoped_name ().scope_name () << "::CCM_" << t.name () << "_ptr exe," << endl - << "::CIAO::Session_Container *c);" << endl; + << "::CIAO::Session_Container *c);" << endl << endl; os << "virtual ~" << t.name () << "_Servant (void);" << endl << endl; @@ -2002,51 +1925,6 @@ namespace home_emitter.traverse (t); } - // @@@ (JP) Need primary key support. - os << "// Operations for keyless home interface." << endl << endl; - - os << "virtual ::Components::CCMObject_ptr" << endl - << "create_component (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << "::Components::CreateFailure));" << endl << endl; - - os << "// Operations for implicit home interface." << endl << endl; - - os << "virtual "; - - Traversal::Home::manages (t, manages_); - - os << "_ptr" << endl - << "create (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << "::Components::CreateFailure));" << endl << endl; - - os << "// Operations for CCMHome interface." << endl << endl; - - os << "virtual ::CORBA::IRObject_ptr" << endl - << "get_component_def (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl << endl; - - os << "virtual ::CORBA::IRObject_ptr" << endl - << "get_home_def (" << endl - << STRS[ENV_SNGL_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl << endl; - - os << "virtual void" << endl - << "remove_component (" << endl - << "::Components::CCMObject_ptr comp" << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_START] << endl - << STRS[EXCP_SYS] << "," << endl - << STRS[EXCP_RF] << "));" << endl << endl; - - os << "// Supported operations." << endl << endl; - // Generate operations for all supported interfaces. { Traversal::Home home_emitter; @@ -2109,53 +1987,6 @@ namespace home_emitter.traverse (t); } - os << "protected:" << endl - << "// CIAO-specific operations." << endl << endl; - - Traversal::Home::manages (t, manages_); - - os << "_ptr" << endl - << "_ciao_activate_component (" << endl; - - Traversal::Home::manages (t, enclosing_manages_); - - os << "::CCM_"; - - Traversal::Home::manages (t, simple_manages_); - - os << "_ptr exe" << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl << endl; - - os << "void" << endl - << "_ciao_passivate_component (" << endl; - - Traversal::Home::manages (t, manages_); - - os << "_ptr comp" << endl - << STRS[ENV_HDR] << ")" << endl - << STRS[EXCP_SNGL] << ";" << endl << endl; - - os << "protected:" << endl; - - os << t.scoped_name ().scope_name () << "::CCM_" - << t.name () << "_var" << endl - << "executor_;" << endl << endl; - - os << "::CIAO::Session_Container *" << endl - << "container_;" << endl << endl; - - os << "ACE_Hash_Map_Manager_Ex<" << endl - << "PortableServer::ObjectId," << endl; - - Traversal::Home::manages (t, simple_manages_); - - os << "_Servant *," << endl - << "TAO_ObjectId_Hash," << endl - << "ACE_Equal_To<PortableServer::ObjectId>," << endl - << "ACE_SYNCH_MUTEX>" << endl - << "component_map_;" << endl << endl; - // Home servant class closer. os << "};"; @@ -2167,7 +1998,7 @@ namespace << STRS[ENV_HDR] << ");" << endl; } - virtual void post (Type& t) + virtual void post (Type&) { // Namespace closer. os << "}"; @@ -2217,7 +2048,7 @@ namespace { os << "#include \"" << regex::perl_s (qi.file ().string (), - "/(\\.(idl|cidl))?$/S.h/") + "/(\\.(idl|cidl|cdl))?$/S.h/") << "\"" << endl; } @@ -2227,7 +2058,7 @@ namespace { os << "#include \"" << regex::perl_s (bi.file ().string (), - "/(\\.(idl|cidl))?$/S.h/") + "/(\\.(idl|cidl|cdl))?$/S.h/") << "\"" << endl; } @@ -2245,7 +2076,7 @@ ServantHeaderEmitter::ServantHeaderEmitter (std::ostream& os_, {} void -ServantHeaderEmitter::pre (TranslationUnit& u) +ServantHeaderEmitter::pre (TranslationUnit&) { os << COPYRIGHT; @@ -2274,7 +2105,7 @@ ServantHeaderEmitter::pre (TranslationUnit& u) string guard = "CIAO_GLUE_SESSION_" + regex::perl_s (uc_file_name, - "/(\\.(IDL|CIDL))?$/" + uc_file_suffix + "/"); + "/(\\.(IDL|CIDL|CDL))?$/" + uc_file_suffix + "/"); // Replace any remaining '.' with '_'. guard = regex::perl_s (guard, "/\\./_/"); @@ -2304,7 +2135,7 @@ ServantHeaderEmitter::pre (TranslationUnit& u) // they are in synch with the IDL compiler's options. os << "#include \"" << regex::perl_s (file_name, - "/(\\.(idl|cidl))?$/" + suffix + "C.h/") + "/(\\.(idl|cidl|cdl))?$/" + suffix + "C.h/") << "\"" << endl << endl; @@ -2314,8 +2145,8 @@ ServantHeaderEmitter::pre (TranslationUnit& u) os << "#include \"ciao/Container_Base.h\"" << endl << "#include \"ciao/Servant_Impl_T.h\"" << endl - << "#include \"tao/LocalObject.h\"" << endl - << "#include \"tao/PortableServer/Key_Adapters.h\"" << endl + << "#include \"ciao/Context_Impl_T.h\"" << endl + << "#include \"ciao/Home_Servant_Impl_T.h\"" << endl << "#include \"ace/Active_Map_Manager_T.h\"" << endl << endl; } @@ -2409,7 +2240,7 @@ ServantHeaderEmitter::generate (TranslationUnit& u) } void -ServantHeaderEmitter::post (TranslationUnit& u) +ServantHeaderEmitter::post (TranslationUnit&) { if (file_.empty ()) return; @@ -2431,7 +2262,7 @@ ServantHeaderEmitter::post (TranslationUnit& u) string guard = "CIAO_GLUE_SESSION_" + regex::perl_s (uc_file_name, - "/(\\.(IDL|CIDL))?$/" + uc_file_suffix + "/"); + "/(\\.(IDL|CIDL|CDL))?$/" + uc_file_suffix + "/"); guard = regex::perl_s (guard, "/\\./_/"); |