summaryrefslogtreecommitdiffstats
path: root/src/rapidjson/doc/diagram
diff options
context:
space:
mode:
Diffstat (limited to 'src/rapidjson/doc/diagram')
-rw-r--r--src/rapidjson/doc/diagram/architecture.dot50
-rw-r--r--src/rapidjson/doc/diagram/architecture.pngbin0 -> 16569 bytes
-rw-r--r--src/rapidjson/doc/diagram/insituparsing.dot65
-rw-r--r--src/rapidjson/doc/diagram/insituparsing.pngbin0 -> 37281 bytes
-rw-r--r--src/rapidjson/doc/diagram/iterative-parser-states-diagram.dot62
-rw-r--r--src/rapidjson/doc/diagram/iterative-parser-states-diagram.pngbin0 -> 92378 bytes
-rw-r--r--src/rapidjson/doc/diagram/makefile8
-rw-r--r--src/rapidjson/doc/diagram/move1.dot47
-rw-r--r--src/rapidjson/doc/diagram/move1.pngbin0 -> 16081 bytes
-rw-r--r--src/rapidjson/doc/diagram/move2.dot62
-rw-r--r--src/rapidjson/doc/diagram/move2.pngbin0 -> 41517 bytes
-rw-r--r--src/rapidjson/doc/diagram/move3.dot60
-rw-r--r--src/rapidjson/doc/diagram/move3.pngbin0 -> 36371 bytes
-rw-r--r--src/rapidjson/doc/diagram/normalparsing.dot56
-rw-r--r--src/rapidjson/doc/diagram/normalparsing.pngbin0 -> 32887 bytes
-rw-r--r--src/rapidjson/doc/diagram/simpledom.dot54
-rw-r--r--src/rapidjson/doc/diagram/simpledom.pngbin0 -> 43670 bytes
-rw-r--r--src/rapidjson/doc/diagram/tutorial.dot58
-rw-r--r--src/rapidjson/doc/diagram/tutorial.pngbin0 -> 44634 bytes
-rw-r--r--src/rapidjson/doc/diagram/utilityclass.dot73
-rw-r--r--src/rapidjson/doc/diagram/utilityclass.pngbin0 -> 99993 bytes
21 files changed, 595 insertions, 0 deletions
diff --git a/src/rapidjson/doc/diagram/architecture.dot b/src/rapidjson/doc/diagram/architecture.dot
new file mode 100644
index 000000000..c816c8718
--- /dev/null
+++ b/src/rapidjson/doc/diagram/architecture.dot
@@ -0,0 +1,50 @@
+digraph {
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.2
+ nodesep=0.5
+ penwidth=0.5
+ colorscheme=spectral7
+
+ node [shape=box, fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5, style=filled, fillcolor=white]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+
+ subgraph cluster1 {
+ margin="10,10"
+ labeljust="left"
+ label = "SAX"
+ style=filled
+ fillcolor=6
+
+ Reader -> Writer [style=invis]
+ }
+
+ subgraph cluster2 {
+ margin="10,10"
+ labeljust="left"
+ label = "DOM"
+ style=filled
+ fillcolor=7
+
+ Value
+ Document
+ }
+
+ Handler [label="<<concept>>\nHandler"]
+
+ {
+ edge [arrowtail=onormal, dir=back]
+ Value -> Document
+ Handler -> Document
+ Handler -> Writer
+ }
+
+ {
+ edge [arrowhead=vee, style=dashed, constraint=false]
+ Reader -> Handler [label="calls"]
+ Value -> Handler [label="calls"]
+ Document -> Reader [label="uses"]
+ }
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/architecture.png b/src/rapidjson/doc/diagram/architecture.png
new file mode 100644
index 000000000..556c7e729
--- /dev/null
+++ b/src/rapidjson/doc/diagram/architecture.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/insituparsing.dot b/src/rapidjson/doc/diagram/insituparsing.dot
new file mode 100644
index 000000000..eca0e3854
--- /dev/null
+++ b/src/rapidjson/doc/diagram/insituparsing.dot
@@ -0,0 +1,65 @@
+digraph {
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.2
+ penwidth=0.5
+
+ node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal]
+
+ {
+ node [shape=record, fontsize="8", margin="0.04", height=0.2, color=gray]
+ oldjson [label="\{|\"|m|s|g|\"|:|\"|H|e|l|l|o|\\|n|W|o|r|l|d|!|\"|,|\"|\\|u|0|0|7|3|t|a|r|s|\"|:|1|0|\}", xlabel="Before Parsing"]
+ //newjson [label="\{|\"|<a>m|s|g|\\0|:|\"|<b>H|e|l|l|o|\\n|W|o|r|l|d|!|\\0|\"|,|\"|<c>s|t|a|r|s|\\0|t|a|r|s|:|1|0|\}", xlabel="After Parsing"]
+ newjson [shape=plaintext, label=<
+<table BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2"><tr>
+<td>{</td>
+<td>"</td><td port="a">m</td><td>s</td><td>g</td><td bgcolor="yellow">\\0</td>
+<td>:</td>
+<td>"</td><td port="b">H</td><td>e</td><td>l</td><td>l</td><td>o</td><td bgcolor="yellow">\\n</td><td bgcolor="yellow">W</td><td bgcolor="yellow">o</td><td bgcolor="yellow">r</td><td bgcolor="yellow">l</td><td bgcolor="yellow">d</td><td bgcolor="yellow">!</td><td bgcolor="yellow">\\0</td><td>"</td>
+<td>,</td>
+<td>"</td><td port="c" bgcolor="yellow">s</td><td bgcolor="yellow">t</td><td bgcolor="yellow">a</td><td bgcolor="yellow">r</td><td bgcolor="yellow">s</td><td bgcolor="yellow">\\0</td><td>t</td><td>a</td><td>r</td><td>s</td>
+<td>:</td>
+<td>1</td><td>0</td>
+<td>}</td>
+</tr></table>
+>, xlabel="After Parsing"]
+ }
+
+ subgraph cluster1 {
+ margin="10,10"
+ labeljust="left"
+ label = "Document by In situ Parsing"
+ style=filled
+ fillcolor=gray95
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ root [label="{object|}", fillcolor=3]
+
+ {
+ msg [label="{string|<a>}", fillcolor=5]
+ helloworld [label="{string|<a>}", fillcolor=5]
+ stars [label="{string|<a>}", fillcolor=5]
+ ten [label="{number|10}", fillcolor=6]
+ }
+ }
+
+ oldjson -> root [label=" ParseInsitu()" lhead="cluster1"]
+ edge [arrowhead=vee]
+ root -> { msg; stars }
+
+ edge [arrowhead="none"]
+ msg -> helloworld
+ stars -> ten
+
+ {
+ edge [arrowhead=vee, arrowtail=dot, arrowsize=0.5, dir=both, tailclip=false]
+ msg:a:c -> newjson:a
+ helloworld:a:c -> newjson:b
+ stars:a:c -> newjson:c
+ }
+
+ //oldjson -> newjson [style=invis]
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/insituparsing.png b/src/rapidjson/doc/diagram/insituparsing.png
new file mode 100644
index 000000000..4400c8846
--- /dev/null
+++ b/src/rapidjson/doc/diagram/insituparsing.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/iterative-parser-states-diagram.dot b/src/rapidjson/doc/diagram/iterative-parser-states-diagram.dot
new file mode 100644
index 000000000..82ebfe1f0
--- /dev/null
+++ b/src/rapidjson/doc/diagram/iterative-parser-states-diagram.dot
@@ -0,0 +1,62 @@
+digraph {
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ penwidth=0.0
+
+ node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+
+ node [shape = doublecircle]; Start; Finish;
+ node [shape = box; style = "rounded, filled"; fillcolor=white ];
+
+ Start -> ArrayInitial [label=" ["];
+ Start -> ObjectInitial [label=" {"];
+
+ subgraph clusterArray {
+ margin="10,10"
+ style=filled
+ fillcolor=gray95
+ label = "Array"
+
+ ArrayInitial; Element; ElementDelimiter; ArrayFinish;
+ }
+
+ subgraph clusterObject {
+ margin="10,10"
+ style=filled
+ fillcolor=gray95
+ label = "Object"
+
+ ObjectInitial; MemberKey; KeyValueDelimiter; MemberValue; MemberDelimiter; ObjectFinish;
+ }
+
+ ArrayInitial -> ArrayInitial [label="["];
+ ArrayInitial -> ArrayFinish [label=" ]"];
+ ArrayInitial -> ObjectInitial [label="{", constraint=false];
+ ArrayInitial -> Element [label="string\nfalse\ntrue\nnull\nnumber"];
+
+ Element -> ArrayFinish [label="]"];
+ Element -> ElementDelimiter [label=","];
+
+ ElementDelimiter -> ArrayInitial [label=" ["];
+ ElementDelimiter -> ObjectInitial [label="{"];
+ ElementDelimiter -> Element [label="string\nfalse\ntrue\nnull\nnumber"];
+
+ ObjectInitial -> ObjectFinish [label=" }"];
+ ObjectInitial -> MemberKey [label=" string "];
+
+ MemberKey -> KeyValueDelimiter [label=":"];
+
+ KeyValueDelimiter -> ArrayInitial [label="["];
+ KeyValueDelimiter -> ObjectInitial [label=" {"];
+ KeyValueDelimiter -> MemberValue [label=" string\n false\n true\n null\n number"];
+
+ MemberValue -> ObjectFinish [label="}"];
+ MemberValue -> MemberDelimiter [label=","];
+
+ MemberDelimiter -> MemberKey [label=" string "];
+
+ ArrayFinish -> Finish;
+ ObjectFinish -> Finish;
+}
diff --git a/src/rapidjson/doc/diagram/iterative-parser-states-diagram.png b/src/rapidjson/doc/diagram/iterative-parser-states-diagram.png
new file mode 100644
index 000000000..f315494db
--- /dev/null
+++ b/src/rapidjson/doc/diagram/iterative-parser-states-diagram.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/makefile b/src/rapidjson/doc/diagram/makefile
new file mode 100644
index 000000000..348397765
--- /dev/null
+++ b/src/rapidjson/doc/diagram/makefile
@@ -0,0 +1,8 @@
+%.pdf: %.dot
+ dot $< -Tpdf -o $@
+
+%.png: %.dot
+ dot $< -Tpng -o $@
+
+DOTFILES = $(basename $(wildcard *.dot))
+all: $(addsuffix .png, $(DOTFILES)) $(addsuffix .pdf, $(DOTFILES))
diff --git a/src/rapidjson/doc/diagram/move1.dot b/src/rapidjson/doc/diagram/move1.dot
new file mode 100644
index 000000000..a7c1464ad
--- /dev/null
+++ b/src/rapidjson/doc/diagram/move1.dot
@@ -0,0 +1,47 @@
+digraph {
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.2
+ penwidth=0.5
+
+ node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal]
+
+ subgraph cluster1 {
+ margin="10,10"
+ labeljust="left"
+ label = "Before"
+ style=filled
+ fillcolor=gray95
+
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ {
+ rank = same
+ b1 [label="{b:number|456}", fillcolor=6]
+ a1 [label="{a:number|123}", fillcolor=6]
+ }
+
+ a1 -> b1 [style="dashed", label="Move", dir=back]
+ }
+
+ subgraph cluster2 {
+ margin="10,10"
+ labeljust="left"
+ label = "After"
+ style=filled
+ fillcolor=gray95
+
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ {
+ rank = same
+ b2 [label="{b:null|}", fillcolor=1]
+ a2 [label="{a:number|456}", fillcolor=6]
+ }
+ a2 -> b2 [style=invis, dir=back]
+ }
+ b1 -> b2 [style=invis]
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/move1.png b/src/rapidjson/doc/diagram/move1.png
new file mode 100644
index 000000000..ab322d084
--- /dev/null
+++ b/src/rapidjson/doc/diagram/move1.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/move2.dot b/src/rapidjson/doc/diagram/move2.dot
new file mode 100644
index 000000000..7037ea6cb
--- /dev/null
+++ b/src/rapidjson/doc/diagram/move2.dot
@@ -0,0 +1,62 @@
+digraph {
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.2
+ penwidth=0.5
+
+ node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal]
+
+ subgraph cluster1 {
+ margin="10,10"
+ labeljust="left"
+ label = "Before Copying (Hypothetic)"
+ style=filled
+ fillcolor=gray95
+
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ c1 [label="{contact:array|}", fillcolor=4]
+ c11 [label="{|}"]
+ c12 [label="{|}"]
+ c13 [shape="none", label="...", style="solid"]
+ o1 [label="{o:object|}", fillcolor=3]
+ ghost [label="{o:object|}", style=invis]
+
+ c1 -> o1 [style="dashed", label="AddMember", constraint=false]
+
+ edge [arrowhead=vee]
+ c1 -> { c11; c12; c13 }
+ o1 -> ghost [style=invis]
+ }
+
+ subgraph cluster2 {
+ margin="10,10"
+ labeljust="left"
+ label = "After Copying (Hypothetic)"
+ style=filled
+ fillcolor=gray95
+
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ c2 [label="{contact:array|}", fillcolor=4]
+ c3 [label="{array|}", fillcolor=4]
+ c21 [label="{|}"]
+ c22 [label="{|}"]
+ c23 [shape=none, label="...", style="solid"]
+ o2 [label="{o:object|}", fillcolor=3]
+ cs [label="{string|\"contact\"}", fillcolor=5]
+ c31 [label="{|}"]
+ c32 [label="{|}"]
+ c33 [shape="none", label="...", style="solid"]
+
+ edge [arrowhead=vee]
+ c2 -> { c21; c22; c23 }
+ o2 -> cs
+ cs -> c3 [arrowhead=none]
+ c3 -> { c31; c32; c33 }
+ }
+ ghost -> o2 [style=invis]
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/move2.png b/src/rapidjson/doc/diagram/move2.png
new file mode 100644
index 000000000..8d4fc5bcc
--- /dev/null
+++ b/src/rapidjson/doc/diagram/move2.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/move3.dot b/src/rapidjson/doc/diagram/move3.dot
new file mode 100644
index 000000000..c197b99df
--- /dev/null
+++ b/src/rapidjson/doc/diagram/move3.dot
@@ -0,0 +1,60 @@
+digraph {
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.2
+ penwidth=0.5
+ forcelabels=true
+
+ node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal]
+
+ subgraph cluster1 {
+ margin="10,10"
+ labeljust="left"
+ label = "Before Moving"
+ style=filled
+ fillcolor=gray95
+
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ c1 [label="{contact:array|}", fillcolor=4]
+ c11 [label="{|}"]
+ c12 [label="{|}"]
+ c13 [shape=none, label="...", style="solid"]
+ o1 [label="{o:object|}", fillcolor=3]
+ ghost [label="{o:object|}", style=invis]
+
+ c1 -> o1 [style="dashed", constraint=false, label="AddMember"]
+
+ edge [arrowhead=vee]
+ c1 -> { c11; c12; c13 }
+ o1 -> ghost [style=invis]
+ }
+
+ subgraph cluster2 {
+ margin="10,10"
+ labeljust="left"
+ label = "After Moving"
+ style=filled
+ fillcolor=gray95
+
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ c2 [label="{contact:null|}", fillcolor=1]
+ c3 [label="{array|}", fillcolor=4]
+ c21 [label="{|}"]
+ c22 [label="{|}"]
+ c23 [shape="none", label="...", style="solid"]
+ o2 [label="{o:object|}", fillcolor=3]
+ cs [label="{string|\"contact\"}", fillcolor=5]
+ c2 -> o2 [style="dashed", constraint=false, label="AddMember", style=invis]
+
+ edge [arrowhead=vee]
+ c3 -> { c21; c22; c23 }
+ o2 -> cs
+ cs -> c3 [arrowhead=none]
+ }
+ ghost -> o2 [style=invis]
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/move3.png b/src/rapidjson/doc/diagram/move3.png
new file mode 100644
index 000000000..558470f1f
--- /dev/null
+++ b/src/rapidjson/doc/diagram/move3.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/normalparsing.dot b/src/rapidjson/doc/diagram/normalparsing.dot
new file mode 100644
index 000000000..b15941ba0
--- /dev/null
+++ b/src/rapidjson/doc/diagram/normalparsing.dot
@@ -0,0 +1,56 @@
+digraph {
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.2
+ penwidth=0.5
+
+ node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal]
+
+ {
+ node [shape=record, fontsize="8", margin="0.04", height=0.2, color=gray]
+ normaljson [label="\{|\"|m|s|g|\"|:|\"|H|e|l|l|o|\\|n|W|o|r|l|d|!|\"|,|\"|\\|u|0|0|7|3|t|a|r|s\"|:|1|0|\}"]
+
+ {
+ rank = same
+ msgstring [label="m|s|g|\\0"]
+ helloworldstring [label="H|e|l|l|o|\\n|W|o|r|l|d|!|\\0"]
+ starsstring [label="s|t|a|r|s\\0"]
+ }
+ }
+
+ subgraph cluster1 {
+ margin="10,10"
+ labeljust="left"
+ label = "Document by Normal Parsing"
+ style=filled
+ fillcolor=gray95
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ root [label="{object|}", fillcolor=3]
+
+ {
+ msg [label="{string|<a>}", fillcolor=5]
+ helloworld [label="{string|<a>}", fillcolor=5]
+ stars [label="{string|<a>}", fillcolor=5]
+ ten [label="{number|10}", fillcolor=6]
+ }
+ }
+
+ normaljson -> root [label=" Parse()" lhead="cluster1"]
+ edge [arrowhead=vee]
+ root -> { msg; stars }
+
+ edge [arrowhead="none"]
+ msg -> helloworld
+ stars -> ten
+
+ edge [arrowhead=vee, arrowtail=dot, arrowsize=0.5, dir=both, tailclip=false]
+ msg:a:c -> msgstring:w
+ helloworld:a:c -> helloworldstring:w
+ stars:a:c -> starsstring:w
+
+ msgstring -> helloworldstring -> starsstring [style=invis]
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/normalparsing.png b/src/rapidjson/doc/diagram/normalparsing.png
new file mode 100644
index 000000000..702512ca3
--- /dev/null
+++ b/src/rapidjson/doc/diagram/normalparsing.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/simpledom.dot b/src/rapidjson/doc/diagram/simpledom.dot
new file mode 100644
index 000000000..959cdbb41
--- /dev/null
+++ b/src/rapidjson/doc/diagram/simpledom.dot
@@ -0,0 +1,54 @@
+digraph {
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.2
+ penwidth=0.5
+
+ node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal]
+
+ {
+ node [shape=record, fontsize="8", margin="0.04", height=0.2, color=gray]
+ srcjson [label="\{|\"|p|r|o|j|e|c|t|\"|:|\"|r|a|p|i|d|j|s|o|n|\"|,|\"|s|t|a|r|s|\"|:|1|0|\}"]
+ dstjson [label="\{|\"|p|r|o|j|e|c|t|\"|:|\"|r|a|p|i|d|j|s|o|n|\"|,|\"|s|t|a|r|s|\"|:|1|1|\}"]
+ }
+
+ {
+ node [shape="box", style="filled", fillcolor="gray95"]
+ Document2 [label="(Modified) Document"]
+ Writer
+ }
+
+ subgraph cluster1 {
+ margin="10,10"
+ labeljust="left"
+ label = "Document"
+ style=filled
+ fillcolor=gray95
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ root [label="{object|}", fillcolor=3]
+
+ {
+ project [label="{string|\"project\"}", fillcolor=5]
+ rapidjson [label="{string|\"rapidjson\"}", fillcolor=5]
+ stars [label="{string|\"stars\"}", fillcolor=5]
+ ten [label="{number|10}", fillcolor=6]
+ }
+
+ edge [arrowhead=vee]
+ root -> { project; stars }
+
+ edge [arrowhead="none"]
+ project -> rapidjson
+ stars -> ten
+ }
+
+ srcjson -> root [label=" Parse()", lhead="cluster1"]
+
+ ten -> Document2 [label=" Increase \"stars\"", ltail="cluster1" ]
+ Document2 -> Writer [label=" Traverse DOM by Accept()"]
+ Writer -> dstjson [label=" Output to StringBuffer"]
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/simpledom.png b/src/rapidjson/doc/diagram/simpledom.png
new file mode 100644
index 000000000..38d9c5dc1
--- /dev/null
+++ b/src/rapidjson/doc/diagram/simpledom.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/tutorial.dot b/src/rapidjson/doc/diagram/tutorial.dot
new file mode 100644
index 000000000..138ddc381
--- /dev/null
+++ b/src/rapidjson/doc/diagram/tutorial.dot
@@ -0,0 +1,58 @@
+digraph {
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.2
+ penwidth=0.5
+
+ node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+ edge [fontname="Inconsolata, Consolas", fontsize=10]
+
+ subgraph cluster1 {
+ margin="10,10"
+ labeljust="left"
+ label = "Document"
+ style=filled
+ fillcolor=gray95
+ node [shape=Mrecord, style=filled, colorscheme=spectral7]
+
+ root [label="{object|}", fillcolor=3]
+
+ {
+ hello [label="{string|\"hello\"}", fillcolor=5]
+ t [label="{string|\"t\"}", fillcolor=5]
+ f [label="{string|\"f\"}", fillcolor=5]
+ n [label="{string|\"n\"}", fillcolor=5]
+ i [label="{string|\"i\"}", fillcolor=5]
+ pi [label="{string|\"pi\"}", fillcolor=5]
+ a [label="{string|\"a\"}", fillcolor=5]
+
+ world [label="{string|\"world\"}", fillcolor=5]
+ true [label="{true|}", fillcolor=7]
+ false [label="{false|}", fillcolor=2]
+ null [label="{null|}", fillcolor=1]
+ i1 [label="{number|123}", fillcolor=6]
+ pi1 [label="{number|3.1416}", fillcolor=6]
+ array [label="{array|size=4}", fillcolor=4]
+
+ a1 [label="{number|1}", fillcolor=6]
+ a2 [label="{number|2}", fillcolor=6]
+ a3 [label="{number|3}", fillcolor=6]
+ a4 [label="{number|4}", fillcolor=6]
+ }
+
+ edge [arrowhead=vee]
+ root -> { hello; t; f; n; i; pi; a }
+ array -> { a1; a2; a3; a4 }
+
+ edge [arrowhead=none]
+ hello -> world
+ t -> true
+ f -> false
+ n -> null
+ i -> i1
+ pi -> pi1
+ a -> array
+ }
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/tutorial.png b/src/rapidjson/doc/diagram/tutorial.png
new file mode 100644
index 000000000..8a12924ac
--- /dev/null
+++ b/src/rapidjson/doc/diagram/tutorial.png
Binary files differ
diff --git a/src/rapidjson/doc/diagram/utilityclass.dot b/src/rapidjson/doc/diagram/utilityclass.dot
new file mode 100644
index 000000000..1492a8a7a
--- /dev/null
+++ b/src/rapidjson/doc/diagram/utilityclass.dot
@@ -0,0 +1,73 @@
+digraph {
+ rankdir=LR
+ compound=true
+ fontname="Inconsolata, Consolas"
+ fontsize=10
+ margin="0,0"
+ ranksep=0.3
+ nodesep=0.15
+ penwidth=0.5
+ colorscheme=spectral7
+
+ node [shape=box, fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5, style=filled, fillcolor=white]
+ edge [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5]
+
+ subgraph cluster0 {
+ style=filled
+ fillcolor=4
+
+ Encoding [label="<<concept>>\nEncoding"]
+
+ edge [arrowtail=onormal, dir=back]
+ Encoding -> { UTF8; UTF16; UTF32; ASCII; AutoUTF }
+ UTF16 -> { UTF16LE; UTF16BE }
+ UTF32 -> { UTF32LE; UTF32BE }
+ }
+
+ subgraph cluster1 {
+ style=filled
+ fillcolor=5
+
+ Stream [label="<<concept>>\nStream"]
+ InputByteStream [label="<<concept>>\nInputByteStream"]
+ OutputByteStream [label="<<concept>>\nOutputByteStream"]
+
+ edge [arrowtail=onormal, dir=back]
+ Stream -> {
+ StringStream; InsituStringStream; StringBuffer;
+ EncodedInputStream; EncodedOutputStream;
+ AutoUTFInputStream; AutoUTFOutputStream
+ InputByteStream; OutputByteStream
+ }
+
+ InputByteStream -> { MemoryStream; FlieReadStream }
+ OutputByteStream -> { MemoryBuffer; FileWriteStream }
+ }
+
+ subgraph cluster2 {
+ style=filled
+ fillcolor=3
+
+ Allocator [label="<<concept>>\nAllocator"]
+
+ edge [arrowtail=onormal, dir=back]
+ Allocator -> { CrtAllocator; MemoryPoolAllocator }
+ }
+
+ {
+ edge [arrowtail=odiamond, arrowhead=vee, dir=both]
+ EncodedInputStream -> InputByteStream
+ EncodedOutputStream -> OutputByteStream
+ AutoUTFInputStream -> InputByteStream
+ AutoUTFOutputStream -> OutputByteStream
+ MemoryPoolAllocator -> Allocator [label="base", tailport=s]
+ }
+
+ {
+ edge [arrowhead=vee, style=dashed]
+ AutoUTFInputStream -> AutoUTF
+ AutoUTFOutputStream -> AutoUTF
+ }
+
+ //UTF32LE -> Stream [style=invis]
+} \ No newline at end of file
diff --git a/src/rapidjson/doc/diagram/utilityclass.png b/src/rapidjson/doc/diagram/utilityclass.png
new file mode 100644
index 000000000..ce029a4d0
--- /dev/null
+++ b/src/rapidjson/doc/diagram/utilityclass.png
Binary files differ