--- a/src/unac/unac.h
+++ b/src/unac/unac.h
@@ -32,10 +32,10 @@
#endif
/* Generated by builder. Do not modify. Start defines */
-#define UNAC_BLOCK_SHIFT 5
+#define UNAC_BLOCK_SHIFT 4
#define UNAC_BLOCK_MASK ((1 << UNAC_BLOCK_SHIFT) - 1)
#define UNAC_BLOCK_SIZE (1 << UNAC_BLOCK_SHIFT)
-#define UNAC_BLOCK_COUNT 178
+#define UNAC_BLOCK_COUNT 315
#define UNAC_INDEXES_SIZE (0x10000 >> UNAC_BLOCK_SHIFT)
/* Generated by builder. Do not modify. End defines */
@@ -53,7 +53,7 @@
#define unac_char_utf16(c,p,l) \
{ \
unsigned short index = unac_indexes[(c) >> UNAC_BLOCK_SHIFT]; \
- unsigned char position = (c) & UNAC_BLOCK_MASK; \
+ unsigned char position = 2*((c) & UNAC_BLOCK_MASK); \
(p) = &(unac_data_table[index][unac_positions[index][position]]); \
(l) = unac_positions[index][position + 1] - unac_positions[index][position]; \
if((l) == 1 && *(p) == 0xFFFF) { \
@@ -61,6 +61,21 @@
(l) = 0; \
} \
}
+
+/*
+ * Save as unac_ but case-folded
+ */
+#define unacfold_char_utf16(c,p,l) \
+ { \
+ unsigned short index = unac_indexes[(c) >> UNAC_BLOCK_SHIFT]; \
+ unsigned char position = 2*((c) & UNAC_BLOCK_MASK)+1; \
+ (p) = &(unac_data_table[index][unac_positions[index][position]]); \
+ (l) = unac_positions[index][position + 1] - unac_positions[index][position]; \
+ if((l) == 1 && *(p) == 0xFFFF) { \
+ (p) = 0; \
+ (l) = 0; \
+ } \
+ }
/*
* Return the unaccented equivalent of the UTF-16 string <in> of
@@ -77,6 +92,8 @@
*/
int unac_string_utf16(const char* in, size_t in_length,
char** out, size_t* out_length);
+int unacfold_string_utf16(const char* in, size_t in_length,
+ char** out, size_t* out_length);
/*
* The semantic of this function is stricly equal to the function
@@ -92,6 +109,9 @@
int unac_string(const char* charset,
const char* in, size_t in_length,
char** out, size_t* out_length);
+int unacfold_string(const char* charset,
+ const char* in, size_t in_length,
+ char** out, size_t* out_length);
/*
* Return unac version number.
@@ -141,7 +161,7 @@
/* Generated by builder. Do not modify. Start declarations */
extern unsigned short unac_indexes[UNAC_INDEXES_SIZE];
-extern unsigned char unac_positions[UNAC_BLOCK_COUNT][UNAC_BLOCK_SIZE + 1];
+extern unsigned char unac_positions[UNAC_BLOCK_COUNT][2*UNAC_BLOCK_SIZE + 1];
extern unsigned short* unac_data_table[UNAC_BLOCK_COUNT];
extern unsigned short unac_data0[];
extern unsigned short unac_data1[];
@@ -321,6 +341,143 @@
extern unsigned short unac_data175[];
extern unsigned short unac_data176[];
extern unsigned short unac_data177[];
+extern unsigned short unac_data178[];
+extern unsigned short unac_data179[];
+extern unsigned short unac_data180[];
+extern unsigned short unac_data181[];
+extern unsigned short unac_data182[];
+extern unsigned short unac_data183[];
+extern unsigned short unac_data184[];
+extern unsigned short unac_data185[];
+extern unsigned short unac_data186[];
+extern unsigned short unac_data187[];
+extern unsigned short unac_data188[];
+extern unsigned short unac_data189[];
+extern unsigned short unac_data190[];
+extern unsigned short unac_data191[];
+extern unsigned short unac_data192[];
+extern unsigned short unac_data193[];
+extern unsigned short unac_data194[];
+extern unsigned short unac_data195[];
+extern unsigned short unac_data196[];
+extern unsigned short unac_data197[];
+extern unsigned short unac_data198[];
+extern unsigned short unac_data199[];
+extern unsigned short unac_data200[];
+extern unsigned short unac_data201[];
+extern unsigned short unac_data202[];
+extern unsigned short unac_data203[];
+extern unsigned short unac_data204[];
+extern unsigned short unac_data205[];
+extern unsigned short unac_data206[];
+extern unsigned short unac_data207[];
+extern unsigned short unac_data208[];
+extern unsigned short unac_data209[];
+extern unsigned short unac_data210[];
+extern unsigned short unac_data211[];
+extern unsigned short unac_data212[];
+extern unsigned short unac_data213[];
+extern unsigned short unac_data214[];
+extern unsigned short unac_data215[];
+extern unsigned short unac_data216[];
+extern unsigned short unac_data217[];
+extern unsigned short unac_data218[];
+extern unsigned short unac_data219[];
+extern unsigned short unac_data220[];
+extern unsigned short unac_data221[];
+extern unsigned short unac_data222[];
+extern unsigned short unac_data223[];
+extern unsigned short unac_data224[];
+extern unsigned short unac_data225[];
+extern unsigned short unac_data226[];
+extern unsigned short unac_data227[];
+extern unsigned short unac_data228[];
+extern unsigned short unac_data229[];
+extern unsigned short unac_data230[];
+extern unsigned short unac_data231[];
+extern unsigned short unac_data232[];
+extern unsigned short unac_data233[];
+extern unsigned short unac_data234[];
+extern unsigned short unac_data235[];
+extern unsigned short unac_data236[];
+extern unsigned short unac_data237[];
+extern unsigned short unac_data238[];
+extern unsigned short unac_data239[];
+extern unsigned short unac_data240[];
+extern unsigned short unac_data241[];
+extern unsigned short unac_data242[];
+extern unsigned short unac_data243[];
+extern unsigned short unac_data244[];
+extern unsigned short unac_data245[];
+extern unsigned short unac_data246[];
+extern unsigned short unac_data247[];
+extern unsigned short unac_data248[];
+extern unsigned short unac_data249[];
+extern unsigned short unac_data250[];
+extern unsigned short unac_data251[];
+extern unsigned short unac_data252[];
+extern unsigned short unac_data253[];
+extern unsigned short unac_data254[];
+extern unsigned short unac_data255[];
+extern unsigned short unac_data256[];
+extern unsigned short unac_data257[];
+extern unsigned short unac_data258[];
+extern unsigned short unac_data259[];
+extern unsigned short unac_data260[];
+extern unsigned short unac_data261[];
+extern unsigned short unac_data262[];
+extern unsigned short unac_data263[];
+extern unsigned short unac_data264[];
+extern unsigned short unac_data265[];
+extern unsigned short unac_data266[];
+extern unsigned short unac_data267[];
+extern unsigned short unac_data268[];
+extern unsigned short unac_data269[];
+extern unsigned short unac_data270[];
+extern unsigned short unac_data271[];
+extern unsigned short unac_data272[];
+extern unsigned short unac_data273[];
+extern unsigned short unac_data274[];
+extern unsigned short unac_data275[];
+extern unsigned short unac_data276[];
+extern unsigned short unac_data277[];
+extern unsigned short unac_data278[];
+extern unsigned short unac_data279[];
+extern unsigned short unac_data280[];
+extern unsigned short unac_data281[];
+extern unsigned short unac_data282[];
+extern unsigned short unac_data283[];
+extern unsigned short unac_data284[];
+extern unsigned short unac_data285[];
+extern unsigned short unac_data286[];
+extern unsigned short unac_data287[];
+extern unsigned short unac_data288[];
+extern unsigned short unac_data289[];
+extern unsigned short unac_data290[];
+extern unsigned short unac_data291[];
+extern unsigned short unac_data292[];
+extern unsigned short unac_data293[];
+extern unsigned short unac_data294[];
+extern unsigned short unac_data295[];
+extern unsigned short unac_data296[];
+extern unsigned short unac_data297[];
+extern unsigned short unac_data298[];
+extern unsigned short unac_data299[];
+extern unsigned short unac_data300[];
+extern unsigned short unac_data301[];
+extern unsigned short unac_data302[];
+extern unsigned short unac_data303[];
+extern unsigned short unac_data304[];
+extern unsigned short unac_data305[];
+extern unsigned short unac_data306[];
+extern unsigned short unac_data307[];
+extern unsigned short unac_data308[];
+extern unsigned short unac_data309[];
+extern unsigned short unac_data310[];
+extern unsigned short unac_data311[];
+extern unsigned short unac_data312[];
+extern unsigned short unac_data313[];
+extern unsigned short unac_data314[];
/* Generated by builder. Do not modify. End declarations */
#ifdef __cplusplus