void operator()(const String &string) const { out.push_back('\"'); const auto string_to_insert = escape_JSON(string.value); out.insert(std::end(out), std::begin(string_to_insert), std::end(string_to_insert)); out.push_back('\"'); }
void append_string(void* state, const char* data, size_t size) { osrm_json_renderer_t* json_state = (osrm_json_renderer_t*)state; if (json_state->stack_.empty()) { json_state->stack_.push(ERROR); return; } switch (json_state->stack_.top()) { case VALUE: json_state->stack_.pop(); break; case OBJECT_CONTINUE: json_state->stream_ << ','; case OBJECT: json_state->stack_.pop(); json_state->stack_.push(OBJECT_HALF); break; case OBJECT_HALF: json_state->stream_ << ':'; json_state->stack_.pop(); json_state->stack_.push(OBJECT_CONTINUE); break; case ARRAY: json_state->stack_.pop(); json_state->stack_.push(ARRAY_CONTINUE); break; case ARRAY_CONTINUE: json_state->stream_ << ','; break; case ERROR: return; } const std::string value(data, size); json_state->stream_ << '\"'; json_state->stream_ << escape_JSON(value); json_state->stream_ << '\"'; }
void operator()(const String &string) const { out << "\""; out << escape_JSON(string.value); out << "\""; }