gstreamer/subprojects/gst-plugins-bad/sys/dwrite/libcaption/eia608_from_utf8.c
2023-06-27 13:23:07 +00:00

800 lines
18 KiB
C

/* Generated by re2c 1.0.3 on Tue Jun 19 17:18:11 2018 */
/**********************************************************************************************/
/* The MIT License */
/* */
/* Copyright 2016-2017 Twitch Interactive, Inc. or its affiliates. All Rights Reserved. */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining a copy */
/* of this software and associated documentation files (the "Software"), to deal */
/* in the Software without restriction, including without limitation the rights */
/* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell */
/* copies of the Software, and to permit persons to whom the Software is */
/* furnished to do so, subject to the following conditions: */
/* */
/* The above copyright notice and this permission notice shall be included in */
/* all copies or substantial portions of the Software. */
/* */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR */
/* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, */
/* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE */
/* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER */
/* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, */
/* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN */
/* THE SOFTWARE. */
/**********************************************************************************************/
#include "utf8.h"
#include <ctype.h>
#include <stdint.h>
uint16_t
_eia608_from_utf8 (const utf8_char_t * s)
{
const unsigned char *YYMARKER = 0;
const unsigned char *YYCURSOR = (const unsigned char *) s;
if (0 == s) {
return 0x0000;
}
{
unsigned char yych;
yych = *YYCURSOR;
if (yych <= '`') {
if (yych <= '*') {
if (yych <= '&') {
if (yych <= 0x00)
goto yy2;
if (yych <= 0x1F)
goto yy4;
goto yy6;
} else {
if (yych <= '\'')
goto yy8;
if (yych <= ')')
goto yy6;
goto yy10;
}
} else {
if (yych <= ']') {
if (yych == '\\')
goto yy12;
goto yy6;
} else {
if (yych <= '^')
goto yy14;
if (yych <= '_')
goto yy16;
goto yy18;
}
}
} else {
if (yych <= 0x7F) {
if (yych <= '|') {
if (yych <= 'z')
goto yy6;
if (yych <= '{')
goto yy20;
goto yy22;
} else {
if (yych <= '}')
goto yy24;
if (yych <= '~')
goto yy26;
goto yy28;
}
} else {
if (yych <= 0xC3) {
if (yych <= 0xC1)
goto yy4;
if (yych <= 0xC2)
goto yy30;
goto yy31;
} else {
if (yych == 0xE2)
goto yy32;
goto yy4;
}
}
}
yy2:
++YYCURSOR;
{
/*NULL*/ return 0x0000;
}
yy4:
++YYCURSOR;
yy5:
{ /*DEFAULT_RULE */
return 0x0000;
}
yy6:
++YYCURSOR;
{ /*ASCII range */
return (s[0] << 8) & 0xFF00;
}
yy8:
++YYCURSOR;
{ /*APOSTROPHE -> RIGHT_SINGLE_QUOTATION_MARK */
return 0x1229;
}
yy10:
++YYCURSOR;
{
/*ASTERISK*/ return 0x1228;
}
yy12:
++YYCURSOR;
{ /*REVERSE_SOLIDUS */
return 0x132B;
}
yy14:
++YYCURSOR;
{ /*CIRCUMFLEX_ACCENT */
return 0x132C;
}
yy16:
++YYCURSOR;
{ /*LOW_LINE */
return 0x132D;
}
yy18:
++YYCURSOR;
{ /*GRAVE_ACCENT -> LEFT_SINGLE_QUOTATION_MARK */
return 0x1226;
}
yy20:
++YYCURSOR;
{ /*LEFT_CURLY_BRACKET */
return 0x1329;
}
yy22:
++YYCURSOR;
{ /*VERTICAL_LINE */
return 0x132E;
}
yy24:
++YYCURSOR;
{ /*RIGHT_CURLY_BRACKET */
return 0x132A;
}
yy26:
++YYCURSOR;
{
/*TILDE*/ return 0x132F;
}
yy28:
++YYCURSOR;
{ /*DEL/BACKSPACE. Need to set bits 9 and 12! return 0x1421; */
return 0x0000;
}
yy30:
yych = *++YYCURSOR;
switch (yych) {
case 0xA0:
goto yy33;
case 0xA1:
goto yy35;
case 0xA2:
goto yy37;
case 0xA3:
goto yy39;
case 0xA4:
goto yy41;
case 0xA5:
goto yy43;
case 0xA6:
goto yy45;
case 0xA9:
goto yy47;
case 0xAB:
goto yy49;
case 0xAE:
goto yy51;
case 0xB0:
goto yy53;
case 0xBB:
goto yy55;
case 0xBD:
goto yy57;
case 0xBF:
goto yy59;
default:
goto yy5;
}
yy31:
yych = *++YYCURSOR;
switch (yych) {
case 0x80:
goto yy61;
case 0x81:
goto yy63;
case 0x82:
goto yy65;
case 0x83:
goto yy67;
case 0x84:
goto yy69;
case 0x85:
goto yy71;
case 0x87:
goto yy73;
case 0x88:
goto yy75;
case 0x89:
goto yy77;
case 0x8A:
goto yy79;
case 0x8B:
goto yy81;
case 0x8C:
goto yy83;
case 0x8D:
goto yy85;
case 0x8E:
goto yy87;
case 0x8F:
goto yy89;
case 0x91:
goto yy91;
case 0x92:
goto yy93;
case 0x93:
goto yy95;
case 0x94:
goto yy97;
case 0x95:
goto yy99;
case 0x96:
goto yy101;
case 0x98:
goto yy103;
case 0x99:
goto yy105;
case 0x9A:
goto yy107;
case 0x9B:
goto yy109;
case 0x9C:
goto yy111;
case 0x9F:
goto yy113;
case 0xA0:
goto yy115;
case 0xA1:
goto yy117;
case 0xA2:
goto yy119;
case 0xA3:
goto yy121;
case 0xA4:
goto yy123;
case 0xA5:
goto yy125;
case 0xA7:
goto yy127;
case 0xA8:
goto yy129;
case 0xA9:
goto yy131;
case 0xAA:
goto yy133;
case 0xAB:
goto yy135;
case 0xAC:
goto yy137;
case 0xAD:
goto yy139;
case 0xAE:
goto yy141;
case 0xAF:
goto yy143;
case 0xB1:
goto yy145;
case 0xB2:
goto yy147;
case 0xB3:
goto yy149;
case 0xB4:
goto yy151;
case 0xB5:
goto yy153;
case 0xB6:
goto yy155;
case 0xB7:
goto yy157;
case 0xB8:
goto yy159;
case 0xB9:
goto yy161;
case 0xBA:
goto yy163;
case 0xBB:
goto yy165;
case 0xBC:
goto yy167;
default:
goto yy5;
}
yy32:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case 0x80:
goto yy169;
case 0x84:
goto yy171;
case 0x94:
goto yy172;
case 0x96:
goto yy173;
case 0x99:
goto yy174;
default:
goto yy5;
}
yy33:
++YYCURSOR;
{ /*NO_BREAK_SPACE */
return 0x1139;
}
yy35:
++YYCURSOR;
{ /*INVERTED_EXCLAMATION_MARK */
return 0x1227;
}
yy37:
++YYCURSOR;
{ /*CENT_SIGN */
return 0x1135;
}
yy39:
++YYCURSOR;
{ /*POUND_SIGN */
return 0x1136;
}
yy41:
++YYCURSOR;
{ /*CURRENCY_SIGN */
return 0x1336;
}
yy43:
++YYCURSOR;
{ /*YEN_SIGN */
return 0x1335;
}
yy45:
++YYCURSOR;
{ /*BROKEN_BAR */
return 0x1337;
}
yy47:
++YYCURSOR;
{ /*COPYRIGHT_SIGN */
return 0x122B;
}
yy49:
++YYCURSOR;
{ /*LEFT_POINTING_DOUBLE_ANGLE_QUOTATION_MARK */
return 0x123E;
}
yy51:
++YYCURSOR;
{ /*REGISTERED_SIGN */
return 0x1130;
}
yy53:
++YYCURSOR;
{ /*DEGREE_SIGN */
return 0x1131;
}
yy55:
++YYCURSOR;
{ /*RIGHT_POINTING_DOUBLE_ANGLE_QUOTATION_MARK */
return 0x123F;
}
yy57:
++YYCURSOR;
{ /*VULGAR_FRACTION_ONE_HALF */
return 0x1132;
}
yy59:
++YYCURSOR;
{ /*INVERTED_QUESTION_MARK */
return 0x1133;
}
yy61:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_A_WITH_GRAVE */
return 0x1230;
}
yy63:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_A_WITH_ACUTE */
return 0x1220;
}
yy65:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_A_WITH_CIRCUMFLEX */
return 0x1231;
}
yy67:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_A_WITH_TILDE */
return 0x1320;
}
yy69:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_A_WITH_DIAERESIS */
return 0x1330;
}
yy71:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE */
return 0x1338;
}
yy73:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */
return 0x1232;
}
yy75:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_E_WITH_GRAVE */
return 0x1233;
}
yy77:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_E_WITH_ACUTE */
return 0x1221;
}
yy79:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_E_WITH_CIRCUMFLEX */
return 0x1234;
}
yy81:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_E_WITH_DIAERESIS */
return 0x1235;
}
yy83:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_I_WITH_GRAVE */
return 0x1323;
}
yy85:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_I_WITH_ACUTE */
return 0x1322;
}
yy87:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_I_WITH_CIRCUMFLEX */
return 0x1237;
}
yy89:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_I_WITH_DIAERESIS */
return 0x1238;
}
yy91:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_N_WITH_TILDE */
return 0x7D00;
}
yy93:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_O_WITH_GRAVE */
return 0x1325;
}
yy95:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_O_WITH_ACUTE */
return 0x1222;
}
yy97:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_O_WITH_CIRCUMFLEX */
return 0x123A;
}
yy99:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_O_WITH_TILDE */
return 0x1327;
}
yy101:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS */
return 0x1332;
}
yy103:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_O_WITH_STROKE */
return 0x133A;
}
yy105:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_U_WITH_GRAVE */
return 0x123B;
}
yy107:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_U_WITH_ACUTE */
return 0x1223;
}
yy109:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_U_WITH_CIRCUMFLEX */
return 0x123D;
}
yy111:
++YYCURSOR;
{ /*LATIN_CAPITAL_LETTER_U_WITH_DIAERESIS */
return 0x1224;
}
yy113:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_SHARP_S */
return 0x1334;
}
yy115:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_A_WITH_GRAVE */
return 0x1138;
}
yy117:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_A_WITH_ACUTE */
return 0x2A00;
}
yy119:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_A_WITH_CIRCUMFLEX */
return 0x113B;
}
yy121:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_A_WITH_TILDE */
return 0x1321;
}
yy123:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_A_WITH_DIAERESIS */
return 0x1331;
}
yy125:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_A_WITH_RING_ABOVE */
return 0x1339;
}
yy127:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_C_WITH_CEDILLA */
return 0x7B00;
}
yy129:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_E_WITH_GRAVE */
return 0x113A;
}
yy131:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_E_WITH_ACUTE */
return 0x5C00;
}
yy133:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_E_WITH_CIRCUMFLEX */
return 0x113C;
}
yy135:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_E_WITH_DIAERESIS */
return 0x1236;
}
yy137:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_I_WITH_GRAVE */
return 0x1324;
}
yy139:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_I_WITH_ACUTE */
return 0x5E00;
}
yy141:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_I_WITH_CIRCUMFLEX */
return 0x113D;
}
yy143:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_I_WITH_DIAERESIS */
return 0x1239;
}
yy145:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_N_WITH_TILDE */
return 0x7E00;
}
yy147:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_O_WITH_GRAVE */
return 0x1326;
}
yy149:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_O_WITH_ACUTE */
return 0x5F00;
}
yy151:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_O_WITH_CIRCUMFLEX */
return 0x113E;
}
yy153:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_O_WITH_TILDE */
return 0x1328;
}
yy155:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_O_WITH_DIAERESIS */
return 0x1333;
}
yy157:
++YYCURSOR;
{ /*DIVISION_SIGN */
return 0x7C00;
}
yy159:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_O_WITH_STROKE */
return 0x133B;
}
yy161:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_U_WITH_GRAVE */
return 0x123C;
}
yy163:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_U_WITH_ACUTE */
return 0x6000;
}
yy165:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_U_WITH_CIRCUMFLEX */
return 0x113F;
}
yy167:
++YYCURSOR;
{ /*LATIN_SMALL_LETTER_U_WITH_DIAERESIS */
return 0x1225;
}
yy169:
yych = *++YYCURSOR;
switch (yych) {
case 0x94:
goto yy175;
case 0x98:
goto yy177;
case 0x99:
goto yy179;
case 0x9C:
goto yy181;
case 0x9D:
goto yy183;
case 0xA2:
goto yy185;
default:
goto yy170;
}
yy170:
YYCURSOR = YYMARKER;
goto yy5;
yy171:
yych = *++YYCURSOR;
if (yych == 0xA0)
goto yy187;
if (yych == 0xA2)
goto yy189;
goto yy170;
yy172:
yych = *++YYCURSOR;
switch (yych) {
case 0x8C:
goto yy191;
case 0x90:
goto yy193;
case 0x94:
goto yy195;
case 0x98:
goto yy197;
default:
goto yy170;
}
yy173:
yych = *++YYCURSOR;
if (yych == 0x88)
goto yy199;
goto yy170;
yy174:
yych = *++YYCURSOR;
if (yych == 0xAA)
goto yy201;
goto yy170;
yy175:
++YYCURSOR;
{ /*EM_DASH */
return 0x122A;
}
yy177:
++YYCURSOR;
{ /*LEFT_SINGLE_QUOTATION_MARK */
return 0x1226;
}
yy179:
++YYCURSOR;
{ /*RIGHT_SINGLE_QUOTATION_MARK -> APOSTROPHE */
return 0x2700;
}
yy181:
++YYCURSOR;
{ /*LEFT_DOUBLE_QUOTATION_MARK */
return 0x122E;
}
yy183:
++YYCURSOR;
{ /*RIGHT_DOUBLE_QUOTATION_MARK */
return 0x122F;
}
yy185:
++YYCURSOR;
{
/*BULLET*/ return 0x122D;
}
yy187:
++YYCURSOR;
{ /*SERVICE_MARK */
return 0x122C;
}
yy189:
++YYCURSOR;
{ /*TRADE_MARK_SIGN */
return 0x1134;
}
yy191:
++YYCURSOR;
{ /*EIA608_CHAR_BOX_DRAWINGS_LIGHT_DOWN_AND_RIGHT */
return 0x133C;
}
yy193:
++YYCURSOR;
{ /*EIA608_CHAR_BOX_DRAWINGS_LIGHT_DOWN_AND_LEFT */
return 0x133D;
}
yy195:
++YYCURSOR;
{ /*EIA608_CHAR_BOX_DRAWINGS_LIGHT_UP_AND_RIGHT */
return 0x133E;
}
yy197:
++YYCURSOR;
{ /*EIA608_CHAR_BOX_DRAWINGS_LIGHT_UP_AND_LEFT */
return 0x133F;
}
yy199:
++YYCURSOR;
{ /*FULL_BLOCK */
return 0x7F00;
}
yy201:
++YYCURSOR;
{ /*EIGHTH_NOTE */
return 0x1137;
}
}
}