PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
plugin.h File Reference
#include <ptlib/pfactory.h>
Include dependency graph for plugin.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  PPluginServiceDescriptor
 
class  PPluginDeviceDescriptor
 

Macros

#define PTLIB_PLUGIN_API_VERSION   1
 
#define PCREATE_PLUGIN_SERVICE_EX(serviceType, BaseClass, extra)
 
#define PCREATE_PLUGIN_SERVICE(serviceType)   PCREATE_PLUGIN_SERVICE_EX(serviceType, PPluginServiceDescriptor, )
 
#define PCREATE_PLUGIN_DEVICE(serviceType)   PCREATE_PLUGIN_SERVICE_EX(serviceType, PPluginDeviceDescriptor, )
 
#define PCREATE_PLUGIN_ARG_5(serviceName, serviceType, InstanceClass, DescriptorClass, extra)
 
#define PCREATE_PLUGIN_ARG_4(serviceName, serviceType, InstanceClass, DescriptorClass)   PCREATE_PLUGIN_ARG_5(serviceName, serviceType, InstanceClass, DescriptorClass, )
 
#define PCREATE_PLUGIN_ARG_3(serviceName, serviceType, InstanceClass)   PCREATE_PLUGIN_ARG_4(serviceName, serviceType, InstanceClass, PPlugin_##serviceType)
 
#define PCREATE_PLUGIN_ARG_2(serviceName, serviceType)   PCREATE_PLUGIN_ARG_3(serviceName, serviceType, serviceType##_##serviceName)
 
#define PCREATE_PLUGIN_PART1(narg, args)   PCREATE_PLUGIN_PART2(narg, args)
 
#define PCREATE_PLUGIN_PART2(narg, args)   PCREATE_PLUGIN_ARG_##narg args
 
#define PCREATE_PLUGIN_STATIC(...)   PCREATE_PLUGIN_PART1(PARG_COUNT(__VA_ARGS__), (__VA_ARGS__))
 
#define PPLUGIN_STATIC_LOAD(serviceName, serviceType)   PFACTORY_LOAD(PPlugin_##serviceType##_##serviceName)
 
#define PCREATE_PLUGIN(...)   PCREATE_PLUGIN_STATIC(__VA_ARGS__)
 

Typedefs

typedef PFactory
< PPluginServiceDescriptor
PPluginFactory
 
typedef PPluginDeviceDescriptor PDevicePluginServiceDescriptor
 

Macro Definition Documentation

#define PCREATE_PLUGIN (   ...)    PCREATE_PLUGIN_STATIC(__VA_ARGS__)
#define PCREATE_PLUGIN_ARG_2 (   serviceName,
  serviceType 
)    PCREATE_PLUGIN_ARG_3(serviceName, serviceType, serviceType##_##serviceName)
#define PCREATE_PLUGIN_ARG_3 (   serviceName,
  serviceType,
  InstanceClass 
)    PCREATE_PLUGIN_ARG_4(serviceName, serviceType, InstanceClass, PPlugin_##serviceType)
#define PCREATE_PLUGIN_ARG_4 (   serviceName,
  serviceType,
  InstanceClass,
  DescriptorClass 
)    PCREATE_PLUGIN_ARG_5(serviceName, serviceType, InstanceClass, DescriptorClass, )
#define PCREATE_PLUGIN_ARG_5 (   serviceName,
  serviceType,
  InstanceClass,
  DescriptorClass,
  extra 
)
Value:
class PPlugin_##serviceType##_##serviceName : public DescriptorClass { \
public: \
static const char * ServiceName() { return #serviceName; } \
virtual const char * GetServiceName() const { return ServiceName(); } \
virtual PObject * CreateInstance(P_INT_PTR) const { return new InstanceClass; } \
extra \
}; \
PFACTORY_CREATE(PPluginFactory, PPlugin_##serviceType##_##serviceName, #serviceType #serviceName, true)
#define PFACTORY_CREATE(factory, ConcreteClass,...)
This macro is used to create a factory.
Definition: pfactory.h:532
intptr_t P_INT_PTR
Definition: object.h:2646
Class for a factory to create concrete class instances without parameters during construction.
Definition: pfactory.h:396
Ultimate parent class for all objects in the class library.
Definition: object.h:2204
#define PCREATE_PLUGIN_DEVICE (   serviceType)    PCREATE_PLUGIN_SERVICE_EX(serviceType, PPluginDeviceDescriptor, )
#define PCREATE_PLUGIN_PART1 (   narg,
  args 
)    PCREATE_PLUGIN_PART2(narg, args)
#define PCREATE_PLUGIN_PART2 (   narg,
  args 
)    PCREATE_PLUGIN_ARG_##narg args
#define PCREATE_PLUGIN_SERVICE (   serviceType)    PCREATE_PLUGIN_SERVICE_EX(serviceType, PPluginServiceDescriptor, )
#define PCREATE_PLUGIN_SERVICE_EX (   serviceType,
  BaseClass,
  extra 
)
Value:
class PPlugin_##serviceType : public BaseClass { \
public: \
static const char * ServiceType() { return #serviceType; } \
virtual const char * GetServiceType() const { return ServiceType(); } \
extra \
}
#define PCREATE_PLUGIN_STATIC (   ...)    PCREATE_PLUGIN_PART1(PARG_COUNT(__VA_ARGS__), (__VA_ARGS__))
#define PPLUGIN_STATIC_LOAD (   serviceName,
  serviceType 
)    PFACTORY_LOAD(PPlugin_##serviceType##_##serviceName)
#define PTLIB_PLUGIN_API_VERSION   1

Typedef Documentation