add config facilities for loading/storing int list
This commit is contained in:
parent
54c1a8171f
commit
53e36abdee
|
@ -175,6 +175,33 @@ String DivConfig::getString(String key, String fallback) const {
|
||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<int> DivConfig::getIntList(String key, std::initializer_list<int> fallback) const {
|
||||||
|
String next;
|
||||||
|
std::vector<int> ret;
|
||||||
|
try {
|
||||||
|
String val=conf.at(key);
|
||||||
|
|
||||||
|
for (char i: val) {
|
||||||
|
if (i==',') {
|
||||||
|
int num=std::stoi(next);
|
||||||
|
ret.push_back(num);
|
||||||
|
next="";
|
||||||
|
} else {
|
||||||
|
next+=i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!next.empty()) {
|
||||||
|
int num=std::stoi(next);
|
||||||
|
ret.push_back(num);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
} catch (std::out_of_range& e) {
|
||||||
|
} catch (std::invalid_argument& e) {
|
||||||
|
}
|
||||||
|
return fallback;
|
||||||
|
}
|
||||||
|
|
||||||
bool DivConfig::has(String key) const {
|
bool DivConfig::has(String key) const {
|
||||||
try {
|
try {
|
||||||
String test=conf.at(key);
|
String test=conf.at(key);
|
||||||
|
@ -212,6 +239,17 @@ void DivConfig::set(String key, String value) {
|
||||||
conf[key]=value;
|
conf[key]=value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DivConfig::set(String key, const std::vector<int>& value) {
|
||||||
|
String val;
|
||||||
|
bool comma=false;
|
||||||
|
for (int i: value) {
|
||||||
|
if (comma) val+=',';
|
||||||
|
val+=fmt::sprintf("%d",i);
|
||||||
|
comma=true;
|
||||||
|
}
|
||||||
|
conf[key]=val;
|
||||||
|
}
|
||||||
|
|
||||||
bool DivConfig::remove(String key) {
|
bool DivConfig::remove(String key) {
|
||||||
return conf.erase(key);
|
return conf.erase(key);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,8 @@
|
||||||
|
|
||||||
#include "../ta-utils.h"
|
#include "../ta-utils.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include <initializer_list>
|
||||||
|
|
||||||
class DivConfig {
|
class DivConfig {
|
||||||
std::map<String,String> conf;
|
std::map<String,String> conf;
|
||||||
|
@ -44,6 +46,7 @@ class DivConfig {
|
||||||
float getFloat(String key, float fallback) const;
|
float getFloat(String key, float fallback) const;
|
||||||
double getDouble(String key, double fallback) const;
|
double getDouble(String key, double fallback) const;
|
||||||
String getString(String key, String fallback) const;
|
String getString(String key, String fallback) const;
|
||||||
|
std::vector<int> getIntList(String key, std::initializer_list<int> fallback) const;
|
||||||
|
|
||||||
// check for existence
|
// check for existence
|
||||||
bool has(String key) const;
|
bool has(String key) const;
|
||||||
|
@ -55,6 +58,7 @@ class DivConfig {
|
||||||
void set(String key, double value);
|
void set(String key, double value);
|
||||||
void set(String key, const char* value);
|
void set(String key, const char* value);
|
||||||
void set(String key, String value);
|
void set(String key, String value);
|
||||||
|
void set(String key, const std::vector<int>& value);
|
||||||
|
|
||||||
// remove a config value
|
// remove a config value
|
||||||
bool remove(String key);
|
bool remove(String key);
|
||||||
|
|
Loading…
Reference in a new issue