void EventSerializer::serialize(std::ostream& stream, const TouchEvent& evt) { switch (m_mode) { case Mode::Binary: return serializeBinary(stream, evt); case Mode::Json: return serializeJson(stream, evt); } }
static cx_int16 serializePrimitive(cx_serializer s, cx_value *v, void *userData) { CX_UNUSED(s); cx_type type = cx_valueType(v); cx_json_ser_t *data = userData; cx_int16 result; cx_string valueString; switch (cx_primitive(type)->kind) { case CX_BINARY: result = serializeBinary(v, &valueString); break; case CX_BITMASK: result = serializeBitmask(v, &valueString); break; case CX_BOOLEAN: result = serializeBoolean(v, &valueString); break; case CX_ENUM: result = serializeEnum(v, &valueString); break; case CX_CHARACTER: case CX_TEXT: result = serializeText(v, &valueString); break; case CX_UINTEGER: case CX_INTEGER: case CX_FLOAT: result = serializeNumber(v, &valueString); break; case CX_ALIAS: result = serializeAlias(v, &valueString); break; } if (result) { goto error; } if (!cx_ser_appendstr(data, "%s", valueString)) { goto finished; } cx_dealloc(valueString); return 0; finished: cx_dealloc(valueString); return 1; error: return -1; }