The Gaudi Framework  master (fcd9f667)
Loading...
Searching...
No Matches
capi_pluginservice.cpp File Reference
#include "capi_pluginservice.h"
#include <Gaudi/PluginService.h>
#include <sstream>
#include <vector>
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)
const char * cgaudi_pluginsvc_plugin_search_path ()

Macro Definition Documentation

◆ GAUDI_PLUGIN_SERVICE_V2

#define GAUDI_PLUGIN_SERVICE_V2

Definition at line 13 of file capi_pluginservice.cpp.

Function Documentation

◆ cgaudi_factory_get_classname()

const char * cgaudi_factory_get_classname ( cgaudi_factory_t self)

Definition at line 50 of file capi_pluginservice.cpp.

50 {
51 Registry& reg = Registry::instance();
52 static std::string cache;
53 cache = reg.getInfo( self.id ).getprop( "ClassName" );
54 return cache.c_str();
55}

◆ cgaudi_factory_get_library()

const char * cgaudi_factory_get_library ( cgaudi_factory_t self)

Definition at line 38 of file capi_pluginservice.cpp.

38 {
39 Registry& reg = Registry::instance();
40 return reg.getInfo( self.id ).library.c_str();
41}

◆ cgaudi_factory_get_property_at()

cgaudi_property_t cgaudi_factory_get_property_at ( cgaudi_factory_t self,
int n )

Definition at line 63 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}
AttribStringParser::Iterator begin(const AttribStringParser &parser)

◆ cgaudi_factory_get_property_size()

int cgaudi_factory_get_property_size ( cgaudi_factory_t self)

Definition at line 57 of file capi_pluginservice.cpp.

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

◆ cgaudi_factory_get_type()

const char * cgaudi_factory_get_type ( cgaudi_factory_t self)

Definition at line 43 of file capi_pluginservice.cpp.

43 {
44 Registry& reg = Registry::instance();
45 static std::string cache;
46 cache = demangle( reg.getInfo( self.id ).factory.type() );
47 return cache.c_str();
48}
std::string demangle(const std::string &id)

◆ cgaudi_pluginsvc_get_factory_at()

cgaudi_factory_t cgaudi_pluginsvc_get_factory_at ( cgaudi_pluginsvc_t self,
int n )

Definition at line 31 of file capi_pluginservice.cpp.

31 {
32 const Registry* reg = static_cast<const Registry*>( self.registry );
33 const auto& factories = reg->factories();
34 if ( n >= static_cast<int>( factories.size() ) ) return { self, nullptr };
35 return { self, next( begin( factories ), n )->first.c_str() };
36}

◆ cgaudi_pluginsvc_get_factory_size()

int cgaudi_pluginsvc_get_factory_size ( cgaudi_pluginsvc_t self)

Definition at line 26 of file capi_pluginservice.cpp.

26 {
27 const Registry::FactoryMap& fmap = static_cast<const Registry*>( self.registry )->factories();
28 return int( fmap.size() );
29}

◆ cgaudi_pluginsvc_instance()

cgaudi_pluginsvc_t cgaudi_pluginsvc_instance ( void )

Definition at line 21 of file capi_pluginservice.cpp.

21 {
22 static Registry& cxxreg = Registry::instance();
23 return { &cxxreg };
24}

◆ cgaudi_pluginsvc_plugin_search_path()

const char * cgaudi_pluginsvc_plugin_search_path ( )

Definition at line 80 of file capi_pluginservice.cpp.

80 {
81 static std::string cache = [] {
82 std::ostringstream oss;
83 const auto& paths = Gaudi::PluginService::Details::getPluginSearchPath();
84 for ( auto it = paths.begin(); it != paths.end(); ++it ) {
85 if ( it != paths.begin() ) {
86#ifdef _WIN32
87 oss << ';';
88#else
89 oss << ':';
90#endif
91 }
92 oss << *it;
93 }
94 return oss.str();
95 }();
96 return cache.c_str();
97}

◆ cgaudi_property_get_key()

const char * cgaudi_property_get_key ( cgaudi_property_t self)

Definition at line 71 of file capi_pluginservice.cpp.

71{ return self.key; }

◆ cgaudi_property_get_value()

const char * cgaudi_property_get_value ( cgaudi_property_t self)

Definition at line 73 of file capi_pluginservice.cpp.

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