static void write_object(Writer<StringBuffer>& writer, object_t* object) {
    switch (object->type) {
        case type_nil:    writer.Null();              break;
        case type_bool:   writer.Bool(object->b);     break;
        case type_double: writer.Double(object->d);   break;
        case type_int:    writer.Int64(object->i);    break;
        case type_uint:   writer.Uint64(object->u);   break;
        case type_str:    writer.String(object->str, object->l); break;

        case type_array:
            writer.StartArray();
            for (size_t i = 0; i < object->l; ++i)
                write_object(writer, object->children + i);
            writer.EndArray();
            break;

        case type_map:
            writer.StartObject();
            for (size_t i = 0; i < object->l; ++i) {
                writer.Key(object->children[i * 2].str, object->children[i * 2].l);
                write_object(writer, object->children + i * 2 + 1);
            }
            writer.EndObject();
            break;

        default:
            assert(0);
            break;
    }
}
Пример #2
0
 void operator()(Writer& w, const boost::optional<T>& value) const
 {
     if (!value)
         w.Null();
     else
         Serializer<Writer, T>()(w, *value);
 }
Пример #3
0
 void operator()(Writer& w, const boost::shared_ptr<T>& ptr) const
 {
     if (!ptr)
         w.Null();
     else
         Serializer<Writer, T>()(w, *ptr);
 }
Пример #4
0
 void write(const string& pattern_, Writer& writer_)
 {
   if (const boost::optional<std::string> value = pattern_.value())
   {
     writer_.String(value->c_str());
   }
   else
   {
     writer_.Null();
   }
 }
Пример #5
0
	void Serialize(Writer& writer) const {
		writer.StartObject();

		Person::Serialize(writer);

		writer.String("education");
		if (education_)
			education_->Serialize(writer);
		else
			writer.Null();

		writer.EndObject();
	}
Пример #6
0
/* Writes out Null using rapidJSON functions */
extern "C" int tm_json_write_null (tm_json_w_handler_t wh) {
    Writer<StringBuffer>* w = static_cast<Writer<StringBuffer>*>(wh.writer);
    w->Null();
    return 0;
}
Пример #7
0
 void operator()(Writer& w, std::nullptr_t) const
 {
     w.Null();
 }
Пример #8
0
void stringify(Writer& writer, const Undefined&) {
    assert(false); // Should be omitted entirely instead.
    writer.Null();
}
Пример #9
0
void stringify(Writer& writer, NullValue) {
    writer.Null();
}