Skip to content

Commit

Permalink
Json export macros
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanVandeHel committed Jan 28, 2019
1 parent d8a20f1 commit d809065
Showing 1 changed file with 80 additions and 5 deletions.
85 changes: 80 additions & 5 deletions src/QJsonImportExport.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@
// ─────────────────────────────────────────────────────────────

// ───────── GLOBAL ───────────
#define QJSONIMPORT_ISVALID(jsonName, jsonType) json.contains(jsonName) && json[jsonName].is##jsonType() \
#define QJSONIMPORT_ISVALID(jsonName, jsonType) \
json.contains(jsonName) && json[jsonName].is##jsonType() \

#define QJSONIMPORT(jsonName, setter, type, jsonType) \
if (QJSONIMPORT_ISVALID(jsonName, jsonType)) \
Expand All @@ -44,7 +45,10 @@
{ \
qCWarning(logCat, "%s isn't a valid Json " #jsonType, qPrintable(jsonName)); \
} \
} \
}

#define QJSONEXPORT(jsonName, value) \
json[jsonName] = value; \

// ───────── OBJECT ───────────
#define QJSONIMPORT_ISOBJECTVALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Object) \
Expand All @@ -62,11 +66,56 @@
{ \
qCWarning(logCat, "%s isn't a valid Json Object", qPrintable(jsonName)); \
} \
} \
}

#define QJSONIMPORT_OBJECT_FROMARRAY(object) \
object->JsonRead(it.toObject());

#define QJSONEXPORT_OBJECT(jsonName, objectSrc) \
{ \
QJsonObject jsonObj; \
objectSrc->JsonWrite(jsonObj); \
json[jsonName] = jsonObj; \
}

// ───────── ARRAY ───────────
#define QJSONIMPORT_ISARRAYVALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Array) \

#define QJSONIMPORT_ARRAY_OBJECT_WLOG(jsonName, logCat, instructions) \
{ \
if (QJSONIMPORT_ISARRAYVALID(jsonName)) \
{ \
QJsonArray arrayObject = json[jsonName].toArray(); \
for (auto it : arrayObject) \
{ \
if (it.isObject()) \
{ \
instructions; \
} \
else \
{ \
qCWarning(logCat, "%s contains a non valid Json Object", qPrintable(jsonName)); \
} \
} \
} \
else \
{ \
qCWarning(logCat, "%s isn't a valid Json Array", qPrintable(jsonName)); \
} \
}

#define QJSONEXPORT_ARRAY_OBJECT(jsonName, list) \
{ \
QJsonArray arrayObject; \
for (auto it : list) \
{ \
QJsonObject jsonObject; \
it->JsonWrite(jsonObject); \
arrayObject.append(jsonObject); \
} \
QJSONEXPORT(jsonName, arrayObject); \
}

// ───────── UINT64 ───────────
#define QJSONIMPORT_ISUINT64VALID(jsonName) QJSONIMPORT_ISVALID(jsonName, String) \

Expand All @@ -92,7 +141,9 @@
{ \
qCWarning(logCat, "%s isn't a valid Json String", qPrintable(jsonName)); \
} \
} \
}

#define QJSONEXPORT_UINT64(jsonName, value) QJSONEXPORT(jsonName, QString::number(##value)) \

// ───────── UINT32 ───────────
#define QJSONIMPORT_ISUINT32VALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \
Expand All @@ -101,27 +152,35 @@

#define QJSONIMPORT_UINT32_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, quint32, Double, logCat) \

#define QJSONEXPORT_UINT32(jsonName, value) QJSONEXPORT(jsonName, (quint32)##value) \

// ───────── UINT16 ───────────
#define QJSONIMPORT_ISUINT16VALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \

#define QJSONIMPORT_UINT16(jsonName, setter) QJSONIMPORT(jsonName, setter, quint16, Double) \

#define QJSONIMPORT_UINT16_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, quint16, Double, logCat) \

#define QJSONEXPORT_UINT16(jsonName, value) QJSONEXPORT(jsonName, (quint16)##value) \

// ───────── UINT8 ───────────
#define QJSONIMPORT_ISUINT8VALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \

#define QJSONIMPORT_UINT8(jsonName, setter) QJSONIMPORT(jsonName, setter, quint8, Double) \

