summaryrefslogtreecommitdiff
path: root/yajl-1.0.12/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'yajl-1.0.12/index.html')
-rw-r--r--yajl-1.0.12/index.html227
1 files changed, 227 insertions, 0 deletions
diff --git a/yajl-1.0.12/index.html b/yajl-1.0.12/index.html
new file mode 100644
index 0000000..92aec78
--- /dev/null
+++ b/yajl-1.0.12/index.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>YAJL: Yet Another JSON Library (YAJL)</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.7.4 -->
+<div id="top">
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">YAJL&#160;<span id="projectnumber">1.0.12</span></div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="header">
+ <div class="headertitle">
+<div class="title">Yet Another JSON Library (YAJL) </div> </div>
+</div>
+<div class="contents">
+<div class="textblock"><dl class="author"><dt><b>Author:</b></dt><dd>Lloyd Hilaiel </dd></dl>
+<dl class="date"><dt><b>Date:</b></dt><dd>2010</dd></dl>
+<p>Yet Another JSON Library (YAJL) is a small event-driven (SAX-style) JSON parser written in ANSI C, and a small validating JSON generator. YAJL is released under the BSD license.</p>
+<h2><a class="anchor" id="features"></a>
+Features</h2>
+<ol type="1">
+<li>Stream (incremental) parsing and generation of JSON</li>
+<li>ANSI C</li>
+<li>Human readable error messages with context</li>
+<li>tiny</li>
+<li>event driven</li>
+<li>support for generating "beautified" JSON</li>
+</ol>
+<h2><a class="anchor" id="usage"></a>
+Usage</h2>
+<p>The following code sample is a complete JSON "reformating" program. It demonstrates how to perform stream parsing and generation.</p>
+<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;yajl/yajl_parse.h&gt;</span>
+<span class="preprocessor">#include &lt;yajl/yajl_gen.h&gt;</span>
+
+<span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<span class="preprocessor">#include &lt;string.h&gt;</span>
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_null(<span class="keywordtype">void</span> * ctx)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#a33ad490ddf9372c0d27d4c32b4b693d2">yajl_gen_null</a>(g);
+ <span class="keywordflow">return</span> 1;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_boolean(<span class="keywordtype">void</span> * ctx, <span class="keywordtype">int</span> <span class="keywordtype">boolean</span>)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#a9b761fd105b212682de291ca70836f93">yajl_gen_bool</a>(g, <span class="keywordtype">boolean</span>);
+ <span class="keywordflow">return</span> 1;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_number(<span class="keywordtype">void</span> * ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> * s, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> l)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#acc239456e918c2bba77ebbcc11246da4">yajl_gen_number</a>(g, s, l);
+ <span class="keywordflow">return</span> 1;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_string(<span class="keywordtype">void</span> * ctx, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * stringVal,
+ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stringLen)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#aae28972365346706ca1d25f2b0677f2b">yajl_gen_string</a>(g, stringVal, stringLen);
+ <span class="keywordflow">return</span> 1;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_map_key(<span class="keywordtype">void</span> * ctx, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * stringVal,
+ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stringLen)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#aae28972365346706ca1d25f2b0677f2b">yajl_gen_string</a>(g, stringVal, stringLen);
+ <span class="keywordflow">return</span> 1;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_start_map(<span class="keywordtype">void</span> * ctx)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#aaaefb19b3b2c96b0d3d0bbf3bc4886b2">yajl_gen_map_open</a>(g);
+ <span class="keywordflow">return</span> 1;
+}
+
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_end_map(<span class="keywordtype">void</span> * ctx)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#af75cd0ee728dbd835bbbefbcdc923dbe">yajl_gen_map_close</a>(g);
+ <span class="keywordflow">return</span> 1;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_start_array(<span class="keywordtype">void</span> * ctx)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#a68f7bc4fbfe8015f590bc284d386bf44">yajl_gen_array_open</a>(g);
+ <span class="keywordflow">return</span> 1;
+}
+
+<span class="keyword">static</span> <span class="keywordtype">int</span> reformat_end_array(<span class="keywordtype">void</span> * ctx)
+{
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g = (<a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a>) ctx;
+ <a class="code" href="yajl__gen_8h.html#ae3ba7ebfbea5a27f30f4c6c62ddc493b">yajl_gen_array_close</a>(g);
+ <span class="keywordflow">return</span> 1;
+}
+
+<span class="keyword">static</span> <a class="code" href="structyajl__callbacks.html">yajl_callbacks</a> callbacks = {
+ reformat_null,
+ reformat_boolean,
+ NULL,
+ NULL,
+ reformat_number,
+ reformat_string,
+ reformat_start_map,
+ reformat_map_key,
+ reformat_end_map,
+ reformat_start_array,
+ reformat_end_array
+};
+
+<span class="keyword">static</span> <span class="keywordtype">void</span>
+usage(<span class="keyword">const</span> <span class="keywordtype">char</span> * progname)
+{
+ fprintf(stderr, <span class="stringliteral">&quot;usage: %s &lt;filename&gt;\n&quot;</span>
+ <span class="stringliteral">&quot; -m minimize json rather than beautify (default)\n&quot;</span>
+ <span class="stringliteral">&quot; -u allow invalid UTF8 inside strings during parsing\n&quot;</span>,
+ progname);
+ exit(1);
+
+}
+
+<span class="keywordtype">int</span>
+main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv)
+{
+ <a class="code" href="yajl__parse_8h.html#acb85b92f3d7cb6f0743b4e68d0172323">yajl_handle</a> hand;
+ <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> fileData[65536];
+ <span class="comment">/* generator config */</span>
+ <a class="code" href="structyajl__gen__config.html">yajl_gen_config</a> conf = { 1, <span class="stringliteral">&quot; &quot;</span> };
+ <a class="code" href="yajl__gen_8h.html#a497f7224309c1a0118f40c87e3fd3f65">yajl_gen</a> g;
+ <a class="code" href="yajl__parse_8h.html#a1d2bc7f4962c55436daaba61ffaf1f7d">yajl_status</a> stat;
+ <span class="keywordtype">size_t</span> rd;
+ <span class="comment">/* allow comments */</span>
+ <a class="code" href="structyajl__parser__config.html">yajl_parser_config</a> cfg = { 1, 1 };
+ <span class="keywordtype">int</span> done = 0;
+
+ <span class="comment">/* check arguments. We expect exactly one! */</span>
+ <span class="keywordflow">if</span> (argc == 2) {
+ <span class="keywordflow">if</span> (!strcmp(<span class="stringliteral">&quot;-m&quot;</span>, argv[1])) {
+ conf.<a class="code" href="structyajl__gen__config.html#a85437a875ae65161b4f28bac6ff89c99">beautify</a> = 0;
+
+ } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!strcmp(<span class="stringliteral">&quot;-u&quot;</span>, argv[1])) {
+ cfg.<a class="code" href="structyajl__parser__config.html#a33f7ab7fb27bf626441f15d649dea5d9">checkUTF8</a> = 0;
+ } <span class="keywordflow">else</span> {
+ usage(argv[0]);
+ }
+ } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argc != 1) {
+ usage(argv[0]);
+ }
+
+ g = <a class="code" href="yajl__gen_8h.html#a628319aaa1d322ffa97ef5a766303d1b">yajl_gen_alloc</a>(&amp;conf, NULL);
+
+ <span class="comment">/* ok. open file. let&#39;s read and parse */</span>
+ hand = <a class="code" href="yajl__parse_8h.html#ac5b76bd2683e48ea5cb97376a62bba46">yajl_alloc</a>(&amp;callbacks, &amp;cfg, NULL, (<span class="keywordtype">void</span> *) g);
+
+ <span class="keywordflow">while</span> (!done) {
+ rd = fread((<span class="keywordtype">void</span> *) fileData, 1, <span class="keyword">sizeof</span>(fileData) - 1, stdin);
+
+ <span class="keywordflow">if</span> (rd == 0) {
+ <span class="keywordflow">if</span> (!feof(stdin)) {
+ fprintf(stderr, <span class="stringliteral">&quot;error on file read.\n&quot;</span>);
+ <span class="keywordflow">break</span>;
+ }
+ done = 1;
+ }
+ fileData[rd] = 0;
+
+ <span class="keywordflow">if</span> (done)
+ <span class="comment">/* parse any remaining buffered data */</span>
+ stat = <a class="code" href="yajl__parse_8h.html#acb0e5421a4bc2e9b9626f0514f11547f">yajl_parse_complete</a>(hand);
+ <span class="keywordflow">else</span>
+ <span class="comment">/* read file data, pass to parser */</span>
+ stat = <a class="code" href="yajl__parse_8h.html#a6c05371a1532ade860db8b1ef8d31a61">yajl_parse</a>(hand, fileData, rd);
+
+ <span class="keywordflow">if</span> (stat != <a class="code" href="yajl__parse_8h.html#a1d2bc7f4962c55436daaba61ffaf1f7da67a2a1b5d684de357adb0e1ea444ffd7">yajl_status_ok</a> &amp;&amp;
+ stat != <a class="code" href="yajl__parse_8h.html#a1d2bc7f4962c55436daaba61ffaf1f7da88c7cd7b308d09c32dad74b47b9ae3f4">yajl_status_insufficient_data</a>)
+ {
+ <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * str = <a class="code" href="yajl__parse_8h.html#aa4f26259fea6bb058b17828598532198">yajl_get_error</a>(hand, 1, fileData, rd);
+ fprintf(stderr, (<span class="keyword">const</span> <span class="keywordtype">char</span> *) str);
+ <a class="code" href="yajl__parse_8h.html#a12b6514e18f78fab0825b71465d511ea">yajl_free_error</a>(hand, str);
+ } <span class="keywordflow">else</span> {
+ <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * buf;
+ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len;
+ <a class="code" href="yajl__gen_8h.html#a38ab5597a024b05fb6c6564eaaa192ab">yajl_gen_get_buf</a>(g, &amp;buf, &amp;len);
+ fwrite(buf, 1, len, stdout);
+ <a class="code" href="yajl__gen_8h.html#a50116818ab3c0f3116e3baff0db2f4ef">yajl_gen_clear</a>(g);
+ }
+ }
+
+ <a class="code" href="yajl__gen_8h.html#a9579c99fb77fb6f607db47de662adc9c">yajl_gen_free</a>(g);
+ <a class="code" href="yajl__parse_8h.html#a9fc930b29358ec1e04bda35d8b73422e">yajl_free</a>(hand);
+
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div> </div></div>
+<hr class="footer"/><address class="footer"><small>Generated on Mon Apr 25 2011 13:06:32 for YAJL by&#160;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+</body>
+</html>