<?xml version="1.0" encoding="UTF-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.1" version="1.1">
  <file original="NoName" source-language="en" datatype="plaintext" target-language="en">
    <body>
      <trans-unit xml:space="preserve" approved="no" id="4669b8ede1062a92" weblate-flags="read-only, safe-html, strict-same">
        <source>= Quick Look Here we highlight important features through example code to help convey the style of the interface. We begin by including the library header file which brings all the symbols into scope. Alternatively, individual headers may be included to obtain the declarations for specific types:</source>
        <target state="translated">= Quick Look Here we highlight important features through example code to help convey the style of the interface. We begin by including the library header file which brings all the symbols into scope. Alternatively, individual headers may be included to obtain the declarations for specific types:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">12</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="c2ac7c0e2b0250e2" weblate-flags="read-only, safe-html, strict-same">
        <source>In order to link your program you will need to link with a built library. Alternatively you can use the header-only configuration simply by including this header file in any __one__ of your new or existing source files:</source>
        <target state="translated">In order to link your program you will need to link with a built library. Alternatively you can use the header-only configuration simply by including this header file in any __one__ of your new or existing source files:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">23</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="87be6e03cbde7189" weblate-flags="read-only, safe-html, strict-same">
        <source>Values</source>
        <target state="translated">Values</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">45</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="3ed70d1f83fa65b1" weblate-flags="read-only, safe-html, strict-same">
        <source>Say you want to recreate this JSON object in a container:</source>
        <target state="translated">Say you want to recreate this JSON object in a container:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">46</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="a6fe4f7b78d8566e" weblate-flags="read-only, safe-html, strict-same">
        <source>In this library the types &lt;&lt;ref_array&gt;&gt;, &lt;&lt;ref_object&gt;&gt;, and &lt;&lt;ref_string&gt;&gt; hold JSON arrays, objects, and strings respectively while the type &lt;&lt;ref_value&gt;&gt; is a special variant which can hold any JSON element. Here we construct an empty object and then insert the elements above:</source>
        <target state="translated">In this library the types &lt;&lt;ref_array&gt;&gt;, &lt;&lt;ref_object&gt;&gt;, and &lt;&lt;ref_string&gt;&gt; hold JSON arrays, objects, and strings respectively while the type &lt;&lt;ref_value&gt;&gt; is a special variant which can hold any JSON element. Here we construct an empty object and then insert the elements above:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">66</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="4f21968abdf38cdf" weblate-flags="read-only, safe-html, strict-same">
        <source>While keys are strings, the mapped type of objects and the element type of arrays is the aforementioned type &lt;&lt;ref_value&gt;&gt; which can hold any JSON element, as seen in the previous assignments. Instead of building the JSON document using a series of function calls, we can build it in one statement using an initializer list:</source>
        <target state="translated">While keys are strings, the mapped type of objects and the element type of arrays is the aforementioned type &lt;&lt;ref_value&gt;&gt; which can hold any JSON element, as seen in the previous assignments. Instead of building the JSON document using a series of function calls, we can build it in one statement using an initializer list:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">76</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="2e09c9deaa1066d9" weblate-flags="read-only, safe-html, strict-same">
        <source>When a &lt;&lt;ref_value&gt;&gt;, &lt;&lt;ref_array&gt;&gt;, or &lt;&lt;ref_object&gt;&gt; is assigned or constructed from an initializer list, the creation of the new value happens only once. This makes initializer lists equally efficient as using the other ways to create a value. The types in this library are first-class, supporting copy and move construction and assignment:</source>
        <target state="translated">When a &lt;&lt;ref_value&gt;&gt;, &lt;&lt;ref_array&gt;&gt;, or &lt;&lt;ref_object&gt;&gt; is assigned or constructed from an initializer list, the creation of the new value happens only once. This makes initializer lists equally efficient as using the other ways to create a value. The types in this library are first-class, supporting copy and move construction and assignment:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">87</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="4fe33c29b17646fd" weblate-flags="read-only, safe-html, strict-same">
        <source>Allocators</source>
        <target state="translated">Allocators</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">99</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="62b100670639b878" weblate-flags="read-only, safe-html, strict-same">
        <source>To permit custom memory allocation strategies, these containers all allow construction with a &lt;&lt;ref_storage_ptr&gt;&gt; which is a smart pointer to a {ref_memory_resource}. The constructor signatures have the same ordering as their `std` equivalents which use {req_Allocator} parameters. Once a container is constructed its memory resource can never change. Here we create an array without performing any dynamic allocations:</source>
        <target state="translated">To permit custom memory allocation strategies, these containers all allow construction with a &lt;&lt;ref_storage_ptr&gt;&gt; which is a smart pointer to a {ref_memory_resource}. The constructor signatures have the same ordering as their `std` equivalents which use {req_Allocator} parameters. Once a container is constructed its memory resource can never change. Here we create an array without performing any dynamic allocations:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">100</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="ac101fdc4b8520d9" weblate-flags="read-only, safe-html, strict-same">
        <source>The containers in this library enforce the invariant that every element of the container will use the same memory resource:</source>
        <target state="translated">The containers in this library enforce the invariant that every element of the container will use the same memory resource:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">112</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="96781a2a99c85864" weblate-flags="read-only, safe-html, strict-same">
        <source>When a library type is used as the element type of a PMR container; that is, a container which uses a {ref_polymorphic_allocator}, the memory resource will automatically propagate to the type and all of its children:</source>
        <target state="translated">When a library type is used as the element type of a PMR container; that is, a container which uses a {ref_polymorphic_allocator}, the memory resource will automatically propagate to the type and all of its children:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">120</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="9269123640406304" weblate-flags="read-only, safe-html, strict-same">
        <source>Up until now we have shown how values may be constructed from a memory resource pointer, where ownership is not transferred. In this case the caller is responsible for ensuring that the lifetime of the resource is extended for the life of the container. Sometimes you want the container to acquire shared ownership of the resource. This is accomplished with &lt;&lt;ref_make_shared_resource&gt;&gt;:</source>
        <target state="translated">Up until now we have shown how values may be constructed from a memory resource pointer, where ownership is not transferred. In this case the caller is responsible for ensuring that the lifetime of the resource is extended for the life of the container. Sometimes you want the container to acquire shared ownership of the resource. This is accomplished with &lt;&lt;ref_make_shared_resource&gt;&gt;:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">129</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="6a2cb55fc91f1d5a" weblate-flags="read-only, safe-html, strict-same">
        <source>A counted memory resource will not be destroyed until every container with shared ownership of the resource is destroyed.</source>
        <target state="translated">A counted memory resource will not be destroyed until every container with shared ownership of the resource is destroyed.</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">141</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="412e0e614e956dec" weblate-flags="read-only, safe-html, strict-same">
        <source>Parsing</source>
        <target state="translated">Parsing</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">145</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="a3f49bc34beee1ef" weblate-flags="read-only, safe-html, strict-same">
        <source>JSON can be parsed into the value container in one step using a free function. In the following snippet, a parse error is indicated by a thrown exception:</source>
        <target state="translated">JSON can be parsed into the value container in one step using a free function. In the following snippet, a parse error is indicated by a thrown exception:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">146</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="68167ff12a87fa7f" weblate-flags="read-only, safe-html, strict-same">
        <source>Error codes are also possible:</source>
        <target state="translated">Error codes are also possible:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">154</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="bc743a8f5428fe64" weblate-flags="read-only, safe-html, strict-same">
        <source>By default, the parser is strict and only accepts JSON compliant with the standard. However this behavior can be relaxed by filling out an options structure enabling one or more extensions. Here we use a static buffer and enable two non-standard extensions:</source>
        <target state="translated">By default, the parser is strict and only accepts JSON compliant with the standard. However this behavior can be relaxed by filling out an options structure enabling one or more extensions. Here we use a static buffer and enable two non-standard extensions:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">161</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="df85190f53a9d275" weblate-flags="read-only, safe-html, strict-same">
        <source>The parser in this library implements a https://en.wikipedia.org/wiki/Online_algorithm[__streaming algorithm__]; it can process JSON piece-by-piece, without the requirement that the entire input is available from the start. The parser uses a temporary memory allocation to do its work. If you plan on parsing multiple JSONs, for example in a network server, keeping the same parser instance will allow re-use of this temporary storage, improving performance.</source>
        <target state="translated">The parser in this library implements a https://en.wikipedia.org/wiki/Online_algorithm[__streaming algorithm__]; it can process JSON piece-by-piece, without the requirement that the entire input is available from the start. The parser uses a temporary memory allocation to do its work. If you plan on parsing multiple JSONs, for example in a network server, keeping the same parser instance will allow re-use of this temporary storage, improving performance.</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">171</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="0d380421d0aaf157" weblate-flags="read-only, safe-html, strict-same">
        <source>With strategic use of the right memory resources, parser instance, and calculated upper limits on buffer sizes, it is possible to parse and examine JSON without __any__ dynamic memory allocations. This is explored in more detail in a later section.</source>
        <target state="translated">With strategic use of the right memory resources, parser instance, and calculated upper limits on buffer sizes, it is possible to parse and examine JSON without __any__ dynamic memory allocations. This is explored in more detail in a later section.</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">184</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="e1f0e7970f161537" weblate-flags="read-only, safe-html, strict-same">
        <source>Serializing</source>
        <target state="translated">Serializing</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">190</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="db643e800a3a83ff" weblate-flags="read-only, safe-html, strict-same">
        <source>Simple free functions are provided for serializing a &lt;&lt;ref_value&gt;&gt; to a {std_string} containing JSON:</source>
        <target state="translated">Simple free functions are provided for serializing a &lt;&lt;ref_value&gt;&gt; to a {std_string} containing JSON:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">191</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="f017a096ebaa98c8" weblate-flags="read-only, safe-html, strict-same">
        <source>The serializer in this library implements a https://en.wikipedia.org/wiki/Online_algorithm[__streaming algorithm__]; it can output JSON a piece at a time, without the requirement that the entire output area is allocated at once:</source>
        <target state="translated">The serializer in this library implements a https://en.wikipedia.org/wiki/Online_algorithm[__streaming algorithm__]; it can output JSON a piece at a time, without the requirement that the entire output area is allocated at once:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">199</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="0e182a16fc91bfa4" weblate-flags="read-only, safe-html, strict-same">
        <source>Value Conversion</source>
        <target state="translated">Value Conversion</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">210</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="c05ad7bc0cbe4959" weblate-flags="read-only, safe-html, strict-same">
        <source>Given a user-defined type:</source>
        <target state="translated">Given a user-defined type:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">211</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="146e8491b8568c9c" weblate-flags="read-only, safe-html, strict-same">
        <source>We can define a conversion from the user-defined type to a &lt;&lt;ref_value&gt;&gt; by defining an overload of `tag_invoke` in the same namespace. This maps `customer` to a JSON object:</source>
        <target state="translated">We can define a conversion from the user-defined type to a &lt;&lt;ref_value&gt;&gt; by defining an overload of `tag_invoke` in the same namespace. This maps `customer` to a JSON object:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">218</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="baede733f4302468" weblate-flags="read-only, safe-html, strict-same">
        <source>This allows us to use the library function &lt;&lt;ref_value_from&gt;&gt; to produce a &lt;&lt;ref_value&gt;&gt; from our type:</source>
        <target state="translated">This allows us to use the library function &lt;&lt;ref_value_from&gt;&gt; to produce a &lt;&lt;ref_value&gt;&gt; from our type:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">227</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="cfdf3830b2da3395" weblate-flags="read-only, safe-html, strict-same">
        <source>The library knows what to do with standard containers. Here we convert an array of customers to a value:</source>
        <target state="translated">The library knows what to do with standard containers. Here we convert an array of customers to a value:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">235</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="8bafac4ebc3cf67f" weblate-flags="read-only, safe-html, strict-same">
        <source>To go from JSON to a user-defined type we use &lt;&lt;ref_value_to&gt;&gt;, which uses another overload of `tag_invoke`. This converts a JSON value to a `customer`. It throws an exception if the contents of the value do not match what is expected:</source>
        <target state="translated">To go from JSON to a user-defined type we use &lt;&lt;ref_value_to&gt;&gt;, which uses another overload of `tag_invoke`. This converts a JSON value to a `customer`. It throws an exception if the contents of the value do not match what is expected:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">243</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="1b241780115bb4f5" weblate-flags="read-only, safe-html, strict-same">
        <source>The code above defines the convenience function `extract`, which deduces the types of the struct members. This works, but requires that the struct is {req_DefaultConstructible}. An alternative is to construct the object directly, which is a little more verbose but doesn't require default construction:</source>
        <target state="translated">The code above defines the convenience function `extract`, which deduces the types of the struct members. This works, but requires that the struct is {req_DefaultConstructible}. An alternative is to construct the object directly, which is a little more verbose but doesn't require default construction:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">253</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="f317521bfde5b747" weblate-flags="read-only, safe-html, strict-same">
        <source>Now we can construct customers from JSON:</source>
        <target state="translated">Now we can construct customers from JSON:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">263</context>
        </context-group>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="5695d334ae48e7b7" weblate-flags="read-only, safe-html, strict-same">
        <source>The library's generic algorithms recognize when you are converting a &lt;&lt;ref_value&gt;&gt; to a container which resembles an array or object, so if you wanted to turn a JSON array into a vector of customers you might write:</source>
        <target state="translated">The library's generic algorithms recognize when you are converting a &lt;&lt;ref_value&gt;&gt; to a container which resembles an array or object, so if you wanted to turn a JSON array into a vector of customers you might write:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile"></context>
          <context context-type="linenumber">270</context>
        </context-group>
      </trans-unit>
    </body>
  </file>
</xliff>
