annotate foosdk/sdk/foobar2000/SDK/configStore.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #define FOOBAR2000_HAVE_CONFIGSTORE FOOBAR2020
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 #include <functional>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 #include "commonObjects.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 namespace fb2k {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 class configStoreNotify {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 virtual void onVarChange() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 typedef void * configStoreNotifyHandle_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 //! \since 2.0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 //! Interface to access foobar2000's configuration store, backed by SQLite database. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 //! get* methods can be called at any time. set*/delete* \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 //! set*/delete* methods will trigger immediate commit when invoked without a transaction scope. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 //! Use commitBlocking() to commit synchronously to be sure that the data has been flushed before continuing execution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 class configStore : public service_base {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 FB2K_MAKE_SERVICE_COREAPI( configStore );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 //! Causes multiple writes to be chained together. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 //! Use of this is no longer essential since late foobar2000 v2.0 betas, as delay-write cache is always used. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 //! You can still use it to guarantee that multiple updates are written together, that is either all or none are saved, should the system or application crash.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 virtual fb2k::objRef acquireTransactionScope() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 //! Synchronously flushes changes to disk. Doesn't return until changes have actually been written. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 //! Use of this is strongly recommended against.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 virtual void commitBlocking() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 virtual int64_t getConfigInt( const char * name, int64_t defVal = 0 ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 virtual void setConfigInt( const char * name, int64_t val ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 virtual void deleteConfigInt(const char * name) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 virtual fb2k::stringRef getConfigString( const char * name, fb2k::stringRef defaVal = fb2k::string::stringWithString("")) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 virtual void setConfigString( const char * name, const char * value ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 virtual void deleteConfigString(const char * name) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 virtual fb2k::memBlockRef getConfigBlob( const char * name, fb2k::memBlockRef defVal = fb2k::memBlock::empty()) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 virtual void setConfigBlob(const char* name, const void* ptr, size_t bytes) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 virtual void setConfigBlob(const char* name, fb2k::memBlockRef val) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 virtual void deleteConfigBlob(const char * name) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 virtual double getConfigFloat( const char * name, double defVal = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 virtual void setConfigFloat( const char * name, double val ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 virtual void deleteConfigFloat( const char * name ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 virtual void addNotify(const char * name, configStoreNotify * notify) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 virtual void removeNotify(const char * name, configStoreNotify * notify) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 //! Lists values of any type in the specified domain.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 //! For an example, calling with domain "foo" will return all foo.* keys, such as: foo.bar, foo.bar.2000, foo.asdf. Will not return "foobar".
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 virtual fb2k::arrayRef listDomainValues(const char* domain, bool withSubdomains) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 objRef addNotify( const char * name, std::function<void () > f );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 void addPermanentNotify( const char * name, std::function<void () > f );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 //! Helper around getConfigInt.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 bool getConfigBool( const char * name, bool defVal = false );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 //! Helper around setConfigInt.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 void setConfigBool( const char * name, bool val );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 //! Helper around setConfigInt.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 bool toggleConfigBool (const char * name, bool defVal = false );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 //! Helper around deleteConfigInt.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 void deleteConfigBool( const char * name );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 //! Helper around getConfigString.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 GUID getConfigGUID(const char* name, const GUID& defVal = pfc::guid_null);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 //! Helper around setConfigString.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 void setConfigGUID(const char* name, const GUID& val);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 //! Helper around deleteConfigString.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 void deleteConfigGUID(const char* name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 //! For internal core use, notifies everyone interested about off-process change to configuration data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 virtual void callNotify(const char * name) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 fb2k::stringRef getConfigString( const char * name, const char * defVal ) { return getConfigString(name, defVal ? fb2k::makeString(defVal) : nullptr); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 fb2k::stringRef getConfigString( const char * name, std::nullptr_t ) { return getConfigString(name, fb2k::stringRef ( nullptr ) ); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 struct configEventHandle_;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 typedef configEventHandle_ * configEventHandle_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 class configEvent {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 configEvent(const char * name) : m_name(name) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 configEventHandle_t operator+=(std::function< void() >) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 void operator-=(configEventHandle_t) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 const char * const m_name;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 class configEventRef {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 configEventRef() : m_name(), m_handle() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 ~configEventRef();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 configEventRef & operator<< ( const char * name );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 configEventRef & operator<< ( std::function<void () > f );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 void clear();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 void set( const char * name, std::function<void () > f );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 void setName( const char * name );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 void setFunction( std::function<void()> f);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 bool isActive() const { return m_handle != nullptr; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 pfc::string8 m_name;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 configEventHandle_t m_handle;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 configEventRef( const configEventRef & ) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 void operator=( const configEventRef & ) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 Usage example:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 using namespace fb2k;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 static_api_ptr_t<configStore> api;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 stringRef val = api->getConfigString( "myComponent.foo", "defaultVal" );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 auto scope = api->acquireTransactionScope();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 int64_t v = api->getConfigInt("myComponent.somevar" );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 v ++;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 api->setConfigInt("myComponent.somevar", v);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 api->setConfigString("myComponent.foo", "bar" );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 // commit is triggered when leaving scope
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 // If you want to deterministically ensure that the data has been written before leaving scope,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 // for an example when another process is about to read it,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 // use api->commitBlocking()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 //! \since 2.2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 class configStore2 : public configStore {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 FB2K_MAKE_SERVICE_COREAPI_EXTENSION(configStore2, configStore);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 // Use flagSuppressCache to prevent value from being cached. Prevents memory usage creep if querying lots of uniquely named variables.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 static constexpr uint32_t flagSuppressCache = 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 virtual int64_t getConfigInt2( const char * name, int64_t defVal = 0, uint32_t flags = 0 ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 virtual void setConfigInt2( const char * name, int64_t val, uint32_t flags = 0 ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 virtual void deleteConfigInt2(const char * name, uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 virtual fb2k::stringRef getConfigString2( const char * name, fb2k::stringRef defaVal = fb2k::string::stringWithString(""), uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 virtual void setConfigString2( const char * name, const char * value, uint32_t flags = 0 ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 virtual void deleteConfigString2(const char * name, uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 virtual fb2k::memBlockRef getConfigBlob2( const char * name, fb2k::memBlockRef defVal = fb2k::memBlock::empty(), uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 virtual void setConfigBlob2(const char* name, const void* ptr, size_t bytes, uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 virtual void setConfigBlob2(const char* name, fb2k::memBlockRef val, uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 virtual void deleteConfigBlob2(const char * name, uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 virtual double getConfigFloat2( const char * name, double defVal = 0, uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 virtual void setConfigFloat2( const char * name, double val, uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 virtual void deleteConfigFloat2( const char * name, uint32_t flags = 0) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 int64_t getConfigInt( const char * name, int64_t defVal ) override final { return getConfigInt2(name, defVal); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 void setConfigInt( const char * name, int64_t val ) override final { setConfigInt2(name, val); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 void deleteConfigInt(const char * name) override final { deleteConfigInt2(name); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 fb2k::stringRef getConfigString( const char * name, fb2k::stringRef defaVal) override final { return getConfigString2(name, defaVal); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 void setConfigString( const char * name, const char * value ) override final { setConfigString2(name, value); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 void deleteConfigString(const char * name) override final { deleteConfigString2(name); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 fb2k::memBlockRef getConfigBlob( const char * name, fb2k::memBlockRef defVal ) override final { return getConfigBlob2(name, defVal); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 void setConfigBlob(const char* name, const void* ptr, size_t bytes) override final { setConfigBlob2(name, ptr, bytes); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 void setConfigBlob(const char* name, fb2k::memBlockRef val) override final { setConfigBlob2(name, val); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 void deleteConfigBlob(const char * name) override final { deleteConfigBlob2(name); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 double getConfigFloat( const char * name, double defVal ) override final { return getConfigFloat2(name, defVal); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 void setConfigFloat( const char * name, double val ) override final { setConfigFloat2(name, val); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 void deleteConfigFloat( const char * name ) override final { deleteConfigFloat2(name); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 } // namespace fb2k