61#define CP_C_API CP_IMPORT
78#define CP_SP_UPGRADE 0x01
84#define CP_SP_STOP_ALL_ON_UPGRADE 0x02
91#define CP_SP_STOP_ALL_ON_INSTALL 0x04
97#define CP_SP_RESTART_ACTIVE 0x08
CP_IMPORT cp_status_t cp_register_ploader(cp_context_t *ctx, cp_plugin_loader_t *loader)
Registers a plug-in loader that will be used to load plug-ins into this context when cp_scan_plugins ...
CP_IMPORT cp_plugin_state_t cp_get_plugin_state(cp_context_t *ctx, const char *id)
Returns the current state of the specified plug-in.
CP_IMPORT void cp_destroy_context(cp_context_t *ctx)
Destroys the specified plug-in context and releases the associated resources.
CP_IMPORT void cp_lpl_unregister_dir(cp_plugin_loader_t *loader, const char *dir)
Unregisters a directory from the specified local plug-in loader.
CP_IMPORT void cp_release_symbol(cp_context_t *ctx, const void *ptr)
Releases a previously obtained symbol.
CP_IMPORT void cp_unregister_ploaders(cp_context_t *ctx)
Unregisters all registered plug-in loaders from a plug-in context.
void(* cp_plugin_listener_func_t)(const char *plugin_id, cp_plugin_state_t old_state, cp_plugin_state_t new_state, void *user_data)
A listener function called synchronously after a plugin state change.
Definition cpluff.h:347
CP_IMPORT cp_ext_point_t ** cp_get_ext_points_info(cp_context_t *ctx, cp_status_t *status, int *num)
Returns static information about the currently installed extension points.
CP_IMPORT cp_status_t cp_init(void)
Initializes the plug-in framework.
CP_IMPORT cp_context_t * cp_create_context(cp_status_t *status)
Creates a new plug-in context which can be used as a container for plug-ins.
CP_IMPORT void cp_set_plugin_descriptor_name(cp_context_t *ctx, const char *name)
Changes the file name in the plug-in the plug-in descriptor is loaded from.
CP_IMPORT cp_plugin_info_t ** cp_get_plugins_info(cp_context_t *ctx, cp_status_t *status, int *num)
Returns static information about the installed plug-ins.
void(* cp_logger_func_t)(cp_log_severity_t severity, const char *msg, const char *apid, void *user_data)
A logger function called to log selected plug-in framework messages.
Definition cpluff.h:361
CP_IMPORT cp_status_t cp_start_plugin(cp_context_t *ctx, const char *id)
Starts a plug-in.
CP_IMPORT cp_status_t cp_run_function(cp_context_t *ctx, cp_run_func_t runfunc)
Registers a new run function.
CP_IMPORT char * cp_lookup_cfg_value(cp_cfg_element_t *base, const char *path)
Traverses a configuration element tree and returns the value of the specified element or attribute.
CP_IMPORT int cp_is_logged(cp_context_t *ctx, cp_log_severity_t severity)
Returns whether a message of the specified severity would get logged.
CP_IMPORT cp_status_t cp_stop_plugin(cp_context_t *ctx, const char *id)
Stops a plug-in.
CP_IMPORT cp_status_t cp_register_logger(cp_context_t *ctx, cp_logger_func_t logger, void *user_data, cp_log_severity_t min_severity)
Registers a logger with a plug-in context or updates the settings of a registered logger.
CP_IMPORT void cp_set_fatal_error_handler(cp_fatal_error_func_t error_handler)
Sets the fatal error handler called on non-recoverable errors.
CP_IMPORT void cp_set_context_args(cp_context_t *ctx, char **argv)
Sets startup arguments for the specified plug-in context.
CP_IMPORT cp_status_t cp_register_pcollection(cp_context_t *ctx, const char *dir)
Registers a local plug-in collection with a plug-in context.
CP_IMPORT cp_plugin_info_t * cp_load_plugin_descriptor(cp_context_t *ctx, const char *path, cp_status_t *status)
Loads a plug-in descriptor from the specified plug-in installation path and returns information about...
CP_IMPORT int cp_run_plugins_step(cp_context_t *ctx)
Runs one registered run function.
CP_IMPORT const char * cp_get_version(void)
Returns the release version string of the linked in C-Pluff implementation.
CP_IMPORT void cp_release_info(cp_context_t *ctx, void *info)
Releases a previously obtained reference counted information object.
CP_IMPORT void cp_unregister_ploader(cp_context_t *ctx, cp_plugin_loader_t *loader)
Unregisters a previously registered plug-in loader from a plug-in context.
CP_IMPORT cp_status_t cp_install_plugin(cp_context_t *ctx, cp_plugin_info_t *pi)
Installs the plug-in described by the specified plug-in information structure to the specified plug-i...
CP_IMPORT void * cp_resolve_symbol(cp_context_t *ctx, const char *id, const char *name, cp_status_t *status)
Resolves a symbol provided by the specified plug-in.
CP_IMPORT void cp_unregister_logger(cp_context_t *ctx, cp_logger_func_t logger)
Removes a logger registration.
void(* cp_fatal_error_func_t)(const char *msg)
A fatal error handler for handling unrecoverable errors.
Definition cpluff.h:372
CP_IMPORT cp_status_t cp_define_symbol(cp_context_t *ctx, const char *name, void *ptr)
Defines a context specific symbol.
int(* cp_run_func_t)(void *plugin_data)
A run function registered by a plug-in to perform work.
Definition cpluff.h:384
CP_IMPORT const char * cp_get_host_type(void)
Returns the canonical host type associated with the linked in C-Pluff implementation.
CP_IMPORT cp_status_t cp_register_plistener(cp_context_t *ctx, cp_plugin_listener_func_t listener, void *user_data)
Registers a plug-in listener with a plug-in context.
CP_IMPORT cp_plugin_info_t * cp_get_plugin_info(cp_context_t *ctx, const char *id, cp_status_t *status)
Returns static information about the specified plug-in.
CP_IMPORT cp_cfg_element_t * cp_lookup_cfg_element(cp_cfg_element_t *base, const char *path)
Traverses a configuration element tree and returns the specified element.
CP_IMPORT void cp_set_plugin_descriptor_root_element(cp_context_t *ctx, const char *root)
Changes the XML root element's name in plug-in descriptor.
CP_IMPORT cp_plugin_loader_t * cp_create_local_ploader(cp_status_t *status)
Creates and returns a new instance of a local plug-in loader.
CP_IMPORT cp_status_t cp_lpl_register_dir(cp_plugin_loader_t *loader, const char *dir)
Registers a new directory to be scanned by the specified local plug-in loader.
CP_IMPORT char ** cp_get_context_args(cp_context_t *ctx, int *argc)
Returns the startup arguments associated with the specified plug-in context.
CP_IMPORT void cp_unregister_plistener(cp_context_t *ctx, cp_plugin_listener_func_t listener)
Removes a plug-in listener from a plug-in context.
CP_IMPORT cp_plugin_info_t * cp_load_plugin_descriptor_from_memory(cp_context_t *ctx, const char *buffer, unsigned int buffer_len, cp_status_t *status)
Loads a plug-in descriptor from the specified block of memory and returns information about the plug-...
CP_IMPORT void cp_unregister_pcollection(cp_context_t *ctx, const char *dir)
Unregisters a previously registered plug-in collection from a plug-in context.
CP_IMPORT void cp_unregister_pcollections(cp_context_t *ctx)
Unregisters all plug-in collections from a plug-in context.
CP_IMPORT void cp_lpl_unregister_dirs(cp_plugin_loader_t *loader)
Unregisters all registered directories from the specified local plug-in loader.
struct cp_context_t cp_context_t
A plug-in context represents the co-operation environment of a set of plug-ins from the perspective o...
Definition cpluff.h:281
CP_IMPORT void cp_stop_plugins(cp_context_t *ctx)
Stops all active plug-ins.
CP_IMPORT void cp_destroy(void)
Destroys the plug-in framework and releases the resources used by it.
CP_IMPORT cp_status_t cp_scan_plugins(cp_context_t *ctx, int flags)
Scans for plug-ins in the registered plug-in directories, installing new plug-ins and upgrading insta...
CP_IMPORT void cp_run_plugins(cp_context_t *ctx)
Runs the started plug-ins as long as there is something to run.
CP_IMPORT void cp_uninstall_plugins(cp_context_t *ctx)
Uninstalls all plug-ins.
CP_IMPORT void cp_destroy_local_ploader(cp_plugin_loader_t *loader)
Releases the resources allocated by a previously created local plug-in loader.
CP_IMPORT cp_status_t cp_uninstall_plugin(cp_context_t *ctx, const char *id)
Uninstalls the specified plug-in.
CP_IMPORT cp_extension_t ** cp_get_extensions_info(cp_context_t *ctx, const char *extpt_id, cp_status_t *status, int *num)
Returns static information about the currently installed extension points.
CP_IMPORT void cp_log(cp_context_t *ctx, cp_log_severity_t severity, const char *msg)
Emits a new log message.
Common defines shared by C-Pluff C and C++ APIs.
#define CP_GCC_PURE
Declares a function as pure function having no side effects.
Definition cpluffdef.h:190
#define CP_GCC_NONNULL(...)
Specifies that some pointer arguments to a function should have non-NULL values.
Definition cpluffdef.h:195
#define CP_C_API
Marks a symbol declaration to be part of the C-Pluff C API.
Definition cpluff.h:61
cp_log_severity_t
An enumeration of possible message severities for framework logging.
Definition cpluff.h:241
cp_plugin_state_t
An enumeration of possible plug-in states.
Definition cpluff.h:175
cp_status_t
An enumeration of status codes returned by API functions.
Definition cpluff.h:133
@ CP_LOG_DEBUG
Used for detailed debug messages.
Definition cpluff.h:244
@ CP_LOG_WARNING
Used for messages warning about possible problems.
Definition cpluff.h:250
@ CP_LOG_INFO
Used for informational messages such as plug-in state changes.
Definition cpluff.h:247
@ CP_LOG_ERROR
Used for messages reporting errors.
Definition cpluff.h:253
@ CP_PLUGIN_INSTALLED
Plug-in is installed.
Definition cpluff.h:190
@ CP_PLUGIN_STARTING
Plug-in is starting.
Definition cpluff.h:213
@ CP_PLUGIN_STOPPING
Plug-in is stopping.
Definition cpluff.h:224
@ CP_PLUGIN_RESOLVED
Plug-in dependencies have been resolved.
Definition cpluff.h:202
@ CP_PLUGIN_UNINSTALLED
Plug-in is not installed.
Definition cpluff.h:181
@ CP_PLUGIN_ACTIVE
Plug-in has been successfully started and it has not yet been stopped.
Definition cpluff.h:230
@ CP_ERR_DEPENDENCY
Plug-in dependencies could not be satisfied.
Definition cpluff.h:157
@ CP_ERR_IO
An I/O error occurred.
Definition cpluff.h:148
@ CP_OK
Operation was performed successfully (equals to zero).
Definition cpluff.h:139
@ CP_ERR_UNKNOWN
The specified object is unknown to the framework.
Definition cpluff.h:145
@ CP_ERR_CONFLICT
Plug-in or symbol conflicts with another plug-in or symbol.
Definition cpluff.h:154
@ CP_ERR_RESOURCE
Not enough memory or other operating system resources available.
Definition cpluff.h:142
@ CP_ERR_MALFORMED
Malformed plug-in descriptor was encountered when loading a plug-in.
Definition cpluff.h:151
@ CP_ERR_RUNTIME
Plug-in runtime signaled an error.
Definition cpluff.h:160
A configuration element contains configuration information for an extension.
Definition cpluff.h:670
cp_cfg_element_t * children
An array of num_children childrens of this element.
Definition cpluff.h:707
char * value
An optional value of this configuration element.
Definition cpluff.h:692
unsigned int index
The index of this element among its siblings (0-based).
Definition cpluff.h:698
char * name
The name of the configuration element.
Definition cpluff.h:676
char ** atts
An array of pointers to alternating attribute names and values.
Definition cpluff.h:685
cp_cfg_element_t * parent
A pointer to the parent element or NULL if this is a root element.
Definition cpluff.h:695
unsigned int num_atts
Number of attribute name, value pairs in the atts array.
Definition cpluff.h:679
unsigned int num_children
Number of children in the children array.
Definition cpluff.h:701
Extension point structure captures information about an extension point.
Definition cpluff.h:569
char * schema_path
An optional path to the extension schema definition.
Definition cpluff.h:606
char * name
An optional extension point name.
Definition cpluff.h:598
cp_plugin_info_t * plugin
A pointer to plug-in information containing this extension point.
Definition cpluff.h:576
char * identifier
The unique identifier of the extension point.
Definition cpluff.h:590
Extension structure captures information about an extension.
Definition cpluff.h:614
char * name
An optional extension name.
Definition cpluff.h:650
char * ext_point_id
The unique identifier of the extension point this extension is attached to.
Definition cpluff.h:628
cp_cfg_element_t * configuration
Extension configuration starting with the extension element.
Definition cpluff.h:658
cp_plugin_info_t * plugin
A pointer to plug-in information containing this extension.
Definition cpluff.h:621
char * local_id
An optional local identifier uniquely identifying the extension within the host plug-in.
Definition cpluff.h:635
char * identifier
An optional unique identifier of the extension.
Definition cpluff.h:642
Information about plug-in import.
Definition cpluff.h:533
char * plugin_id
The identifier of the imported plug-in.
Definition cpluff.h:539
char * version
An optional version requirement.
Definition cpluff.h:549
int optional
Is this import optional.
Definition cpluff.h:560
Plug-in information structure captures information about a plug-in.
Definition cpluff.h:399
cp_extension_t * extensions
An array of num_extensions extensions provided by this plug-in.
Definition cpluff.h:524
char * runtime_funcs_symbol
The symbol pointing to the plug-in runtime function information or NULL if none.
Definition cpluff.h:504
char * version
An optional release version string.
Definition cpluff.h:423
unsigned int num_extensions
Number of extensions in extensions array.
Definition cpluff.h:517
char * name
An optional plug-in name.
Definition cpluff.h:416
char * abi_bw_compatibility
Optional ABI compatibility information.
Definition cpluff.h:454
cp_ext_point_t * ext_points
An array of num_ext_points extension points provided by this plug-in.
Definition cpluff.h:514
unsigned int num_ext_points
Number of extension points in ext_points array.
Definition cpluff.h:507
char * req_cpluff_version
Optional C-Pluff version requirement.
Definition cpluff.h:478
char * provider_name
An optional provider name.
Definition cpluff.h:432
char * api_bw_compatibility
Optional API compatibility information.
Definition cpluff.h:468
unsigned int num_imports
Number of import entries in the imports array.
Definition cpluff.h:481
char * plugin_path
Path of the plugin directory or NULL if not known.
Definition cpluff.h:441
cp_plugin_import_t * imports
An array of num_imports import entries.
Definition cpluff.h:487
char * runtime_lib_name
The base name of the plug-in runtime library, or NULL if none.
Definition cpluff.h:496
char * identifier
The obligatory unique identifier of the plugin.
Definition cpluff.h:408
A plug-in loader instance.
Definition cpluff.h:839
void(* release_plugins)(void *data, cp_context_t *ctx, cp_plugin_info_t **plugins)
A function called to release plug-in information returned by the scan_plugins function.
Definition cpluff.h:900
void * data
An opaque data pointer for this plug-in loader instance.
Definition cpluff.h:847
int(* resolve_files)(void *data, cp_context_t *ctx, cp_plugin_info_t *plugin)
A function called to ensure that the plug-in runtime code and data is locally available.
Definition cpluff.h:886
Container for plug-in runtime information.
Definition cpluff.h:737
void(* stop)(void *data)
A stop function called to stop a plugin instance.
Definition cpluff.h:803
void(* destroy)(void *data)
A destroy function called to destroy a plug-in instance.
Definition cpluff.h:817
int(* start)(void *data)
A start function called to start a plug-in instance.
Definition cpluff.h:778