diff options
Diffstat (limited to 'Src/replicant/application/api_application.h')
-rw-r--r-- | Src/replicant/application/api_application.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Src/replicant/application/api_application.h b/Src/replicant/application/api_application.h new file mode 100644 index 00000000..cf353610 --- /dev/null +++ b/Src/replicant/application/api_application.h @@ -0,0 +1,62 @@ +#pragma once +#include "../replicant/foundation/dispatch.h" +#include "../replicant/foundation/error.h" +#include "../replicant/service/types.h" +#include "../replicant/nx/nxuri.h" + +// {23B96771-09D7-46d3-9AE2-20DCEA6C86EA} +static const GUID applicationApiServiceGuid = +{ + 0x23b96771, 0x9d7, 0x46d3, { 0x9a, 0xe2, 0x20, 0xdc, 0xea, 0x6c, 0x86, 0xea } +}; + +// ---------------------------------------------------------------------------- +class api_application: public Wasabi2::Dispatchable +{ +protected: + api_application() : Dispatchable(DISPATCHABLE_VERSION) {} + ~api_application() {} +public: + static GUID GetServiceType() { return SVC_TYPE_UNIQUE; } + static GUID GetServiceGUID() { return applicationApiServiceGuid; } + const char *GetUserAgent() { return Application_GetUserAgent(); } + + /* returns a path where you can store data files, if you need to */ + int GetDataPath(nx_uri_t *path) { return Application_GetDataPath(path); } + + /* checks whether or not a particular feature has permissions to operate. + returns NErr_True or NErr_False. see features.h for known GUIDs */ + int GetPermission(GUID feature) { return Application_GetPermission(feature); } + + /* checks whether or not a particular feature is available. + This only includes some features that might be absent based on OS version, hardware support, or third party dependencies + It's meant for code that is otherwise unable to easily check directly or via other methods (e.g. WASABI2_API_SVC->GetService) + returns NErr_True or NErr_False. see features.h for known GUIDs */ + int GetFeature(GUID feature) { return Application_GetFeature(feature); } + + /* used by a component to set features that are available. See notes above for GetFeature + for thread-safety, you should only call this during your RegisterServices() function + (or during application init if you are hosting Wasabi) */ + void SetFeature(GUID feature) { Application_SetFeature(feature); } + + unsigned int GetBuildNumber() { return Application_GetBuildNumber(); } + + int GetVersionString(nx_string_t *version) { return Application_GetVersionString(version); } + int GetProductShortName(nx_string_t *name) { return Application_GetProductShortName(name); } + int GetDeviceID(nx_string_t *value) { return Application_GetDeviceID(value); } + enum + { + DISPATCHABLE_VERSION, + }; +protected: + virtual const char * Application_GetUserAgent()=0; + virtual int Application_GetDataPath(nx_uri_t *path)=0; + virtual int Application_GetPermission(GUID feature)=0; + virtual int Application_GetFeature(GUID feature)=0; + virtual void Application_SetFeature(GUID feature)=0; + virtual unsigned int Application_GetBuildNumber() { return 0; } + virtual int Application_GetVersionString(nx_string_t *version)=0; + virtual int Application_GetProductShortName(nx_string_t *name)=0; + virtual int Application_GetDeviceID(nx_string_t *value)=0; +}; + |