http://git-wip-us.apache.org/repos/asf/mesos-site/blob/ab5626ca/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
----------------------------------------------------------------------
diff --git 
a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
 
b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
index 573f0f2..1d2b6c3 100644
--- 
a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
+++ 
b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
@@ -505,573 +505,585 @@
 <div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160; 
         field-&gt;enum_type()-&gt;FindValueByName(<span 
class="keywordtype">string</span>.value);</div>
 <div class="line"><a name="l00452"></a><span class="lineno">  
452</span>&#160;</div>
 <div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160; 
       <span class="keywordflow">if</span> (descriptor == <span 
class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160; 
         <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Failed to 
find enum for &#39;&quot;</span> + <span 
class="keywordtype">string</span>.value + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160; 
       }</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  
456</span>&#160;</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160; 
         reflection-&gt;AddEnum(message, field, descriptor);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160; 
         reflection-&gt;SetEnum(message, field, descriptor);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160; 
       }</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160; 
       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160; 
     }</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160; 
     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Not 
expecting a JSON string for field &#39;&quot;</span> +</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160; 
                    field-&gt;name() + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160; 
   }</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160; 
 }</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  
470</span>&#160;</div>
-<div class="line"><a name="l00471"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parser.html#a3a4a8f751bce63053d89a0f130b36f73">
  471</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#a3a4a8f751bce63053d89a0f130b36f73">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Number.html">JSON::Number</a>&amp; number)<span 
class="keyword"> const</span></div>
-<div class="line"><a name="l00472"></a><span class="lineno">  
472</span>&#160;<span class="keyword">  </span>{</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160; 
   <span class="keywordflow">switch</span> (field-&gt;type()) {</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_DOUBLE:</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160; 
         reflection-&gt;AddDouble(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;<span
 class="keywordtype">double</span>&gt;());</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160; 
         reflection-&gt;SetDouble(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;<span
 class="keywordtype">double</span>&gt;());</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160; 
       }</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160; 
       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_FLOAT:</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160; 
         reflection-&gt;AddFloat(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;<span
 class="keywordtype">float</span>&gt;());</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160; 
         reflection-&gt;SetFloat(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;<span
 class="keywordtype">float</span>&gt;());</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160; 
       }</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160; 
       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_INT64:</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_SINT64:</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_SFIXED64:</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160; 
         reflection-&gt;AddInt64(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;int64_t&gt;());</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160; 
         reflection-&gt;SetInt64(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;int64_t&gt;());</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160; 
       }</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160; 
       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_UINT64:</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_FIXED64:</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160; 
         reflection-&gt;AddUInt64(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;uint64_t&gt;());</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160; 
         reflection-&gt;SetUInt64(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;uint64_t&gt;());</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160; 
       }</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160; 
       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_INT32:</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_SINT32:</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_SFIXED32:</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160; 
         reflection-&gt;AddInt32(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;int32_t&gt;());</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160; 
         reflection-&gt;SetInt32(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;int32_t&gt;());</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160; 
       }</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160; 
       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_UINT32:</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_FIXED32:</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160; 
         reflection-&gt;AddUInt32(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;uint32_t&gt;());</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160; 
         reflection-&gt;SetUInt32(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;uint32_t&gt;());</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160; 
       }</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160; 
       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160; 
     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Not 
expecting a JSON number for field &#39;&quot;</span> +</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160; 
                    field-&gt;name() + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160; 
   }</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160; 
 }</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  
528</span>&#160;</div>
-<div class="line"><a name="l00529"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parser.html#acae4b0b238dcfb6546792638814df4d3">
  529</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#acae4b0b238dcfb6546792638814df4d3">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Array.html">JSON::Array</a>&amp; array)<span 
class="keyword"> const</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno">  
530</span>&#160;<span class="keyword">  </span>{</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160; 
   <span class="keywordflow">if</span> (!field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Not 
expecting a JSON array for field &#39;&quot;</span> +</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160; 
                  field-&gt;name() + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160; 
   }</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  
535</span>&#160;</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160; 
   <span class="keywordflow">foreach</span> (<span class="keyword">const</span> 
<a class="code" href="structJSON_1_1Value.html">JSON::Value</a>&amp; value, 
array.<a class="code" 
href="structJSON_1_1Array.html#aed41033b7cd6a2c2e7dcc6f0c48a4563">values</a>) 
{</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> apply =</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160; 
       boost::apply_visitor(<a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#a7bb85ab464aae1862c4bd20ce528fbe2">Parser</a>(message,
 field), value);</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  
539</span>&#160;</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160; 
     <span class="keywordflow">if</span> (apply.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(apply.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160; 
     }</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160; 
   }</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  
544</span>&#160;</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160; 
 }</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160; 
         <span class="keywordflow">if</span> (field-&gt;is_required()) {</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160; 
           <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Failed to 
find enum for &#39;&quot;</span> + <span 
class="keywordtype">string</span>.value + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160; 
         }</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  
457</span>&#160;</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160; 
         <span class="comment">// Unrecognized enum value will be discarded if 
this is not a</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160; 
         <span class="comment">// required enum field, which makes the 
