1 /* See LICENSE file for copyright and license details. */
8 #define FILE_EMOJI "data/emoji-data.txt"
9 #define FILE_WORD "data/WordBreakProperty.txt"
11 static const struct property_spec word_break_property[] = {
18 .enumname = "ALETTER",
23 .enumname = "BOTH_ALETTER_EXTPICT",
33 .enumname = "DOUBLE_QUOTE",
35 .ucdname = "Double_Quote",
43 .enumname = "EXTENDED_PICTOGRAPHIC",
45 .ucdname = "Extended_Pictographic",
48 .enumname = "EXTENDNUMLET",
50 .ucdname = "ExtendNumLet",
58 .enumname = "HEBREW_LETTER",
60 .ucdname = "Hebrew_Letter",
63 .enumname = "KATAKANA",
65 .ucdname = "Katakana",
73 .enumname = "MIDLETTER",
75 .ucdname = "MidLetter",
83 .enumname = "MIDNUMLET",
85 .ucdname = "MidNumLet",
88 .enumname = "NEWLINE",
93 .enumname = "NUMERIC",
98 .enumname = "REGIONAL_INDICATOR",
100 .ucdname = "Regional_Indicator",
103 .enumname = "SINGLE_QUOTE",
105 .ucdname = "Single_Quote",
108 .enumname = "WSEGSPACE",
110 .ucdname = "WSegSpace",
120 handle_conflict(uint_least32_t cp, uint_least8_t prop1, uint_least8_t prop2)
122 uint_least8_t result;
126 if ((!strcmp(word_break_property[prop1].enumname, "ALETTER") &&
127 !strcmp(word_break_property[prop2].enumname, "EXTENDED_PICTOGRAPHIC")) ||
128 (!strcmp(word_break_property[prop1].enumname, "EXTENDED_PICTOGRAPHIC") &&
129 !strcmp(word_break_property[prop2].enumname, "ALETTER"))) {
130 for (result = 0; result < LEN(word_break_property); result++) {
131 if (!strcmp(word_break_property[result].enumname,
132 "BOTH_ALETTER_EXTPICT")) {
136 if (result == LEN(word_break_property)) {
137 fprintf(stderr, "handle_conflict: Internal error.\n");
141 fprintf(stderr, "handle_conflict: Cannot handle conflict.\n");
149 main(int argc, char *argv[])
153 properties_generate_break_property(word_break_property,
154 LEN(word_break_property),
155 handle_conflict, NULL, "word_break",