not enough information... skip it
489 const Strings_t::const_iterator endLib = libs.end();
491 const std::string gaudiSvc =
"GaudiCoreSvc";
492 const bool isGaudiSvc = ( std::find( libs.begin(), endLib, gaudiSvc ) != endLib );
496 cout <<
"ERROR: ApplicationMgr can not be created. Check environment" << endl;
502 Registry&
registry = Registry::instance();
504 std::set<std::string> bkgNames = registry.loadedFactories();
513 for ( Strings_t::const_iterator iLib=libs.begin(); iLib != endLib; ++iLib ) {
515 LOG_INFO <<
":::: processing library: " << *iLib <<
"...";
532 std::set<std::string>
factories = registry.loadedFactories();
534 for ( std::set<std::string>::iterator it = factories.begin();
535 it != factories.end(); ++it ) {
536 const string ident = *it;
537 if ( bkgNames.find(ident) != bkgNames.end() ) {
539 LOG_INFO <<
"\t==> skipping [" << ident <<
"]...";
544 const Registry::FactoryInfo info = registry.getInfo(*it);
545 const string rtype = info.rtype;
548 if (info.properties.find(
"ReflexName") != info.properties.end())
556 LOG_WARNING <<
"library [" << *iLib <<
"] exposes factory ["
557 << ident <<
"] which is declared in ["
558 << DsoUtils::dsoName(info.ptr) <<
"] !!";
564 if ( ident ==
"ApplicationMgr" ) type =
"ApplicationMgr";
565 else if ( rtype ==
typeid(
IInterface*).
name() ) type =
"IInterface";
566 else if ( rtype ==
typeid(
IAlgorithm*).
name() ) type =
"Algorithm";
567 else if ( rtype ==
typeid(
IService* ).
name() ) type =
"Service";
568 else if ( rtype ==
typeid(
IAlgTool* ).
name() ) type =
"AlgTool";
569 else if ( rtype ==
typeid(
IAuditor* ).
name() ) type =
"Auditor";
570 else if ( rtype ==
typeid(
IConverter*).
name() ) type =
"Converter";
571 else if ( rtype ==
typeid(
DataObject*).
name() ) type =
"DataObject";
572 else type =
"Unknown", known =
false;
577 if ( type ==
"IInterface" ) {
583 if ( type ==
"Converter" || type ==
"DataObject" ) {
590 <<
" Component [" << ident <<
"] is skipped !";
594 LOG_INFO <<
" - component: " << info.className
595 <<
" (" << (info.className != name ? (name +
": ")
599 string cname =
"DefaultName";
602 if ( type ==
"Algorithm" ) {
605 else if ( type ==
"Service") {
608 else if ( type ==
"AlgTool") {
609 prop =
SmartIF<IAlgTool>(AlgTool::Factory::create(ident, cname, type, dummySvc));
613 else if ( type ==
"Auditor") {
616 else if ( type ==
"ApplicationMgr") {
623 catch ( exception& e ) {
624 LOG_ERROR <<
"Error instantiating " << name
625 <<
" from " << *iLib;
626 LOG_ERROR <<
"Got exception: " << e.what();
631 LOG_ERROR <<
"Error instantiating " << name
632 <<
" from " << *iLib;
642 LOG_ERROR <<
"could not cast IInterface* object to an IProperty* !";
643 LOG_ERROR <<
"return type from PluginSvc is [" << rtype <<
"]...";
644 LOG_ERROR <<
"NO Configurable will be generated for ["
654 fs::path(*iLib+
"Conf.py") ).
string();
656 fs::path(*iLib+
".confdb") ).
string();
658 std::fstream py( pyName, std::ios_base::out|std::ios_base::trunc );
659 std::fstream db( dbName, std::ios_base::out|std::ios_base::trunc );
662 if (!userModule.empty())
663 py <<
"from " << userModule <<
" import *" <<endl;
672 return allGood ? EXIT_SUCCESS : EXIT_FAILURE;
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
The data converters are responsible to translate data from one representation into another...
virtual const std::vector< Property * > & getProperties() const =0
Get list of properties.
int genComponent(const std::string &libName, const std::string &componentName, const std::string &componentType, const vector< Property * > &properties)
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
GAUDIPS_API Logger & logger()
Return the current logger instance.
void * ImageHandle
Definition of an image handle.
stringstream m_pyBuf
buffer of auto-generated configurables
GAUDI_API ISvcLocator * svcLocator()
General service interface definition.
Definition of the basic interface.
void genHeader(std::ostream &pyOut, std::ostream &dbOut)
stringstream m_dbBuf
buffer of generated configurables informations for the "Db" file The "Db" file is holding information...
The IAlgorithm is the interface implemented by the Algorithm base class.
string m_outputDirName
absolute path to the directory where genconf will store auto-generated files (Configurables and Confi...
virtual unsigned long release()=0
Release Interface instance.
bool m_importGaudiHandles
switch to decide if the generated configurables need to import GaudiHandles (ie: if one of the compon...
GAUDI_API const std::string getLastErrorString()
Get last system error as string.
In-memory database of the loaded factories.
GAUDI_API unsigned long loadDynamicLib(const std::string &name, ImageHandle *handle)
Load dynamic link library.
virtual unsigned long addRef()=0
Increment the reference count of Interface instance.
static GAUDI_API void disableChecking()
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
void genTrailer(std::ostream &pyOut, std::ostream &dbOut)
bool m_importDataObjectDescriptors
Base class for all services.
A DataObject is the base class of any identifiable object on any data store.
The IAuditor is the interface implmented by the AlgAuditor base class.
std::string libNativeName(const std::string &libName)
void genBody(std::ostream &pyOut, std::ostream &dbOut)