aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/service/api_service.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/service/api_service.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-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.h184
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