1#ifndef NU_TOUPPER_H
2#define NU_TOUPPER_H
3
4#include <stdint.h>
5
6#include <libnu/config.h>
7#include <libnu/defines.h>
8#include <libnu/strings.h>
9#include <libnu/udb.h>
10
11#if defined (__cplusplus) || defined (c_plusplus)
12extern "C" {
13#endif
14
15/**
16 * @example folding.c
17 * @example special_casing.c
18 */
19
20/** Synonim to nu_casemap_read. It is recommended to use
21 * nu_casemap_read instead.
22 */
23#define NU_CASEMAP_DECODING_FUNCTION NU_UDB_DECODING_FUNCTION
24/** Read (decoding) function for use with transformation results of
25 * casemapping functions. E.g. nu_casemap_read(nu_tolower(0x0041));
26 * will read first codepoint of 'A' transformed to lower case.
27 */
28#define nu_casemap_read (nu_udb_read)
29
30/** Casemap codepoint
31 *
32 * @ingroup transformations
33 */
34typedef nu_transformation_t nu_casemapping_t;
35
36#ifdef NU_WITH_TOUPPER
37
38/** Return uppercase value of codepoint. Uncoditional casemapping.
39 *
40 * @ingroup transformations
41 * @param codepoint unicode codepoint
42 * @return uppercase codepoint or 0 if mapping doesn't exist
43 */
44NU_EXPORT
45const char* nu_toupper(uint32_t codepoint);
46
47/** Return uppercase value of codepoint. Context-sensitivity is not
48 * implemented internally, returned result is equal to calling nu_toupper()
49 * on corresponding codepoint.
50 *
51 * @ingroup transformations_internal
52 * @param encoded pointer to encoded string
53 * @param limit memory limit of encoded string or NU_UNLIMITED
54 * @param read read (decoding) function
55 * @param u (optional) codepoint which was (or wasn't) transformed
56 * @param transform output value of codepoint transformed into uppercase or 0
57 * if mapping doesn't exist. Can't be NULL, supposed to be decoded with
58 * nu_casemap_read
59 * @param context not used
60 * @return pointer to the next codepoint in string
61 */
62NU_EXPORT
63const char* _nu_toupper(const char *encoded, const char *limit, nu_read_iterator_t read,
64 uint32_t *u, const char **transform,
65 void *context);
66
67#endif /* NU_WITH_TOUPPER */
68
69#ifdef NU_WITH_TOLOWER
70
71/** Return lowercase value of codepoint. Unconditional casemapping.
72 *
73 * @ingroup transformations
74 * @param codepoint unicode codepoint
75 * @return lowercase codepoint or 0 if mapping doesn't exist
76 */
77NU_EXPORT
78const char* nu_tolower(uint32_t codepoint);
79
80/** Return lowercase value of codepoint. Will transform uppercase
81 * Sigma ('Σ') into final sigma ('ς') if it occurs at string boundary or
82 * followed by U+0000. Might require single read-ahead when
83 * encountering Sigma.
84 *
85 * @ingroup transformations_internal
86 * @param encoded pointer to encoded string
87 * @param limit memory limit of encoded string or NU_UNLIMITED
88 * @param read read (decoding) function
89 * @param u (optional) codepoint which was (or wasn't) transformed
90 * @param transform output value of codepoint transformed into lowercase or 0
91 * if mapping doesn't exist. Can't be NULL, supposed to be decoded with
92 * nu_casemap_read
93 * @param context not used
94 * @return pointer to the next codepoint in string
95 */
96NU_EXPORT
97const char* _nu_tolower(const char *encoded, const char *limit, nu_read_iterator_t read,
98 uint32_t *u, const char **transform,
99 void *context);
100
101#endif /* NU_WITH_TOLOWER */
102
103#ifdef NU_WITH_TOFOLD
104
105/** Return value of codepoint with case differences eliminated
106 *
107 * @ingroup transformations
108 * @param codepoint unicode codepoint
109 * @return casefolded codepoint or 0 if mapping doesn't exist
110 */
111NU_EXPORT
112const char* nu_tofold(uint32_t codepoint);
113
114/** Return value of codepoint with case differences eliminated.
115 * Context-sensitivity is not implemented internally, returned result is equal
116 * to calling nu_tofold() on corresponding codepoint.
117 *
118 * @ingroup transformations_internal
119 * @param encoded pointer to encoded string
120 * @param limit memory limit of encoded string or NU_UNLIMITED
121 * @param read read (decoding) function
122 * @param u (optional) codepoint which was (or wasn't) transformed
123 * @param transform output value of casefolded codepoint or 0
124 * if mapping doesn't exist. Can't be NULL, supposed to be decoded with
125 * nu_casemap_read
126 * @param context not used
127 * @return pointer to the next codepoint in string
128 */
129NU_EXPORT
130const char* _nu_tofold(const char *encoded, const char *limit, nu_read_iterator_t read,
131 uint32_t *u, const char **transform,
132 void *context);
133
134#endif /* NU_WITH_TOFOLD */
135
136#if defined (__cplusplus) || defined (c_plusplus)
137}
138#endif
139
140#endif /* NU_TOUPPER_H */
141

source code of qtlocation/src/3rdparty/mapbox-gl-native/vendor/nunicode/include/libnu/casemap.h