field&#39;s `has..` accessor</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160; 
         <span class="comment">// return false and its getter return the first 
value listed in</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160; 
         <span class="comment">// the enum definition, or the default value if 
one is specified.</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160; 
         <span class="comment">//</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160; 
         <span class="comment">// This is the deserialization behavior of 
proto2, see the link</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160; 
         <span class="comment">// below for details:</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160; 
         <span class="comment">// 
https://developers.google.com/protocol-buffers/docs/proto#updating</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160; 
         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160; 
       }</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  
468</span>&#160;</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160; 
         reflection-&gt;AddEnum(message, field, descriptor);</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160; 
         reflection-&gt;SetEnum(message, field, descriptor);</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160; 
       }</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160; 
       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160; 
     }</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160; 
     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Not 
expecting a JSON string for field &#39;&quot;</span> +</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160; 
                    field-&gt;name() + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160; 
   }</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160; 
 }</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  
482</span>&#160;</div>
+<div class="line"><a name="l00483"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parser.html#a3a4a8f751bce63053d89a0f130b36f73">
  483</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#a3a4a8f751bce63053d89a0f130b36f73">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Number.html">JSON::Number</a>&amp; number)<span 
class="keyword"> const</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  
484</span>&#160;<span class="keyword">  </span>{</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160; 
   <span class="keywordflow">switch</span> (field-&gt;type()) {</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_DOUBLE:</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160; 
         reflection-&gt;AddDouble(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;<span
 class="keywordtype">double</span>&gt;());</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160; 
         reflection-&gt;SetDouble(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;<span
 class="keywordtype">double</span>&gt;());</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160; 
       }</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160; 
       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_FLOAT:</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160; 
         reflection-&gt;AddFloat(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;<span
 class="keywordtype">float</span>&gt;());</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160; 
         reflection-&gt;SetFloat(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;<span
 class="keywordtype">float</span>&gt;());</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160; 
       }</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160; 
       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_INT64:</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_SINT64:</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_SFIXED64:</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160; 
         reflection-&gt;AddInt64(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;int64_t&gt;());</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160; 
         reflection-&gt;SetInt64(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;int64_t&gt;());</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160; 
       }</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160; 
       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_UINT64:</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_FIXED64:</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160; 
         reflection-&gt;AddUInt64(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;uint64_t&gt;());</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160; 
         reflection-&gt;SetUInt64(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;uint64_t&gt;());</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160; 
       }</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160; 
       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_INT32:</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_SINT32:</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_SFIXED32:</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160; 
         reflection-&gt;AddInt32(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;int32_t&gt;());</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160; 
         reflection-&gt;SetInt32(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;int32_t&gt;());</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160; 
       }</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160; 
       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_UINT32:</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_FIXED32:</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160; 
         reflection-&gt;AddUInt32(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;uint32_t&gt;());</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160; 
         reflection-&gt;SetUInt32(message, field, number.<a class="code" 
href="structJSON_1_1Number.html#a56cb07aeff197c76b03798cd5f25c347">as</a>&lt;uint32_t&gt;());</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160; 
       }</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160; 
       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160; 
     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Not 
expecting a JSON number for field &#39;&quot;</span> +</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160; 
                    field-&gt;name() + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160; 
   }</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160; 
 }</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  
540</span>&#160;</div>
+<div class="line"><a name="l00541"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parser.html#acae4b0b238dcfb6546792638814df4d3">
  541</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#acae4b0b238dcfb6546792638814df4d3">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Array.html">JSON::Array</a>&amp; array)<span 
class="keyword"> const</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno">  
542</span>&#160;<span class="keyword">  </span>{</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160; 
   <span class="keywordflow">if</span> (!field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Not 
expecting a JSON array for field &#39;&quot;</span> +</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160; 
                  field-&gt;name() + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160; 
   }</div>
 <div class="line"><a name="l00547"></a><span class="lineno">  
547</span>&#160;</div>
-<div class="line"><a name="l00548"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parser.html#aab7fd6adeb7c125547989b242f53870d">
  548</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#aab7fd6adeb7c125547989b242f53870d">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Boolean.html">JSON::Boolean</a>&amp; <span 
class="keywordtype">boolean</span>)<span class="keyword"> const</span></div>
-<div class="line"><a name="l00549"></a><span class="lineno">  
549</span>&#160;<span class="keyword">  </span>{</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160; 
   <span class="keywordflow">switch</span> (field-&gt;type()) {</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_BOOL:</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160; 
         reflection-&gt;AddBool(message, field, <span 
class="keywordtype">boolean</span>.value);</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160; 
         reflection-&gt;SetBool(message, field, <span 
class="keywordtype">boolean</span>.value);</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160; 
       }</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160; 
       <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160; 
     <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Not 
expecting a JSON boolean for field &#39;&quot;</span> +</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160; 
                    field-&gt;name() + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160; 
   }</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160; 
 }</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  
564</span>&#160;</div>
-<div class="line"><a name="l00565"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parser.html#aa702985522e2a7bf62e012da6f9a191d">
  565</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#aa702985522e2a7bf62e012da6f9a191d">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Null.html">JSON::Null</a>&amp;)<span class="keyword"> 
