# plugin.h File Reference

`#include <ptlib/pfactory.h>`

Go to the source code of this file.

## Classes

class | PDevicePluginFactory< AbstractClass, KeyType >
class | PDevicePluginFactory< AbstractClass, KeyType >::Worker
class | PDevicePluginAdapterBase
class | PDevicePluginAdapter< DeviceBase >
class | PPluginServiceDescriptor
class | PDevicePluginServiceDescriptor
class | PPluginService

## Defines

#define | PWLIB_PLUGIN_API_VERSION 0
#define | PCREATE_PLUGIN_REGISTERER(serviceName, serviceType, descriptor)
#define | PCREATE_PLUGIN_STATIC(serviceName, serviceType, descriptor)
#define | PPLUGIN_STATIC_LOAD(serviceName, serviceType)
#define | P_FORCE_STATIC_PLUGIN 1
#define | PCREATE_PLUGIN(serviceName, serviceType, descriptor) PCREATE_PLUGIN_STATIC(serviceName, serviceType, descriptor)

## Define Documentation

#define P_FORCE_STATIC_PLUGIN 1

#define PCREATE_PLUGIN | ( | serviceName,
|  | serviceType,
|  | descriptor |  | ) | PCREATE_PLUGIN_STATIC(serviceName, serviceType, descriptor)

#define PCREATE_PLUGIN_REGISTERER | ( | serviceName,
|  | serviceType,
|  | descriptor |  | ) |

Value:

    class PPlugin_##serviceType##_##serviceName##_Registration { \
      public: \
        PPlugin_##serviceType##_##serviceName##_Registration(PPluginManager * pluginMgr) \
        { \
          static PDevicePluginFactory<serviceType>::Worker factory(#serviceName); \
          pluginMgr->RegisterService(#serviceName, #serviceType, descriptor); \
        } \
        int kill_warning; \
    }; \

#define PCREATE_PLUGIN_STATIC | ( | serviceName,
|  | serviceType,
|  | descriptor |  | ) |

Value:

    extern int PWLIB_gStaticLoader__##serviceName##_##serviceType; \
    static int PWLIB_StaticLoader_##serviceName##_##serviceType() \
    { PPluginManager::GetPluginManager().RegisterService(#serviceName, #serviceType, descriptor); return 1; } \
      int PWLIB_gStaticLoader__##serviceName##_##serviceType =  PWLIB_StaticLoader_##serviceName##_##serviceType(); \
      int PPlugin_##serviceType##_##serviceName##_link() { return 0; }

#define PPLUGIN_STATIC_LOAD | ( | serviceName,
|  | serviceType |  | ) |

Value:

    extern int PPlugin_##serviceType##_##serviceName##_link(); \
      int const PPlugin_##serviceType##_##serviceName##_loader = PPlugin_##serviceType##_##serviceName##_link();

#define PWLIB_PLUGIN_API_VERSION 0