fixes
This commit is contained in:
parent
7a18c530c2
commit
aef1544e20
@ -44,15 +44,27 @@ int64_t List::integer(size_t index) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Map* List::map(size_t index) const {
|
Map* List::map(size_t index) const {
|
||||||
|
if (values[index]->type != valtype::map) {
|
||||||
|
throw std::runtime_error("type error");
|
||||||
|
}
|
||||||
return values[index]->value.map;
|
return values[index]->value.map;
|
||||||
}
|
}
|
||||||
|
|
||||||
List* List::list(size_t index) const {
|
List* List::list(size_t index) const {
|
||||||
|
if (values[index]->type != valtype::list) {
|
||||||
|
throw std::runtime_error("type error");
|
||||||
|
}
|
||||||
return values[index]->value.list;
|
return values[index]->value.list;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool List::flag(size_t index) const {
|
bool List::flag(size_t index) const {
|
||||||
return values[index]->value.boolean;
|
const auto& val = values[index];
|
||||||
|
switch (val->type) {
|
||||||
|
case valtype::integer: return val->value.integer;
|
||||||
|
case valtype::boolean: return val->value.boolean;
|
||||||
|
default:
|
||||||
|
throw std::runtime_error("type error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List& List::put(std::string value) {
|
List& List::put(std::string value) {
|
||||||
@ -180,9 +192,14 @@ int64_t Map::getInt(std::string key, int64_t def) const {
|
|||||||
|
|
||||||
bool Map::getBool(std::string key, bool def) const {
|
bool Map::getBool(std::string key, bool def) const {
|
||||||
auto found = values.find(key);
|
auto found = values.find(key);
|
||||||
if (found != values.end())
|
if (found == values.end())
|
||||||
return found->second->value.boolean;
|
return def;
|
||||||
return def;
|
auto& val = found->second;
|
||||||
|
switch (val->type) {
|
||||||
|
case valtype::integer: return val->value.integer;
|
||||||
|
case valtype::boolean: return val->value.boolean;
|
||||||
|
default: throw std::runtime_error("type error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Map::num(std::string key, double& dst) const {
|
void Map::num(std::string key, double& dst) const {
|
||||||
@ -232,9 +249,7 @@ List* Map::list(std::string key) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Map::flag(std::string key, bool& dst) const {
|
void Map::flag(std::string key, bool& dst) const {
|
||||||
auto found = values.find(key);
|
dst = getBool(key, dst);
|
||||||
if (found != values.end())
|
|
||||||
dst = found->second->value.boolean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Map& Map::put(std::string key, uint value) {
|
Map& Map::put(std::string key, uint value) {
|
||||||
|
|||||||
@ -22,7 +22,7 @@ namespace dynamic {
|
|||||||
std::string* str;
|
std::string* str;
|
||||||
double decimal;
|
double decimal;
|
||||||
int64_t integer;
|
int64_t integer;
|
||||||
bool boolean;
|
uint64_t boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Value {
|
class Value {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user