diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/service/api_service.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/service/api_service.h')
-rw-r--r-- | Src/Wasabi/api/service/api_service.h | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/Src/Wasabi/api/service/api_service.h b/Src/Wasabi/api/service/api_service.h new file mode 100644 index 00000000..0d309000 --- /dev/null +++ b/Src/Wasabi/api/service/api_service.h @@ -0,0 +1,184 @@ +// ---------------------------------------------------------------------------- +// 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 |