add dv::value.object(...), .list(...)
This commit is contained in:
parent
a014204d99
commit
fa12b9b751
@ -228,6 +228,14 @@ namespace dv {
|
|||||||
value& operator[](size_t index);
|
value& operator[](size_t index);
|
||||||
|
|
||||||
const value& operator[](size_t index) const;
|
const value& operator[](size_t index) const;
|
||||||
|
|
||||||
|
value& object(const key_t& key);
|
||||||
|
|
||||||
|
value& list(const key_t& key);
|
||||||
|
|
||||||
|
value& object();
|
||||||
|
|
||||||
|
value& list();
|
||||||
};
|
};
|
||||||
|
|
||||||
using reference = value&;
|
using reference = value&;
|
||||||
@ -355,4 +363,24 @@ namespace dv {
|
|||||||
}
|
}
|
||||||
throw std::runtime_error("value is not a list");
|
throw std::runtime_error("value is not a list");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
value& value::object(const key_t& key) {
|
||||||
|
reference ref = this->operator[](key);
|
||||||
|
ref = dv::object();
|
||||||
|
return ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
value& value::list(const key_t& key) {
|
||||||
|
reference ref = this->operator[](key);
|
||||||
|
ref = dv::list();
|
||||||
|
return ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
value& value::object() {
|
||||||
|
return add(dv::object());
|
||||||
|
}
|
||||||
|
|
||||||
|
value& value::list() {
|
||||||
|
return add(dv::list());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,33 @@
|
|||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
#include "data/dv.hpp"
|
#include "data/dv.hpp"
|
||||||
|
#include "data/dynamic.hpp"
|
||||||
|
#include "util/timeutil.hpp"
|
||||||
|
|
||||||
TEST(dv, dv) {
|
TEST(dv, dv) {
|
||||||
auto value = dv::object({
|
// speed comparsion with data/dynamic
|
||||||
{"d", "test"}
|
|
||||||
});
|
{
|
||||||
auto list = dv::list({
|
timeutil::ScopeLogTimer log(444);
|
||||||
561, 52, "hello"
|
auto map = dynamic::create_map();
|
||||||
});
|
auto& list = map->putList("elements");
|
||||||
list.add("world");
|
for (int i = 0; i < 10000; i++) {
|
||||||
value["a"] = 51;
|
auto& obj = list.putMap();
|
||||||
|
obj.put("name", "user");
|
||||||
|
obj.put("age", 90);
|
||||||
|
auto pos = dynamic::create_list({40, -41, 52});
|
||||||
|
obj.put("position", pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeutil::ScopeLogTimer log(555);
|
||||||
|
auto value = dv::object();
|
||||||
|
auto& list = value.list("elements");
|
||||||
|
for (int i = 0; i < 10000; i++) {
|
||||||
|
auto& obj = list.object();
|
||||||
|
obj["name"] = "user";
|
||||||
|
obj["age"] = 90;
|
||||||
|
obj["position"] = dv::list({40, -41, 52});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user