svf-tools 1.0.593 → 1.0.594
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/cJSON_8cpp.html +2 -2
- package/SVF-doxygen/html/html/cJSON_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/cJSON_8h.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
- package/lib/Util/ExtAPI.cpp +1 -1
- package/lib/Util/cJSON.cpp +6 -6
- package/package.json +1 -1
|
@@ -2859,7 +2859,7 @@ Variables</h2></td></tr>
|
|
|
2859
2859
|
</div><div class="memdoc">
|
|
2860
2860
|
|
|
2861
2861
|
<p class="definition">Definition at line <a class="el" href="cJSON_8cpp_source.html#l00547">547</a> of file <a class="el" href="cJSON_8cpp_source.html">cJSON.cpp</a>.</p>
|
|
2862
|
-
<div class="fragment"><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output_pointer = <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordtype">double</span> d = item-><a class="code" href="structcJSON.html#a4b21817d0fd2919901abadac73214e7f">valuedouble</a>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordtype">int</span> <a class="code" href="cJSON_8cpp.html#a9f237f17f4e79d5b89149e09152edabe">length</a> = 0;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordtype">size_t</span> i = 0;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> number_buffer[26] = {0}; <span class="comment">/* temporary buffer to print the number into */</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> decimal_point = <a class="code" href="cJSON_8cpp.html#ab25412ae56c8c594831918169bea100d">get_decimal_point</a>();</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordtype">double</span> test = 0.0;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span> (output_buffer == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="comment">/* This checks for NaN and Infinity */</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a11b2d271b8abcb53159ffb82dc29547a">isnan</a>(d) || <a class="code" href="cJSON_8cpp.html#abad128f70dbd5a06aa93fe79b3acc4df">isinf</a>(d))</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  length = sprintf((<span class="keywordtype">char</span>*)number_buffer, <span class="stringliteral">"null"</span>);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(d == (<span class="keywordtype">double</span>)item-><a class="code" href="structcJSON.html#a369cea49494eb5d4409d532a731a0fbf">valueint</a>)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  length = sprintf((<span class="keywordtype">char</span>*)number_buffer, <span class="stringliteral">"%d"</span>, item-><a class="code" href="structcJSON.html#a369cea49494eb5d4409d532a731a0fbf">valueint</a>);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">/* Try 15 decimal places of precision to avoid nonsignificant nonzero digits */</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  length = sprintf((<span class="keywordtype">char</span>*)number_buffer, <span class="stringliteral">"%1.15g"</span>, d);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="comment">/* Check whether the original double can be recovered */</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span> ((sscanf((<span class="keywordtype">char</span>*)number_buffer, <span class="stringliteral">"%lg"</span>, &test) != 1) || !<a class="code" href="cJSON_8cpp.html#aa7a85b63f1830e7e666e1f56872d5d3e">compare_double</a>((<span class="keywordtype">double</span>)test, d))</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">/* If not, print with 17 decimal places of precision */</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  length = sprintf((<span class="keywordtype">char</span>*)number_buffer, <span class="stringliteral">"%1.17g"</span>, d);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="comment">/* sprintf failed or buffer overrun occurred */</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">if</span> ((length < 0) || (length > (<span class="keywordtype">int</span>)(<span class="keyword">sizeof</span>(number_buffer) - 1)))</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> </div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="comment">/* reserve appropriate space in the output */</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  output_pointer = <a class="code" href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a>(output_buffer, (<span class="keywordtype">size_t</span>)length + <span class="keyword">sizeof</span>(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">if</span> (output_pointer == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="comment">/* copy the printed number to the output and replace locale</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="comment"> * dependent decimal point with '.' */</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">for</span> (i = 0; i < ((size_t)length); i++)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">if</span> (number_buffer[i] == decimal_point)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  output_pointer[i] = <span class="charliteral">'.'</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  output_pointer[i] = number_buffer[i];</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  output_pointer[i] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  output_buffer-><a class="code" href="structprintbuffer.html#a3ed6f9d24d6591047680492a962dc7c9">offset</a> += (size_t)length;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> }</div><div class="ttc" id="structprintbuffer_html_a3ed6f9d24d6591047680492a962dc7c9"><div class="ttname"><a href="structprintbuffer.html#a3ed6f9d24d6591047680492a962dc7c9">printbuffer::offset</a></div><div class="ttdeci">size_t offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00432">cJSON.cpp:432</a></div></div>
|
|
2862
|
+
<div class="fragment"><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output_pointer = <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordtype">double</span> d = item-><a class="code" href="structcJSON.html#a4b21817d0fd2919901abadac73214e7f">valuedouble</a>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordtype">int</span> <a class="code" href="cJSON_8cpp.html#a9f237f17f4e79d5b89149e09152edabe">length</a> = 0;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordtype">size_t</span> i = 0;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> number_buffer[26] = {0}; <span class="comment">/* temporary buffer to print the number into */</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> decimal_point = <a class="code" href="cJSON_8cpp.html#ab25412ae56c8c594831918169bea100d">get_decimal_point</a>();</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordtype">double</span> test = 0.0;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span> (output_buffer == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="comment">/* This checks for NaN and Infinity */</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a11b2d271b8abcb53159ffb82dc29547a">isnan</a>(d) || <a class="code" href="cJSON_8cpp.html#abad128f70dbd5a06aa93fe79b3acc4df">isinf</a>(d))</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  length = snprintf((<span class="keywordtype">char</span>*)number_buffer, <span class="keyword">sizeof</span>(number_buffer), <span class="stringliteral">"null"</span>);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(d == (<span class="keywordtype">double</span>)item-><a class="code" href="structcJSON.html#a369cea49494eb5d4409d532a731a0fbf">valueint</a>)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  length = snprintf((<span class="keywordtype">char</span>*)number_buffer, <span class="keyword">sizeof</span>(number_buffer), <span class="stringliteral">"%d"</span>, item-><a class="code" href="structcJSON.html#a369cea49494eb5d4409d532a731a0fbf">valueint</a>);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">/* Try 15 decimal places of precision to avoid nonsignificant nonzero digits */</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  length = snprintf((<span class="keywordtype">char</span>*)number_buffer, <span class="keyword">sizeof</span>(number_buffer), <span class="stringliteral">"%1.15g"</span>, d);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="comment">/* Check whether the original double can be recovered */</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span> ((sscanf((<span class="keywordtype">char</span>*)number_buffer, <span class="stringliteral">"%lg"</span>, &test) != 1) || !<a class="code" href="cJSON_8cpp.html#aa7a85b63f1830e7e666e1f56872d5d3e">compare_double</a>((<span class="keywordtype">double</span>)test, d))</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">/* If not, print with 17 decimal places of precision */</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  length = snprintf((<span class="keywordtype">char</span>*)number_buffer, <span class="keyword">sizeof</span>(number_buffer), <span class="stringliteral">"%1.17g"</span>, d);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="comment">/* sprintf failed or buffer overrun occurred */</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">if</span> ((length < 0) || (length > (<span class="keywordtype">int</span>)(<span class="keyword">sizeof</span>(number_buffer) - 1)))</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> </div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="comment">/* reserve appropriate space in the output */</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  output_pointer = <a class="code" href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a>(output_buffer, (<span class="keywordtype">size_t</span>)length + <span class="keyword">sizeof</span>(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">if</span> (output_pointer == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="comment">/* copy the printed number to the output and replace locale</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="comment"> * dependent decimal point with '.' */</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">for</span> (i = 0; i < ((size_t)length); i++)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">if</span> (number_buffer[i] == decimal_point)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  output_pointer[i] = <span class="charliteral">'.'</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  output_pointer[i] = number_buffer[i];</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  output_pointer[i] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  output_buffer-><a class="code" href="structprintbuffer.html#a3ed6f9d24d6591047680492a962dc7c9">offset</a> += (size_t)length;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> }</div><div class="ttc" id="structprintbuffer_html_a3ed6f9d24d6591047680492a962dc7c9"><div class="ttname"><a href="structprintbuffer.html#a3ed6f9d24d6591047680492a962dc7c9">printbuffer::offset</a></div><div class="ttdeci">size_t offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00432">cJSON.cpp:432</a></div></div>
|
|
2863
2863
|
<div class="ttc" id="structcJSON_html_a369cea49494eb5d4409d532a731a0fbf"><div class="ttname"><a href="structcJSON.html#a369cea49494eb5d4409d532a731a0fbf">cJSON::valueint</a></div><div class="ttdeci">int valueint</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00117">cJSON.h:117</a></div></div>
|
|
2864
2864
|
<div class="ttc" id="cJSON_8cpp_html_a11b2d271b8abcb53159ffb82dc29547a"><div class="ttname"><a href="cJSON_8cpp.html#a11b2d271b8abcb53159ffb82dc29547a">isnan</a></div><div class="ttdeci">#define isnan(d)</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00077">cJSON.cpp:77</a></div></div>
|
|
2865
2865
|
<div class="ttc" id="cJSON_8cpp_html_a3faa1600bc8001eaed05f16060668ce6"><div class="ttname"><a href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a></div><div class="ttdeci">static unsigned char * ensure(printbuffer *const p, size_t needed)</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00440">cJSON.cpp:440</a></div></div>
|
|
@@ -2998,7 +2998,7 @@ Variables</h2></td></tr>
|
|
|
2998
2998
|
</div><div class="memdoc">
|
|
2999
2999
|
|
|
3000
3000
|
<p class="definition">Definition at line <a class="el" href="cJSON_8cpp_source.html#l00904">904</a> of file <a class="el" href="cJSON_8cpp_source.html">cJSON.cpp</a>.</p>
|
|
3001
|
-
<div class="fragment"><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> {</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *input_pointer = <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output = <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output_pointer = <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordtype">size_t</span> output_length = 0;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="comment">/* numbers of additional characters needed for escaping */</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordtype">size_t</span> escape_characters = 0;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">if</span> (output_buffer == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  {</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  }</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="comment">/* empty string */</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">if</span> (input == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  {</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  output = <a class="code" href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a>(output_buffer, <span class="keyword">sizeof</span>(<span class="stringliteral">"\"\""</span>));</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">if</span> (output == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  }</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  strcpy((<span class="keywordtype">char</span>*)output, <span class="stringliteral">"\"\""</span>);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  }</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="comment">/* set "flag" to 1 if something needs to be escaped */</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">for</span> (input_pointer = input; *input_pointer; input_pointer++)</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">switch</span> (*input_pointer)</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">case</span> <span class="charliteral">'\"'</span>:</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>:</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keywordflow">case</span> <span class="charliteral">'\b'</span>:</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">case</span> <span class="charliteral">'\f'</span>:</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">case</span> <span class="charliteral">'\n'</span>:</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">case</span> <span class="charliteral">'\r'</span>:</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keywordflow">case</span> <span class="charliteral">'\t'</span>:</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="comment">/* one character escape sequence */</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  escape_characters++;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">if</span> (*input_pointer < 32)</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  {</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="comment">/* UTF-16 escape sequence uXXXX */</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  escape_characters += 5;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  }</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  output_length = (size_t)(input_pointer - input) + escape_characters;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  output = <a class="code" href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a>(output_buffer, output_length + <span class="keyword">sizeof</span>(<span class="stringliteral">"\"\""</span>));</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">if</span> (output == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  {</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="comment">/* no characters have to be escaped */</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">if</span> (escape_characters == 0)</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  output[0] = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  memcpy(output + 1, input, output_length);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  output[output_length + 1] = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  output[output_length + 2] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  }</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  output[0] = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  output_pointer = output + 1;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="comment">/* copy the string */</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <span class="keywordflow">for</span> (input_pointer = input; *input_pointer != <span class="charliteral">'\0'</span>; (void)input_pointer++, output_pointer++)</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  {</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">if</span> ((*input_pointer > 31) && (*input_pointer != <span class="charliteral">'\"'</span>) && (*input_pointer != <span class="charliteral">'\\'</span>))</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <span class="comment">/* normal character, copy */</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  *output_pointer = *input_pointer;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="comment">/* character needs to be escaped */</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  *output_pointer++ = <span class="charliteral">'\\'</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">switch</span> (*input_pointer)</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>:</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  *output_pointer = <span class="charliteral">'\\'</span>;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">case</span> <span class="charliteral">'\"'</span>:</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  *output_pointer = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">case</span> <span class="charliteral">'\b'</span>:</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  *output_pointer = <span class="charliteral">'b'</span>;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">case</span> <span class="charliteral">'\f'</span>:</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  *output_pointer = <span class="charliteral">'f'</span>;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keywordflow">case</span> <span class="charliteral">'\n'</span>:</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  *output_pointer = <span class="charliteral">'n'</span>;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">case</span> <span class="charliteral">'\r'</span>:</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  *output_pointer = <span class="charliteral">'r'</span>;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <span class="keywordflow">case</span> <span class="charliteral">'\t'</span>:</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  *output_pointer = <span class="charliteral">'t'</span>;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="comment">/* escape and print as unicode codepoint */</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  sprintf((<span class="keywordtype">char</span>*)output_pointer, <span class="stringliteral">"u%04x"</span>, *input_pointer);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  output_pointer += 4;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  }</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  }</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  }</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  output[output_length + 1] = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  output[output_length + 2] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> }</div><div class="ttc" id="cJSON_8cpp_html_a3faa1600bc8001eaed05f16060668ce6"><div class="ttname"><a href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a></div><div class="ttdeci">static unsigned char * ensure(printbuffer *const p, size_t needed)</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00440">cJSON.cpp:440</a></div></div>
|
|
3001
|
+
<div class="fragment"><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> {</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *input_pointer = <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output = <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output_pointer = <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordtype">size_t</span> output_length = 0;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="comment">/* numbers of additional characters needed for escaping */</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordtype">size_t</span> escape_characters = 0;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">if</span> (output_buffer == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  {</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  }</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="comment">/* empty string */</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">if</span> (input == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  {</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  output = <a class="code" href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a>(output_buffer, <span class="keyword">sizeof</span>(<span class="stringliteral">"\"\""</span>));</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">if</span> (output == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  }</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  strcpy((<span class="keywordtype">char</span>*)output, <span class="stringliteral">"\"\""</span>);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  }</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="comment">/* set "flag" to 1 if something needs to be escaped */</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">for</span> (input_pointer = input; *input_pointer; input_pointer++)</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">switch</span> (*input_pointer)</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">case</span> <span class="charliteral">'\"'</span>:</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>:</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keywordflow">case</span> <span class="charliteral">'\b'</span>:</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">case</span> <span class="charliteral">'\f'</span>:</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">case</span> <span class="charliteral">'\n'</span>:</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">case</span> <span class="charliteral">'\r'</span>:</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keywordflow">case</span> <span class="charliteral">'\t'</span>:</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="comment">/* one character escape sequence */</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  escape_characters++;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">if</span> (*input_pointer < 32)</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  {</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="comment">/* UTF-16 escape sequence uXXXX */</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  escape_characters += 5;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  }</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  output_length = (size_t)(input_pointer - input) + escape_characters;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  output = <a class="code" href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a>(output_buffer, output_length + <span class="keyword">sizeof</span>(<span class="stringliteral">"\"\""</span>));</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">if</span> (output == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  {</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="comment">/* no characters have to be escaped */</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">if</span> (escape_characters == 0)</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  output[0] = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  memcpy(output + 1, input, output_length);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  output[output_length + 1] = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  output[output_length + 2] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  }</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  output[0] = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  output_pointer = output + 1;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="comment">/* copy the string */</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <span class="keywordflow">for</span> (input_pointer = input; *input_pointer != <span class="charliteral">'\0'</span>; (void)input_pointer++, output_pointer++)</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  {</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">if</span> ((*input_pointer > 31) && (*input_pointer != <span class="charliteral">'\"'</span>) && (*input_pointer != <span class="charliteral">'\\'</span>))</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <span class="comment">/* normal character, copy */</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  *output_pointer = *input_pointer;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="comment">/* character needs to be escaped */</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  *output_pointer++ = <span class="charliteral">'\\'</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">switch</span> (*input_pointer)</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>:</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  *output_pointer = <span class="charliteral">'\\'</span>;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">case</span> <span class="charliteral">'\"'</span>:</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  *output_pointer = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">case</span> <span class="charliteral">'\b'</span>:</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  *output_pointer = <span class="charliteral">'b'</span>;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">case</span> <span class="charliteral">'\f'</span>:</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  *output_pointer = <span class="charliteral">'f'</span>;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keywordflow">case</span> <span class="charliteral">'\n'</span>:</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  *output_pointer = <span class="charliteral">'n'</span>;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">case</span> <span class="charliteral">'\r'</span>:</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  *output_pointer = <span class="charliteral">'r'</span>;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <span class="keywordflow">case</span> <span class="charliteral">'\t'</span>:</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  *output_pointer = <span class="charliteral">'t'</span>;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="comment">/* escape and print as unicode codepoint */</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  snprintf((<span class="keywordtype">char</span>*)output_pointer, <span class="keyword">sizeof</span>(output_pointer), <span class="stringliteral">"u%04x"</span>, *input_pointer);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  output_pointer += 4;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  }</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  }</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  }</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  output[output_length + 1] = <span class="charliteral">'\"'</span>;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  output[output_length + 2] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> }</div><div class="ttc" id="cJSON_8cpp_html_a3faa1600bc8001eaed05f16060668ce6"><div class="ttname"><a href="cJSON_8cpp.html#a3faa1600bc8001eaed05f16060668ce6">ensure</a></div><div class="ttdeci">static unsigned char * ensure(printbuffer *const p, size_t needed)</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00440">cJSON.cpp:440</a></div></div>
|
|
3002
3002
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
3003
3003
|
</div><!-- fragment -->
|
|
3004
3004
|
</div>
|