const</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno">  
566</span>&#160;<span class="keyword">  </span>{</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160; 
   <span class="comment">// We treat &#39;null&#39; as an unset field. Note 
that we allow</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160; 
   <span class="comment">// unset required fields here since the top-level 
parse</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160; 
   <span class="comment">// function is responsible for checking 
&#39;IsInitialized&#39;.</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160; 
 }</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  
572</span>&#160;</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  
573</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160; 
 google::protobuf::Message* message;</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160; 
 <span class="keyword">const</span> google::protobuf::Reflection* 
reflection;</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160; 
 <span class="keyword">const</span> google::protobuf::FieldDescriptor* 
field;</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  
577</span>&#160;};</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  
578</span>&#160;</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  
579</span>&#160;</div>
-<div class="line"><a name="l00580"></a><span class="lineno"><a class="line" 
href="namespaceprotobuf_1_1internal.html#a3cfa5c20c57cdc039693ab9c1d417681">  
580</a></span>&#160;<span class="keyword">inline</span> <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="namespaceprotobuf_1_1internal.html#a3cfa5c20c57cdc039693ab9c1d417681">parse</a>(</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160; 
   google::protobuf::Message* message,</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Object.html">JSON::Object</a>&amp; <span 
class="keywordtype">object</span>)</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  
583</span>&#160;{</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160; 
 <a class="code" 
href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> 
(</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160; 
     <span class="keyword">const</span> std::string&amp; <a class="code" 
href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>, 
<span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Value.html">JSON::Value</a>&amp; value, <span 
class="keywordtype">object</span>.values) {</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160; 
   <span class="comment">// Look for a field by this name.</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160; 
   <span class="keyword">const</span> google::protobuf::FieldDescriptor* field 
=</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160; 
     message-&gt;GetDescriptor()-&gt;FindFieldByName(name);</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  
589</span>&#160;</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160; 
   <span class="keywordflow">if</span> (field != <span 
class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> apply =</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160; 
       boost::apply_visitor(<a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html">Parser</a>(message, field), 
value);</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  
593</span>&#160;</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160; 
     <span class="keywordflow">if</span> (apply.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(apply.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160; 
     }</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160; 
   }</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160; 
 }</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  
599</span>&#160;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160; 
 <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  
601</span>&#160;}</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  
602</span>&#160;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  
603</span>&#160;</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  
604</span>&#160;<span class="comment">// Parses a single protobuf message of 
type T from a JSON::Object.</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno">  
605</span>&#160;<span class="comment">// NOTE: This struct is used by the 
public parse&lt;T&gt;() function below. See</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno">  
606</span>&#160;<span class="comment">// comments there for the reason why we 
opted for this design.</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno">  
607</span>&#160;<span class="keyword">template</span> &lt;<span 
class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00608"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parse.html">  608</a></span>&#160;<span 
class="keyword">struct </span><a class="code" 
href="structprotobuf_1_1internal_1_1Parse.html">Parse</a></div>
-<div class="line"><a name="l00609"></a><span class="lineno">  
609</span>&#160;{</div>
-<div class="line"><a name="l00610"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parse.html#a3203a718a8850dde037325b81d7d88c9">
  610</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;T&gt;</a> 
<a class="code" 
href="structprotobuf_1_1internal_1_1Parse.html#a3203a718a8850dde037325b81d7d88c9">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Value.html">JSON::Value</a>&amp; value)</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160; 
 {</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160; 
   static_assert(std::is_convertible&lt;T*, 
google::protobuf::Message*&gt;::value,</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160; 
                 <span class="stringliteral">&quot;T must be a protobuf 
message&quot;</span>);</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160; 
   <span class="keywordflow">foreach</span> (<span class="keyword">const</span> 
<a class="code" href="structJSON_1_1Value.html">JSON::Value</a>&amp; value, 
array.<a class="code" 
href="structJSON_1_1Array.html#aed41033b7cd6a2c2e7dcc6f0c48a4563">values</a>) 
{</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> apply =</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160; 
       boost::apply_visitor(<a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#a7bb85ab464aae1862c4bd20ce528fbe2">Parser</a>(message,
 field), value);</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  
551</span>&#160;</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160; 
     <span class="keywordflow">if</span> (apply.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(apply.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160; 
     }</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160; 
   }</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  
556</span>&#160;</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160; 
 }</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  
559</span>&#160;</div>
+<div class="line"><a name="l00560"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parser.html#aab7fd6adeb7c125547989b242f53870d">
  560</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#aab7fd6adeb7c125547989b242f53870d">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Boolean.html">JSON::Boolean</a>&amp; <span 
class="keywordtype">boolean</span>)<span class="keyword"> const</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno">  
561</span>&#160;<span class="keyword">  </span>{</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160; 
   <span class="keywordflow">switch</span> (field-&gt;type()) {</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160; 
     <span class="keywordflow">case</span> 
google::protobuf::FieldDescriptor::TYPE_BOOL:</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160; 
       <span class="keywordflow">if</span> (field-&gt;is_repeated()) {</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160; 
         reflection-&gt;AddBool(message, field, <span 
class="keywordtype">boolean</span>.value);</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160; 
       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160; 
         reflection-&gt;SetBool(message, field, <span 
class="keywordtype">boolean</span>.value);</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160; 
       }</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160; 
       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160; 
     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Not 
expecting a JSON boolean for field &#39;&quot;</span> +</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160; 
                    field-&gt;name() + <span 
class="stringliteral">&quot;&#39;&quot;</span>);</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160; 
   }</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160; 
 }</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  
