aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/config/api_configi.cpp
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/Wasabi/api/config/api_configi.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/config/api_configi.cpp')
-rw-r--r--Src/Wasabi/api/config/api_configi.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/Src/Wasabi/api/config/api_configi.cpp b/Src/Wasabi/api/config/api_configi.cpp
new file mode 100644
index 00000000..d6b62189
--- /dev/null
+++ b/Src/Wasabi/api/config/api_configi.cpp
@@ -0,0 +1,124 @@
+#include <precomp.h>
+//<?#include "<class data="implementationheader"/>"
+#include "api_configi.h"
+//?>
+
+#include <bfc/parse/pathparse.h>
+#include <api/config/cfglist.h>
+
+
+static CfgList cfglist;
+
+api_config *configApi = NULL;
+
+api_configI::api_configI()
+: public_config(StringPrintfW(INVALID_GUID), L"public data")
+{
+ public_config.initialize();
+}
+
+api_configI::~api_configI()
+{
+}
+
+void api_configI::config_registerCfgItem(CfgItem *cfgitem)
+{
+ cfglist.addItem(cfgitem);
+}
+
+void api_configI::config_deregisterCfgItem(CfgItem *cfgitem)
+{
+ cfglist.delItem(cfgitem);
+}
+
+int api_configI::config_getNumCfgItems()
+{
+ return cfglist.getNumItems();
+}
+
+CfgItem *api_configI::config_enumCfgItem(int n)
+{
+ return cfglist.enumItem(n);
+}
+
+CfgItem *api_configI::config_getCfgItemByGuid(GUID g)
+{
+ return cfglist.getByGuid(g);
+}
+
+// The private config functions are currently pointing at the public config item, this is because
+// only the monolithic api gets instantiated once per component and thus can know its GUID, this
+// version of the config api should eventually be instantiated once per component as well when
+// we start making them use the modular apis
+void api_configI::setIntPrivate(const wchar_t *name, int val)
+{
+ public_config.setInt(name, val);
+}
+
+int api_configI::getIntPrivate(const wchar_t *name, int def_val)
+{
+ int ret = public_config.getInt(name, def_val);
+ return ret;
+}
+
+void api_configI::setIntArrayPrivate(const wchar_t *name, const int *val, int nval)
+{
+ if (nval > 256) return;
+ wchar_t buf[12*256]=L"";
+ for (int i = 0; i < nval; i++)
+ {
+ wcscat(buf, StringPrintfW(L"%d", val[i]));
+ if (i != nval-1)
+ wcscat(buf, L",");
+ }
+ public_config.setString(name, buf);
+}
+
+int api_configI::getIntArrayPrivate(const wchar_t *name, int *val, int nval)
+{
+ wchar_t buf[12*256]=L"";
+ public_config.getString(name, buf, sizeof(buf)/sizeof(*buf), L"");
+ PathParserW pp(buf, L",");
+ if (pp.getNumStrings() != nval) return 0;
+ for (int i = 0; i < nval; i++) {
+ *val = WTOI(pp.enumString(i));
+ val ++;
+ }
+ return 1;
+}
+
+void api_configI::setStringPrivate(const wchar_t *name, const wchar_t *str)
+{
+ public_config.setString(name, str);
+}
+
+int api_configI::getStringPrivate(const wchar_t *name, wchar_t *buf, int buf_len, const wchar_t *default_str)
+{
+ int ret = public_config.getString(name, buf, buf_len, default_str);
+ return ret;
+}
+
+int api_configI::getStringPrivateLen(const wchar_t *name)
+{
+ return public_config.getStringLen(name);
+}
+
+void api_configI::setIntPublic(const wchar_t *name, int val)
+{
+ public_config.setInt(name, val);
+}
+
+int api_configI::getIntPublic(const wchar_t *name, int def_val)
+{
+ return public_config.getInt(name, def_val);
+}
+
+void api_configI::setStringPublic(const wchar_t *name, const wchar_t *str)
+{
+ public_config.setString(name, str);
+}
+
+int api_configI::getStringPublic(const wchar_t *name, wchar_t *buf, int buf_len, const wchar_t *default_str)
+{
+ return public_config.getString(name, buf, buf_len, default_str);
+}