bool TypeInfoRepository::addType(TypeInfoGenerator* t) { if (!t) return false; std::string tname = t->getTypeName(); TypeInfo* ti = t->getTypeInfoObject(); { MutexLock lock(type_lock); if (ti && data.count(tname) && data[tname] != ti ) { cout << "Refusing to add type information for '" << tname << "': the name is already in use by another type."<<endl; return false; } } // Check for first registration, or alias: if ( ti == 0 ) ti = new TypeInfo(tname); else ti->addAlias(tname); if ( t->installTypeInfoObject( ti ) ) { delete t; } MutexLock lock(type_lock); // keep track of this type: data[ tname ] = ti; /* cout << "Registered Type '"<<tname <<"' to the Orocos Type System."<< endl; for(Transports::iterator it = transports.begin(); it != transports.end(); ++it) if ( (*it)->registerTransport( tname, ti) ) log(Info) << "Registered new '"<< (*it)->getTransportName()<<"' transport for " << tname <<endlog();*/ return true; }