576</span>&#160;</div>
+<div class="line"><a name="l00577"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parser.html#aa702985522e2a7bf62e012da6f9a191d">
  577</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html#aa702985522e2a7bf62e012da6f9a191d">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Null.html">JSON::Null</a>&amp;)<span class="keyword"> 
const</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  
578</span>&#160;<span class="keyword">  </span>{</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160; 
   <span class="comment">// We treat &#39;null&#39; as an unset field. Note 
that we allow</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160; 
   <span class="comment">// unset required fields here since the top-level 
parse</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160; 
   <span class="comment">// function is responsible for checking 
&#39;IsInitialized&#39;.</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160; 
   <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160; 
 }</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  
584</span>&#160;</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  
585</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160; 
 google::protobuf::Message* message;</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160; 
 <span class="keyword">const</span> google::protobuf::Reflection* 
reflection;</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160; 
 <span class="keyword">const</span> google::protobuf::FieldDescriptor* 
field;</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  
589</span>&#160;};</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  
590</span>&#160;</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  
591</span>&#160;</div>
+<div class="line"><a name="l00592"></a><span class="lineno"><a class="line" 
href="namespaceprotobuf_1_1internal.html#a3cfa5c20c57cdc039693ab9c1d417681">  
592</a></span>&#160;<span class="keyword">inline</span> <a class="code" 
href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="namespaceprotobuf_1_1internal.html#a3cfa5c20c57cdc039693ab9c1d417681">parse</a>(</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160; 
   google::protobuf::Message* message,</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Object.html">JSON::Object</a>&amp; <span 
class="keywordtype">object</span>)</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  
595</span>&#160;{</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160; 
 <a class="code" 
href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> 
(</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160; 
     <span class="keyword">const</span> std::string&amp; <a class="code" 
href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>, 
<span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Value.html">JSON::Value</a>&amp; value, <span 
class="keywordtype">object</span>.values) {</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160; 
   <span class="comment">// Look for a field by this name.</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160; 
   <span class="keyword">const</span> google::protobuf::FieldDescriptor* field 
=</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160; 
     message-&gt;GetDescriptor()-&gt;FindFieldByName(name);</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  
601</span>&#160;</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160; 
   <span class="keywordflow">if</span> (field != <span 
class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> apply =</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160; 
       boost::apply_visitor(<a class="code" 
href="structprotobuf_1_1internal_1_1Parser.html">Parser</a>(message, field), 
value);</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  
605</span>&#160;</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160; 
     <span class="keywordflow">if</span> (apply.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(apply.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160; 
     }</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160; 
   }</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160; 
 }</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  
611</span>&#160;</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160; 
 <span class="keywordflow">return</span> <a class="code" 
href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  
613</span>&#160;}</div>
 <div class="line"><a name="l00614"></a><span class="lineno">  
614</span>&#160;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Object.html">JSON::Object</a>* <span 
class="keywordtype">object</span> = 
boost::get&lt;JSON::Object&gt;(&amp;value);</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160; 
   <span class="keywordflow">if</span> (<span class="keywordtype">object</span> 
== <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Expecting a 
JSON object&quot;</span>);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160; 
   }</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  
619</span>&#160;</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160; 
   T message;</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  
621</span>&#160;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="namespaceprotobuf_1_1internal.html#a3cfa5c20c57cdc039693ab9c1d417681">parse</a>
 = <a class="code" 
