[nostalgia] Switch to strong int Error

This commit is contained in:
2019-07-28 00:32:42 -05:00
parent f4b336dd77
commit b107dc756b
21 changed files with 204 additions and 133 deletions

View File

@@ -18,7 +18,7 @@ ox::Error JsonReader::field(QString fieldName, int *dest) {
if (m_src.contains(fieldName)) {
return field(m_src[fieldName], dest);
} else {
return JSON_ERR_FIELD_MISSING;
return OxError(JSON_ERR_FIELD_MISSING);
}
}
@@ -26,7 +26,7 @@ ox::Error JsonReader::field(QString fieldName, bool *dest) {
if (m_src.contains(fieldName)) {
return field(m_src[fieldName], dest);
} else {
return JSON_ERR_FIELD_MISSING;
return OxError(JSON_ERR_FIELD_MISSING);
}
}
@@ -34,7 +34,7 @@ ox::Error JsonReader::field(QString fieldName, double *dest) {
if (m_src.contains(fieldName)) {
return field(m_src[fieldName], dest);
} else {
return JSON_ERR_FIELD_MISSING;
return OxError(JSON_ERR_FIELD_MISSING);
}
}
@@ -42,7 +42,7 @@ ox::Error JsonReader::field(QString fieldName, QString *dest) {
if (m_src.contains(fieldName)) {
return field(m_src[fieldName], dest);
} else {
return JSON_ERR_FIELD_MISSING;
return OxError(JSON_ERR_FIELD_MISSING);
}
}
@@ -51,36 +51,36 @@ ox::Error JsonReader::field(QString fieldName, QString *dest) {
ox::Error JsonReader::field(QJsonValueRef src, int *dest) {
if (src.isDouble()) {
*dest = src.toInt();
return 0;
return OxError(0);
} else {
return JSON_ERR_UNEXPECTED_TYPE;
return OxError(JSON_ERR_UNEXPECTED_TYPE);
}
}
ox::Error JsonReader::field(QJsonValueRef src, bool *dest) {
if (src.isBool()) {
*dest = src.toBool();
return 0;
return OxError(0);
} else {
return JSON_ERR_UNEXPECTED_TYPE;
return OxError(JSON_ERR_UNEXPECTED_TYPE);
}
}
ox::Error JsonReader::field(QJsonValueRef src, double *dest) {
if (src.isDouble()) {
*dest = src.toDouble();
return 0;
return OxError(0);
} else {
return JSON_ERR_UNEXPECTED_TYPE;
return OxError(JSON_ERR_UNEXPECTED_TYPE);
}
}
ox::Error JsonReader::field(QJsonValueRef src, QString *dest) {
if (src.isString()) {
*dest = src.toString();
return 0;
return OxError(0);
} else {
return JSON_ERR_UNEXPECTED_TYPE;
return OxError(JSON_ERR_UNEXPECTED_TYPE);
}
}

View File

@@ -16,8 +16,7 @@
#include "json_err.hpp"
namespace nostalgia {
namespace studio {
namespace nostalgia::studio {
class JsonReader {
@@ -64,21 +63,21 @@ ox::Error JsonReader::field(QString fieldName, T *dest) {
auto reader = JsonReader(obj);
return model(&reader, dest);
} else {
return JSON_ERR_FIELD_MISSING;
return OxError(JSON_ERR_FIELD_MISSING);
}
}
template<typename T>
ox::Error JsonReader::field(QString fieldName, QVector<T> *dest) {
ox::Error err = 0;
auto err = OxError(0);
if (m_src.contains(fieldName)) {
auto a = m_src[fieldName].toArray();
dest->resize(a.size());
for (int i = 0; i < dest->size(); i++) {
err |= field(a[i], &(*dest)[i]);
oxReturnError(field(a[i], &(*dest)[i]));
}
} else {
err |= JSON_ERR_FIELD_MISSING;
err = OxError(JSON_ERR_FIELD_MISSING);
}
return err;
}
@@ -98,4 +97,3 @@ ox::Error readJson(QString json, T *dest) {
}
}
}

View File

@@ -7,6 +7,7 @@
*/
#include <iostream>
#include <ox/std/assert.hpp>
#include "json.hpp"
using namespace std;
@@ -22,7 +23,7 @@ struct TestStructNest {
template<typename T>
Error model(T *io, TestStructNest *obj) {
Error err = 0;
auto err = OxError(0);
err |= io->setTypeInfo("TestStructNest", 4);
err |= io->field("Bool", &obj->Bool);
err |= io->field("Int", &obj->Int);
@@ -41,7 +42,7 @@ struct TestStruct {
template<typename T>
Error model(T *io, TestStruct *obj) {
Error err = 0;
auto err = OxError(0);
err |= io->setTypeInfo("TestStruct", 5);
err |= io->field("Bool", &obj->Bool);
err |= io->field("Int", &obj->Int);
@@ -52,7 +53,7 @@ Error model(T *io, TestStruct *obj) {
}
int main() {
int err = 0;
auto err = OxError(0);
QString json;
TestStruct ts = {
true,
@@ -75,15 +76,15 @@ int main() {
cout << tsOut.Double << endl;
cout << tsOut.String.toStdString() << endl;
err |= !(tsOut.Bool) << 0;
err |= !(tsOut.Int == 42) << 1;
err |= !(tsOut.Double == 42.42) << 2;
err |= !(tsOut.String == "Test String") << 3;
oxAssert(tsOut.Bool, "Arg 1 failed");
oxAssert(tsOut.Int == 42, "Arg 2 failed");
oxAssert(tsOut.Double == 42.42, "Arg 3 failed");
oxAssert(tsOut.String == "Test String", "Arg 4 failed");
err |= !(tsOut.Struct.Bool) << 4;
err |= !(tsOut.Struct.Int == 42) << 5;
err |= !(tsOut.Struct.Double == 42.42) << 6;
err |= !(tsOut.Struct.String == "Test String") << 7;
oxAssert(tsOut.Struct.Bool, "Arg 5 failed");
oxAssert(tsOut.Struct.Int == 42, "Arg 6 failed");
oxAssert(tsOut.Struct.Double == 42.42, "Arg 7 failed");
oxAssert(tsOut.Struct.String == "Test String", "Arg 8 failed");
return err;
return static_cast<int>(err);
}

View File

@@ -8,31 +8,29 @@
#include "json_write.hpp"
namespace nostalgia {
namespace studio {
namespace nostalgia::studio {
JsonWriter::JsonWriter(QJsonObject &obj): m_dest(obj) {
}
ox::Error JsonWriter::field(QString fieldName, int *src) {
m_dest[fieldName] = *src;
return 0;
return OxError(0);
}
ox::Error JsonWriter::field(QString fieldName, bool *src) {
m_dest[fieldName] = *src;
return 0;
return OxError(0);
}
ox::Error JsonWriter::field(QString fieldName, double *src) {
m_dest[fieldName] = *src;
return 0;
return OxError(0);
}
ox::Error JsonWriter::field(QString fieldName, QString *src) {
m_dest[fieldName] = *src;
return 0;
return OxError(0);
}
}
}

View File

@@ -16,8 +16,7 @@
#include "json_err.hpp"
namespace nostalgia {
namespace studio {
namespace nostalgia::studio {
class JsonWriter {
@@ -56,7 +55,7 @@ ox::Error JsonWriter::field(QString fieldName, T *src) {
template<typename T>
ox::Error JsonWriter::field(QString fieldName, QVector<T> *src) {
ox::Error err = 0;
auto err = OxError(0);
QJsonArray a;
for (int i = 0; i < src->size(); i++) {
err |= field(a[i], &src->at(i));
@@ -75,4 +74,3 @@ ox::Error writeJson(QString *json, T *src) {
}
}
}

View File

@@ -36,9 +36,9 @@ struct NostalgiaStudioState {
template<typename T>
ox::Error model(T *io, NostalgiaStudioState *obj) {
ox::Error err = 0;
err |= io->setTypeInfo("NostalgiaStudioState", 1);
err |= io->field("project_path", &obj->projectPath);
auto err = OxError(0);
oxReturnError(io->setTypeInfo("NostalgiaStudioState", 1));
oxReturnError(io->field("project_path", &obj->projectPath));
return err;
}
@@ -50,10 +50,10 @@ struct NostalgiaStudioPluginDef {
template<typename T>
ox::Error model(T *io, NostalgiaStudioPluginDef *obj) {
ox::Error err = 0;
err |= io->setTypeInfo("NostalgiaStudioPluginDef", 2);
err |= io->field("dir", &obj->dir);
err |= io->field("lib_name", &obj->libName);
auto err = OxError(0);
oxReturnError(io->setTypeInfo("NostalgiaStudioPluginDef", 2));
oxReturnError(io->field("dir", &obj->dir));
oxReturnError(io->field("lib_name", &obj->libName));
return err;
}
@@ -66,11 +66,11 @@ struct NostalgiaStudioProfile {
template<typename T>
ox::Error model(T *io, NostalgiaStudioProfile *obj) {
ox::Error err = 0;
auto err = OxError(0);
io->setTypeInfo("NostalgiaStudioProfile", 3);
err |= io->field("app_name", &obj->appName);
err |= io->field("org_name", &obj->orgName);
err |= io->field("plugins_path", &obj->pluginsPath);
oxReturnError(io->field("app_name", &obj->appName));
oxReturnError(io->field("org_name", &obj->orgName));
oxReturnError(io->field("plugins_path", &obj->pluginsPath));
return err;
}