#pragma once #include "application/api_application.h" #include #include "syscb/api_syscb.h" /* implements non-platform-specific methods of api_application. You can derive your Application implementation from this to ease your life */ class ApplicationBase : public api_application { public: ApplicationBase(); ~ApplicationBase(); /* call this (and check the return value) before doing your own initialization */ int Initialize(); /* and call this after doing your own shutdown */ void Shutdown(); void SetDataPath(nx_uri_t data_path); void SetPermission(GUID feature); void RemovePermission(GUID permission); void SetDeviceID(nx_string_t device_id); void EnableAllPermissions(); void ClearPermissions(); void NotifyPermissions(api_syscb *system_callbacks); /* pass in the syscb API to avoid a dependency */ void DumpPermissions(); /* dumps permissions list to the log file */ protected: /* api_application implementation */ int Application_GetDataPath(nx_uri_t *path); int Application_GetPermission(GUID feature); int Application_GetFeature(GUID feature); void Application_SetFeature(GUID feature); int Application_GetDeviceID(nx_string_t *value); private: typedef std::set FeatureList; FeatureList features; FeatureList permissions; bool all_permissions_enabled; /* bypass for developer/QA testing */ nx_uri_t data_path; nx_string_t device_id; };