href="namespaceprotobuf_1_1internal.html#a3cfa5c20c57cdc039693ab9c1d417681">internal::parse</a>(&amp;message,
 *<span class="keywordtype">object</span>);</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160; 
   <span class="keywordflow">if</span> (parse.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(parse.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160; 
   }</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  
615</span>&#160;</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  
616</span>&#160;<span class="comment">// Parses a single protobuf message of 
type T from a JSON::Object.</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  
617</span>&#160;<span class="comment">// NOTE: This struct is used by the 
public parse&lt;T&gt;() function below. See</span></div>
+<div class="line"><a name="l00618"></a><span class="lineno">  
618</span>&#160;<span class="comment">// comments there for the reason why we 
opted for this design.</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno">  
619</span>&#160;<span class="keyword">template</span> &lt;<span 
class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00620"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parse.html">  620</a></span>&#160;<span 
class="keyword">struct </span><a class="code" 
href="structprotobuf_1_1internal_1_1Parse.html">Parse</a></div>
+<div class="line"><a name="l00621"></a><span class="lineno">  
621</span>&#160;{</div>
+<div class="line"><a name="l00622"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parse.html#a3203a718a8850dde037325b81d7d88c9">
  622</a></span>&#160;  <a class="code" href="classTry.html">Try&lt;T&gt;</a> 
<a class="code" 
href="structprotobuf_1_1internal_1_1Parse.html#a3203a718a8850dde037325b81d7d88c9">operator()</a>(<span
 class="keyword">const</span> <a class="code" 
href="structJSON_1_1Value.html">JSON::Value</a>&amp; value)</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160; 
 {</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160; 
   static_assert(std::is_convertible&lt;T*, 
google::protobuf::Message*&gt;::value,</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160; 
                 <span class="stringliteral">&quot;T must be a protobuf 
message&quot;</span>);</div>
 <div class="line"><a name="l00626"></a><span class="lineno">  
626</span>&#160;</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160; 
   <span class="keywordflow">if</span> (!message.IsInitialized()) {</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Missing 
required fields: &quot;</span> +</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160; 
                  message.InitializationErrorString());</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Object.html">JSON::Object</a>* <span 
class="keywordtype">object</span> = 
boost::get&lt;JSON::Object&gt;(&amp;value);</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160; 
   <span class="keywordflow">if</span> (<span class="keywordtype">object</span> 
== <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Expecting a 
JSON object&quot;</span>);</div>
 <div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160; 
   }</div>
 <div class="line"><a name="l00631"></a><span class="lineno">  
631</span>&#160;</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160; 
   <span class="keywordflow">return</span> message;</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160; 
 }</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  
634</span>&#160;};</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  
635</span>&#160;</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  
636</span>&#160;</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  
637</span>&#160;<span class="comment">// Partial specialization for 
RepeatedPtrField&lt;T&gt; to parse a sequence of</span></div>
-<div class="line"><a name="l00638"></a><span class="lineno">  
638</span>&#160;<span class="comment">// protobuf messages from a JSON::Array 
by repeatedly invoking Parse&lt;T&gt; to</span></div>
-<div class="line"><a name="l00639"></a><span class="lineno">  
639</span>&#160;<span class="comment">// facilitate conversions like 
JSON::Array -&gt; Resources.</span></div>
-<div class="line"><a name="l00640"></a><span class="lineno">  
640</span>&#160;<span class="comment">// NOTE: This struct is used by the 
public parse&lt;T&gt;() function below. See</span></div>
-<div class="line"><a name="l00641"></a><span class="lineno">  
641</span>&#160;<span class="comment">// comments there for the reason why we 
opted for this design.</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno">  
642</span>&#160;<span class="keyword">template</span> &lt;<span 
class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00643"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parse_3_01google_1_1protobuf_1_1RepeatedPtrField_3_01T_01_4_01_4.html">
  643</a></span>&#160;<span class="keyword">struct </span><a class="code" 
href="structprotobuf_1_1internal_1_1Parse.html">Parse</a>&lt;google::protobuf::RepeatedPtrField&lt;T&gt;&gt;</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  
644</span>&#160;{</div>
-<div class="line"><a name="l00645"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parse_3_01google_1_1protobuf_1_1RepeatedPtrField_3_01T_01_4_01_4.html#a92dbcc8b139a55707100a087533b967e">
  645</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;google::protobuf::RepeatedPtrField&lt;T&gt;</a>&gt; 
