// ---------------------------------------------------------------------------- // Generated by InterfaceFactory [Wed May 07 00:56:11 2003] // // File : api_service.h // Class : api_service // class layer : Dispatchable Interface // ---------------------------------------------------------------------------- #ifndef __API_SERVICE_H #define __API_SERVICE_H #include "../../bfc/dispatch.h" #include "../../bfc/platform/types.h" namespace SvcNotify { enum { ONREGISTERED=100, // init yourself here -- not all other services are registered yet ONSTARTUP=200, // everyone is initialized, safe to talk to other services ONAPPRUNNING=210, // app is showing and processing events ONSHUTDOWN=300, // studio is shutting down, release resources from other services ONDEREGISTERED=400, // bye bye ONDBREADCOMPLETE=500,// after db is read in (happens asynchronously after ONSTARTUP) ONBEFORESHUTDOWN=600, // system is about to shutdown, call WASABI_API_APP->main_cancelShutdown() to cancel }; } class waServiceFactory; // ---------------------------------------------------------------------------- class NOVTABLE api_service: public Dispatchable { protected: api_service() {} ~api_service() {} public: int service_register(waServiceFactory *svc); int service_deregister(waServiceFactory *svc); size_t service_getNumServices(FOURCC svc_type); waServiceFactory *service_enumService(FOURCC svc_type, size_t n); waServiceFactory *service_getServiceByGuid(GUID guid); int service_lock(waServiceFactory *owner, void *svcptr); int service_clientLock(void *svcptr); int service_release(void *svcptr); const char *service_getTypeName(FOURCC svc_type); #ifdef WASABI_COMPILE_COMPONENTS GUID service_getOwningComponent(void *svcptr); GUID service_getLockingComponent(void *svcptr); #endif // WASABI_COMPILE_COMPONENTS int service_unlock(void *svcptr); int service_isvalid(FOURCC svctype, waServiceFactory *service); // removes "me" from the services list and finds a second service with the same GUID and puts it in the same position // this is used by the lazy loader service factory - you shouldn't need it for any other purposes. // returns 0 if compaction actually happened int service_compactDuplicates(waServiceFactory *me); protected: enum { API_SERVICE_SERVICE_REGISTER = 10, API_SERVICE_SERVICE_DEREGISTER = 20, API_SERVICE_SERVICE_GETNUMSERVICES = 30, API_SERVICE_SERVICE_ENUMSERVICE = 40, API_SERVICE_SERVICE_GETSERVICEBYGUID = 50, API_SERVICE_SERVICE_LOCK = 60, API_SERVICE_SERVICE_CLIENTLOCK = 70, API_SERVICE_SERVICE_RELEASE = 80, API_SERVICE_SERVICE_GETTYPENAME = 90, #ifdef WASABI_COMPILE_COMPONENTS API_SERVICE_SERVICE_GETOWNINGCOMPONENT = 100, API_SERVICE_SERVICE_GETLOCKINGCOMPONENT = 110, #endif // WASABI_COMPILE_COMPONENTS API_SERVICE_SERVICE_UNLOCK = 120, API_SERVICE_ISVALID = 130, API_SERVICE_COMPACT_DUPLICATES = 140, }; }; // ---------------------------------------------------------------------------- inline int api_service::service_register(waServiceFactory *svc) { int __retval = _call(API_SERVICE_SERVICE_REGISTER, (int)0, svc); return __retval; } inline int api_service::service_deregister(waServiceFactory *svc) { int __retval = _call(API_SERVICE_SERVICE_DEREGISTER, (int)0, svc); return __retval; } inline size_t api_service::service_getNumServices(FOURCC svc_type) { int __retval = _call(API_SERVICE_SERVICE_GETNUMSERVICES, (int)0, svc_type); return __retval; } inline waServiceFactory *api_service::service_enumService(FOURCC svc_type, size_t n) { waServiceFactory *__retval = _call(API_SERVICE_SERVICE_ENUMSERVICE, (waServiceFactory *)0, svc_type, n); return __retval; } inline waServiceFactory *api_service::service_getServiceByGuid(GUID guid) { waServiceFactory *__retval = _call(API_SERVICE_SERVICE_GETSERVICEBYGUID, (waServiceFactory *)0, guid); return __retval; } inline int api_service::service_lock(waServiceFactory *owner, void *svcptr) { int __retval = _call(API_SERVICE_SERVICE_LOCK, (int)0, owner, svcptr); return __retval; } inline int api_service::service_clientLock(void *svcptr) { int __retval = _call(API_SERVICE_SERVICE_CLIENTLOCK, (int)0, svcptr); return __retval; } inline int api_service::service_release(void *svcptr) { int __retval = _call(API_SERVICE_SERVICE_RELEASE, (int)0, svcptr); return __retval; } inline const char *api_service::service_getTypeName(FOURCC svc_type) { const char *__retval = _call(API_SERVICE_SERVICE_GETTYPENAME, (const char *)0, svc_type); return __retval; } #ifdef WASABI_COMPILE_COMPONENTS inline GUID api_service::service_getOwningComponent(void *svcptr) { GUID __retval = _call(API_SERVICE_SERVICE_GETOWNINGCOMPONENT, INVALID_GUID, svcptr); return __retval; } inline GUID api_service::service_getLockingComponent(void *svcptr) { GUID __retval = _call(API_SERVICE_SERVICE_GETLOCKINGCOMPONENT, INVALID_GUID, svcptr); return __retval; } #endif // WASABI_COMPILE_COMPONENTS inline int api_service::service_unlock(void *svcptr) { int __retval = _call(API_SERVICE_SERVICE_UNLOCK, (int)0, svcptr); return __retval; } inline int api_service::service_isvalid(FOURCC svctype, waServiceFactory *service) { int __retval = _call(API_SERVICE_ISVALID, (int)0, svctype, service); return __retval; } inline int api_service::service_compactDuplicates(waServiceFactory *me) { return _call(API_SERVICE_COMPACT_DUPLICATES, (int)1, me); } // ---------------------------------------------------------------------------- extern api_service *serviceApi; #endif // __API_SERVICE_H