Rudiments
|
Public Member Functions | |
jsondom () | |
jsondom (bool stringcacheenabled) | |
virtual | ~jsondom () |
virtual const char * | getType () |
bool | parse (input *in) |
bool | parseFile (const char *filename) |
bool | parseString (const char *string) |
void | createRootNode () |
Public Member Functions inherited from jsonsax | |
jsonsax () | |
virtual | ~jsonsax () |
Public Member Functions inherited from sax | |
sax () | |
virtual | ~sax () |
void | setIgnoreHeaderLines (uint64_t lines) |
uint64_t | getIgnoreHeaderLines () |
void | setIgnoreFooterLines (uint64_t lines) |
uint64_t | getIgnoreFooterLines () |
const char * | getError () |
Public Member Functions inherited from object | |
virtual | ~object () |
Public Member Functions inherited from dom | |
dom () | |
dom (bool stringcacheenabled) | |
virtual | ~dom () |
virtual domnode * | getRootNode () |
virtual domnode * | getNullNode () |
virtual ssize_t | writeFile (const char *filename, mode_t perms) |
virtual ssize_t | writeFile (const char *filename, mode_t perms, bool indent) |
virtual ssize_t | write () |
virtual ssize_t | write (bool indent) |
virtual ssize_t | write (output *out) |
virtual ssize_t | write (output *out, bool indent) |
virtual ssize_t | writeXml () |
virtual ssize_t | writeXml (bool indent) |
virtual ssize_t | writeXml (output *out) |
virtual ssize_t | writeXml (output *out, bool indent) |
bool | getStringCacheEnabled () |
Public Member Functions inherited from collection | |
collection () | |
collection (collection &c) | |
collection & | operator= (collection &c) |
virtual | ~collection () |
virtual uint64_t | getCount ()=0 |
comparator * | getComparator () |
void | setComparator (comparator *newcomp) |
virtual bool | isReadOnly () |
virtual bool | isBlockBased () |
virtual uint64_t | getBlockSize () |
virtual bool | isSequentialAccess () |
virtual void | setManageValues (bool manage) |
virtual bool | getManageValues () |
virtual void | setManageArrayValues (bool manage) |
virtual bool | getManageArrayValues () |
virtual void | setManageKeys (bool manage) |
virtual bool | getManageKeys () |
virtual void | setManageArrayKeys (bool manage) |
virtual bool | getManageArrayKeys () |
virtual bool | clear ()=0 |
virtual ssize_t | writeJson ()=0 |
virtual ssize_t | writeJson (bool indent)=0 |
virtual ssize_t | writeJson (output *out)=0 |
virtual ssize_t | writeJson (output *out, bool indent)=0 |
Protected Member Functions | |
virtual bool | objectStart () |
virtual bool | memberStart () |
virtual bool | memberName (const char *name) |
virtual bool | valueStart () |
virtual bool | stringValue (const char *value) |
virtual bool | numberValue (const char *value) |
virtual bool | trueValue () |
virtual bool | falseValue () |
virtual bool | nullValue () |
virtual bool | arrayStart () |
virtual bool | arrayEnd () |
virtual bool | valueEnd () |
virtual bool | memberEnd () |
virtual bool | objectEnd () |
The jsondom class implements a minimal JSON DOM parser.
It parses a file or string of JSON-formatted data and produces a dom tree representing the data. It creates an "r" element for the root, named elements for each object or array, and "v" elements for each array value. It adds a "t" attribute to each object, indicating the type: "o" for standard object, "a" for array, "s" for string, "n" for number, "t" for true, "f" for false, and "u" for null. It also adds a "v" attribute to each string or number object, containing the value.
For example, the following JSON:
{ string_object: "string value 1", number_object: 10, true_object: true, false_object: false, null_object: null, composite_object: { string_member: "string value", number_member: 10, true_member: true, false_member: false, null_member: null nested_composite_object: { string_member: "string value", number_member: 10, true_member: true, false_member: false, null_member: null } }, array_object: ["string value", 10, true, false, null] }
would produce the following dom tree:
<r t="o"> <string_object t="s" v="string value 1"> <number_object t="n" v="10"> <true_object t="t"> <false_object t="f"> <null_object t="u"> <composite_object t="o"> <string_member t="s" v="string value"> <number_member t="n" v="10"> <true_member t="t"> <false_member t="f"> <null_member t="u"> <nested_composite_object t="o"> <string_member t="s" v="string value"> <number_member t="n" v="10"> <true_member t="t"> <false_member t="f"> <null_member t="u"> <array_object t="a"> <v t="s" v="string value"> <v t="n" v="10"> <v t="t"> <v t="f"> <v t="u"> </array_object> </nested_composite_object> </composite_object> </r>
jsondom::jsondom | ( | ) |
Creates a new instance of the jsondom class.
jsondom::jsondom | ( | bool | stringcacheenabled | ) |
Creates a new instance of the jsondom class, allowing the user to enable or disable the "string cache" for this instance.
By default, as each domnode is added to the jsondom tree, tag and attribute names and values are stored in a string cache and pointers into the cache are assigned to each node. Reference counters are kept and the string is removed from the cache when no more nodes are using it. If the data is highly repetitive this conserves memory at the cost of speed.
If the string cache is disabled then memory is allocated in each domnode for names and values and freed when the domnode is freed. This is faster but uses much more memory.
|
virtual |
Deletes this instance of the jsondom class.
|
protectedvirtual |
Gets called when an array end is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when an array start is parsed.
Reimplemented from jsonsax.
|
virtual |
Creates a new root node. This is useful for building a tree from scratch.
Reimplemented from dom.
|
protectedvirtual |
Gets called when a false value is parsed.
Reimplemented from jsonsax.
|
virtual |
Returns "jsondom".
Reimplemented from dom.
|
protectedvirtual |
Gets called when a member end is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when a member name is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when a member start is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when a null value is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when a number value is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when an object end is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when an object start is parsed.
Reimplemented from jsonsax.
Parses generic input "in" and generates a DOM tree.
Implements dom.
|
virtual |
Parses file "filename" and generates a DOM tree.
Implements dom.
|
virtual |
Parses string "string" and generates a DOM tree.
Implements dom.
|
protectedvirtual |
Gets called when a string value is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when a true value is parsed.
Reimplemented from jsonsax.
|
protectedvirtual |
Gets called when an value end is parsed.
Reimplemented from jsonsax.