// cp864 -- one- or two-byte/wide-character tables // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #pragma once #ifndef _CVT_CP864_ #define _CVT_CP864_ #include #if _STL_COMPILER_PREPROCESSOR // // Name: cp864_DOSArabic to Unicode table // Unicode version: 2.0 // Table version: 2.00 // Table format: Format A // Date: 04/24/96 // Authors: Lori Brownell // K.D. Chang // General notes: none // // Format: Three tab-separated columns // Column #1 is the cp864_DOSArabic code (in hex) // Column #2 is the Unicode (in hex as 0xXXXX) // Column #3 is the Unicode name (follows a comment sign, '#') // // The entries are in cp864_DOSArabic order // #include #pragma pack(push, _CRT_PACKING) #pragma warning(push, _STL_WARNING_LEVEL) #pragma warning(disable : _STL_DISABLED_WARNINGS) _STL_DISABLE_CLANG_WARNINGS #pragma push_macro("new") #undef new namespace stdext { namespace cvt { template struct _tab_cp864 { enum { _Nlow = 0x25, _Nbytes = 1 }; static const unsigned short _Btw[0xdb]; static const unsigned short _Dbvalid[0x01]; static const unsigned short _Dbtw[0x01]; static const unsigned short _Wvalid[0x78]; static const unsigned char _Wtb[0x78]; }; template const unsigned short _tab_cp864<_Dummy>::_Btw[0xdb] = { // map single bytes to words 0x066a, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00b0, 0x00b7, 0x2219, 0x221a, 0x2592, 0x2500, 0x2502, 0x253c, 0x2524, 0x252c, 0x251c, 0x2534, 0x2510, 0x250c, 0x2514, 0x2518, 0x03b2, 0x221e, 0x03c6, 0x00b1, 0x00bd, 0x00bc, 0x2248, 0x00ab, 0x00bb, 0xfef7, 0xfef8, 0x0000, 0x0000, 0xfefb, 0xfefc, 0x0000, 0x00a0, 0x00ad, 0xfe82, 0x00a3, 0x00a4, 0xfe84, 0x0000, 0x0000, 0xfe8e, 0xfe8f, 0xfe95, 0xfe99, 0x060c, 0xfe9d, 0xfea1, 0xfea5, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0xfed1, 0x061b, 0xfeb1, 0xfeb5, 0xfeb9, 0x061f, 0x00a2, 0xfe80, 0xfe81, 0xfe83, 0xfe85, 0xfeca, 0xfe8b, 0xfe8d, 0xfe91, 0xfe93, 0xfe97, 0xfe9b, 0xfe9f, 0xfea3, 0xfea7, 0xfea9, 0xfeab, 0xfead, 0xfeaf, 0xfeb3, 0xfeb7, 0xfebb, 0xfebf, 0xfec1, 0xfec5, 0xfecb, 0xfecf, 0x00a6, 0x00ac, 0x00f7, 0x00d7, 0xfec9, 0x0640, 0xfed3, 0xfed7, 0xfedb, 0xfedf, 0xfee3, 0xfee7, 0xfeeb, 0xfeed, 0xfeef, 0xfef3, 0xfebd, 0xfecc, 0xfece, 0xfecd, 0xfee1, 0xfe7d, 0x0651, 0xfee5, 0xfee9, 0xfeec, 0xfef0, 0xfef2, 0xfed0, 0xfed5, 0xfef5, 0xfef6, 0xfedd, 0xfed9, 0xfef1, 0x25a0, 0x0000}; template const unsigned short _tab_cp864<_Dummy>::_Dbvalid[1] = {0}; template const unsigned short _tab_cp864<_Dummy>::_Dbtw[1] = {0}; template const unsigned short _tab_cp864<_Dummy>::_Wvalid[0x78] = { // words that map to single or double bytes 0x00a2, 0x00a6, 0x00ab, 0x00ac, 0x00ad, 0x00b0, 0x00b1, 0x00b7, 0x00bb, 0x00bc, 0x00bd, 0x00d7, 0x00f7, 0x03b2, 0x03c6, 0x060c, 0x061b, 0x061f, 0x0640, 0x0651, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0x066a, 0x2219, 0x221a, 0x221e, 0x2248, 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2592, 0x25a0, 0xfe7d, 0xfe80, 0xfe81, 0xfe82, 0xfe83, 0xfe84, 0xfe85, 0xfe8b, 0xfe8d, 0xfe8e, 0xfe8f, 0xfe91, 0xfe93, 0xfe95, 0xfe97, 0xfe99, 0xfe9b, 0xfe9d, 0xfe9f, 0xfea1, 0xfea3, 0xfea5, 0xfea7, 0xfea9, 0xfeab, 0xfead, 0xfeaf, 0xfeb1, 0xfeb3, 0xfeb5, 0xfeb7, 0xfeb9, 0xfebb, 0xfebd, 0xfebf, 0xfec1, 0xfec5, 0xfec9, 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, 0xfed0, 0xfed1, 0xfed3, 0xfed5, 0xfed7, 0xfed9, 0xfedb, 0xfedd, 0xfedf, 0xfee1, 0xfee3, 0xfee5, 0xfee7, 0xfee9, 0xfeeb, 0xfeec, 0xfeed, 0xfeef, 0xfef0, 0xfef1, 0xfef2, 0xfef3, 0xfef5, 0xfef6, 0xfef7, 0xfef8, 0xfefb, 0xfefc}; template const unsigned char _tab_cp864<_Dummy>::_Wtb[0x78] = { // map words to bytes 0x00c0, 0x00db, 0x0097, 0x00dc, 0x00a1, 0x0080, 0x0093, 0x0081, 0x0098, 0x0095, 0x0094, 0x00de, 0x00dd, 0x0090, 0x0092, 0x00ac, 0x00bb, 0x00bf, 0x00e0, 0x00f1, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x0025, 0x0082, 0x0083, 0x0091, 0x0096, 0x0085, 0x0086, 0x008d, 0x008c, 0x008e, 0x008f, 0x008a, 0x0088, 0x0089, 0x008b, 0x0087, 0x0084, 0x00fe, 0x00f0, 0x00c1, 0x00c2, 0x00a2, 0x00c3, 0x00a5, 0x00c4, 0x00c6, 0x00c7, 0x00a8, 0x00a9, 0x00c8, 0x00c9, 0x00aa, 0x00ca, 0x00ab, 0x00cb, 0x00ad, 0x00cc, 0x00ae, 0x00cd, 0x00af, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00bc, 0x00d3, 0x00bd, 0x00d4, 0x00be, 0x00d5, 0x00eb, 0x00d6, 0x00d7, 0x00d8, 0x00df, 0x00c5, 0x00d9, 0x00ec, 0x00ee, 0x00ed, 0x00da, 0x00f7, 0x00ba, 0x00e1, 0x00f8, 0x00e2, 0x00fc, 0x00e3, 0x00fb, 0x00e4, 0x00ef, 0x00e5, 0x00f2, 0x00e6, 0x00f3, 0x00e7, 0x00f4, 0x00e8, 0x00e9, 0x00f5, 0x00fd, 0x00f6, 0x00ea, 0x00f9, 0x00fa, 0x0099, 0x009a, 0x009d, 0x009e}; template class codecvt_cp864 : public _Cvt_one_byte<_Elem, _tab_cp864, _Maxcode> {}; } // namespace cvt } // namespace stdext #pragma pop_macro("new") _STL_RESTORE_CLANG_WARNINGS #pragma warning(pop) #pragma pack(pop) #endif // _STL_COMPILER_PREPROCESSOR #endif // _CVT_CP864_