diff options
Diffstat (limited to 'dcop/dcopc.h')
-rw-r--r-- | dcop/dcopc.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/dcop/dcopc.h b/dcop/dcopc.h new file mode 100644 index 000000000..89aec973c --- /dev/null +++ b/dcop/dcopc.h @@ -0,0 +1,134 @@ +/* + * C interface to DCOP + * + * (C) 2000 Rik Hemsley <rik@kde.org> + * (C) 2000 Simon Hausmann <hausmann@kde.org> + */ + +#ifndef __dcopc_h__ +#define __dcopc_h__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Bool +#define Bool int +#define True 1 +#define False 0 +#endif + +typedef void (*dcop_callback_t)( + const char * object_id, + const char * function, + const char * data, + unsigned int data_length +); + +/** + * \addtogroup dcopc C interface to DCOP + * @{ + * dcop_attach, dcop_register, dcop_detach, dcop_register_callback, + * dcop_send_signal, and dcop_call make up the C interface to DCOP. + */ + +/** + * \relates DCOPClient + * Attach to the DCOP server. + * This registers you as anonymous-pid - you may then register with a 'real' + * name with dcop_register(). + */ +Bool dcop_attach(void); + +/** + * \relates DCOPClient + * Register as app 'app_name'. + * If add_pid is true, you will be registered as app_name-pid. + * + * It might not be possible to give you the exact name you requested. + * In this case, the retval will be different to what you expect, so you + * should not rely on getting 'app_name'. + * + * If it was not possible to register, retval is 0. + * @param app_name the name of the application. + * @param add_pid the process id of the application + * @return the registered name, or 0 when the registration failed + */ +char * dcop_register(const char * app_name, Bool add_pid); + +/** + * \relates DCOPClient + * Detach from the DCOP server. + * @return true if successful, false otherwise + */ +Bool dcop_detach(void); + +/** + * \relates DCOPClient + * Register the callback function for an object id. + * This function should have signature dcop_callback_t. The name of the + * actual function that should be called is passed in the struct. + * @param object_id the object id to register + * @param callback the callback for the object id + * @return true if successful, false otherwise + */ +Bool dcop_register_callback(const char * object_id, dcop_callback_t callback); + +/** + * \relates DCOPClient + * Send a signal to a DCOP object. + * + * @param receiving_app Name the target application is registered under. + * Note that you may use wildcards here. For example, + * you could send to all 'konsole' objects that are + * registered using the '-pid' extension with + * "konsole-*". + * + * @param object Name of the remote object. + * @param function Name of the function to call. + * @param data Marshalled arguments to pass to function. + * @param data_length Number of octets in data. + * @return true if successful, false otherwise + */ +Bool dcop_send_signal( + const char * receiving_app, + const char * object, + const char * function, + char * data, + int data_length +); + +/** + * \relates DCOPClient + * Call a function of a DCOP object. + * + * @param app_name Name this application is registered under. + * @param remote_app_name Name the target application is registered under. + * @param remote_object_id Name of the remote object. + * @param remote_function Name of the function to call. + * @param data Marshalled arguments to pass to function. + * @param data_length Number of octets in data. + * @param reply_type Will be set to type of retval, represented as a string. + * @param reply_data Will be set to retval (marshalled). + * @param reply_data_length Will be set to number of octets in retval. + * @return true if successful, false otherwise + */ +Bool dcop_call( + const char * app_name, + const char * remote_app_name, + const char * remote_object_id, + const char * remote_function, + const char * data, + int data_length, + char ** reply_type, + char ** reply_data, + int * reply_data_length +); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* __dcopc_h__ */ |