<a class="code" 
href="structprotobuf_1_1internal_1_1Parse_3_01google_1_1protobuf_1_1RepeatedPtrField_3_01T_01_4_01_4.html#a92dbcc8b139a55707100a087533b967e">operator()</a>(</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160; 
     <span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Value.html">JSON::Value</a>&amp; value)</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160; 
 {</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160; 
   static_assert(std::is_convertible&lt;T*, 
google::protobuf::Message*&gt;::value,</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160; 
                 <span class="stringliteral">&quot;T must be a protobuf 
message&quot;</span>);</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  
650</span>&#160;</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Array.html">JSON::Array</a>* array = 
boost::get&lt;JSON::Array&gt;(&amp;value);</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160; 
   <span class="keywordflow">if</span> (array == <span 
class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Expecting a 
JSON array&quot;</span>);</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160; 
   }</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  
655</span>&#160;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160; 
   google::protobuf::RepeatedPtrField&lt;T&gt; collection;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160; 
   collection.Reserve(static_cast&lt;int&gt;(array-&gt;<a class="code" 
href="structJSON_1_1Array.html#aed41033b7cd6a2c2e7dcc6f0c48a4563">values</a>.size()));</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  
658</span>&#160;</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160; 
   <span class="comment">// Parse messages one by one and propagate an error if 
it happens.</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160; 
   <span class="keywordflow">foreach</span> (<span class="keyword">const</span> 
<a class="code" href="structJSON_1_1Value.html">JSON::Value</a>&amp; elem, 
array-&gt;<a class="code" 
href="structJSON_1_1Array.html#aed41033b7cd6a2c2e7dcc6f0c48a4563">values</a>) 
{</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;T&gt;</a> message = <a 
class="code" 
href="structprotobuf_1_1internal_1_1Parse.html">Parse&lt;T&gt;</a>()(elem);</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160; 
     <span class="keywordflow">if</span> (message.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(message.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160; 
     }</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  
665</span>&#160;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160; 
     collection.Add()-&gt;CopyFrom(message.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160; 
   }</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  
668</span>&#160;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160; 
   <span class="keywordflow">return</span> collection;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160; 
 }</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  
671</span>&#160;};</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  
672</span>&#160;</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  
673</span>&#160;} <span class="comment">// namespace internal {</span></div>
-<div class="line"><a name="l00674"></a><span class="lineno">  
674</span>&#160;</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  
675</span>&#160;<span class="comment">// A dispatch wrapper which parses 
protobuf messages(s) from a given JSON value.</span></div>
-<div class="line"><a name="l00676"></a><span class="lineno">  
676</span>&#160;<span class="comment">// We use partial specialization 
of</span></div>
-<div class="line"><a name="l00677"></a><span class="lineno">  
677</span>&#160;<span class="comment">//   - internal::Parse&lt;T&gt; for 
JSON::Object</span></div>
-<div class="line"><a name="l00678"></a><span class="lineno">  
678</span>&#160;<span class="comment">//   - 
internal::Parse&lt;google::protobuf::RepeatedPtrField&lt;T&gt;&gt; for 
JSON::Array</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno">  
679</span>&#160;<span class="comment">// to determine whether T is a single 
message or a sequence of messages.</span></div>
-<div class="line"><a name="l00680"></a><span class="lineno">  
680</span>&#160;<span class="comment">// We cannot partially specialize 
function templates and overloaded function</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno">  
681</span>&#160;<span class="comment">// approach combined with std::enable_if 
is not that clean, hence we leverage</span></div>
-<div class="line"><a name="l00682"></a><span class="lineno">  
682</span>&#160;<span class="comment">// partial specialization of class 
templates.</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  
683</span>&#160;<span class="keyword">template</span> &lt;<span 
class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00684"></a><span class="lineno"><a class="line" 
href="namespaceprotobuf.html#a9c1229ef45781eadc126cdb70b8ca741">  
684</a></span>&#160;<a class="code" href="classTry.html">Try&lt;T&gt;</a> <a 
class="code" 
href="namespaceprotobuf.html#a9c1229ef45781eadc126cdb70b8ca741">parse</a>(<span 
class="keyword">const</span> <a class="code" 
href="structJSON_1_1Value.html">JSON::Value</a>&amp; value)</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  
685</span>&#160;{</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160; 
 <span class="keywordflow">return</span> <a class="code" 
href="structprotobuf_1_1internal_1_1Parse.html">internal::Parse&lt;T&gt;</a>()(value);</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  
687</span>&#160;}</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  
688</span>&#160;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  
689</span>&#160;} <span class="comment">// namespace protobuf {</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  
690</span>&#160;</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  
691</span>&#160;<span class="keyword">namespace </span><a class="code" 
href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039ea0ecd11c1d7a287401d148a23bbd7a2f8">JSON</a>
 {</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  
692</span>&#160;</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  
693</span>&#160;<span class="comment">// The representation of generic protobuf 
=&gt; JSON,</span></div>
-<div class="line"><a name="l00694"></a><span class="lineno">  
694</span>&#160;<span class="comment">// e.g., 
`jsonify(JSON::Protobuf(message))`.</span></div>
-<div class="line"><a name="l00695"></a><span class="lineno"><a class="line" 
href="structJSON_1_1Protobuf.html">  695</a></span>&#160;<span 
class="keyword">struct </span><a class="code" 
href="structJSON_1_1Protobuf.html">Protobuf</a> : <a class="code" 
href="structRepresentation.html">Representation</a>&lt;google::protobuf::Message&gt;</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  
696</span>&#160;{</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160; 
 <span class="keyword">using</span> <a class="code" 
href="structRepresentation.html">Representation&lt;google::protobuf::Message&gt;::Representation</a>;</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  
698</span>&#160;};</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  
699</span>&#160;</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160; 
   T message;</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  
633</span>&#160;</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160; 
   <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" 
href="namespaceprotobuf_1_1internal.html#a3cfa5c20c57cdc039693ab9c1d417681">parse</a>
 = <a class="code" 
href="namespaceprotobuf_1_1internal.html#a3cfa5c20c57cdc039693ab9c1d417681">internal::parse</a>(&amp;message,
 *<span class="keywordtype">object</span>);</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160; 
   <span class="keywordflow">if</span> (parse.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(parse.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160; 
   }</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  
638</span>&#160;</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160; 
   <span class="keywordflow">if</span> (!message.IsInitialized()) {</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Missing 
required fields: &quot;</span> +</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160; 
                  message.InitializationErrorString());</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160; 
   }</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  
643</span>&#160;</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160; 
   <span class="keywordflow">return</span> message;</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160; 
 }</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  
646</span>&#160;};</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  
647</span>&#160;</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  
648</span>&#160;</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  
649</span>&#160;<span class="comment">// Partial specialization for 
RepeatedPtrField&lt;T&gt; to parse a sequence of</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno">  
650</span>&#160;<span class="comment">// protobuf messages from a JSON::Array 
by repeatedly invoking Parse&lt;T&gt; to</span></div>
+<div class="line"><a name="l00651"></a><span class="lineno">  
651</span>&#160;<span class="comment">// facilitate conversions like 
JSON::Array -&gt; Resources.</span></div>
+<div class="line"><a name="l00652"></a><span class="lineno">  
652</span>&#160;<span class="comment">// NOTE: This struct is used by the 
public parse&lt;T&gt;() function below. See</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno">  
653</span>&#160;<span class="comment">// comments there for the reason why we 
opted for this design.</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno">  
654</span>&#160;<span class="keyword">template</span> &lt;<span 
class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00655"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parse_3_01google_1_1protobuf_1_1RepeatedPtrField_3_01T_01_4_01_4.html">
  655</a></span>&#160;<span class="keyword">struct </span><a class="code" 
href="structprotobuf_1_1internal_1_1Parse.html">Parse</a>&lt;google::protobuf::RepeatedPtrField&lt;T&gt;&gt;</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  
656</span>&#160;{</div>
+<div class="line"><a name="l00657"></a><span class="lineno"><a class="line" 
href="structprotobuf_1_1internal_1_1Parse_3_01google_1_1protobuf_1_1RepeatedPtrField_3_01T_01_4_01_4.html#a92dbcc8b139a55707100a087533b967e">
  657</a></span>&#160;  <a class="code" 
href="classTry.html">Try&lt;google::protobuf::RepeatedPtrField&lt;T&gt;</a>&gt; 
<a class="code" 
href="structprotobuf_1_1internal_1_1Parse_3_01google_1_1protobuf_1_1RepeatedPtrField_3_01T_01_4_01_4.html#a92dbcc8b139a55707100a087533b967e">operator()</a>(</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160; 
     <span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Value.html">JSON::Value</a>&amp; value)</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160; 
 {</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160; 
   static_assert(std::is_convertible&lt;T*, 
google::protobuf::Message*&gt;::value,</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160; 
                 <span class="stringliteral">&quot;T must be a protobuf 
message&quot;</span>);</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  
662</span>&#160;</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160; 
   <span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Array.html">JSON::Array</a>* array = 
boost::get&lt;JSON::Array&gt;(&amp;value);</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160; 
   <span class="keywordflow">if</span> (array == <span 
class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160; 
     <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(<span class="stringliteral">&quot;Expecting a 
JSON array&quot;</span>);</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160; 
   }</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  
667</span>&#160;</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160; 
   google::protobuf::RepeatedPtrField&lt;T&gt; collection;</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160; 
   collection.Reserve(static_cast&lt;int&gt;(array-&gt;<a class="code" 
href="structJSON_1_1Array.html#aed41033b7cd6a2c2e7dcc6f0c48a4563">values</a>.size()));</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  
670</span>&#160;</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160; 
   <span class="comment">// Parse messages one by one and propagate an error if 
it happens.</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160; 
   <span class="keywordflow">foreach</span> (<span class="keyword">const</span> 
<a class="code" href="structJSON_1_1Value.html">JSON::Value</a>&amp; elem, 
array-&gt;<a class="code" 
href="structJSON_1_1Array.html#aed41033b7cd6a2c2e7dcc6f0c48a4563">values</a>) 
{</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160; 
     <a class="code" href="classTry.html">Try&lt;T&gt;</a> message = <a 
class="code" 
href="structprotobuf_1_1internal_1_1Parse.html">Parse&lt;T&gt;</a>()(elem);</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160; 
     <span class="keywordflow">if</span> (message.<a class="code" 
href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160; 
       <span class="keywordflow">return</span> <a class="code" 
href="classError.html">Error</a>(message.<a class="code" 
href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160; 
     }</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  
677</span>&#160;</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160; 
     collection.Add()-&gt;CopyFrom(message.<a class="code" 
href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160; 
   }</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  
680</span>&#160;</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160; 
   <span class="keywordflow">return</span> collection;</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160; 
 }</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  
683</span>&#160;};</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  
684</span>&#160;</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  
685</span>&#160;} <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  
686</span>&#160;</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  
687</span>&#160;<span class="comment">// A dispatch wrapper which parses 
protobuf messages(s) from a given JSON value.</span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  
688</span>&#160;<span class="comment">// We use partial specialization 
of</span></div>
+<div class="line"><a name="l00689"></a><span class="lineno">  
689</span>&#160;<span class="comment">//   - internal::Parse&lt;T&gt; for 
JSON::Object</span></div>
+<div class="line"><a name="l00690"></a><span class="lineno">  
690</span>&#160;<span class="comment">//   - 
internal::Parse&lt;google::protobuf::RepeatedPtrField&lt;T&gt;&gt; for 
JSON::Array</span></div>
+<div class="line"><a name="l00691"></a><span class="lineno">  
691</span>&#160;<span class="comment">// to determine whether T is a single 
message or a sequence of messages.</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno">  
692</span>&#160;<span class="comment">// We cannot partially specialize 
function templates and overloaded function</span></div>
+<div class="line"><a name="l00693"></a><span class="lineno">  
693</span>&#160;<span class="comment">// approach combined with std::enable_if 
is not that clean, hence we leverage</span></div>
+<div class="line"><a name="l00694"></a><span class="lineno">  
694</span>&#160;<span class="comment">// partial specialization of class 
templates.</span></div>
+<div class="line"><a name="l00695"></a><span class="lineno">  
695</span>&#160;<span class="keyword">template</span> &lt;<span 
class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00696"></a><span class="lineno"><a class="line" 
href="namespaceprotobuf.html#a9c1229ef45781eadc126cdb70b8ca741">  
696</a></span>&#160;<a class="code" href="classTry.html">Try&lt;T&gt;</a> <a 
class="code" 
href="namespaceprotobuf.html#a9c1229ef45781eadc126cdb70b8ca741">parse</a>(<span 
class="keyword">const</span> <a class="code" 
href="structJSON_1_1Value.html">JSON::Value</a>&amp; value)</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  
697</span>&#160;{</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160; 
 <span class="keywordflow">return</span> <a class="code" 
href="structprotobuf_1_1internal_1_1Parse.html">internal::Parse&lt;T&gt;</a>()(value);</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  
699</span>&#160;}</div>
 <div class="line"><a name="l00700"></a><span class="lineno">  
700</span>&#160;</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  
701</span>&#160;<span class="comment">// `json` function for protobuf messages. 
Refer to `jsonify.hpp` for details.</span></div>
-<div class="line"><a name="l00702"></a><span class="lineno">  
702</span>&#160;<span class="comment">// TODO(mpark): This currently uses the 
default value for optional fields</span></div>
-<div class="line"><a name="l00703"></a><span class="lineno">  
703</span>&#160;<span class="comment">// that are not deprecated, but we may 
want to revisit this decision.</span></div>
-<div class="line"><a name="l00704"></a><span class="lineno"><a class="line" 
href="namespaceJSON.html#a6e349ac06c1e604507d62192200a4ad3">  
704</a></span>&#160;<span class="keyword">inline</span> <span 
class="keywordtype">void</span> <a class="code" 
href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a>(<a
 class="code" href="classJSON_1_1ObjectWriter.html">ObjectWriter</a>* writer, 
<span class="keyword">const</span> <a class="code" 
href="structJSON_1_1Protobuf.html">Protobuf</a>&amp; <a class="code" 
href="namespaceJSON.html#a93c179a1a5bd4164169d47cb1803f2a6">protobuf</a>)</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  
705</span>&#160;{</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160; 
 <span class="keyword">using</span> google::protobuf::FieldDescriptor;</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  
707</span>&#160;</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160; 
 <span class="keyword">const</span> google::protobuf::Message&amp; message = <a 
class="code" 
href="namespaceJSON.html#a93c179a1a5bd4164169d47cb1803f2a6">protobuf</a>;</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  
709</span>&#160;</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160; 
 <span class="keyword">const</span> google::protobuf::Descriptor* descriptor = 
message.GetDescriptor();</div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160; 
 <span class="keyword">const</span> google::protobuf::Reflection* reflection = 
message.GetReflection();</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  
701</span>&#160;} <span class="comment">// namespace protobuf {</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno">  
702</span>&#160;</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  
703</span>&#160;<span class="keyword">namespace </span><a class="code" 
href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039ea0ecd11c1d7a287401d148a23bbd7a2f8">JSON</a>
 {</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  
704</span>&#160;</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  
705</span>&#160;<span class="comment">// The representation of generic protobuf 
=&gt; JSON,</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno">  
706</span>&#160;<span class="comment">// e.g., 
`jsonify(JSON::Protobuf(message))`.</span></div>
+<div class="line"><a name="l00707"></a><span class="lineno"><a class="line" 
href="structJSON_1_1Protobuf.html">  707</a></span>&#160;<span 
class="keyword">struct </span><a class="code" 
href="structJSON_1_1Protobuf.html">Protobuf</a> : <a class="code" 
href="structRepresentation.html">Representation</a>&lt;google::protobuf::Message&gt;</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  
708</span>&#160;{</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160; 
 <span class="keyword">using</span> <a class="code" 
href="structRepresentation.html">Representation&lt;google::protobuf::Message&gt;::Representation</a>;</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  
710</span>&#160;};</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  
711</span>&#160;</div>
 <div class="line"><a name="l00712"></a><span class="lineno">  
712</span>&#160;</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160; 
 <span class="comment">// We first look through all the possible fields to 
determine both the set</span></div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160; 
 <span class="comment">// fields __and__ the optional fields with a default 
that are not set.</span></div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160; 
 <span class="comment">// `Reflection::ListFields()` alone will only include 
set fields and</span></div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160; 
 <span class="comment">// is therefore insufficient.</span></div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160; 
 <span class="keywordtype">int</span> fieldCount = 
descriptor-&gt;field_count();</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160; 
 std::vector&lt;const FieldDescriptor*&gt; fields;</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160; 
 fields.reserve(fieldCount);</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160; 
 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 
0; i &lt; fieldCount; ++i) {</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160; 
   <span class="keyword">const</span> FieldDescriptor* field = 
descriptor-&gt;field(i);<

<TRUNCATED>

Reply via email to