/* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef GLK_UNICODE_GEN_H #define GLK_UNICODE_GEN_H #include "glk/glk_types.h" namespace Glk { #define GET_CASE_BLOCK(ch, blockptr) \ switch ((uint)(ch) >> 8) { \ case 0x0: \ *blockptr = unigen_case_block_0x0; \ break; \ case 0x1: \ *blockptr = unigen_case_block_0x1; \ break; \ case 0x2: \ *blockptr = unigen_case_block_0x2; \ break; \ case 0x3: \ *blockptr = unigen_case_block_0x3; \ break; \ case 0x4: \ *blockptr = unigen_case_block_0x4; \ break; \ case 0x5: \ *blockptr = unigen_case_block_0x5; \ break; \ case 0x1e: \ *blockptr = unigen_case_block_0x1e; \ break; \ case 0x1f: \ *blockptr = unigen_case_block_0x1f; \ break; \ case 0x21: \ *blockptr = unigen_case_block_0x21; \ break; \ case 0x24: \ *blockptr = unigen_case_block_0x24; \ break; \ case 0xfb: \ *blockptr = unigen_case_block_0xfb; \ break; \ case 0xff: \ *blockptr = unigen_case_block_0xff; \ break; \ case 0x104: \ *blockptr = unigen_case_block_0x104; \ break; \ default: \ *blockptr = nullptr; \ } #define GET_CASE_SPECIAL(ch, specptr) \ switch (ch) { \ case 0xdf: \ *specptr = unigen_special_0xdf; \ break; \ case 0x130: \ *specptr = unigen_special_0x130; \ break; \ case 0x149: \ *specptr = unigen_special_0x149; \ break; \ case 0x1c4: \ *specptr = unigen_special_0x1c4; \ break; \ case 0x1c5: \ *specptr = unigen_special_0x1c5; \ break; \ case 0x1c6: \ *specptr = unigen_special_0x1c6; \ break; \ case 0x1c7: \ *specptr = unigen_special_0x1c7; \ break; \ case 0x1c8: \ *specptr = unigen_special_0x1c8; \ break; \ case 0x1c9: \ *specptr = unigen_special_0x1c9; \ break; \ case 0x1ca: \ *specptr = unigen_special_0x1ca; \ break; \ case 0x1cb: \ *specptr = unigen_special_0x1cb; \ break; \ case 0x1cc: \ *specptr = unigen_special_0x1cc; \ break; \ case 0x1f0: \ *specptr = unigen_special_0x1f0; \ break; \ case 0x1f1: \ *specptr = unigen_special_0x1f1; \ break; \ case 0x1f2: \ *specptr = unigen_special_0x1f2; \ break; \ case 0x1f3: \ *specptr = unigen_special_0x1f3; \ break; \ case 0x390: \ *specptr = unigen_special_0x390; \ break; \ case 0x3b0: \ *specptr = unigen_special_0x3b0; \ break; \ case 0x587: \ *specptr = unigen_special_0x587; \ break; \ case 0x1e96: \ *specptr = unigen_special_0x1e96; \ break; \ case 0x1e97: \ *specptr = unigen_special_0x1e97; \ break; \ case 0x1e98: \ *specptr = unigen_special_0x1e98; \ break; \ case 0x1e99: \ *specptr = unigen_special_0x1e99; \ break; \ case 0x1e9a: \ *specptr = unigen_special_0x1e9a; \ break; \ case 0x1f50: \ *specptr = unigen_special_0x1f50; \ break; \ case 0x1f52: \ *specptr = unigen_special_0x1f52; \ break; \ case 0x1f54: \ *specptr = unigen_special_0x1f54; \ break; \ case 0x1f56: \ *specptr = unigen_special_0x1f56; \ break; \ case 0x1f80: \ *specptr = unigen_special_0x1f80; \ break; \ case 0x1f81: \ *specptr = unigen_special_0x1f81; \ break; \ case 0x1f82: \ *specptr = unigen_special_0x1f82; \ break; \ case 0x1f83: \ *specptr = unigen_special_0x1f83; \ break; \ case 0x1f84: \ *specptr = unigen_special_0x1f84; \ break; \ case 0x1f85: \ *specptr = unigen_special_0x1f85; \ break; \ case 0x1f86: \ *specptr = unigen_special_0x1f86; \ break; \ case 0x1f87: \ *specptr = unigen_special_0x1f87; \ break; \ case 0x1f88: \ *specptr = unigen_special_0x1f88; \ break; \ case 0x1f89: \ *specptr = unigen_special_0x1f89; \ break; \ case 0x1f8a: \ *specptr = unigen_special_0x1f8a; \ break; \ case 0x1f8b: \ *specptr = unigen_special_0x1f8b; \ break; \ case 0x1f8c: \ *specptr = unigen_special_0x1f8c; \ break; \ case 0x1f8d: \ *specptr = unigen_special_0x1f8d; \ break; \ case 0x1f8e: \ *specptr = unigen_special_0x1f8e; \ break; \ case 0x1f8f: \ *specptr = unigen_special_0x1f8f; \ break; \ case 0x1f90: \ *specptr = unigen_special_0x1f90; \ break; \ case 0x1f91: \ *specptr = unigen_special_0x1f91; \ break; \ case 0x1f92: \ *specptr = unigen_special_0x1f92; \ break; \ case 0x1f93: \ *specptr = unigen_special_0x1f93; \ break; \ case 0x1f94: \ *specptr = unigen_special_0x1f94; \ break; \ case 0x1f95: \ *specptr = unigen_special_0x1f95; \ break; \ case 0x1f96: \ *specptr = unigen_special_0x1f96; \ break; \ case 0x1f97: \ *specptr = unigen_special_0x1f97; \ break; \ case 0x1f98: \ *specptr = unigen_special_0x1f98; \ break; \ case 0x1f99: \ *specptr = unigen_special_0x1f99; \ break; \ case 0x1f9a: \ *specptr = unigen_special_0x1f9a; \ break; \ case 0x1f9b: \ *specptr = unigen_special_0x1f9b; \ break; \ case 0x1f9c: \ *specptr = unigen_special_0x1f9c; \ break; \ case 0x1f9d: \ *specptr = unigen_special_0x1f9d; \ break; \ case 0x1f9e: \ *specptr = unigen_special_0x1f9e; \ break; \ case 0x1f9f: \ *specptr = unigen_special_0x1f9f; \ break; \ case 0x1fa0: \ *specptr = unigen_special_0x1fa0; \ break; \ case 0x1fa1: \ *specptr = unigen_special_0x1fa1; \ break; \ case 0x1fa2: \ *specptr = unigen_special_0x1fa2; \ break; \ case 0x1fa3: \ *specptr = unigen_special_0x1fa3; \ break; \ case 0x1fa4: \ *specptr = unigen_special_0x1fa4; \ break; \ case 0x1fa5: \ *specptr = unigen_special_0x1fa5; \ break; \ case 0x1fa6: \ *specptr = unigen_special_0x1fa6; \ break; \ case 0x1fa7: \ *specptr = unigen_special_0x1fa7; \ break; \ case 0x1fa8: \ *specptr = unigen_special_0x1fa8; \ break; \ case 0x1fa9: \ *specptr = unigen_special_0x1fa9; \ break; \ case 0x1faa: \ *specptr = unigen_special_0x1faa; \ break; \ case 0x1fab: \ *specptr = unigen_special_0x1fab; \ break; \ case 0x1fac: \ *specptr = unigen_special_0x1fac; \ break; \ case 0x1fad: \ *specptr = unigen_special_0x1fad; \ break; \ case 0x1fae: \ *specptr = unigen_special_0x1fae; \ break; \ case 0x1faf: \ *specptr = unigen_special_0x1faf; \ break; \ case 0x1fb2: \ *specptr = unigen_special_0x1fb2; \ break; \ case 0x1fb3: \ *specptr = unigen_special_0x1fb3; \ break; \ case 0x1fb4: \ *specptr = unigen_special_0x1fb4; \ break; \ case 0x1fb6: \ *specptr = unigen_special_0x1fb6; \ break; \ case 0x1fb7: \ *specptr = unigen_special_0x1fb7; \ break; \ case 0x1fbc: \ *specptr = unigen_special_0x1fbc; \ break; \ case 0x1fc2: \ *specptr = unigen_special_0x1fc2; \ break; \ case 0x1fc3: \ *specptr = unigen_special_0x1fc3; \ break; \ case 0x1fc4: \ *specptr = unigen_special_0x1fc4; \ break; \ case 0x1fc6: \ *specptr = unigen_special_0x1fc6; \ break; \ case 0x1fc7: \ *specptr = unigen_special_0x1fc7; \ break; \ case 0x1fcc: \ *specptr = unigen_special_0x1fcc; \ break; \ case 0x1fd2: \ *specptr = unigen_special_0x1fd2; \ break; \ case 0x1fd3: \ *specptr = unigen_special_0x1fd3; \ break; \ case 0x1fd6: \ *specptr = unigen_special_0x1fd6; \ break; \ case 0x1fd7: \ *specptr = unigen_special_0x1fd7; \ break; \ case 0x1fe2: \ *specptr = unigen_special_0x1fe2; \ break; \ case 0x1fe3: \ *specptr = unigen_special_0x1fe3; \ break; \ case 0x1fe4: \ *specptr = unigen_special_0x1fe4; \ break; \ case 0x1fe6: \ *specptr = unigen_special_0x1fe6; \ break; \ case 0x1fe7: \ *specptr = unigen_special_0x1fe7; \ break; \ case 0x1ff2: \ *specptr = unigen_special_0x1ff2; \ break; \ case 0x1ff3: \ *specptr = unigen_special_0x1ff3; \ break; \ case 0x1ff4: \ *specptr = unigen_special_0x1ff4; \ break; \ case 0x1ff6: \ *specptr = unigen_special_0x1ff6; \ break; \ case 0x1ff7: \ *specptr = unigen_special_0x1ff7; \ break; \ case 0x1ffc: \ *specptr = unigen_special_0x1ffc; \ break; \ case 0xfb00: \ *specptr = unigen_special_0xfb00; \ break; \ case 0xfb01: \ *specptr = unigen_special_0xfb01; \ break; \ case 0xfb02: \ *specptr = unigen_special_0xfb02; \ break; \ case 0xfb03: \ *specptr = unigen_special_0xfb03; \ break; \ case 0xfb04: \ *specptr = unigen_special_0xfb04; \ break; \ case 0xfb05: \ *specptr = unigen_special_0xfb05; \ break; \ case 0xfb06: \ *specptr = unigen_special_0xfb06; \ break; \ case 0xfb13: \ *specptr = unigen_special_0xfb13; \ break; \ case 0xfb14: \ *specptr = unigen_special_0xfb14; \ break; \ case 0xfb15: \ *specptr = unigen_special_0xfb15; \ break; \ case 0xfb16: \ *specptr = unigen_special_0xfb16; \ break; \ case 0xfb17: \ *specptr = unigen_special_0xfb17; \ break; \ default: \ *specptr = nullptr; \ } typedef uint gli_case_block_t[2]; ///< upper, lower typedef uint gli_case_special_t[3]; ///< upper, lower, title typedef uint gli_decomp_block_t[2]; ///< count, position extern gli_case_block_t unigen_case_block_0x0[256]; extern gli_case_block_t unigen_case_block_0x1[256]; extern gli_case_block_t unigen_case_block_0x2[256]; extern gli_case_block_t unigen_case_block_0x3[256]; extern gli_case_block_t unigen_case_block_0x4[256]; extern gli_case_block_t unigen_case_block_0x5[256]; extern gli_case_block_t unigen_case_block_0x1e[256]; extern gli_case_block_t unigen_case_block_0x1f[256]; extern gli_case_block_t unigen_case_block_0x21[256]; extern gli_case_block_t unigen_case_block_0x24[256]; extern gli_case_block_t unigen_case_block_0xfb[256]; extern gli_case_block_t unigen_case_block_0xff[256]; extern gli_case_block_t unigen_case_block_0x104[256]; extern gli_case_special_t unigen_special_0xdf; extern gli_case_special_t unigen_special_0x130; extern gli_case_special_t unigen_special_0x149; extern gli_case_special_t unigen_special_0x1c4; extern gli_case_special_t unigen_special_0x1c5; extern gli_case_special_t unigen_special_0x1c6; extern gli_case_special_t unigen_special_0x1c7; extern gli_case_special_t unigen_special_0x1c8; extern gli_case_special_t unigen_special_0x1c9; extern gli_case_special_t unigen_special_0x1ca; extern gli_case_special_t unigen_special_0x1cb; extern gli_case_special_t unigen_special_0x1cc; extern gli_case_special_t unigen_special_0x1f0; extern gli_case_special_t unigen_special_0x1f1; extern gli_case_special_t unigen_special_0x1f2; extern gli_case_special_t unigen_special_0x1f3; extern gli_case_special_t unigen_special_0x390; extern gli_case_special_t unigen_special_0x3b0; extern gli_case_special_t unigen_special_0x587; extern gli_case_special_t unigen_special_0x1e96; extern gli_case_special_t unigen_special_0x1e97; extern gli_case_special_t unigen_special_0x1e98; extern gli_case_special_t unigen_special_0x1e99; extern gli_case_special_t unigen_special_0x1e9a; extern gli_case_special_t unigen_special_0x1f50; extern gli_case_special_t unigen_special_0x1f52; extern gli_case_special_t unigen_special_0x1f54; extern gli_case_special_t unigen_special_0x1f56; extern gli_case_special_t unigen_special_0x1f80; extern gli_case_special_t unigen_special_0x1f81; extern gli_case_special_t unigen_special_0x1f82; extern gli_case_special_t unigen_special_0x1f83; extern gli_case_special_t unigen_special_0x1f84; extern gli_case_special_t unigen_special_0x1f85; extern gli_case_special_t unigen_special_0x1f86; extern gli_case_special_t unigen_special_0x1f87; extern gli_case_special_t unigen_special_0x1f88; extern gli_case_special_t unigen_special_0x1f89; extern gli_case_special_t unigen_special_0x1f8a; extern gli_case_special_t unigen_special_0x1f8b; extern gli_case_special_t unigen_special_0x1f8c; extern gli_case_special_t unigen_special_0x1f8d; extern gli_case_special_t unigen_special_0x1f8e; extern gli_case_special_t unigen_special_0x1f8f; extern gli_case_special_t unigen_special_0x1f90; extern gli_case_special_t unigen_special_0x1f91; extern gli_case_special_t unigen_special_0x1f92; extern gli_case_special_t unigen_special_0x1f93; extern gli_case_special_t unigen_special_0x1f94; extern gli_case_special_t unigen_special_0x1f95; extern gli_case_special_t unigen_special_0x1f96; extern gli_case_special_t unigen_special_0x1f97; extern gli_case_special_t unigen_special_0x1f98; extern gli_case_special_t unigen_special_0x1f99; extern gli_case_special_t unigen_special_0x1f9a; extern gli_case_special_t unigen_special_0x1f9b; extern gli_case_special_t unigen_special_0x1f9c; extern gli_case_special_t unigen_special_0x1f9d; extern gli_case_special_t unigen_special_0x1f9e; extern gli_case_special_t unigen_special_0x1f9f; extern gli_case_special_t unigen_special_0x1fa0; extern gli_case_special_t unigen_special_0x1fa1; extern gli_case_special_t unigen_special_0x1fa2; extern gli_case_special_t unigen_special_0x1fa3; extern gli_case_special_t unigen_special_0x1fa4; extern gli_case_special_t unigen_special_0x1fa5; extern gli_case_special_t unigen_special_0x1fa6; extern gli_case_special_t unigen_special_0x1fa7; extern gli_case_special_t unigen_special_0x1fa8; extern gli_case_special_t unigen_special_0x1fa9; extern gli_case_special_t unigen_special_0x1faa; extern gli_case_special_t unigen_special_0x1fab; extern gli_case_special_t unigen_special_0x1fac; extern gli_case_special_t unigen_special_0x1fad; extern gli_case_special_t unigen_special_0x1fae; extern gli_case_special_t unigen_special_0x1faf; extern gli_case_special_t unigen_special_0x1fb2; extern gli_case_special_t unigen_special_0x1fb3; extern gli_case_special_t unigen_special_0x1fb4; extern gli_case_special_t unigen_special_0x1fb6; extern gli_case_special_t unigen_special_0x1fb7; extern gli_case_special_t unigen_special_0x1fbc; extern gli_case_special_t unigen_special_0x1fc2; extern gli_case_special_t unigen_special_0x1fc3; extern gli_case_special_t unigen_special_0x1fc4; extern gli_case_special_t unigen_special_0x1fc6; extern gli_case_special_t unigen_special_0x1fc7; extern gli_case_special_t unigen_special_0x1fcc; extern gli_case_special_t unigen_special_0x1fd2; extern gli_case_special_t unigen_special_0x1fd3; extern gli_case_special_t unigen_special_0x1fd6; extern gli_case_special_t unigen_special_0x1fd7; extern gli_case_special_t unigen_special_0x1fe2; extern gli_case_special_t unigen_special_0x1fe3; extern gli_case_special_t unigen_special_0x1fe4; extern gli_case_special_t unigen_special_0x1fe6; extern gli_case_special_t unigen_special_0x1fe7; extern gli_case_special_t unigen_special_0x1ff2; extern gli_case_special_t unigen_special_0x1ff3; extern gli_case_special_t unigen_special_0x1ff4; extern gli_case_special_t unigen_special_0x1ff6; extern gli_case_special_t unigen_special_0x1ff7; extern gli_case_special_t unigen_special_0x1ffc; extern gli_case_special_t unigen_special_0xfb00; extern gli_case_special_t unigen_special_0xfb01; extern gli_case_special_t unigen_special_0xfb02; extern gli_case_special_t unigen_special_0xfb03; extern gli_case_special_t unigen_special_0xfb04; extern gli_case_special_t unigen_special_0xfb05; extern gli_case_special_t unigen_special_0xfb06; extern gli_case_special_t unigen_special_0xfb13; extern gli_case_special_t unigen_special_0xfb14; extern gli_case_special_t unigen_special_0xfb15; extern gli_case_special_t unigen_special_0xfb16; extern gli_case_special_t unigen_special_0xfb17; extern uint unigen_special_array[]; } // End of namespace Glk #endif