Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 09:18:08

0001 #ifndef GAUDIPLUGINSERVICE_SRC_CAPI_PLUGINSERVICE_H
0002 #define GAUDIPLUGINSERVICE_SRC_CAPI_PLUGINSERVICE_H 1
0003 /*****************************************************************************\
0004 * (c) Copyright 2013 CERN                                                     *
0005 *                                                                             *
0006 * This software is distributed under the terms of the GNU General Public      *
0007 * Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
0008 *                                                                             *
0009 * In applying this licence, CERN does not waive the privileges and immunities *
0010 * granted to it by virtue of its status as an Intergovernmental Organization  *
0011 * or submit itself to any jurisdiction.                                       *
0012 \*****************************************************************************/
0013 
0014 /* @author Sebastien Binet <binet@cern.ch> */
0015 
0016 #include <stdint.h>
0017 
0018 #ifdef __cplusplus
0019 extern "C" {
0020 #endif
0021 
0022 #if __GNUC__ >= 4
0023 #  define CGAUDI_HASCLASSVISIBILITY
0024 #endif
0025 
0026 #if defined( CGAUDI_HASCLASSVISIBILITY )
0027 #  define CGAUDI_IMPORT __attribute__( ( visibility( "default" ) ) )
0028 #  define CGAUDI_EXPORT __attribute__( ( visibility( "default" ) ) )
0029 #  define CGAUDI_LOCAL __attribute__( ( visibility( "hidden" ) ) )
0030 #else
0031 #  define CGAUDI_IMPORT
0032 #  define CGAUDI_EXPORT
0033 #  define CGAUDI_LOCAL
0034 #endif
0035 
0036 #define CGAUDI_API CGAUDI_EXPORT
0037 
0038 typedef struct {
0039   void* registry;
0040 } cgaudi_pluginsvc_t;
0041 
0042 typedef struct {
0043   cgaudi_pluginsvc_t registry;
0044   const char*        id;
0045 } cgaudi_factory_t;
0046 
0047 typedef struct {
0048   cgaudi_pluginsvc_t registry;
0049   const char*        id;
0050   const char*        key;
0051 } cgaudi_property_t;
0052 
0053 CGAUDI_API
0054 cgaudi_pluginsvc_t cgaudi_pluginsvc_instance( void );
0055 
0056 CGAUDI_API
0057 int cgaudi_pluginsvc_get_factory_size( cgaudi_pluginsvc_t self );
0058 
0059 CGAUDI_API
0060 cgaudi_factory_t cgaudi_pluginsvc_get_factory_at( cgaudi_pluginsvc_t self, int n );
0061 
0062 CGAUDI_API
0063 const char* cgaudi_factory_get_library( cgaudi_factory_t self );
0064 
0065 CGAUDI_API
0066 const char* cgaudi_factory_get_type( cgaudi_factory_t self );
0067 
0068 CGAUDI_API
0069 const char* cgaudi_factory_get_classname( cgaudi_factory_t self );
0070 
0071 CGAUDI_API
0072 int cgaudi_factory_get_property_size( cgaudi_factory_t self );
0073 
0074 CGAUDI_API
0075 cgaudi_property_t cgaudi_factory_get_property_at( cgaudi_factory_t self, int n );
0076 
0077 CGAUDI_API
0078 const char* cgaudi_property_get_key( cgaudi_property_t self );
0079 
0080 CGAUDI_API
0081 const char* cgaudi_property_get_value( cgaudi_property_t self );
0082 
0083 #ifdef __cplusplus
0084 } /* extern "C" */
0085 #endif
0086 
0087 #endif // GAUDIPLUGINSERVICE_SRC_CAPI_PLUGINSERVICE_H