1 // ----------------------------------------------------------------------------
2 // Generated by InterfaceFactory [Wed May 07 00:56:11 2003]
3 //
4 // File        : api_service.h
5 // Class       : api_service
6 // class layer : Dispatchable Interface
7 // ----------------------------------------------------------------------------
8 
9 #ifndef __API_SERVICE_H
10 #define __API_SERVICE_H
11 
12 #include <bfc/dispatch.h>
13 #include <bfc/platform/types.h>
14 
15 namespace SvcNotify {
16   enum {
17     ONREGISTERED=100,	// init yourself here -- not all other services are registered yet
18     ONSTARTUP=200,	// everyone is initialized, safe to talk to other services
19     ONAPPRUNNING=210,	// app is showing and processing events
20     ONSHUTDOWN=300,	// studio is shutting down, release resources from other services
21     ONDEREGISTERED=400,	// bye bye
22     ONDBREADCOMPLETE=500,// after db is read in (happens asynchronously after ONSTARTUP)
23     ONBEFORESHUTDOWN=600, // system is about to shutdown, call WASABI_API_APP->main_cancelShutdown() to cancel
24   };
25 }
26 
27 	class waServiceFactory;
28 
29 // ----------------------------------------------------------------------------
30 
31 class NOVTABLE api_service: public Dispatchable {
32   protected:
api_service()33     api_service() {}
~api_service()34     ~api_service() {}
35   public:
36     int service_register(waServiceFactory *svc);
37     int service_deregister(waServiceFactory *svc);
38     size_t service_getNumServices(FOURCC svc_type);
39     waServiceFactory *service_enumService(FOURCC svc_type, size_t n);
40     waServiceFactory *service_getServiceByGuid(GUID guid);
41     int service_lock(waServiceFactory *owner, void *svcptr);
42     int service_clientLock(void *svcptr);
43     int service_release(void *svcptr);
44     const char *service_getTypeName(FOURCC svc_type);
45   #ifdef WASABI_COMPILE_COMPONENTS
46     GUID service_getOwningComponent(void *svcptr);
47     GUID service_getLockingComponent(void *svcptr);
48   #endif // WASABI_COMPILE_COMPONENTS
49     int service_unlock(void *svcptr);
50     int service_isvalid(FOURCC svctype, waServiceFactory *service);
51 		// removes "me" from the services list and finds a second service with the same GUID and puts it in the same position
52 		// this is used by the lazy loader service factory - you shouldn't need it for any other purposes.
53 		// returns 0 if compaction actually happened
54 		int service_compactDuplicates(waServiceFactory *me);
55 
56   protected:
57     enum {
58       API_SERVICE_SERVICE_REGISTER = 10,
59       API_SERVICE_SERVICE_DEREGISTER = 20,
60       API_SERVICE_SERVICE_GETNUMSERVICES = 30,
61       API_SERVICE_SERVICE_ENUMSERVICE = 40,
62       API_SERVICE_SERVICE_GETSERVICEBYGUID = 50,
63       API_SERVICE_SERVICE_LOCK = 60,
64       API_SERVICE_SERVICE_CLIENTLOCK = 70,
65       API_SERVICE_SERVICE_RELEASE = 80,
66       API_SERVICE_SERVICE_GETTYPENAME = 90,
67       #ifdef WASABI_COMPILE_COMPONENTS
68       API_SERVICE_SERVICE_GETOWNINGCOMPONENT = 100,
69       API_SERVICE_SERVICE_GETLOCKINGCOMPONENT = 110,
70       #endif // WASABI_COMPILE_COMPONENTS
71       API_SERVICE_SERVICE_UNLOCK = 120,
72       API_SERVICE_ISVALID = 130,
73 			API_SERVICE_COMPACT_DUPLICATES = 140,
74     };
75 };
76 
77 // ----------------------------------------------------------------------------
78 
service_register(waServiceFactory * svc)79 inline int api_service::service_register(waServiceFactory *svc) {
80   int __retval = _call(API_SERVICE_SERVICE_REGISTER, (int)0, svc);
81   return __retval;
82 }
83 
service_deregister(waServiceFactory * svc)84 inline int api_service::service_deregister(waServiceFactory *svc) {
85   int __retval = _call(API_SERVICE_SERVICE_DEREGISTER, (int)0, svc);
86   return __retval;
87 }
88 
service_getNumServices(FOURCC svc_type)89 inline size_t api_service::service_getNumServices(FOURCC svc_type) {
90   int __retval = _call(API_SERVICE_SERVICE_GETNUMSERVICES, (int)0, svc_type);
91   return __retval;
92 }
93 
service_enumService(FOURCC svc_type,size_t n)94 inline waServiceFactory *api_service::service_enumService(FOURCC svc_type, size_t n) {
95   waServiceFactory *__retval = _call(API_SERVICE_SERVICE_ENUMSERVICE, (waServiceFactory *)0, svc_type, n);
96   return __retval;
97 }
98 
service_getServiceByGuid(GUID guid)99 inline waServiceFactory *api_service::service_getServiceByGuid(GUID guid) {
100   waServiceFactory *__retval = _call(API_SERVICE_SERVICE_GETSERVICEBYGUID, (waServiceFactory *)0, guid);
101   return __retval;
102 }
103 
service_lock(waServiceFactory * owner,void * svcptr)104 inline int api_service::service_lock(waServiceFactory *owner, void *svcptr) {
105   int __retval = _call(API_SERVICE_SERVICE_LOCK, (int)0, owner, svcptr);
106   return __retval;
107 }
108 
service_clientLock(void * svcptr)109 inline int api_service::service_clientLock(void *svcptr) {
110   int __retval = _call(API_SERVICE_SERVICE_CLIENTLOCK, (int)0, svcptr);
111   return __retval;
112 }
113 
service_release(void * svcptr)114 inline int api_service::service_release(void *svcptr) {
115   int __retval = _call(API_SERVICE_SERVICE_RELEASE, (int)0, svcptr);
116   return __retval;
117 }
118 
service_getTypeName(FOURCC svc_type)119 inline const char *api_service::service_getTypeName(FOURCC svc_type) {
120   const char *__retval = _call(API_SERVICE_SERVICE_GETTYPENAME, (const char *)0, svc_type);
121   return __retval;
122 }
123 
124 #ifdef WASABI_COMPILE_COMPONENTS
service_getOwningComponent(void * svcptr)125 inline GUID api_service::service_getOwningComponent(void *svcptr) {
126   GUID __retval = _call(API_SERVICE_SERVICE_GETOWNINGCOMPONENT, INVALID_GUID, svcptr);
127   return __retval;
128 }
129 
service_getLockingComponent(void * svcptr)130 inline GUID api_service::service_getLockingComponent(void *svcptr) {
131   GUID __retval = _call(API_SERVICE_SERVICE_GETLOCKINGCOMPONENT, INVALID_GUID, svcptr);
132   return __retval;
133 }
134 
135 #endif // WASABI_COMPILE_COMPONENTS
service_unlock(void * svcptr)136 inline int api_service::service_unlock(void *svcptr) {
137   int __retval = _call(API_SERVICE_SERVICE_UNLOCK, (int)0, svcptr);
138   return __retval;
139 }
140 
service_isvalid(FOURCC svctype,waServiceFactory * service)141 inline int api_service::service_isvalid(FOURCC svctype, waServiceFactory *service) {
142   int __retval = _call(API_SERVICE_ISVALID, (int)0, svctype, service);
143   return __retval;
144 }
145 
service_compactDuplicates(waServiceFactory * me)146 inline int api_service::service_compactDuplicates(waServiceFactory *me)
147 {
148 	return _call(API_SERVICE_COMPACT_DUPLICATES, (int)1, me);
149 }
150 // ----------------------------------------------------------------------------
151 
152 
153 extern api_service *serviceApi;
154 
155 #endif // __API_SERVICE_H
156