Documentation of SFML 2.6.1

Loading...
Searching...
No Matches
Utf.hpp
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2023 Laurent Gomila (laurent@sfml-dev.org)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#ifndef SFML_UTF_HPP
26#define SFML_UTF_HPP
27
29// Headers
31#include <SFML/Config.hpp>
32#include <algorithm>
33#include <locale>
34#include <string>
35#include <cstdlib>
36
37
38namespace sf
39{
40template <unsigned int N>
41class Utf;
42
47template <>
48class Utf<8>
49{
50public:
51
66 template <typename In>
67 static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
68
82 template <typename Out>
83 static Out encode(Uint32 input, Out output, Uint8 replacement = 0);
84
97 template <typename In>
98 static In next(In begin, In end);
99
113 template <typename In>
114 static std::size_t count(In begin, In end);
115
130 template <typename In, typename Out>
131 static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
132
143 template <typename In, typename Out>
144 static Out fromWide(In begin, In end, Out output);
145
156 template <typename In, typename Out>
157 static Out fromLatin1(In begin, In end, Out output);
158
174 template <typename In, typename Out>
175 static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
176
188 template <typename In, typename Out>
189 static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
190
202 template <typename In, typename Out>
203 static Out toLatin1(In begin, In end, Out output, char replacement = 0);
204
220 template <typename In, typename Out>
221 static Out toUtf8(In begin, In end, Out output);
222
233 template <typename In, typename Out>
234 static Out toUtf16(In begin, In end, Out output);
235
246 template <typename In, typename Out>
247 static Out toUtf32(In begin, In end, Out output);
248};
249
254template <>
255class Utf<16>
256{
257public:
258
273 template <typename In>
274 static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
275
289 template <typename Out>
290 static Out encode(Uint32 input, Out output, Uint16 replacement = 0);
291
304 template <typename In>
305 static In next(In begin, In end);
306
320 template <typename In>
321 static std::size_t count(In begin, In end);
322
337 template <typename In, typename Out>
338 static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
339
350 template <typename In, typename Out>
351 static Out fromWide(In begin, In end, Out output);
352
363 template <typename In, typename Out>
364 static Out fromLatin1(In begin, In end, Out output);
365
381 template <typename In, typename Out>
382 static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
383
395 template <typename In, typename Out>
396 static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
397
409 template <typename In, typename Out>
410 static Out toLatin1(In begin, In end, Out output, char replacement = 0);
411
422 template <typename In, typename Out>
423 static Out toUtf8(In begin, In end, Out output);
424
440 template <typename In, typename Out>
441 static Out toUtf16(In begin, In end, Out output);
442
453 template <typename In, typename Out>
454 static Out toUtf32(In begin, In end, Out output);
455};
456
461template <>
462class Utf<32>
463{
464public:
465
481 template <typename In>
482 static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0);
483
498 template <typename Out>
499 static Out encode(Uint32 input, Out output, Uint32 replacement = 0);
500
513 template <typename In>
514 static In next(In begin, In end);
515
528 template <typename In>
529 static std::size_t count(In begin, In end);
530
545 template <typename In, typename Out>
546 static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());
547
558 template <typename In, typename Out>
559 static Out fromWide(In begin, In end, Out output);
560
571 template <typename In, typename Out>
572 static Out fromLatin1(In begin, In end, Out output);
573
589 template <typename In, typename Out>
590 static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());
591
603 template <typename In, typename Out>
604 static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);
605
617 template <typename In, typename Out>
618 static Out toLatin1(In begin, In end, Out output, char replacement = 0);
619
630 template <typename In, typename Out>
631 static Out toUtf8(In begin, In end, Out output);
632
643 template <typename In, typename Out>
644 static Out toUtf16(In begin, In end, Out output);
645
661 template <typename In, typename Out>
662 static Out toUtf32(In begin, In end, Out output);
663
677 template <typename In>
678 static Uint32 decodeAnsi(In input, const std::locale& locale = std::locale());
679
692 template <typename In>
693 static Uint32 decodeWide(In input);
694
710 template <typename Out>
711 static Out encodeAnsi(Uint32 codepoint, Out output, char replacement = 0, const std::locale& locale = std::locale());
712
727 template <typename Out>
728 static Out encodeWide(Uint32 codepoint, Out output, wchar_t replacement = 0);
729};
730
731#include <SFML/System/Utf.inl>
732
733// Make typedefs to get rid of the template syntax
734typedef Utf<8> Utf8;
735typedef Utf<16> Utf16;
736typedef Utf<32> Utf32;
737
738} // namespace sf
739
740
741#endif // SFML_UTF_HPP
742
743
Specialization of the Utf template for UTF-16.
Definition Utf.hpp:256
static Out toUtf16(In begin, In end, Out output)
Convert a UTF-16 characters range to UTF-16.
static In decode(In begin, In end, Uint32 &output, Uint32 replacement=0)
Decode a single UTF-16 character.
static Out fromWide(In begin, In end, Out output)
Convert a wide characters range to UTF-16.
static Out toWide(In begin, In end, Out output, wchar_t replacement=0)
Convert an UTF-16 characters range to wide characters.
static Out encode(Uint32 input, Out output, Uint16 replacement=0)
Encode a single UTF-16 character.
static Out fromLatin1(In begin, In end, Out output)
Convert a latin-1 (ISO-5589-1) characters range to UTF-16.
static Out toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
Convert an UTF-16 characters range to ANSI characters.
static std::size_t count(In begin, In end)
Count the number of characters of a UTF-16 sequence.
static Out toUtf32(In begin, In end, Out output)
Convert a UTF-16 characters range to UTF-32.
static Out fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())
Convert an ANSI characters range to UTF-16.
static In next(In begin, In end)
Advance to the next UTF-16 character.
static Out toLatin1(In begin, In end, Out output, char replacement=0)
Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters.
static Out toUtf8(In begin, In end, Out output)
Convert a UTF-16 characters range to UTF-8.
Specialization of the Utf template for UTF-32.
Definition Utf.hpp:463
static Uint32 decodeWide(In input)
Decode a single wide character to UTF-32.
static Out fromLatin1(In begin, In end, Out output)
Convert a latin-1 (ISO-5589-1) characters range to UTF-32.
static Out toLatin1(In begin, In end, Out output, char replacement=0)
Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters.
static Out toWide(In begin, In end, Out output, wchar_t replacement=0)
Convert an UTF-32 characters range to wide characters.
static Out toUtf8(In begin, In end, Out output)
Convert a UTF-32 characters range to UTF-8.
static Out encode(Uint32 input, Out output, Uint32 replacement=0)
Encode a single UTF-32 character.
static Out fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())
Convert an ANSI characters range to UTF-32.
static Out toUtf16(In begin, In end, Out output)
Convert a UTF-32 characters range to UTF-16.
static Out encodeWide(Uint32 codepoint, Out output, wchar_t replacement=0)
Encode a single UTF-32 character to wide.
static Uint32 decodeAnsi(In input, const std::locale &locale=std::locale())
Decode a single ANSI character to UTF-32.
static Out toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
Convert an UTF-32 characters range to ANSI characters.
static In next(In begin, In end)
Advance to the next UTF-32 character.
static std::size_t count(In begin, In end)
Count the number of characters of a UTF-32 sequence.
static Out toUtf32(In begin, In end, Out output)
Convert a UTF-32 characters range to UTF-32.
static Out fromWide(In begin, In end, Out output)
Convert a wide characters range to UTF-32.
static In decode(In begin, In end, Uint32 &output, Uint32 replacement=0)
Decode a single UTF-32 character.
static Out encodeAnsi(Uint32 codepoint, Out output, char replacement=0, const std::locale &locale=std::locale())
Encode a single UTF-32 character to ANSI.
Specialization of the Utf template for UTF-8.
Definition Utf.hpp:49
static In next(In begin, In end)
Advance to the next UTF-8 character.
static Out fromAnsi(In begin, In end, Out output, const std::locale &locale=std::locale())
Convert an ANSI characters range to UTF-8.
static Out toAnsi(In begin, In end, Out output, char replacement=0, const std::locale &locale=std::locale())
Convert an UTF-8 characters range to ANSI characters.
static In decode(In begin, In end, Uint32 &output, Uint32 replacement=0)
Decode a single UTF-8 character.
static Out encode(Uint32 input, Out output, Uint8 replacement=0)
Encode a single UTF-8 character.
static Out toUtf32(In begin, In end, Out output)
Convert a UTF-8 characters range to UTF-32.
static Out fromLatin1(In begin, In end, Out output)
Convert a latin-1 (ISO-5589-1) characters range to UTF-8.
static Out toUtf16(In begin, In end, Out output)
Convert a UTF-8 characters range to UTF-16.
static Out fromWide(In begin, In end, Out output)
Convert a wide characters range to UTF-8.
static Out toWide(In begin, In end, Out output, wchar_t replacement=0)
Convert an UTF-8 characters range to wide characters.
static Out toLatin1(In begin, In end, Out output, char replacement=0)
Convert an UTF-8 characters range to latin-1 (ISO-5589-1) characters.
static Out toUtf8(In begin, In end, Out output)
Convert a UTF-8 characters range to UTF-8.
static std::size_t count(In begin, In end)
Count the number of characters of a UTF-8 sequence.
Utility class providing generic functions for UTF conversions.
Definition Utf.hpp:41