int w_bser_dump(const bser_ctx_t* ctx, json_t *json, void *data) { int type = json_typeof(json); if (!is_bser_version_supported(ctx)) { return -1; } switch (type) { case JSON_NULL: return ctx->dump(&bser_null, sizeof(bser_null), data); case JSON_TRUE: return ctx->dump(&bser_true, sizeof(bser_true), data); case JSON_FALSE: return ctx->dump(&bser_false, sizeof(bser_false), data); case JSON_REAL: return bser_real(ctx, json_real_value(json), data); case JSON_INTEGER: return bser_int(ctx, json_integer_value(json), data); case JSON_STRING: return bser_bytestring(ctx, json_string_value(json), data); case JSON_ARRAY: return bser_array(ctx, json, data); case JSON_OBJECT: return bser_object(ctx, json, data); default: return -1; } }
int w_bser_dump(json_t *json, json_dump_callback_t dump, void *data) { int type = json_typeof(json); switch (type) { case JSON_NULL: return dump(&bser_null, sizeof(bser_null), data); case JSON_TRUE: return dump(&bser_true, sizeof(bser_true), data); case JSON_FALSE: return dump(&bser_false, sizeof(bser_false), data); case JSON_REAL: return bser_real(json_real_value(json), dump, data); case JSON_INTEGER: return bser_int(json_integer_value(json), dump, data); case JSON_STRING: return bser_string(json_string_value(json), dump, data); case JSON_ARRAY: return bser_array(json, dump, data); case JSON_OBJECT: return bser_object(json, dump, data); default: return -1; } }