From: Robert L. <rle...@us...> - 2007-03-05 09:21:26
|
Update of /cvsroot/ccmtools/ccmtools/test/CppAssembly/prototype1/impl/space/GEN_ccmtools_local_Space In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv30263/test/CppAssembly/prototype1/impl/space/GEN_ccmtools_local_Space Modified Files: Alien_gen.cc Alien_gen.h Log Message: new prototype Index: Alien_gen.cc =================================================================== RCS file: /cvsroot/ccmtools/ccmtools/test/CppAssembly/prototype1/impl/space/GEN_ccmtools_local_Space/Alien_gen.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Alien_gen.cc 5 Mar 2007 07:35:36 -0000 1.3 --- Alien_gen.cc 5 Mar 2007 09:21:21 -0000 1.4 *************** *** 36,40 **** context = NULL; ValidConnection = local_component!=NULL; ! delegator = dynamic_cast< ::Components::ComponentDelegator>(local_component); Ar4_receptacle_counter = 0; --- 36,40 ---- context = NULL; ValidConnection = local_component!=NULL; ! delegator = dynamic_cast< ::Components::ComponentDelegator*>(local_component); Ar4_receptacle_counter = 0; *************** *** 101,152 **** } void ! Alien::connect_Ar3(::World::Data::SmartPtr f) ! throw(::Components::AlreadyConnected, ::Components::InvalidConnection) { - if(!ValidConnection) - { - throw ::Components::InvalidConnection(); - } if(delegator) { ! delegator->connect("Ar3", f); ! Ar3_receptacle = f; } else { ! if(Ar3_receptacle) { throw ::Components::AlreadyConnected(); } - Ar3_receptacle = f; } } ! ::World::Data::SmartPtr ! Alien::disconnect_Ar3() ! throw(::Components::NoConnection, ::Components::InvalidConnection) { - if(!ValidConnection) - { - throw ::Components::InvalidConnection(); - } if(delegator) { ! ::Components::Object::SmartPtr o = delegator->disconnect("Ar3"); ! Ar3_receptacle.forget(); ! ::World::Data::SmartPtr f(dynamic_cast< ::World::Data*>(o.ptr())); ! return f; } else { ! if(!Ar3_receptacle) { throw ::Components::NoConnection(); } - ::World::Data::SmartPtr f = Ar3_receptacle; - Ar3_receptacle.forget(); - return f; } } --- 101,164 ---- } + template<typename T> void ! generic_single_connect(T& receptacle, const std::string& name, const T& f, ! ::Components::ComponentDelegator* delegator) { if(delegator) { ! delegator->connect(name, f); } else { ! if(receptacle) { throw ::Components::AlreadyConnected(); } } + receptacle = f; } ! void ! Alien::connect_Ar3(::World::Data::SmartPtr f) ! throw(::Components::AlreadyConnected, ::Components::InvalidConnection) ! { ! if(!ValidConnection) ! { ! throw ::Components::InvalidConnection(); ! } ! generic_single_connect(Ar3_receptacle, "Ar3", f, delegator); ! } ! ! template<typename T> ! T ! generic_single_disconnect(T& receptacle, const std::string& name, ! ::Components::ComponentDelegator* delegator) { if(delegator) { ! delegator->disconnect(name); } else { ! if(!receptacle) { throw ::Components::NoConnection(); } } + T f = receptacle; + receptacle.forget(); + return f; + } + + ::World::Data::SmartPtr + Alien::disconnect_Ar3() + throw(::Components::NoConnection, ::Components::InvalidConnection) + { + if(!ValidConnection) + { + throw ::Components::InvalidConnection(); + } + return generic_single_disconnect(Ar3_receptacle, "Ar3", delegator); } *************** *** 164,180 **** } ::Components::Cookie ! Alien::connect_Ar4(::World::Data::SmartPtr f) ! throw(::Components::ExceededConnectionLimit, ::Components::InvalidConnection) { - if(!ValidConnection) - { - throw ::Components::InvalidConnection(); - } if(delegator) { ! ::Components::Cookie ck = delegator->connect("Ar4", f); ! ::World::CCM_Data::SmartPtr ccmf(dynamic_cast< ::World::CCM_Data* >(f.ptr())); ! Ar4_receptacles.insert(make_pair(ck, ccmf)); return ck; } --- 176,189 ---- } + template<typename MAP, typename T> ::Components::Cookie ! generic_multiple_connect(MAP& receptacles, long& receptacle_counter, ! const std::string& name, const T& f, ! ::Components::ComponentDelegator* delegator) { if(delegator) { ! ::Components::Cookie ck = delegator->connect(name, f); ! receptacles.insert(make_pair(ck, f)); return ck; } *************** *** 182,196 **** { stringstream s; ! s << "CCM_Ar4:" << Ar4_receptacle_counter++; ::Components::Cookie ck(s.str()); ! ::World::CCM_Data::SmartPtr ccmf(dynamic_cast< ::World::CCM_Data* >(f.ptr())); ! Ar4_receptacles.insert(make_pair(ck, ccmf)); return ck; } } ! ::World::Data::SmartPtr ! Alien::disconnect_Ar4(::Components::Cookie ck) ! throw(::Components::InvalidConnection) { if(!ValidConnection) --- 191,204 ---- { stringstream s; ! s << "CCM_" << name << ":" << receptacle_counter++; ::Components::Cookie ck(s.str()); ! receptacles.insert(make_pair(ck, f)); return ck; } } ! ::Components::Cookie ! Alien::connect_Ar4(::World::Data::SmartPtr f) ! throw(::Components::ExceededConnectionLimit, ::Components::InvalidConnection) { if(!ValidConnection) *************** *** 198,214 **** throw ::Components::InvalidConnection(); } if(delegator) { ! ::Components::Object::SmartPtr o = delegator->disconnect("Ar4", ck); ! Ar4_receptacles.erase(ck); ! ::World::Data::SmartPtr f(dynamic_cast< ::World::Data*>(o.ptr())); return f; } else { ! if(Ar4_receptacles.find(ck) != Ar4_receptacles.end()) { ! ::World::CCM_Data::SmartPtr f(Ar4_receptacles[ck]); ! Ar4_receptacles.erase(ck); return f; } --- 206,231 ---- throw ::Components::InvalidConnection(); } + return generic_multiple_connect(Ar4_receptacles, Ar4_receptacle_counter, "Ar4", f, delegator); + } + + template<typename MAP, typename T> + T + generic_multiple_disconnect(MAP& receptacles, const std::string& name, + const ::Components::Cookie& ck, + ::Components::ComponentDelegator* delegator) + { if(delegator) { ! delegator->disconnect(name, ck); ! T f = receptacles[ck]; ! receptacles.erase(ck); return f; } else { ! if(receptacles.find(ck) != receptacles.end()) { ! T f = receptacles[ck]; ! receptacles.erase(ck); return f; } *************** *** 220,223 **** --- 237,251 ---- } + ::World::Data::SmartPtr + Alien::disconnect_Ar4(::Components::Cookie ck) + throw(::Components::InvalidConnection) + { + if(!ValidConnection) + { + throw ::Components::InvalidConnection(); + } + return generic_multiple_disconnect< ::Space::Alien_Ar4_Connections, ::World::Data::SmartPtr>(Ar4_receptacles, "Ar4", ck, delegator); + } + ::Space::Alien_Ar4_Connections& Alien::get_connections_Ar4 ( ) *************** *** 238,254 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! delegator->connect("Ar10", f); ! Ar10_receptacle = f; ! } ! else ! { ! if(Ar10_receptacle) ! { ! throw ::Components::AlreadyConnected(); ! } ! Ar10_receptacle = f; ! } } --- 266,270 ---- throw ::Components::InvalidConnection(); } ! generic_single_connect(Ar10_receptacle, "Ar10", f, delegator); } *************** *** 261,281 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! ::Components::Object::SmartPtr o = delegator->disconnect("Ar10"); ! Ar10_receptacle.forget(); ! ::World::Data::SmartPtr f(dynamic_cast< ::World::Data*>(o.ptr())); ! return f; ! } ! else ! { ! if(!Ar10_receptacle) ! { ! throw ::Components::NoConnection(); ! } ! ::World::Data::SmartPtr f = Ar10_receptacle; ! Ar10_receptacle.forget(); ! return f; ! } } --- 277,281 ---- throw ::Components::InvalidConnection(); } ! return generic_single_disconnect(Ar10_receptacle, "Ar10", delegator); } *************** *** 301,317 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! delegator->connect("Ar6a", f); ! Ar6a_receptacle = f; ! } ! else ! { ! if(Ar6a_receptacle) ! { ! throw ::Components::AlreadyConnected(); ! } ! Ar6a_receptacle = f; ! } } --- 301,305 ---- throw ::Components::InvalidConnection(); } ! generic_single_connect(Ar6a_receptacle, "Ar6a", f, delegator); } *************** *** 324,344 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! ::Components::Object::SmartPtr o = delegator->disconnect("Ar6a"); ! Ar6a_receptacle.forget(); ! ::World::Data::SmartPtr f(dynamic_cast< ::World::Data*>(o.ptr())); ! return f; ! } ! else ! { ! if(!Ar6a_receptacle) ! { ! throw ::Components::NoConnection(); ! } ! ::World::Data::SmartPtr f = Ar6a_receptacle; ! Ar6a_receptacle.forget(); ! return f; ! } } --- 312,316 ---- throw ::Components::InvalidConnection(); } ! return generic_single_disconnect(Ar6a_receptacle, "Ar6a", delegator); } *************** *** 364,380 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! delegator->connect("Ar6b", f); ! Ar6b_receptacle = f; ! } ! else ! { ! if(Ar6b_receptacle) ! { ! throw ::Components::AlreadyConnected(); ! } ! Ar6b_receptacle = f; ! } } --- 336,340 ---- throw ::Components::InvalidConnection(); } ! generic_single_connect(Ar6b_receptacle, "Ar6b", f, delegator); } *************** *** 387,407 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! ::Components::Object::SmartPtr o = delegator->disconnect("Ar6b"); ! Ar6b_receptacle.forget(); ! ::World::Data::SmartPtr f(dynamic_cast< ::World::Data*>(o.ptr())); ! return f; ! } ! else ! { ! if(!Ar6b_receptacle) ! { ! throw ::Components::NoConnection(); ! } ! ::World::Data::SmartPtr f = Ar6b_receptacle; ! Ar6b_receptacle.forget(); ! return f; ! } } --- 347,351 ---- throw ::Components::InvalidConnection(); } ! return generic_single_disconnect(Ar6b_receptacle, "Ar6b", delegator); } *************** *** 427,446 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! ::Components::Cookie ck = delegator->connect("Ar7a", f); ! ::World::CCM_Data::SmartPtr ccmf(dynamic_cast< ::World::CCM_Data* >(f.ptr())); ! Ar7a_receptacles.insert(make_pair(ck, ccmf)); ! return ck; ! } ! else ! { ! stringstream s; ! s << "CCM_Ar7a:" << Ar7a_receptacle_counter++; ! ::Components::Cookie ck(s.str()); ! ::World::CCM_Data::SmartPtr ccmf(dynamic_cast< ::World::CCM_Data* >(f.ptr())); ! Ar7a_receptacles.insert(make_pair(ck, ccmf)); ! return ck; ! } } --- 371,375 ---- throw ::Components::InvalidConnection(); } ! return generic_multiple_connect(Ar7a_receptacles, Ar7a_receptacle_counter, "Ar7a", f, delegator); } *************** *** 453,476 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! ::Components::Object::SmartPtr o = delegator->disconnect("Ar7a", ck); ! Ar7a_receptacles.erase(ck); ! ::World::Data::SmartPtr f(dynamic_cast< ::World::Data*>(o.ptr())); ! return f; ! } ! else ! { ! if(Ar7a_receptacles.find(ck) != Ar7a_receptacles.end()) ! { ! ::World::CCM_Data::SmartPtr f(Ar7a_receptacles[ck]); ! Ar7a_receptacles.erase(ck); ! return f; ! } ! else ! { ! throw ::Components::InvalidConnection(); ! } ! } } --- 382,386 ---- throw ::Components::InvalidConnection(); } ! return generic_multiple_disconnect< ::Space::Alien_Ar7a_Connections, ::World::Data::SmartPtr>(Ar7a_receptacles, "Ar7a", ck, delegator); } *************** *** 493,512 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! ::Components::Cookie ck = delegator->connect("Ar7b", f); ! ::World::CCM_Data::SmartPtr ccmf(dynamic_cast< ::World::CCM_Data* >(f.ptr())); ! Ar7b_receptacles.insert(make_pair(ck, ccmf)); ! return ck; ! } ! else ! { ! stringstream s; ! s << "CCM_Ar7b:" << Ar7b_receptacle_counter++; ! ::Components::Cookie ck(s.str()); ! ::World::CCM_Data::SmartPtr ccmf(dynamic_cast< ::World::CCM_Data* >(f.ptr())); ! Ar7b_receptacles.insert(make_pair(ck, ccmf)); ! return ck; ! } } --- 403,407 ---- throw ::Components::InvalidConnection(); } ! return generic_multiple_connect(Ar7b_receptacles, Ar7b_receptacle_counter, "Ar7b", f, delegator); } *************** *** 519,542 **** throw ::Components::InvalidConnection(); } ! if(delegator) ! { ! ::Components::Object::SmartPtr o = delegator->disconnect("Ar7b", ck); ! Ar7b_receptacles.erase(ck); ! ::World::Data::SmartPtr f(dynamic_cast< ::World::Data*>(o.ptr())); ! return f; ! } ! else ! { ! if(Ar7b_receptacles.find(ck) != Ar7b_receptacles.end()) ! { ! ::World::CCM_Data::SmartPtr f(Ar7b_receptacles[ck]); ! Ar7b_receptacles.erase(ck); ! return f; ! } ! else ! { ! throw ::Components::InvalidConnection(); ! } ! } } --- 414,418 ---- throw ::Components::InvalidConnection(); } ! return generic_multiple_disconnect< ::Space::Alien_Ar7b_Connections, ::World::Data::SmartPtr>(Ar7b_receptacles, "Ar7b", ck, delegator); } Index: Alien_gen.h =================================================================== RCS file: /cvsroot/ccmtools/ccmtools/test/CppAssembly/prototype1/impl/space/GEN_ccmtools_local_Space/Alien_gen.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Alien_gen.h 2 Mar 2007 14:44:43 -0000 1.1 --- Alien_gen.h 5 Mar 2007 09:21:21 -0000 1.2 *************** *** 166,170 **** ::Components::Assembly::SmartPtr assembly; bool ValidConnection; ! ::Components::ComponentDelegator delegator; ::World::Data::SmartPtr Ap1_facet; --- 166,170 ---- ::Components::Assembly::SmartPtr assembly; bool ValidConnection; ! ::Components::ComponentDelegator* delegator; ::World::Data::SmartPtr Ap1_facet; |