2 #include <CalciumInterface.hxx>
10 PySupervCompo::PySupervCompo( CORBA::ORB_ptr orb,
11 PortableServer::POA_ptr poa,
12 Engines::Container_ptr contain,
13 const char *instanceName,
14 const char *interfaceName,
16 Superv_Component_i(orb, poa,poa->reference_to_id(contain), instanceName, interfaceName)
20 PySupervCompo::~PySupervCompo()
29 throw CalciumException(err,LOC("Abort coupling"));
32 void setDependency(provides_port * port,char* type,CalciumTypes::DependencyType depend)
34 if(std::string(type)=="CALCIUM_real")
36 dynamic_cast<calcium_real_port_provides *>(port)->setDependencyType(depend);
38 else if(std::string(type)=="CALCIUM_double")
40 dynamic_cast<calcium_double_port_provides *>(port)->setDependencyType(depend);
42 else if(std::string(type)=="CALCIUM_integer")
44 dynamic_cast<calcium_integer_port_provides *>(port)->setDependencyType(depend);
46 else if(std::string(type)=="CALCIUM_string")
48 dynamic_cast<calcium_string_port_provides *>(port)->setDependencyType(depend);
50 else if(std::string(type)=="CALCIUM_logical")
52 dynamic_cast<calcium_logical_port_provides *>(port)->setDependencyType(depend);
54 else if(std::string(type)=="CALCIUM_complex")
56 dynamic_cast<calcium_complex_port_provides *>(port)->setDependencyType(depend);
60 std::cerr << "unknown type:" << std::endl;
64 void create_calcium_port(Superv_Component_i* compo,char* name,char* type,char *mode,char* depend)
67 std::cerr << "create_calcium_port: " << name << " " << type << " " << mode << " " << depend << std::endl;
70 if(std::string(mode) == "IN")
72 provides_port * port ;
76 port = compo->create_provides_data_port(type);
77 compo->add_port(port, name);
78 if(std::string(depend) == "I")
79 setDependency(port,type,CalciumTypes::ITERATION_DEPENDENCY);
80 else if(std::string(depend) == "T")
81 setDependency(port,type,CalciumTypes::TIME_DEPENDENCY);
84 std::cerr << "create_calcium_port:unknown dependency: " << depend << std::endl;
87 catch(const Superv_Component_i::PortAlreadyDefined& ex)
89 //Port already defined : we use the old one
91 std::cerr << "create_calcium_port: " << ex.what() << std::endl;
95 std::cerr << "create_calcium_port: unknown exception" << std::endl;
98 else if(std::string(mode) == "OUT")
103 uport = compo->create_uses_data_port(type);
104 compo->add_port(uport, name);
106 catch(const Superv_Component_i::PortAlreadyDefined& ex)
108 //Port already defined : we use the old one
110 std::cerr << "create_calcium_port: " << ex.what() << std::endl;
114 std::cerr << "create_calcium_port: unknown exception" << std::endl;
120 std::cerr << "create_calcium_port:Unknown mode: " << mode << std::endl;