Add skeleton of documents

This commit is contained in:
Milo Yip 2014-07-04 23:57:33 +08:00
parent 96882f4977
commit 3f3f847036
6 changed files with 143 additions and 1 deletions

17
doc/dom.md Normal file
View File

@ -0,0 +1,17 @@
# RapidJSON DOM
## Template
### Encoding
### Allocator
## Parsing
### Parse Error
### In situ Parsing
## Techniques
### DOM as SAX Generator

9
doc/encoding.md Normal file
View File

@ -0,0 +1,9 @@
# RapidJSON Encoding
## Unicode
### Character Type
### UTF
## Validation & Transcoding

84
doc/faq.md Normal file
View File

@ -0,0 +1,84 @@
# RapidJSON FAQ
## General
1. What is RapidJSON?
RapidJSON is a C++ library for parsing and generating JSON. You may check all [features](features.md) of it.
2. Why is it named so?
It is inspired by [RapidXML](http://rapidxml.sourceforge.net/), which is a fast XML DOM parser. RapidJSON borrowed some designs of RapidXML, including *in situ* parsing, header-only library, and more.
3. Is it similar to RapidXML?
4. Is it free?
5. Is it small? What are its dependencies?
6. How to install RapidJSON?
7. Can it run on my platform?
8. Does it support C++03? C++11?
9. Does it really work in real applications?
10. How it is tested?
11. Is it well documented?
12. Are there alternatives?
## JSON
1. What is JSON?
2. What is application of JSON?
2. Does RapidJSON conform to the JSON standard?
3. Does RapidJSON support relaxed syntax?
## DOM and SAX
1. What is DOM style API?
2. What is SAX style API?
3. Should I choose DOM or SAX?
4. What is *in situ* parsing?
5. When will parsing generates an error?
6. What error information is provided?
7. Why not just using `double` to represent JSON number?
## Document/Value (DOM)
1. What is move semantics? Why?
2. How to copy a value?
3. Why do I need to provide the length of string?
4. Why do I need to provide allocator in many DOM manipulation API?
5. Does it convert between numerical types?
## Reader/Writer (SAX)
1. Why not just `printf` a JSON? Why need a `Writer`?
2. Why can't I parse a JSON which is just a number?
3. Can I pause the parsing process and resume it later?
## Unicode
1. Does it support UTF-8, UTF-16 and other format?
2. Can it validate the encoding?
3. What is surrogate pair? Does RapidJSON support it?
4. Can it handle '\u0000' (null character) in JSON string?
5. Can I output '\uxxxx' for all non-ASCII character?
## Stream
1. I have a big JSON file. Should I load the whole file to memory?
2. Can I parse JSON while it is streamed from network?
3. I don't know what format will the JSON be. How to handle them?
4. What is BOM? How RapidJSON handle it?
5. Why little/big endian is related?
## Performance
1. Is RapidJSON really fast?
2. Why is it fast?
3. What is SIMD? How it is applied in RapidJSON?
4. Does it consume a lot of memory?
5. What is the purpose of being high performance?
## Gossip
1. Who are the developers of RapidJSON?
2. Why do you develop RapidJSON?
3. Why there is a long empty period of development?
4. Why did the repository move from Google Code to GitHub?

21
doc/internals.md Normal file
View File

@ -0,0 +1,21 @@
# RapidJSON Internals
This section records some design and implementation details.
# Value
## Data Layout
## Flags
# Allocator
## MemoryPoolAllocator
# Parsing Optimization
## Skip Whitespace with SIMD
## Pow10()
## Local Stream Copy

11
doc/sax.md Normal file
View File

@ -0,0 +1,11 @@
# RapidJSON SAX
## Reader
### Handler
### Parse Error
## Writer
### PrettyWriter

View File

@ -431,6 +431,6 @@ This tutorial shows the basics of DOM tree query and manipulation. There are sev
3. [DOM](dom.md)'s basics are already covered in this tutorial. Uncover more advanced features such as *in situ* parsing, other parsing options and advanced usages.
4. [SAX](sax.md) is the foundation of parsing/generating facility in RapidJSON. Learn how to use `Reader`/`Writer` to implement even faster applications. Also try `PrettyWriter` to format the JSON.
5. [Performance](performance.md) shows some in-house and third-party benchmarks.
6. [Implementation](implementation.md) describes some internal designs and techniques of RapidJSON.
6. [Internals](internals.md) describes some internal designs and techniques of RapidJSON.
You may also refer to the FAQ, API documentation, examples and unit tests.