The Gaudi Framework  v30r3 (a5ef0a68)
capi_pluginservice.cpp File Reference
#include "capi_pluginservice.h"
#include <Gaudi/PluginService.h>
#include <algorithm>
#include <vector>
#include <iostream>
Include dependency graph for capi_pluginservice.cpp:

Go to the source code of this file.

Macros

#define GAUDI_PLUGIN_SERVICE_V2
 

Functions

cgaudi_pluginsvc_t cgaudi_pluginsvc_instance ()
 
int cgaudi_pluginsvc_get_factory_size (cgaudi_pluginsvc_t self)
 
cgaudi_factory_t cgaudi_pluginsvc_get_factory_at (cgaudi_pluginsvc_t self, int n)
 
const char * cgaudi_factory_get_library (cgaudi_factory_t self)
 
const char * cgaudi_factory_get_type (cgaudi_factory_t self)
 
const char * cgaudi_factory_get_classname (cgaudi_factory_t self)
 
int cgaudi_factory_get_property_size (cgaudi_factory_t self)
 
cgaudi_property_t cgaudi_factory_get_property_at (cgaudi_factory_t self, int n)
 
const char * cgaudi_property_get_key (cgaudi_property_t self)
 
const char * cgaudi_property_get_value (cgaudi_property_t self)
 

Macro Definition Documentation

#define GAUDI_PLUGIN_SERVICE_V2

Definition at line 3 of file capi_pluginservice.cpp.

Function Documentation

const char* cgaudi_factory_get_classname ( cgaudi_factory_t  self)

Definition at line 47 of file capi_pluginservice.cpp.

48 {
49  Registry& reg = Registry::instance();
50  static std::string cache;
51  cache = reg.getInfo( self.id ).getprop( "ClassName" );
52  return cache.c_str();
53 }
STL class.
T c_str(T...args)
const char* cgaudi_factory_get_library ( cgaudi_factory_t  self)

Definition at line 33 of file capi_pluginservice.cpp.

34 {
35  Registry& reg = Registry::instance();
36  return reg.getInfo( self.id ).library.c_str();
37 }
cgaudi_property_t cgaudi_factory_get_property_at ( cgaudi_factory_t  self,
int  n 
)

Definition at line 62 of file capi_pluginservice.cpp.

63 {
64  cgaudi_property_t cprop{self.registry, self.id, nullptr};
65  Registry& reg = Registry::instance();
66  const Registry::FactoryInfo& fi = reg.getInfo( cprop.id );
67  if ( n < static_cast<int>( fi.properties.size() ) ) cprop.key = next( begin( fi.properties ), n )->first.c_str();
68  return cprop;
69 }
T next(T...args)
cgaudi_pluginsvc_t registry
AttribStringParser::Iterator begin(const AttribStringParser &parser)
int cgaudi_factory_get_property_size ( cgaudi_factory_t  self)

Definition at line 55 of file capi_pluginservice.cpp.

56 {
57  Registry& reg = Registry::instance();
58  const Registry::FactoryInfo& fi = reg.getInfo( self.id );
59  return int( fi.properties.size() );
60 }
const char* cgaudi_factory_get_type ( cgaudi_factory_t  self)

Definition at line 39 of file capi_pluginservice.cpp.

40 {
41  Registry& reg = Registry::instance();
42  static std::string cache;
43  cache = demangle( reg.getInfo( self.id ).factory.type() );
44  return cache.c_str();
45 }
STL class.
GAUDIPS_API std::string demangle(const std::type_info &id)
Return a canonical name for type_info object (implementation borrowed from GaudiKernel/System).
T c_str(T...args)
cgaudi_factory_t cgaudi_pluginsvc_get_factory_at ( cgaudi_pluginsvc_t  self,
int  n 
)

Definition at line 25 of file capi_pluginservice.cpp.

26 {
27  const Registry* reg = static_cast<const Registry*>( self.registry );
28  const auto& factories = reg->factories();
29  if ( n >= static_cast<int>( factories.size() ) ) return {self, nullptr};
30  return {self, next( begin( factories ), n )->first.c_str()};
31 }
T next(T...args)
AttribStringParser::Iterator begin(const AttribStringParser &parser)
int cgaudi_pluginsvc_get_factory_size ( cgaudi_pluginsvc_t  self)

Definition at line 19 of file capi_pluginservice.cpp.

20 {
21  const Registry::FactoryMap& fmap = static_cast<const Registry*>( self.registry )->factories();
22  return int( fmap.size() );
23 }
cgaudi_pluginsvc_t cgaudi_pluginsvc_instance ( void  )

Definition at line 13 of file capi_pluginservice.cpp.

14 {
15  static Registry& cxxreg = Registry::instance();
16  return {&cxxreg};
17 }
const char* cgaudi_property_get_key ( cgaudi_property_t  self)

Definition at line 71 of file capi_pluginservice.cpp.

71 { return self.key; }
const char* cgaudi_property_get_value ( cgaudi_property_t  self)

Definition at line 73 of file capi_pluginservice.cpp.

74 {
75  Registry& reg = Registry::instance();
76  const Registry::FactoryInfo& fi = reg.getInfo( self.id );
77  auto prop = fi.properties.find( self.key );
78  return prop != fi.properties.end() ? prop->second.c_str() : nullptr;
79 }