Пример #1
0
 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('\"');
 }
Пример #2
0
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_ << '\"';
}
Пример #3
0
 void operator()(const String &string) const
 {
     out << "\"";
     out << escape_JSON(string.value);
     out << "\"";
 }