// ---------------------------------------------------------------------------- // 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; #ifndef WASABI_API_SVC #define WASABI_API_SVC serviceApi #endif // !WASABI_API_SVC #endif // __API_SERVICE_H