コード例 #1
0
ファイル: PluginCreators.cpp プロジェクト: AIDASoft/DD4hep
 void* createPlugin(const std::string& factory, Detector& description, int argc, char** argv, void* (*cast)(void*))  {
   void* object = PluginService::Create<void*>(factory, &description, argc, argv);
   if ( !object ) {
     PluginDebug dbg;
     object = PluginService::Create<void*>(factory, &description, argc, argv);
     if ( !object )  {
       except("ConditionsManager","dd4hep-plugins: Failed to locate plugin %s. \n%s.",
              factory.c_str(), dbg.missingFactory(factory).c_str());
     }
   }
   if ( cast )   {
     void* obj = cast(object);
     if ( obj ) return obj;
     ComponentCast* c = component(object);
     invalidHandleAssignmentError(typeid(cast),typeid(*c));
   }
   return object;
 }
コード例 #2
0
ファイル: PluginCreators.cpp プロジェクト: vvolkl/DD4hep
void* createPlugin(const std::string& factory, Geometry::LCDD& lcdd, int argc, char** argv, void* (*cast)(void*))
{
    void* object = PluginService::Create<void*>(factory, &lcdd, argc, argv);
    if ( !object ) {
        PluginDebug dbg;
        object = PluginService::Create<void*>(factory, &lcdd, argc, argv);
        if ( !object )  {
            except("ConditionsManager","DD4hep: plugin: Failed to locate plugin %s. [%s].",
                   factory.c_str(), dbg.missingFactory(factory).c_str());
        }
    }
    if ( cast )   {
        void* obj = cast(object);
        if ( obj ) return obj;
        invalidHandleAssignmentError(typeid(cast),typeid(*component(object)));
    }
    return object;
}
コード例 #3
0
ファイル: PluginCreators.cpp プロジェクト: AIDASoft/DD4hep
 void* createProcessor(Detector& description, int argc, char** argv, void* (*cast)(void*))  {
   void* processor = 0;
   if ( argc < 2 )   {
     except("createProcessor","++ dd4hep-plugins: No processor creator name given!");
   }
   for(int i=0; i<argc; ++i)  {
     if ( 0 == ::strncmp(argv[i],"-processor",4) )  {
       std::vector<char*> args;
       std::string fac = argv[++i];
       for(int j=++i; j<argc && argv[j] &&
             0 != ::strncmp(argv[j],"-processor",4) &&
             0 != ::strncmp(argv[j],"-end-processor",8); ++j)
         args.push_back(argv[j]);
       int num_arg = int(args.size());
       args.push_back(0);
       processor = PluginService::Create<void*>(fac,&description,num_arg,&args[0]);
       if ( !processor ) {
         PluginDebug dbg;
         processor = PluginService::Create<void*>(fac,&description,num_arg,&args[0]);
         if ( !processor )  {
           except("createProcessor","dd4hep-plugins: Failed to locate plugin %s. \n%s %s",
                  fac.c_str(), dbg.missingFactory(fac).c_str(),
                  /* ::dlerror() ? ::dlerror() : */ "");
         }
       }
       if ( cast )   {
         void* obj = cast(processor);
         if ( obj ) return obj;
         ComponentCast* c = component(processor);
         invalidHandleAssignmentError(typeid(cast),typeid(*c));
       }
     }
   }
   if ( !processor )  {
     except("createProcessor",
            "dd4hep-plugins: Found arguments in plugin call, but could not make any sense of them: %s",
            arguments(argc,argv).c_str());
   }
   return processor;
 }