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, utility::int64_t i) const
 {
     w.Int64(i);
 }
Пример #3
0
void stringify(Writer& writer, int64_t v) {
    writer.Int64(v);
}