<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/protoc/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 23 Feb 2015 13:55:40 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/protoc/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v11
+++ v12
@@ -5,6 +5,7 @@
 * [JSON](http://json.org/)
 * [MessagePack](http://msgpack.org/)
 * [Transenc](http://transenc.sourceforge.net/)
+* [UBJSON](http://ubjson.org/) (draft 9)

 Supports two types of serialization: full parsing results in a [Document Object Model](http://en.wikipedia.org/wiki/Document_Object_Model), and pull parsing is useful for streaming input.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Mon, 23 Feb 2015 13:55:40 -0000</pubDate><guid>https://sourceforge.netbc12024d8c46dcb77f3f0730a4c14168e2cca16e</guid></item><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v10
+++ v11
@@ -6,9 +6,28 @@
 * [MessagePack](http://msgpack.org/)
 * [Transenc](http://transenc.sourceforge.net/)

-Supports two types of serialization: pull parsing is useful for streaming input, and full parsing that results in a [Document Object Model](http://en.wikipedia.org/wiki/Document_Object_Model).
+Supports two types of serialization: full parsing results in a [Document Object Model](http://en.wikipedia.org/wiki/Document_Object_Model), and pull parsing is useful for streaming input.

 Compatible with Boost.Serialization.
+
+### Full Parsing ###
+
+The full parser transforms the entire input into a data structure. This is done via an input archive (called &lt;code&gt;iarchive&lt;/code&gt;.) You can either use a generic tree data structure, such as [dynamic-cpp](http://dynamic-cpp.googlecode.com/), as the Document Object Model, or you can parse the input directly into your own data structures or the standard containers in C++.
+
+    :::C++
+    iarchive input(buffer.data(), buffer.data() + buffer.size());
+    dynamic::var result;
+    input &gt;&gt; result;
+&lt;br /&gt;
+
+Formatting a full data struture is done with an output archive (called &lt;code&gt;oarchive&lt;/code&gt;.)
+
+    :::C++
+    dynamic::var data;
+    // Insert some values into data
+    std::ostringstream result;
+    stream_oarchive output(result)
+    output &lt;&lt; data;

 ### Pull Parsing ###

@@ -41,25 +60,6 @@
     std::cout &lt;&lt; output.str() &lt;&lt; std::endl;
 &lt;br /&gt;

-### Full Parsing ###
-
-The full parser transforms the entire input into a data structure. This is done via an input archive (called &lt;code&gt;iarchive&lt;/code&gt;.) You can either use a generic tree data structure, such as [dynamic-cpp](http://dynamic-cpp.googlecode.com/), as the Document Object Model, or you can parse the input directly into your own data structures or the standard containers in C++.
-
-    :::C++
-    iarchive input(buffer.data(), buffer.data() + buffer.size());
-    dynamic::var result;
-    input &gt;&gt; result;
-&lt;br /&gt;
-
-Formatting a full data struture is done with an output archive (called &lt;code&gt;oarchive&lt;/code&gt;.)
-
-    :::C++
-    dynamic::var data;
-    // Insert some values into data
-    std::ostringstream result;
-    stream_oarchive output(result)
-    output &lt;&lt; data;
-
 ## Depedencies ##

 Depends on Boost.Serialization. Test suites depends on Boost.Test.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Thu, 08 May 2014 07:23:33 -0000</pubDate><guid>https://sourceforge.net23ceab811f45fb0ba3be9328a15deb46f8177b8d</guid></item><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v9
+++ v10
@@ -12,28 +12,33 @@

 ### Pull Parsing ###

-The pull parser (called &lt;code&gt;reader&lt;/code&gt;) is based on the [Iterator design pattern](http://en.wikipedia.org/wiki/Iterator_pattern), where the input is interpreted piece by piece. The API is something like this:
+The pull parser (called &lt;code&gt;reader&lt;/code&gt;) is based on the [Iterator design pattern](http://en.wikipedia.org/wiki/Iterator_pattern), where the input is interpreted piece by piece. A simple example is:

     :::C++
-    class reader
-    {
-    public:
-        bool next(); // Advances to the next token
-        token type(); // Returns the current token
-        int get_bool() const; // Returns current value as boolean
-        // ... and so on for other types
-    };
+    std::string buffer = "[42, 43]";
+    json::reader reader(buffer.data(), buffer.data() + buffer.size());
+    assert(reader.type() == token::token_array_begin);
+    reader.next();
+    std::cout &lt;&lt; reader.get_integer() &lt;&lt; std::endl;
+    reader.next();
+    std::cout &lt;&lt; reader.get_integer() &lt;&lt; std::endl;
+    reader.next();
+    assert(reader.type() == token::token_array_end);
+    reader.next();
+    assert(reader.type() == token::token_eof);
 &lt;br /&gt;

-Pull parsers are often paired with push formatters (called &lt;code&gt;writer&lt;/code&gt;), which will create the output stream piece by piece:
+Pull parsers are often paired with push formatters (called &lt;code&gt;writer&lt;/code&gt;), which will create the output stream piece by piece. This example shows how to recreate the parsed buffer from the previous example:

     :::C++
-    class writer
-    {
-    public:
-        void write(bool); // Ouputs a boolean
-        // ... and so on for other types
-    };
+    std::ostringstream output;
+    output_stream buffer(output);
+    json::writer writer(buffer);
+    writer.write_array_begin();
+    writer.write(42);
+    writer.write(43);
+    writer.write_array_end();
+    std::cout &lt;&lt; output.str() &lt;&lt; std::endl;
 &lt;br /&gt;

 ### Full Parsing ###
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Wed, 09 Apr 2014 16:12:07 -0000</pubDate><guid>https://sourceforge.netb11931f4112b064d2ff81c63485237188c48c135</guid></item><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v8
+++ v9
@@ -1,9 +1,60 @@
-C++ pull parsing and serialization for various encoding formats:
+# Protocol Serialization #

+C++ serialization of various encoding formats:
+
+* [JSON](http://json.org/)
+* [MessagePack](http://msgpack.org/)
 * [Transenc](http://transenc.sourceforge.net/)
-* [JSON](http://json.org/)

-The following encoding formats are under development:
+Supports two types of serialization: pull parsing is useful for streaming input, and full parsing that results in a [Document Object Model](http://en.wikipedia.org/wiki/Document_Object_Model).

-* [MessagePack](http://msgpack.org/)
-* [Univeral Binary JSON](http://ubjson.org/)
+Compatible with Boost.Serialization.
+
+### Pull Parsing ###
+
+The pull parser (called &lt;code&gt;reader&lt;/code&gt;) is based on the [Iterator design pattern](http://en.wikipedia.org/wiki/Iterator_pattern), where the input is interpreted piece by piece. The API is something like this:
+
+    :::C++
+    class reader
+    {
+    public:
+        bool next(); // Advances to the next token
+        token type(); // Returns the current token
+        int get_bool() const; // Returns current value as boolean
+        // ... and so on for other types
+    };
+&lt;br /&gt;
+
+Pull parsers are often paired with push formatters (called &lt;code&gt;writer&lt;/code&gt;), which will create the output stream piece by piece:
+
+    :::C++
+    class writer
+    {
+    public:
+        void write(bool); // Ouputs a boolean
+        // ... and so on for other types
+    };
+&lt;br /&gt;
+
+### Full Parsing ###
+
+The full parser transforms the entire input into a data structure. This is done via an input archive (called &lt;code&gt;iarchive&lt;/code&gt;.) You can either use a generic tree data structure, such as [dynamic-cpp](http://dynamic-cpp.googlecode.com/), as the Document Object Model, or you can parse the input directly into your own data structures or the standard containers in C++.
+
+    :::C++
+    iarchive input(buffer.data(), buffer.data() + buffer.size());
+    dynamic::var result;
+    input &gt;&gt; result;
+&lt;br /&gt;
+
+Formatting a full data struture is done with an output archive (called &lt;code&gt;oarchive&lt;/code&gt;.)
+
+    :::C++
+    dynamic::var data;
+    // Insert some values into data
+    std::ostringstream result;
+    stream_oarchive output(result)
+    output &lt;&lt; data;
+
+## Depedencies ##
+
+Depends on Boost.Serialization. Test suites depends on Boost.Test.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Thu, 27 Mar 2014 21:29:17 -0000</pubDate><guid>https://sourceforge.netf70a26f2df44cd3c79b2e81efc52abefab848683</guid></item><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -1,4 +1,4 @@
-C++ serialization for various encoding formats:
+C++ pull parsing and serialization for various encoding formats:

 * [Transenc](http://transenc.sourceforge.net/)
 * [JSON](http://json.org/)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Fri, 07 Mar 2014 09:03:11 -0000</pubDate><guid>https://sourceforge.net444d05b83111cda31d66457ccdccc4dcc2b2244a</guid></item><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -1,9 +1,9 @@
 C++ serialization for various encoding formats:

 * [Transenc](http://transenc.sourceforge.net/)
+* [JSON](http://json.org/)

 The following encoding formats are under development:

-* [JSON](http://json.org/)
 * [MessagePack](http://msgpack.org/)
 * [Univeral Binary JSON](http://ubjson.org/)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Fri, 31 Jan 2014 13:58:18 -0000</pubDate><guid>https://sourceforge.netfe70cb88ecf4d60a5013654ae7e3c45221c9e9af</guid></item><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -1,6 +1,9 @@
 C++ serialization for various encoding formats:

-* [JSON](http://json.org/) (under development)
-* [MessagePack](http://msgpack.org/) (under development)
-* [Transenc](http://transenc.sourceforge.net/) (under development)
-* [Univeral Binary JSON](http://ubjson.org/) (under development)
+* [Transenc](http://transenc.sourceforge.net/)
+
+The following encoding formats are under development:
+
+* [JSON](http://json.org/)
+* [MessagePack](http://msgpack.org/)
+* [Univeral Binary JSON](http://ubjson.org/)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Sun, 04 Aug 2013 13:21:56 -0000</pubDate><guid>https://sourceforge.netbcccc3081a487598075c7d2d088e89cd19a3f82b</guid></item><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -1,4 +1,4 @@
-C++ encoder/decoder for various binary formats:
+C++ serialization for various encoding formats:

 * [JSON](http://json.org/) (under development)
 * [MessagePack](http://msgpack.org/) (under development)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Tue, 02 Apr 2013 14:04:45 -0000</pubDate><guid>https://sourceforge.net75d971440acf0a866f183e4fbe55dbbc67278b04</guid></item><item><title>Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -1,5 +1,6 @@
 C++ encoder/decoder for various binary formats:

+* [JSON](http://json.org/) (under development)
 * [MessagePack](http://msgpack.org/) (under development)
 * [Transenc](http://transenc.sourceforge.net/) (under development)
 * [Univeral Binary JSON](http://ubjson.org/) (under development)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Tue, 02 Apr 2013 14:03:52 -0000</pubDate><guid>https://sourceforge.nete4a2bf8d9604ce5a8df33e7dcd643c76ebb244e8</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/protoc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,4 +1,5 @@
 C++ encoder/decoder for various binary formats:

-* [MessagePack](http://msgpack.org/)
-* [Univeral Binary JSON](http://ubjson.org/)
+* [MessagePack](http://msgpack.org/) (under development)
+* [Transenc](http://transenc.sourceforge.net/) (under development)
+* [Univeral Binary JSON](http://ubjson.org/) (under development)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Wed, 20 Mar 2013 11:08:45 -0000</pubDate><guid>https://sourceforge.net25bc77235370945a6c6dd9443c52b77b4c591c4b</guid></item></channel></rss>