[nostalgia] Move from old Serialization API to new Model API
This commit is contained in:
parent
d139eb9729
commit
94afbd4f60
@ -37,13 +37,13 @@ class Bounds {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOp(T *io, Bounds *obj) {
|
||||
ox::Error model(T *io, Bounds *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setTypeInfo("nostalgia::common::Bounds", 4);
|
||||
err |= io->op("x", &obj->x);
|
||||
err |= io->op("y", &obj->y);
|
||||
err |= io->op("width", &obj->width);
|
||||
err |= io->op("height", &obj->height);
|
||||
err |= io->field("x", &obj->x);
|
||||
err |= io->field("y", &obj->y);
|
||||
err |= io->field("width", &obj->width);
|
||||
err |= io->field("height", &obj->height);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -59,11 +59,11 @@ class Point {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOp(T *io, Point *obj) {
|
||||
ox::Error model(T *io, Point *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setTypeInfo("nostalgia::common::Bounds", 2);
|
||||
err |= io->op("x", &obj->x);
|
||||
err |= io->op("y", &obj->y);
|
||||
err |= io->field("x", &obj->x);
|
||||
err |= io->field("y", &obj->y);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -14,33 +14,33 @@ namespace studio {
|
||||
JsonReader::JsonReader(QJsonObject &obj): m_src(obj) {
|
||||
}
|
||||
|
||||
ox::Error JsonReader::op(QString fieldName, int *dest) {
|
||||
ox::Error JsonReader::field(QString fieldName, int *dest) {
|
||||
if (m_src.contains(fieldName)) {
|
||||
return op(m_src[fieldName], dest);
|
||||
return field(m_src[fieldName], dest);
|
||||
} else {
|
||||
return JSON_ERR_FIELD_MISSING;
|
||||
}
|
||||
}
|
||||
|
||||
ox::Error JsonReader::op(QString fieldName, bool *dest) {
|
||||
ox::Error JsonReader::field(QString fieldName, bool *dest) {
|
||||
if (m_src.contains(fieldName)) {
|
||||
return op(m_src[fieldName], dest);
|
||||
return field(m_src[fieldName], dest);
|
||||
} else {
|
||||
return JSON_ERR_FIELD_MISSING;
|
||||
}
|
||||
}
|
||||
|
||||
ox::Error JsonReader::op(QString fieldName, double *dest) {
|
||||
ox::Error JsonReader::field(QString fieldName, double *dest) {
|
||||
if (m_src.contains(fieldName)) {
|
||||
return op(m_src[fieldName], dest);
|
||||
return field(m_src[fieldName], dest);
|
||||
} else {
|
||||
return JSON_ERR_FIELD_MISSING;
|
||||
}
|
||||
}
|
||||
|
||||
ox::Error JsonReader::op(QString fieldName, QString *dest) {
|
||||
ox::Error JsonReader::field(QString fieldName, QString *dest) {
|
||||
if (m_src.contains(fieldName)) {
|
||||
return op(m_src[fieldName], dest);
|
||||
return field(m_src[fieldName], dest);
|
||||
} else {
|
||||
return JSON_ERR_FIELD_MISSING;
|
||||
}
|
||||
@ -48,7 +48,7 @@ ox::Error JsonReader::op(QString fieldName, QString *dest) {
|
||||
|
||||
|
||||
|
||||
ox::Error JsonReader::op(QJsonValueRef src, int *dest) {
|
||||
ox::Error JsonReader::field(QJsonValueRef src, int *dest) {
|
||||
if (src.isDouble()) {
|
||||
*dest = src.toInt();
|
||||
return 0;
|
||||
@ -57,7 +57,7 @@ ox::Error JsonReader::op(QJsonValueRef src, int *dest) {
|
||||
}
|
||||
}
|
||||
|
||||
ox::Error JsonReader::op(QJsonValueRef src, bool *dest) {
|
||||
ox::Error JsonReader::field(QJsonValueRef src, bool *dest) {
|
||||
if (src.isBool()) {
|
||||
*dest = src.toBool();
|
||||
return 0;
|
||||
@ -66,7 +66,7 @@ ox::Error JsonReader::op(QJsonValueRef src, bool *dest) {
|
||||
}
|
||||
}
|
||||
|
||||
ox::Error JsonReader::op(QJsonValueRef src, double *dest) {
|
||||
ox::Error JsonReader::field(QJsonValueRef src, double *dest) {
|
||||
if (src.isDouble()) {
|
||||
*dest = src.toDouble();
|
||||
return 0;
|
||||
@ -75,7 +75,7 @@ ox::Error JsonReader::op(QJsonValueRef src, double *dest) {
|
||||
}
|
||||
}
|
||||
|
||||
ox::Error JsonReader::op(QJsonValueRef src, QString *dest) {
|
||||
ox::Error JsonReader::field(QJsonValueRef src, QString *dest) {
|
||||
if (src.isString()) {
|
||||
*dest = src.toString();
|
||||
return 0;
|
||||
|
@ -27,55 +27,55 @@ class JsonReader {
|
||||
public:
|
||||
JsonReader(QJsonObject &obj);
|
||||
|
||||
void setFields(int) {};
|
||||
ox::Error setTypeInfo(const char*, int) { return OxError(0); };
|
||||
|
||||
ox::Error op(QString fieldName, int *dest);
|
||||
ox::Error field(QString fieldName, int *dest);
|
||||
|
||||
ox::Error op(QString fieldName, bool *dest);
|
||||
ox::Error field(QString fieldName, bool *dest);
|
||||
|
||||
ox::Error op(QString fieldName, double *dest);
|
||||
ox::Error field(QString fieldName, double *dest);
|
||||
|
||||
ox::Error op(QString fieldName, QString *dest);
|
||||
ox::Error field(QString fieldName, QString *dest);
|
||||
|
||||
template<typename T>
|
||||
ox::Error op(QString fieldName, T *dest);
|
||||
ox::Error field(QString fieldName, T *dest);
|
||||
|
||||
template<typename T>
|
||||
ox::Error op(QString fieldName, QVector<T> *dest);
|
||||
ox::Error field(QString fieldName, QVector<T> *dest);
|
||||
|
||||
private:
|
||||
ox::Error op(QJsonValueRef src, int *dest);
|
||||
ox::Error field(QJsonValueRef src, int *dest);
|
||||
|
||||
ox::Error op(QJsonValueRef src, bool *dest);
|
||||
ox::Error field(QJsonValueRef src, bool *dest);
|
||||
|
||||
ox::Error op(QJsonValueRef src, double *dest);
|
||||
ox::Error field(QJsonValueRef src, double *dest);
|
||||
|
||||
ox::Error op(QJsonValueRef src, QString *dest);
|
||||
ox::Error field(QJsonValueRef src, QString *dest);
|
||||
|
||||
template<typename T>
|
||||
ox::Error op(QJsonValueRef src, T *dest);
|
||||
ox::Error field(QJsonValueRef src, T *dest);
|
||||
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error JsonReader::op(QString fieldName, T *dest) {
|
||||
ox::Error JsonReader::field(QString fieldName, T *dest) {
|
||||
if (m_src.contains(fieldName)) {
|
||||
auto obj = m_src[fieldName].toObject();
|
||||
auto reader = JsonReader(obj);
|
||||
return ioOp(&reader, dest);
|
||||
return model(&reader, dest);
|
||||
} else {
|
||||
return JSON_ERR_FIELD_MISSING;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error JsonReader::op(QString fieldName, QVector<T> *dest) {
|
||||
ox::Error JsonReader::field(QString fieldName, QVector<T> *dest) {
|
||||
ox::Error err = 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 |= op(a[i], &(*dest)[i]);
|
||||
err |= field(a[i], &(*dest)[i]);
|
||||
}
|
||||
} else {
|
||||
err |= JSON_ERR_FIELD_MISSING;
|
||||
@ -84,17 +84,17 @@ ox::Error JsonReader::op(QString fieldName, QVector<T> *dest) {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error JsonReader::op(QJsonValueRef src, T *dest) {
|
||||
ox::Error JsonReader::field(QJsonValueRef src, T *dest) {
|
||||
auto obj = src.toObject();
|
||||
auto reader = JsonReader(obj);
|
||||
return ioOp(&reader, dest);
|
||||
return model(&reader, dest);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
int readJson(QString json, T *dest) {
|
||||
auto obj = QJsonDocument::fromJson(json.toUtf8()).object();
|
||||
JsonReader rdr(obj);
|
||||
return ioOp(&rdr, dest);
|
||||
return model(&rdr, dest);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -21,12 +21,13 @@ struct TestStructNest {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
int ioOp(T *io, TestStructNest *obj) {
|
||||
int model(T *io, TestStructNest *obj) {
|
||||
Error err = 0;
|
||||
err |= io->op("Bool", &obj->Bool);
|
||||
err |= io->op("Int", &obj->Int);
|
||||
err |= io->op("Double", &obj->Double);
|
||||
err |= io->op("String", &obj->String);
|
||||
err |= io->setTypeInfo("TestStructNest", 4);
|
||||
err |= io->field("Bool", &obj->Bool);
|
||||
err |= io->field("Int", &obj->Int);
|
||||
err |= io->field("Double", &obj->Double);
|
||||
err |= io->field("String", &obj->String);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -39,13 +40,14 @@ struct TestStruct {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
int ioOp(T *io, TestStruct *obj) {
|
||||
int model(T *io, TestStruct *obj) {
|
||||
Error err = 0;
|
||||
err |= io->op("Bool", &obj->Bool);
|
||||
err |= io->op("Int", &obj->Int);
|
||||
err |= io->op("Double", &obj->Double);
|
||||
err |= io->op("String", &obj->String);
|
||||
err |= io->op("Struct", &obj->Struct);
|
||||
err |= io->setTypeInfo("TestStruct", 5);
|
||||
err |= io->field("Bool", &obj->Bool);
|
||||
err |= io->field("Int", &obj->Int);
|
||||
err |= io->field("Double", &obj->Double);
|
||||
err |= io->field("String", &obj->String);
|
||||
err |= io->field("Struct", &obj->Struct);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -14,22 +14,22 @@ namespace studio {
|
||||
JsonWriter::JsonWriter(QJsonObject &obj): m_dest(obj) {
|
||||
}
|
||||
|
||||
ox::Error JsonWriter::op(QString fieldName, int *src) {
|
||||
ox::Error JsonWriter::field(QString fieldName, int *src) {
|
||||
m_dest[fieldName] = *src;
|
||||
return 0;
|
||||
}
|
||||
|
||||
ox::Error JsonWriter::op(QString fieldName, bool *src) {
|
||||
ox::Error JsonWriter::field(QString fieldName, bool *src) {
|
||||
m_dest[fieldName] = *src;
|
||||
return 0;
|
||||
}
|
||||
|
||||
ox::Error JsonWriter::op(QString fieldName, double *src) {
|
||||
ox::Error JsonWriter::field(QString fieldName, double *src) {
|
||||
m_dest[fieldName] = *src;
|
||||
return 0;
|
||||
}
|
||||
|
||||
ox::Error JsonWriter::op(QString fieldName, QString *src) {
|
||||
ox::Error JsonWriter::field(QString fieldName, QString *src) {
|
||||
m_dest[fieldName] = *src;
|
||||
return 0;
|
||||
}
|
||||
|
@ -27,39 +27,39 @@ class JsonWriter {
|
||||
public:
|
||||
JsonWriter(QJsonObject &obj);
|
||||
|
||||
void setFields(int) {};
|
||||
ox::Error setTypeInfo(const char*, int) { return OxError(0); };
|
||||
|
||||
ox::Error op(QString fieldName, int *src);
|
||||
ox::Error field(QString fieldName, int *src);
|
||||
|
||||
ox::Error op(QString fieldName, bool *src);
|
||||
ox::Error field(QString fieldName, bool *src);
|
||||
|
||||
ox::Error op(QString fieldName, double *src);
|
||||
ox::Error field(QString fieldName, double *src);
|
||||
|
||||
ox::Error op(QString fieldName, QString *src);
|
||||
ox::Error field(QString fieldName, QString *src);
|
||||
|
||||
template<typename T>
|
||||
ox::Error op(QString fieldName, T *src);
|
||||
ox::Error field(QString fieldName, T *src);
|
||||
|
||||
template<typename T>
|
||||
ox::Error op(QString fieldName, QVector<T> *src);
|
||||
ox::Error field(QString fieldName, QVector<T> *src);
|
||||
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error JsonWriter::op(QString fieldName, T *src) {
|
||||
ox::Error JsonWriter::field(QString fieldName, T *src) {
|
||||
auto obj = QJsonObject();
|
||||
auto reader = JsonWriter(obj);
|
||||
auto err = ioOp(&reader, src);
|
||||
auto err = model(&reader, src);
|
||||
m_dest[fieldName] = obj;
|
||||
return err;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error JsonWriter::op(QString fieldName, QVector<T> *src) {
|
||||
ox::Error JsonWriter::field(QString fieldName, QVector<T> *src) {
|
||||
ox::Error err = 0;
|
||||
QJsonArray a;
|
||||
for (int i = 0; i < src->size(); i++) {
|
||||
err |= op(a[i], &src->at(i));
|
||||
err |= field(a[i], &src->at(i));
|
||||
}
|
||||
m_dest[fieldName] = a;
|
||||
return err;
|
||||
@ -69,7 +69,7 @@ template<typename T>
|
||||
int writeJson(QString *json, T *src) {
|
||||
auto obj = QJsonObject();
|
||||
JsonWriter rdr(obj);
|
||||
auto err = ioOp(&rdr, src);
|
||||
auto err = model(&rdr, src);
|
||||
*json = QJsonDocument(obj).toJson();
|
||||
return err;
|
||||
}
|
||||
|
@ -35,10 +35,10 @@ struct NostalgiaStudioState {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOp(T *io, NostalgiaStudioState *obj) {
|
||||
ox::Error model(T *io, NostalgiaStudioState *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setFields(1);
|
||||
err |= io->op("project_path", &obj->projectPath);
|
||||
err |= io->setTypeInfo("NostalgiaStudioState", 1);
|
||||
err |= io->field("project_path", &obj->projectPath);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -49,11 +49,11 @@ struct NostalgiaStudioPluginDef {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOp(T *io, NostalgiaStudioPluginDef *obj) {
|
||||
ox::Error model(T *io, NostalgiaStudioPluginDef *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setFields(2);
|
||||
err |= io->op("dir", &obj->dir);
|
||||
err |= io->op("lib_name", &obj->libName);
|
||||
err |= io->setTypeInfo("NostalgiaStudioPluginDef", 2);
|
||||
err |= io->field("dir", &obj->dir);
|
||||
err |= io->field("lib_name", &obj->libName);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -65,12 +65,12 @@ struct NostalgiaStudioProfile {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOp(T *io, NostalgiaStudioProfile *obj) {
|
||||
ox::Error model(T *io, NostalgiaStudioProfile *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setFields(3);
|
||||
err |= io->op("app_name", &obj->appName);
|
||||
err |= io->op("org_name", &obj->orgName);
|
||||
err |= io->op("plugins_path", &obj->pluginsPath);
|
||||
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);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -25,11 +25,11 @@ struct Tile {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOpRead(T *io, Tile *obj) {
|
||||
ox::Error modelRead(T *io, Tile *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setTypeInfo("nostalgia::world::Tile", Tile::Fields);
|
||||
err |= io->op("bgTile", &obj->bgTile);
|
||||
err |= io->op("type", &obj->type);
|
||||
err |= io->field("bgTile", &obj->bgTile);
|
||||
err |= io->field("type", &obj->type);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -37,10 +37,10 @@ ox::Error ioOpRead(T *io, Tile *obj) {
|
||||
struct Zone {
|
||||
|
||||
template<typename T>
|
||||
friend ox::Error ioOpRead(T*, Zone*);
|
||||
friend ox::Error modelRead(T*, Zone*);
|
||||
|
||||
template<typename T>
|
||||
friend ox::Error ioOpWrite(T*, Zone*);
|
||||
friend ox::Error modelWrite(T*, Zone*);
|
||||
|
||||
protected:
|
||||
static constexpr auto Fields = 2;
|
||||
@ -61,18 +61,18 @@ struct Zone {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOpRead(T *io, Zone *obj) {
|
||||
ox::Error modelRead(T *io, Zone *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setTypeInfo("nostalgia::world::Zone", Zone::Fields);
|
||||
err |= io->op("bounds", &obj->m_bounds);
|
||||
err |= io->field("bounds", &obj->m_bounds);
|
||||
return err;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOpWrite(T *io, Zone *obj) {
|
||||
ox::Error modelWrite(T *io, Zone *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setTypeInfo("nostalgia::world::Zone", Zone::Fields);
|
||||
err |= io->op("bounds", &obj->m_bounds);
|
||||
err |= io->field("bounds", &obj->m_bounds);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -80,10 +80,10 @@ ox::Error ioOpWrite(T *io, Zone *obj) {
|
||||
struct Region {
|
||||
|
||||
template<typename T>
|
||||
friend ox::Error ioOpRead(T*, Region*);
|
||||
friend ox::Error modelRead(T*, Region*);
|
||||
|
||||
template<typename T>
|
||||
friend ox::Error ioOpWrite(T*, Region*);
|
||||
friend ox::Error modelWrite(T*, Region*);
|
||||
|
||||
protected:
|
||||
static constexpr auto Fields = 1;
|
||||
@ -94,14 +94,14 @@ struct Region {
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOpRead(T *io, Region *obj) {
|
||||
ox::Error modelRead(T *io, Region *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setTypeInfo("nostalgia::World::Region", Region::Fields);
|
||||
return err;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
ox::Error ioOpWrite(T *io, Region *obj) {
|
||||
ox::Error modelWrite(T *io, Region *obj) {
|
||||
ox::Error err = 0;
|
||||
io->setTypeInfo("nostalgia::World::Region", Region::Fields);
|
||||
return err;
|
||||
|
Loading…
x
Reference in New Issue
Block a user