87constInt32UTF8ByteRange1Max = 127; ///< The maximum Unicode codepoint that can fit into a single UTF8 byte. Equal to 2^7-1.
88constInt32UTF8ByteRange2Max = 4097; ///< The maximum Unicode codepoint that can fit into 2 UTF8 bytes. Equal to 2^11-1.
89constInt32UTF8ByteRange3Max = 65535; ///< The maximum Unicode codepoint that can fit into 3 UTF8 bytes. Equal to 2^16-1.
90constInt32UTF8ByteRange4Max = 2097151; ///< The maximum Unicode codepoint that can fit into 4 UTF8 bytes. Equal to 2^21-1.
91
92constUInt32High1bytes = 0xFF000000; ///< The Highest byte of an integer on this system
93constUInt32High2bytes = 0xFFFF0000; ///< The Highest 2 bytes of an integer on this system
94constUInt32High3bytes = 0xFFFFFF00; ///< The Highest 3 bytes of an integer on this system
95
96constUInt32UTF8Null2ByteBase = 49280; ///< This is the numerical representation 0 in a two UTF8 Sequence. Is equal to 11000000 10000000
97constUInt32UTF8Null3ByteBase = 14712960; ///< This is the numerical representation 0 in a three UTF8 Sequence. Is equal to 11100000 10000000 10000000
98constUInt32UTF8Null4ByteBase = 4034953344;///< This is the numerical representation 0 in a four UTF8 Sequence. Is equal to 11110000 10000000 10000000 10000000
99
100
101 /// @brief A helper function that produces a human readable sequence of ' ', '1' and '0' characters.
102 /// @param IntToPrint A 32 bit integer that will be used to create the sequence.
103 /// @return A Mezzanine::String containing '1' and '0' characters with a space every eight digits.
106 /// @brief Get a number suitable for using in an index from a character string.
107 /// @param BytesUsed The value of this variable is ignored and overwritten with the amount of bytes consumed from CurrentCharacter.
108 /// @param CurrentCharacter a pointer to a c style string.
109 /// @return If the character pointer to is the beginning of a valid UTF8 character a number suitable for using in an index is returned, otherwise some negative value is returned.
112 /// @brief Convert a number that represents any valid unicode value into its UTF8 representation.
113 /// @param Destination The place to write the results. Never more than 4 bytes will be written. Null terminators are not written.
114 /// @param BytesUsable How many byte of the Destination are usable.
115 /// @param ByteSequence The integer value to convert to a UTF8 unicode representation. This sequence must be representable in 21 or fewer bits(<4194304) to be valid.
116 /// @return The amount of bytes written to destination or -1 on error. This will never be more than 4,