[ox/claw] Add Claw
This commit is contained in:
6
deps/ox/src/ox/oc/test/tests.cpp
vendored
6
deps/ox/src/ox/oc/test/tests.cpp
vendored
@@ -125,8 +125,8 @@ std::map<std::string, ox::Error(*)()> tests = {
|
||||
|
||||
auto [oc, writeErr] = ox::writeOC(&testIn);
|
||||
oxAssert(writeErr, "writeOC failed");
|
||||
std::cout << oc.c_str() << '\n';
|
||||
auto [testOut, readErr] = ox::readOC<TestStruct>(oc.c_str());
|
||||
std::cout << oc.data() << '\n';
|
||||
auto [testOut, readErr] = ox::readOC<TestStruct>(oc.data());
|
||||
oxAssert(readErr, "readOC failed");
|
||||
|
||||
oxAssert(testIn.Bool == testOut->Bool, "Bool value mismatch");
|
||||
@@ -176,7 +176,7 @@ std::map<std::string, ox::Error(*)()> tests = {
|
||||
oxAssert(ocErr, "Data generation failed");
|
||||
auto type = ox::buildTypeDef(&testIn);
|
||||
oxAssert(type.error, "Descriptor write failed");
|
||||
ox::walkModel<ox::OrganicClawReader>(type.value, ox::bit_cast<uint8_t*>(oc.c_str()), oc.len() + 1,
|
||||
ox::walkModel<ox::OrganicClawReader>(type.value, ox::bit_cast<uint8_t*>(oc.data()), oc.size(),
|
||||
[](const ox::Vector<ox::FieldName>&, const ox::Vector<ox::TypeName>&, const ox::DescriptorField &f, ox::OrganicClawReader *rdr) -> ox::Error {
|
||||
//std::cout << f.fieldName.c_str() << '\n';
|
||||
auto fieldName = f.fieldName.c_str();
|
||||
|
9
deps/ox/src/ox/oc/write.hpp
vendored
9
deps/ox/src/ox/oc/write.hpp
vendored
@@ -20,7 +20,7 @@ namespace ox {
|
||||
class OrganicClawWriter {
|
||||
|
||||
template<typename T>
|
||||
friend ValErr<String> writeOC(T *val);
|
||||
friend ValErr<Vector<char>> writeOC(T *val);
|
||||
|
||||
protected:
|
||||
Json::Value m_json;
|
||||
@@ -131,11 +131,14 @@ Error OrganicClawWriter::field(const char *key, ox::Vector<T> *val) {
|
||||
|
||||
|
||||
template<typename T>
|
||||
ValErr<String> writeOC(T *val) {
|
||||
ValErr<Vector<char>> writeOC(T *val) {
|
||||
OrganicClawWriter writer;
|
||||
oxReturnError(model(&writer, val));
|
||||
Json::StreamWriterBuilder jsonBuilder;
|
||||
return String(Json::writeString(jsonBuilder, writer.m_json).c_str());
|
||||
auto str = Json::writeString(jsonBuilder, writer.m_json);
|
||||
Vector<char> buff(str.size() + 1);
|
||||
memcpy(buff.data(), str.c_str(), str.size() + 1);
|
||||
return buff;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user