Commit 6e93e8db authored by Mehdi Dogguy's avatar Mehdi Dogguy

New upstream version 1.0.1

parent 960c9081
#directory "_build/uutf"
#directory "_build/src"
#load "uutf.cmo"
#load "jsonm.cmo"
v0.9.1 2012-08-05 Lausanne
--------------------------
- OASIS 0.3.0 support.
v0.9.0 2012-05-05 La Forclaz (VS)
---------------------------------
First release.
v1.0.1 2016-03-07 La Forclaz (VS)
---------------------------------
- OCaml 4.05.0 compatibility (removal of `Uchar.dump`).
v1.0.0 2016-11-23 Zagreb
------------------------
- Support for RFC 7195/ECMA-404. This means that any JSON value can
now be codec as JSON text, in RFC 4627 (obsoleted by 7195) this
could only be an array or an object. If your code was relying on the
fact the first decoded lexeme was either a `Os` or `As`,
you will need to review that.
- Fix `Jsonm.decode` not eventually returning `End` on toplevel
decode error.
- OCaml standard library `Uchar.t` support. At the API level only
some cases of `Jsonm.error` change.
- Uutf 1.0.0 support.
- Safe string support.
- Build depend on topkg.
- Relicensed from BSD3 to ISC.
v0.9.1 2012-08-05 Lausanne
--------------------------
- OASIS 0.3.0 support.
v0.9.0 2012-05-05 La Forclaz (VS)
---------------------------------
First release.
Copyright (c) 2012 Daniel C. Bünzli
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-------------------------------------------------------------------------------
Jsonm - Non-blocking streaming JSON codec for OCaml
Release 0.9.1
-------------------------------------------------------------------------------
Jsonm is a non-blocking streaming codec to decode and encode the JSON
data format. It can process JSON text without blocking on IO and
without a complete in-memory representation of the data.
The alternative "uncut" codec also processes whitespace and
(non-standard) JSON with JavaScript comments.
Jsonm is made of a single module and depends on [Uutf][1]. It is distributed
under the BSD3 license.
[1]: http://erratique.ch/software/uutf
Home page: http://erratique.ch/software/jsonm
Contact: Daniel Bünzli <daniel.buenzli at erratique.ch>
Installation
------------
To install Jsonm you need at least :
OCaml >= 3.12.0
uutf
If you have `findlib`, it can be installed by typing :
ocaml setup.ml -configure
ocaml setup.ml -build
ocaml setup.ml -install
If you don't, `jsonm.mli` and `jsonm.ml` contain everything, the
code, the documentation and the license. Install the dependencies and
use the sources the way you want. For example if you use `ocamlbuild`
you can issue the following commands from the root directory of your
project :
ln -s /path/to/jsonm-0.9.1/src jsonm
echo "<jsonm> : include" >> _tags
Documentation
-------------
The documentation and API reference is automatically generated by
`ocamldoc` from `jsonm.mli`. For you convenience you can find a
generated version in the `doc` directory of the distribution.
Sample programs
---------------
Sample programs are located in the `test` directory of the
distribution. They can be built with:
ocamlbuild test/tests.otarget
The resulting binaries are in `_build/test` :
- `test.native` tests the library, nothing should fail.
- `ocamltweets.native` gives you the latest tweets about OCaml.
- `jsontrip.native` among other things, reads JSON on `stdin` and rewrites it
on `stdout`. Invoke with `-help` for more information.
Jsonm — Non-blocking streaming JSON codec for OCaml
-------------------------------------------------------------------------------
v1.0.1
Jsonm is a non-blocking streaming codec to decode and encode the JSON
data format. It can process JSON text without blocking on IO and
without a complete in-memory representation of the data.
The alternative "uncut" codec also processes whitespace and
(non-standard) JSON with JavaScript comments.
Jsonm is made of a single module and depends on [Uutf][uutf]. It is distributed
under the ISC license.
[uutf]: http://erratique.ch/software/uutf
Home page: http://erratique.ch/software/jsonm
Contact: Daniel Bünzli `<daniel.buenzl i@erratique.ch>`
## Installation
Jsonm can be installed with `opam`:
opam install jsonm
If you don't use `opam` consult the [`opam`](opam) file for build
instructions.
## Documentation
The documentation and API reference is automatically generated by
`ocamldoc` from the interfaces. It can be consulted [online][doc]
and there is a generated version in the `doc` directory of the
distribution.
[doc]: http://erratique.ch/software/jsonm/doc/Jsonm
## Sample programs
If you installed jsonm with `opam`, it installed the `jsontrip` binary
which, among other things, reads JSON on `stdin` and rewrites it on
`stdout`; invoke with `-help` for more information. Sample code is
located in the directory `opam config var jsonm:doc`.
In the distribution sample programs are located in the `test`
directory of the distribution. They can be built with:
ocamlbuild -use-ocamlfind test/tests.otarget
The resulting binaries are in `_build/test`.
val skip : decoder -> [ `A | `O | `Element | `Member ] -> unit
(** [skip d construct] skips lexemes depending on [construct]:
{ul
{- [`A] skips {e past} the [`A_end] matching the last decoded [`A_start].}
{- [`O] skips {e past} the [`O_end] matching the last decoded [`O_start].}
{- [`Element] skips {e to} the next element of the last decoded
[`A_start] or {e to} [`A_end] if there is none.}
{- [`Member] skips {e to} the next [`Name] of the last decoded
[`O_start] or {e to} [`O_end] if there is none.}}
{b Raises} [Invalid_argument] if [d] is not in the right
state to skip [construct]. *)
OASISFormat: 0.3
Name: jsonm
Version: 0.9.1
Synopsis: Non-blocking streaming JSON codec for OCaml
Authors: Daniel Bünzli <daniel.buenzli at erratique.ch>
Copyrights: (c) 2012 Daniel C. Bünzli
License: BSD3
Homepage: http://erratique.ch/software/jsonm
Description:
Jsonm is a non-blocking streaming codec to decode and encode the JSON
data format. It can process JSON text without blocking on IO and
without a complete in-memory representation of the data.
.
The alternative "uncut" codec also processes whitespace and
(non-standard) JSON with JavaScript comments.
.
Jsonm is made of a single module and depends on [Uutf][1]. It is distributed
under the BSD3 license.
.
[1]: http://erratique.ch/software/uutf
OCamlVersion: >= 3.12.0
Plugins: META (0.3)
BuildTools:ocamlbuild
Library jsonm
Path: src
BuildDepends: uutf
Modules: Jsonm
Executable jsontrip
Path: test
MainIs: jsontrip.ml
CompiledObject: Best
BuildDepends: jsonm, unix
Executable ocamltweets
Path: test
MainIs: ocamltweets.ml
CompiledObject: Best
BuildDepends: jsonm, unix
Executable test
Path: test
MainIs: test.ml
CompiledObject: Best
BuildDepends: jsonm
Install: false
Executable jtree
Path: test
MainIs: jtree.ml
CompiledObject: Best
BuildDepends: jsonm
Install: false
Executable examples
Path: test
MainIs: examples.ml
CompiledObject: Best
BuildDepends: unix, jsonm
Install: false
Test test
Command: $test
Document api
Title: Jsonm's documentation and API reference
Type: ocamlbuild (0.3)
BuildTools+: ocamldoc
XOCamlbuildLibraries: jsonm
XOCamlbuildPath: doc
Document distribution
Title: "Jsonm's README and CHANGES files"
DataFiles: README CHANGES
Document samples
Title: "Jsonm's sample code"
DataFiles: test/*.ml
SourceRepository head
Type: git
Location: git://erratique.ch/repos/jsonm.git
Browser: http://erratique.ch/repos/jsonm
# OASIS_START
# DO NOT EDIT (digest: 54c93e7fcddb1aaab3479ba2cdfacd4e)
# Ignore VCS directories, you can use the same kind of rule outside
# OASIS_START/STOP if you want to exclude directories that contains
# useless stuff for the build process
<**/.svn>: -traverse
<**/.svn>: not_hygienic
".bzr": -traverse
".bzr": not_hygienic
".hg": -traverse
".hg": not_hygienic
".git": -traverse
".git": not_hygienic
"_darcs": -traverse
"_darcs": not_hygienic
# Library jsonm
"src/jsonm.cmxs": use_jsonm
<src/*.ml{,i}>: pkg_uutf
# Executable jsontrip
<test/jsontrip.{native,byte}>: use_jsonm
<test/jsontrip.{native,byte}>: pkg_unix
<test/jsontrip.{native,byte}>: pkg_uutf
# Executable ocamltweets
<test/ocamltweets.{native,byte}>: use_jsonm
<test/ocamltweets.{native,byte}>: pkg_unix
<test/ocamltweets.{native,byte}>: pkg_uutf
# Executable test
<test/test.{native,byte}>: use_jsonm
<test/test.{native,byte}>: pkg_uutf
# Executable jtree
<test/jtree.{native,byte}>: use_jsonm
<test/jtree.{native,byte}>: pkg_uutf
# Executable examples
<test/examples.{native,byte}>: use_jsonm
<test/examples.{native,byte}>: pkg_unix
<test/examples.{native,byte}>: pkg_uutf
<test/*.ml{,i}>: use_jsonm
<test/*.ml{,i}>: pkg_unix
<test/*.ml{,i}>: pkg_uutf
# OASIS_STOP
true : bin_annot, safe_string, package(bytes), package(uchar), package(uutf)
<src> : include
<test> : include
<test/jsontrip.*> : package(unix)
<test/examples.*> : package(unix)
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link rel="next" href="Jsonm.Uncut.html">
<link rel="Up" href="Jsonm.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Jsonm.Manual</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="Jsonm.html" title="Jsonm">Up</a>
&nbsp;<a class="post" href="Jsonm.Uncut.html" title="Jsonm.Uncut">Next</a>
</div>
<h1>Module <a href="type_Jsonm.Manual.html">Jsonm.Manual</a></h1>
<pre><span class="keyword">module</span> Manual: <code class="code"><span class="keyword">sig</span></code> <a href="Jsonm.Manual.html">..</a> <code class="code"><span class="keyword">end</span></code></pre>Manual input sources and output destinations.
<p>
<b>Warning.</b> Use only with <code class="code"><span class="keywordsign">`</span><span class="constructor">Manual</span></code> decoders and encoders.<br>
<hr width="100%">
<pre><span id="VALsrc"><span class="keyword">val</span> src</span> : <code class="type"><a href="Jsonm.html#TYPEdecoder">Jsonm.decoder</a> -> string -> int -> int -> unit</code></pre><div class="info">
<code class="code">src d s j l</code> provides <code class="code">d</code> with <code class="code">l</code> bytes to read, starting
at <code class="code">j</code> in <code class="code">s</code>. This byte range is read by calls to <a href="Jsonm.html#VALdecode"><code class="code"><span class="constructor">Jsonm</span>.decode</code></a> until
<code class="code"><span class="keywordsign">`</span><span class="constructor">Await</span></code> is returned. To signal the end of input call the function
with <code class="code">l = 0</code>.<br>
</div>
<pre><span id="VALdst"><span class="keyword">val</span> dst</span> : <code class="type"><a href="Jsonm.html#TYPEencoder">Jsonm.encoder</a> -> string -> int -> int -> unit</code></pre><div class="info">
<code class="code">dst e s j l</code> provides <code class="code">e</code> with <code class="code">l</code> bytes to write, starting
at <code class="code">j</code> in <code class="code">s</code>. This byte rang is written by calls to <a href="Jsonm.html#VALencode"><code class="code"><span class="constructor">Jsonm</span>.encode</code></a> with <code class="code">e</code>
until <code class="code"><span class="keywordsign">`</span><span class="constructor">Partial</span></code> is returned. Use <a href="Jsonm.Manual.html#VALdst_rem"><code class="code"><span class="constructor">Jsonm</span>.<span class="constructor">Manual</span>.dst_rem</code></a> to know the remaining
number of non-written free bytes in <code class="code">s</code>.<br>
</div>
<pre><span id="VALdst_rem"><span class="keyword">val</span> dst_rem</span> : <code class="type"><a href="Jsonm.html#TYPEencoder">Jsonm.encoder</a> -> int</code></pre><div class="info">
<code class="code">dst_rem e</code> is the remaining number of non-written, free bytes
in the last buffer provided with <a href="Jsonm.Manual.html#VALdst"><code class="code"><span class="constructor">Jsonm</span>.<span class="constructor">Manual</span>.dst</code></a>.<br>
</div>
</body></html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link rel="previous" href="Jsonm.Manual.html">
<link rel="Up" href="Jsonm.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><link title="Uncut data model" rel="Section" href="#uncutdatamodel">
<link title="Decode" rel="Section" href="#1_Decode">
<link title="Encode" rel="Section" href="#1_Encode">
<title>Jsonm.Uncut</title>
</head>
<body>
<div class="navbar"><a class="pre" href="Jsonm.Manual.html" title="Jsonm.Manual">Previous</a>
&nbsp;<a class="up" href="Jsonm.html" title="Jsonm">Up</a>
&nbsp;</div>
<h1>Module <a href="type_Jsonm.Uncut.html">Jsonm.Uncut</a></h1>
<pre><span class="keyword">module</span> Uncut: <code class="code"><span class="keyword">sig</span></code> <a href="Jsonm.Uncut.html">..</a> <code class="code"><span class="keyword">end</span></code></pre>Codec with comments and whitespace.
<p>
The uncut codec also processes whitespace and JavaScript
comments. The latter is non-standard JSON, fail on <code class="code"><span class="keywordsign">`</span><span class="constructor">Comment</span></code>
decoding if you want to process whitespace but stick to the standard.
<p>
The uncut codec preserves as much of the original input as
possible. Perfect round-trip with <code class="code"><span class="constructor">Jsonm</span></code> is however impossible for
the following reasons:
<ul>
<li>Escapes unescaped by the decoder may not be escaped or escaped
differently by the encoder.</li>
<li>The encoder automatically inserts name separator <code class="code"><span class="string">':'</span></code> and
value separators <code class="code"><span class="string">","</span></code>. If you just reencode the sequence of
decodes, whitespace and comments may (harmlessly, but significantly)
commute with these separators.</li>
<li>Internally the encoder uses <code class="code"><span class="constructor">U</span>+000<span class="constructor">A</span></code> (<code class="code"><span class="string">'\n'</span></code>) for newlines.</li>
<li><code class="code"><span class="keywordsign">`</span><span class="constructor">Float</span></code> lexemes may be rewritten differently by the encoder.</li>
</ul>
<br>
<hr width="100%">
<br>
<span id="uncutdatamodel"><h1>Uncut data model</h1></span>
<p>
The uncut data model is the same as the regular
<a href="Jsonm.html#datamodel">data model</a>, except that before or after any lexeme
you may decode/encode one or more:
<ul>
<li><code class="code"><span class="keywordsign">`</span><span class="constructor">White</span> w</code>, representing JSON whitespace <code class="code">w</code>. On input
the sequence CR (<code class="code"><span class="constructor">U</span>+000<span class="constructor">D</span></code>) and CRLF (&lt;<code class="code"><span class="constructor">U</span>+000<span class="constructor">A</span></code>, <code class="code"><span class="constructor">U</span>+000<span class="constructor">A</span></code>&gt;)
are normalized to <code class="code"><span class="constructor">U</span>+000<span class="constructor">A</span></code>. The string <code class="code">w</code> must be
a sequence of <code class="code"><span class="constructor">U</span>+0020</code>, <code class="code"><span class="constructor">U</span>+0009</code>, <code class="code"><span class="constructor">U</span>+000<span class="constructor">A</span></code> or <code class="code"><span class="constructor">U</span>+000<span class="constructor">D</span></code>
characters (<code class="code"><span class="string">' '</span></code>, <code class="code"><span class="string">'\t'</span></code>, <code class="code"><span class="string">'\n'</span></code>, <code class="code"><span class="string">'\r'</span></code>).</li>
<li><code class="code"><span class="keywordsign">`</span><span class="constructor">Comment</span> (<span class="keywordsign">`</span><span class="constructor">S</span>, c)</code>, representing a JavaScript single line
comment <code class="code">c</code>. <code class="code">c</code> is the comment's content without the starting
<code class="code">//</code> and the ending newline. The string <code class="code">c</code> must not contain any newline.
</li>
<li><code class="code"><span class="keywordsign">`</span><span class="constructor">Comment</span> (<span class="keywordsign">`</span><span class="constructor">M</span>, c)</code>, representing a JavaScript multi-line
comment <code class="code">c</code>. <code class="code">c</code> is the comment's content without the starting
<code class="code">/*</code> and the ending <code class="code">*/</code>. The string <code class="code">c</code> must not contain the
sequence <code class="code">*/</code>. </li>
</ul>
<p>
<b>Warning.</b> <a href="Jsonm.Uncut.html#VALencode"><code class="code"><span class="constructor">Jsonm</span>.<span class="constructor">Uncut</span>.encode</code></a> does not check the above constraints on
<code class="code">w</code> and <code class="code">c</code>.<br>
<br>
<span id="1_Decode"><h1>Decode</h1></span><br>
<pre><span id="VALdecode"><span class="keyword">val</span> decode</span> : <code class="type"><a href="Jsonm.html#TYPEdecoder">Jsonm.decoder</a> -><br> [ `Await<br> | `Comment of [ `M | `S ] * string<br> | `End<br> | `Error of <a href="Jsonm.html#TYPEerror">Jsonm.error</a><br> | `Lexeme of <a href="Jsonm.html#TYPElexeme">Jsonm.lexeme</a><br> | `White of string ]</code></pre><div class="info">
<code class="code">decode d</code> is like <a href="Jsonm.html#VALdecode"><code class="code"><span class="constructor">Jsonm</span>.decode</code></a> but for the
<a href="Jsonm.Uncut.html#uncutdatamodel">uncut data model</a>.<br>
</div>
<pre><span id="VALpp_decode"><span class="keyword">val</span> pp_decode</span> : <code class="type">Format.formatter -><br> [< `Await<br> | `Comment of [ `M | `S ] * string<br> | `End<br> | `Error of <a href="Jsonm.html#TYPEerror">Jsonm.error</a><br> | `Lexeme of <a href="Jsonm.html#TYPElexeme">Jsonm.lexeme</a><br> | `White of string ] -><br> unit</code></pre><div class="info">
<code class="code">pp_decode ppf v</code> prints an unspecified representation of <code class="code">v</code>
on <code class="code">ppf</code>.<br>
</div>
<br>
<span id="1_Encode"><h1>Encode</h1></span><br>
<pre><span id="VALencode"><span class="keyword">val</span> encode</span> : <code class="type"><a href="Jsonm.html#TYPEencoder">Jsonm.encoder</a> -><br> [< `Await<br> | `Comment of [ `M | `S ] * string<br> | `End<br> | `Lexeme of <a href="Jsonm.html#TYPElexeme">Jsonm.lexeme</a><br> | `White of string ] -><br> [ `Ok | `Partial ]</code></pre><div class="info">
<code class="code">encode</code> is like <a href="Jsonm.html#VALencode"><code class="code"><span class="constructor">Jsonm</span>.encode</code></a> but for the <a href="Jsonm.Uncut.html#uncutdatamodel">
uncut data model</a>.
<p>
<b>IMPORTANT.</b> Never encode <code class="code"><span class="keywordsign">`</span><span class="constructor">Comment</span></code> for the web, it is
non-standard and breaks interoperability.<br>
</div>
</body></html>
\ No newline at end of file
This diff is collapsed.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title></title>
</head>
<body>
<h1></h1>
<ul class="indexlist">
<li><a href="index_types.html">Index of types</a></li>
<li><a href="index_values.html">Index of values</a></li>
<li><a href="index_modules.html">Index of modules</a></li>
</ul>
<br/><br>
<table class="indextable">
<tr><td class="module"><a href="Jsonm.html">Jsonm</a></td><td><div class="info">
Non-blocking streaming JSON codec.
</div>
</td></tr>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of class attributes</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of class attributes</h1>
<table>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of class types</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of class types</h1>
<table>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of classes</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of classes</h1>
<table>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of exceptions</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of exceptions</h1>
<table>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of class methods</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of class methods</h1>
<table>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of module types</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of module types</h1>
<table>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of modules</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of modules</h1>
<table>
<tr><td align="left"><br>J</td></tr>
<tr><td><a href="Jsonm.html">Jsonm</a> </td>
<td><div class="info">
Non-blocking streaming JSON codec.
</div>
</td></tr>
<tr><td align="left"><br>M</td></tr>
<tr><td><a href="Jsonm.Manual.html">Manual</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td><div class="info">
Manual input sources and output destinations.
</div>
</td></tr>
<tr><td align="left"><br>U</td></tr>
<tr><td><a href="Jsonm.Uncut.html">Uncut</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td><div class="info">
Codec with comments and whitespace.
</div>
</td></tr>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of types</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of types</h1>
<table>
<tr><td align="left"><br>D</td></tr>
<tr><td><a href="Jsonm.html#TYPEdecoder">decoder</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td><div class="info">
The type for JSON decoders.
</div>
</td></tr>
<tr><td><a href="Jsonm.html#TYPEdst">dst</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td><div class="info">
The type for output destinations.
</div>
</td></tr>
<tr><td align="left"><br>E</td></tr>
<tr><td><a href="Jsonm.html#TYPEencoder">encoder</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td><div class="info">
The type for JSON encoders.
</div>
</td></tr>
<tr><td><a href="Jsonm.html#TYPEencoding">encoding</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td><div class="info">
The type for Unicode encoding schemes.
</div>
</td></tr>
<tr><td><a href="Jsonm.html#TYPEerror">error</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td></td></tr>
<tr><td align="left"><br>L</td></tr>
<tr><td><a href="Jsonm.html#TYPElexeme">lexeme</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td><div class="info">
The type for JSON lexemes.
</div>
</td></tr>
<tr><td align="left"><br>S</td></tr>
<tr><td><a href="Jsonm.html#TYPEsrc">src</a> [<a href="Jsonm.html">Jsonm</a>]</td>
<td><div class="info">
The type for input sources.
</div>
</td></tr>
</table>
</body>
</html>
\ No newline at end of file
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Jsonm" rel="Chapter" href="Jsonm.html"><title>Index of values</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;</div>
<h1>Index of values</h1>
<table>
<tr><td align="left"><br>D</td></tr>
<tr><td><a href="Jsonm.Uncut.html#VALdecode">decode</a> [<a href="Jsonm.Uncut.html">Jsonm.Uncut</a>]</td>
<td><div class="info">
<code class="code">decode d</code> is like <a href="Jsonm.html#VALdecode"><code class="code"><span class="constructor">Jsonm</span>.decode</code></a> but for the
<a href="Jsonm.Uncut.html#uncutdatamodel">uncut data model</a>.