Torque3D Documentation / _generateds / rapidjson::Encoding

rapidjson::Encoding

Engine/source/persistence/rapidjson/encodings.h

Concept for encoding of Unicode characters.

More...

Detailed Description

Concept for encoding of Unicode characters.

concept Encoding {
   typename Ch;   //! Type of character. A "character" is actually a code unit in unicode's definition.

   //! \brief Encode a Unicode codepoint to an output stream.
   //! \param os Output stream.
   //! \param codepoint An unicode codepoint, ranging from 0x0 to 0x10FFFF inclusively.
   template<typename OutputStream>
   static void Encode(OutputStream& os, unsigned codepoint);

   //! \brief Decode a Unicode codepoint from an input stream.
   //! \param is Input stream.
   //! \param codepoint Output of the unicode codepoint.
   //! \return true if a valid codepoint can be decoded from the stream.
   template <typename InputStream>
   static bool Decode(InputStream& is, unsigned* codepoint);

   //! \brief Validate one Unicode codepoint from an encoded stream.
   //! \param is Input stream to obtain codepoint.
   //! \param os Output for copying one codepoint.
   //! \return true if it is valid.
   //! \note This function just validating and copying the codepoint without actually decode it.
   template <typename InputStream, typename OutputStream>
   static bool Validate(InputStream& is, OutputStream& os);

   // The following functions are deal with byte streams.

   //! Take a character from input byte stream, skip BOM if exist.
   template <typename InputByteStream>
   static CharType TakeBOM(InputByteStream& is);

   //! Take a character from input byte stream.
   template <typename InputByteStream>
   static Ch Take(InputByteStream& is);

   //! Put BOM to output byte stream.
   template <typename OutputByteStream>
   static void PutBOM(OutputByteStream& os);

   //! Put a character to output byte stream.
   template <typename OutputByteStream>
   static void Put(OutputByteStream& os, Ch c);
};