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