#define QJSONIMPORT_UINT8_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, quint8, Double, logCat) \

#define QJSONEXPORT_UINT8(jsonName, value) QJSONEXPORT(jsonName, (quint8)##value) \

// ───────── UINT ───────────
#define QJSONIMPORT_ISUINTVALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \

#define QJSONIMPORT_UINT(jsonName, setter) QJSONIMPORT(jsonName, setter, quint, Double) \

#define QJSONIMPORT_UINT_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, quint, Double, logCat) \

#define QJSONEXPORT_UINT(jsonName, value) QJSONEXPORT(jsonName, (quint)##value) \

// ───────── INT64 ───────────
#define QJSONIMPORT_ISUINT64VALID(jsonName) QJSONIMPORT_ISVALID(jsonName, String) \

Expand All @@ -147,7 +206,9 @@
{ \
qCWarning(logCat, "%s isn't a valid Json String", qPrintable(jsonName)); \
} \
} \
}

#define QJSONEXPORT_INT64(jsonName, value) QJSONEXPORT(jsonName, QString::number(##value)) \

// ───────── INT32 ───────────
#define QJSONIMPORT_ISINT32VALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \
Expand All @@ -156,48 +217,62 @@

#define QJSONIMPORT_INT32_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, qint32, Double, logCat) \

#define QJSONEXPORT_INT32(jsonName, value) QJSONEXPORT(jsonName, (qint32)##value) \

// ───────── INT16 ───────────
#define QJSONIMPORT_ISINT16VALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \

#define QJSONIMPORT_INT16(jsonName, setter) QJSONIMPORT(jsonName, setter, qint16, Double) \

#define QJSONIMPORT_INT16_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, qint16, Double, logCat) \

#define QJSONEXPORT_INT16(jsonName, value) QJSONEXPORT(jsonName, (qint16)##value) \

// ───────── INT8 ───────────
#define QJSONIMPORT_ISINT8VALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \

#define QJSONIMPORT_INT8(jsonName, setter) QJSONIMPORT(jsonName, setter, qint8, Double) \

#define QJSONIMPORT_INT8_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, qint8, Double, logCat) \

#define QJSONEXPORT_INT8(jsonName, value) QJSONEXPORT(jsonName, (qint8)##value) \

// ───────── INT ───────────
#define QJSONIMPORT_ISINTVALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \

#define QJSONIMPORT_INT(jsonName, setter) QJSONIMPORT(jsonName, setter, int, Double) \

#define QJSONIMPORT_INT_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, int, Double, logCat) \

#define QJSONEXPORT_INT(jsonName, value) QJSONEXPORT(jsonName, (int)##value) \

// ───────── BOOL ───────────
#define QJSONIMPORT_ISBOOLVALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Bool) \

#define QJSONIMPORT_BOOL(jsonName, setter) QJSONIMPORT(jsonName, setter, bool, Bool) \

#define QJSONIMPORT_BOOL_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, bool, Bool, logCat) \

#define QJSONEXPORT_BOOL(jsonName, value) QJSONEXPORT(jsonName, (bool)##value) \

// ───────── STRING ───────────
#define QJSONIMPORT_ISSTRINGVALID(jsonName) QJSONIMPORT_ISVALID(jsonName, String) \

#define QJSONIMPORT_STRING(jsonName, setter) QJSONIMPORT(jsonName, setter, QString, String) \

#define QJSONIMPORT_STRING_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, QString, String, logCat) \

#define QJSONEXPORT_STRING(jsonName, value) QJSONEXPORT(jsonName, (QString)##value) \

// ───────── FLOAT ───────────
#define QJSONIMPORT_ISFLOATVALID(jsonName) QJSONIMPORT_ISVALID(jsonName, Double) \

#define QJSONIMPORT_FLOAT(jsonName, setter) QJSONIMPORT(jsonName, setter, float, Double) \

#define QJSONIMPORT_FLOAT_WLOG(jsonName, setter, logCat) QJSONIMPORT_WLOG(jsonName, setter, float, Double, logCat) \

#define QJSONEXPORT_FLOAT(jsonName, value) QJSONEXPORT(jsonName, (float)##value) \


QSUPERMACROS_NAMESPACE_START

Expand Down

0 comments on commit d809065

Please sign in to comment.