]> git.proxmox.com Git - ceph.git/blob - ceph/src/s3select/rapidjson/example/traverseaspointer.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / s3select / rapidjson / example / traverseaspointer.cpp
1 #include "rapidjson/document.h"
2 #include "rapidjson/filereadstream.h"
3 #include "rapidjson/pointer.h"
4 #include "rapidjson/stringbuffer.h"
5 #include <iostream>
6
7 using namespace rapidjson;
8
9 void traverse(const Value& v, const Pointer& p) {
10 StringBuffer sb;
11 p.Stringify(sb);
12 std::cout << sb.GetString() << std::endl;
13
14 switch (v.GetType()) {
15 case kArrayType:
16 for (SizeType i = 0; i != v.Size(); ++i)
17 traverse(v[i], p.Append(i));
18 break;
19 case kObjectType:
20 for (Value::ConstMemberIterator m = v.MemberBegin(); m != v.MemberEnd(); ++m)
21 traverse(m->value, p.Append(m->name.GetString(), m->name.GetStringLength()));
22 break;
23 default:
24 break;
25 }
26 }
27
28 int main(int, char*[]) {
29 char readBuffer[65536];
30 FileReadStream is(stdin, readBuffer, sizeof(readBuffer));
31
32 Document d;
33 d.ParseStream(is);
34
35 Pointer root;
36 traverse(d, root);
37
38 return 0;
39 }