1 | #ifndef NU_UNACCENT_H |
2 | #define NU_UNACCENT_H |
3 | |
4 | #include <libnu/casemap.h> |
5 | #include <libnu/strings.h> |
6 | |
7 | #if defined (__cplusplus) || defined (c_plusplus) |
8 | extern "C" { |
9 | #endif |
10 | |
11 | /** |
12 | * @example unaccent.c |
13 | */ |
14 | |
15 | #ifdef NU_WITH_UNACCENT |
16 | |
17 | /** Return unaccented value of codepoint. If codepoint is |
18 | * accent (disacritic) itself, returns empty string. |
19 | * |
20 | * @note This is nunicode extenstion. |
21 | * |
22 | * @ingroup transformations |
23 | * @param codepoint unicode codepoint |
24 | * @return unaccented codepoint, 0 if mapping doesn't exist |
25 | * and empty string if codepoint is accent |
26 | */ |
27 | NU_EXPORT |
28 | const char* nu_tounaccent(uint32_t codepoint); |
29 | |
30 | /** Return unaccented value of codepoint. If codepoint is |
31 | * accent (disacritic) itself, returns empty string. |
32 | * |
33 | * @note This is nunicode extenstion. |
34 | * |
35 | * @ingroup transformations_internal |
36 | * @param encoded pointer to encoded string |
37 | * @param limit memory limit of encoded string or NU_UNLIMITED |
38 | * @param read read (decoding) function |
39 | * @param u (optional) codepoint which was (or wasn't) transformed |
40 | * @param transform output value of codepoint unaccented or 0 if |
41 | * mapping doesn't exist, or empty string if codepoint is accent. |
42 | * Can't be NULL, supposed to be decoded with nu_casemap_read |
43 | * @param context not used |
44 | * @return pointer to the next codepoint in string |
45 | */ |
46 | NU_EXPORT |
47 | const char* _nu_tounaccent(const char *encoded, const char *limit, nu_read_iterator_t read, |
48 | uint32_t *u, const char **transform, |
49 | void *context); |
50 | |
51 | #endif /* NU_WITH_UNACCENT */ |
52 | |
53 | #if defined (__cplusplus) || defined (c_plusplus) |
54 | } |
55 | #endif |
56 | |
57 | #endif /* NU_UNACCENT_H */ |
58 | |