aboutsummaryrefslogtreecommitdiff
path: root/Src/Agave/Config/api_config.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/Agave/Config/api_config.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Agave/Config/api_config.h')
-rw-r--r--Src/Agave/Config/api_config.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/Src/Agave/Config/api_config.h b/Src/Agave/Config/api_config.h
new file mode 100644
index 00000000..d71885d6
--- /dev/null
+++ b/Src/Agave/Config/api_config.h
@@ -0,0 +1,135 @@
+#ifndef NULLSOFT_AGAVE_API_CONFIG_H
+#define NULLSOFT_AGAVE_API_CONFIG_H
+
+#include "bfc/dispatch.h"
+
+#include "ifc_configgroup.h"
+
+enum
+{
+ CONFIG_SUCCESS = 0,
+ CONFIG_FAILURE = 1,
+ CONFIG_GROUPNOTFOUND = 2,
+ CONFIG_ITEMNOTFOUND = 3,
+};
+
+class api_config : public Dispatchable
+{
+protected:
+ api_config() {}
+ ~api_config() {}
+
+public:
+ ifc_configgroup *GetGroup( GUID groupGUID );
+ void RegisterGroup( ifc_configgroup *newGroup );
+
+ /* Shortcut methods */
+ bool GetBool( GUID groupGUID, const wchar_t *configItem, bool defaultValue );
+ uintptr_t GetUnsigned( GUID groupGUID, const wchar_t *configItem, uintptr_t defaultValue );
+ intptr_t GetInt( GUID groupGUID, const wchar_t *configItem, intptr_t defaultValue );
+ float GetFloat( GUID groupGUID, const wchar_t *configItem, float defaultValue );
+ const wchar_t *GetString( GUID groupGUID, const wchar_t *configItem, const wchar_t *defaultValue );
+ ifc_configitem *GetItem( GUID groupGUID, const wchar_t *configItem );
+
+ DISPATCH_CODES
+ {
+ API_CONFIG_GETGROUP = 10,
+ API_CONFIG_REGISTERGROUP = 20,
+ };
+};
+
+inline ifc_configgroup *api_config::GetGroup( GUID groupGUID )
+{
+ return _call( API_CONFIG_GETGROUP, (ifc_configgroup *)0, groupGUID );
+}
+
+inline void api_config::RegisterGroup( ifc_configgroup *newGroup )
+{
+ _voidcall( API_CONFIG_REGISTERGROUP, newGroup );
+}
+
+inline bool api_config::GetBool( GUID groupGUID, const wchar_t *configItem, bool defaultValue )
+{
+ ifc_configgroup *group = GetGroup( groupGUID );
+ if ( group )
+ {
+ ifc_configitem *item = group->GetItem( configItem );
+ if ( item )
+ return item->GetBool();
+ }
+
+ return defaultValue;
+}
+
+inline uintptr_t api_config::GetUnsigned( GUID groupGUID, const wchar_t *configItem, uintptr_t defaultValue )
+{
+ ifc_configgroup *group = GetGroup( groupGUID );
+ if ( group )
+ {
+ ifc_configitem *item = group->GetItem( configItem );
+ if ( item )
+ return item->GetUnsigned();
+ }
+
+ return defaultValue;
+}
+
+inline intptr_t api_config::GetInt( GUID groupGUID, const wchar_t *configItem, intptr_t defaultValue )
+{
+ ifc_configgroup *group = GetGroup( groupGUID );
+ if ( group )
+ {
+ ifc_configitem *item = group->GetItem( configItem );
+ if ( item )
+ return item->GetInt();
+ }
+
+ return defaultValue;
+}
+
+inline float api_config::GetFloat( GUID groupGUID, const wchar_t *configItem, float defaultValue )
+{
+ ifc_configgroup *group = GetGroup( groupGUID );
+ if ( group )
+ {
+ ifc_configitem *item = group->GetItem( configItem );
+ if ( item )
+ return item->GetFloat();
+ }
+
+ return defaultValue;
+}
+
+inline const wchar_t *api_config::GetString( GUID groupGUID, const wchar_t *configItem, const wchar_t *defaultValue )
+{
+ ifc_configgroup *group = GetGroup( groupGUID );
+ if ( group )
+ {
+ ifc_configitem *item = group->GetItem( configItem );
+ if ( item )
+ return item->GetString();
+ }
+
+ return defaultValue;
+}
+
+inline ifc_configitem *api_config::GetItem( GUID groupGUID, const wchar_t *configItem )
+{
+ ifc_configgroup *group = GetGroup( groupGUID );
+ if ( group )
+ return group->GetItem( configItem );
+
+ return 0;
+}
+
+// {AEFBF8BE-E0AA-4318-8CC1-4353410B64DC}
+static const GUID AgaveConfigGUID =
+{ 0xaefbf8be, 0xe0aa, 0x4318, { 0x8c, 0xc1, 0x43, 0x53, 0x41, 0xb, 0x64, 0xdc } };
+
+extern api_config *configApi;
+
+#ifndef AGAVE_API_CONFIG
+#define AGAVE_API_CONFIG configApi
+#endif // !AGAVE_API_CONFIG
+
+#endif \ No newline at end of file