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;
|
||||
}
|
||||
|
||||
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 {
|
||||
try {
|
||||
String test=conf.at(key);
|
||||
|
@ -212,6 +239,17 @@ void DivConfig::set(String key, String 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) {
|
||||
return conf.erase(key);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
#include "../ta-utils.h"
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <initializer_list>
|
||||
|
||||
class DivConfig {
|
||||
std::map<String,String> conf;
|
||||
|
@ -44,6 +46,7 @@ class DivConfig {
|
|||
float getFloat(String key, float fallback) const;
|
||||
double getDouble(String key, double fallback) const;
|
||||
String getString(String key, String fallback) const;
|
||||
std::vector<int> getIntList(String key, std::initializer_list<int> fallback) const;
|
||||
|
||||
// check for existence
|
||||
bool has(String key) const;
|
||||
|
@ -55,6 +58,7 @@ class DivConfig {
|
|||
void set(String key, double value);
|
||||
void set(String key, const char* value);
|
||||
void set(String key, String value);
|
||||
void set(String key, const std::vector<int>& value);
|
||||
|
||||
// remove a config value
|
||||
bool remove(String key);
|
||||
|
|
Loading…
Reference in New Issue