jsonlite_result jsonlite_builder_key(jsonlite_builder builder, const char *data, size_t length) { jsonlite_write_state *ws; if (builder == NULL || data == NULL) { return jsonlite_result_invalid_argument; } ws = builder->state; if (jsonlite_builder_accept(builder, jsonlite_accept_key) ) { if (jsonlite_builder_accept(builder, jsonlite_accept_next) ) { jsonlite_builder_raw_char(builder, ','); } if (builder->indentation != 0) { jsonlite_builder_raw_char(builder, '\r'); jsonlite_builder_repeat(builder, ' ', (builder->state - builder->stack) * builder->indentation); } jsonlite_builder_write_uft8(builder, data, length); if (builder->indentation != 0) { jsonlite_builder_raw(builder, ": ", 2); } else { jsonlite_builder_raw_char(builder, ':'); } ws->accept = jsonlite_accept_value; return jsonlite_result_ok; } return jsonlite_result_not_allowed; }
jsonlite_result jsonlite_builder_string(jsonlite_builder builder, const char *data, size_t length) { jsonlite_write_state *ws = builder->state; if (jsonlite_builder_accept(builder, jsonlite_accept_value)) { jsonlite_builder_prepare_value_writing(builder); jsonlite_builder_write_uft8(builder, data, length); if (jsonlite_builder_accept(builder, jsonlite_accept_values_only)) { *ws = jsonlite_accept_continue_array; } else { *ws = jsonlite_accept_continue_object; } return jsonlite_result_ok; } return jsonlite_result_not_allowed; }