aboutsummaryrefslogtreecommitdiff
path: root/Src/replicant/application/api_application.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/replicant/application/api_application.h')
-rw-r--r--Src/replicant/application/api_application.h62
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;
+};
+