JSON_GENERATOR_STATE_OBJECT_VALUE,
JSON_GENERATOR_STATE_STRING,
JSON_GENERATOR_STATE_TEXT,
+ JSON_GENERATOR_STATE_SPACE,
JSON_GENERATOR_STATE_END,
};
break;
i_assert(generator->write_state != JSON_GENERATOR_STATE_STRING &&
- generator->write_state != JSON_GENERATOR_STATE_TEXT);
+ generator->write_state != JSON_GENERATOR_STATE_TEXT &&
+ generator->write_state != JSON_GENERATOR_STATE_SPACE);
if (generator->write_state == JSON_GENERATOR_STATE_VALUE_END)
generator->write_state = JSON_GENERATOR_STATE_VALUE_NEXT;
if (generator->write_state == JSON_GENERATOR_STATE_VALUE_NEXT) {
break;
}
if (generator->state != JSON_GENERATOR_STATE_STRING &&
- generator->state != JSON_GENERATOR_STATE_TEXT)
+ generator->state != JSON_GENERATOR_STATE_TEXT &&
+ generator->state != JSON_GENERATOR_STATE_SPACE)
break;
generator->write_state = JSON_GENERATOR_STATE_VALUE_NEXT;
/* Fall through */
}
generator->write_state = JSON_GENERATOR_STATE_VALUE_END;
}
+ /* flush opening <space> */
+ if (generator->state == JSON_GENERATOR_STATE_SPACE &&
+ generator->write_state != JSON_GENERATOR_STATE_SPACE)
+ generator->write_state = JSON_GENERATOR_STATE_SPACE;
/* flush string stream */
if (generator->text_stream) {
i_assert(generator->value_input != NULL);
return 1;
}
+/*
+ * <space>
+ */
+
+int json_generate_space_open(struct json_generator *generator)
+{
+ int ret;
+
+ if (generator->state != JSON_GENERATOR_STATE_SPACE) {
+ i_assert(generator->state == JSON_GENERATOR_STATE_VALUE ||
+ generator->state == JSON_GENERATOR_STATE_OBJECT_MEMBER);
+ generator->state = JSON_GENERATOR_STATE_SPACE;
+ }
+
+ ret = json_generator_flush(generator);
+ i_assert(ret <= 0 ||
+ generator->write_state == JSON_GENERATOR_STATE_SPACE);
+ return ret;
+}
+
+void json_generate_space_close(struct json_generator *generator)
+{
+ i_assert(generator->state == JSON_GENERATOR_STATE_SPACE);
+ i_assert(generator->write_state == JSON_GENERATOR_STATE_SPACE);
+
+ json_generator_value_end(generator);
+}
+
/*
* value
*/