//+------------------------------------------------------------------+ //| UnescapeEscape.mqh | //| Copyright 2026, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, MetaQuotes Ltd." #property link "https://www.mql5.com" #property strict #ifndef JSONPARSERBYLEO_SRC_TABLES_UNESCAPE_ESCAPE_MQH #define JSONPARSERBYLEO_SRC_TABLES_UNESCAPE_ESCAPE_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #include namespace TSN { //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ const uchar g_tsn_table_json_unescape_table[256] = { // char idx ascii //--- WS \ Invalid 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, //--- '"', // 0 0x22 \" = " 0xFF, // 1 0x23 # 0xFF, // 2 0x24 $ 0xFF, // 3 0x25 % 0xFF, // 4 0x26 & 0xFF, // 5 0x27 ' \' = ' 0xFF, // 6 0x28 ( 0xFF, // 7 0x29 ) 0xFF, // 8 0x2A * 0xFF, // 9 0x2B + 0xFF, // 10 0x2C , 0xFF, // 11 0x2D - 0xFF, // 12 0x2E . '/', // 13 0x2F / \/ = / 0xFF, // 14 0x30 0xFF, // 15 0x31 1 0xFF, // 16 0x32 2 0xFF, // 17 0x33 3 0xFF, // 18 0x34 4 0xFF, // 19 0x35 5 0xFF, // 20 0x36 6 0xFF, // 21 0x37 7 0xFF, // 22 0x38 8 0xFF, // 23 0x39 9 0xFF, // 24 0x3A : 0xFF, // 25 0x3B ; 0xFF, // 26 0x3C < 0xFF, // 27 0x3D = 0xFF, // 28 0x3E > 0xFF, // 29 0x3F ? 0xFF, // 30 0x40 @ 0xFF, // 31 0x41 A 0xFF, // 32 0x42 B 0xFF, // 33 0x43 C 0xFF, // 34 0x44 D 0xFF, // 35 0x45 E 0xFF, // 36 0x46 F 0xFF, // 37 0x47 G 0xFF, // 38 0x48 H 0xFF, // 39 0x49 I 0xFF, // 40 0x4A J 0xFF, // 41 0x4B K 0xFF, // 42 0x4C L 0xFF, // 43 0x4D M 0xFF, // 44 0x4E N 0xFF, // 45 0x4F O 0xFF, // 46 0x50 P 0xFF, // 47 0x51 Q 0xFF, // 48 0x52 R 0xFF, // 49 0x53 S 0xFF, // 50 0x54 T 0xFF, // 51 0x55 U 0xFF, // 52 0x56 V 0xFF, // 53 0x57 W 0xFF, // 54 0x58 X 0xFF, // 55 0x59 Y 0xFF, // 56 0x5A Z 0xFF, // 57 0x5B [ '\\', // 58 0x5C \ \\ = 0xFF, // 59 0x5D ] 0xFF, // 60 0x5E ^ 0xFF, // 61 0x5F _ 0xFF, // 62 0x60 ` 0xFF, // 63 0x61 a 0x08, // 64 0x62 b \b = backspace 0xFF, // 65 0x63 c 0xFF, // 66 0x64 d 0xFF, // 67 0x65 e 0x0C, // 68 0x66 f \f = form feed 0xFF, // 69 0x67 g 0xFF, // 70 0x68 h 0xFF, // 71 0x69 i 0xFF, // 72 0x6A j 0xFF, // 73 0x6B k 0xFF, // 74 0x6C l 0xFF, // 75 0x6D m 0x0A, // 76 0x6E n \n = newline 0xFF, // 77 0x6F o 0xFF, // 78 0x70 p 0xFF, // 79 0x71 q 0x0D, // 80 0x72 r \r = carriage return 0xFF, // 81 0x73 s 0x09, // 82 0x74 t \t = tab 0xFD, // 83 0x75 u \uXXXX unicode 0xFF, // 84 0x76 v 0xFF, // 85 0x77 w 0xFF, // 86 0x78 x 0xFF, // 87 0x79 y 0xFF, // 88 0x7A z 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x7B - 0x7F //--- Extended / high range (0x80 - 0xFF): all invalid for JSON escape context 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; //--- const uchar g_tsn_table_json_escape_tables[256] = { //--- 0x00–0x1F: caracteres de control 0xFD, // 0x00 \0 null 0xFD, // 0x01  0xFD, // 0x02  0xFD, // 0x03  0xFD, // 0x04  0xFD, // 0x05  0xFD, // 0x06  0xFD, // 0x07 'b', // 0x08 \b backspace 't', // 0x09 \t tab 'n', // 0x0A \n newline 0xFD, // 0x0B \v 'f', // 0x0C \f form feed 'r', // 0x0D \r carriage return 0xFD, // 0x0E  0xFD, // 0x0F  0xFD, // 0x10  0xFD, // 0x11  0xFD, // 0x12  0xFD, // 0x13  0xFD, // 0x14  0xFD, // 0x15  0xFD, // 0x16  0xFD, // 0x17  0xFD, // 0x18  0xFD, // 0x19  0xFD, // 0x1A  0xFD, // 0x1B 0xFD, // 0x1C  0xFD, // 0x1D  0xFD, // 0x1E  0xFD, // 0x1F  //--- 0x20–0x21: imprimibles 0xFF, // 0x20 ' ' space 0xFF, // 0x21 ! //--- 0x22: comilla doble '"', // 0x22 \" //--- 0x23–0x26: imprimibles 0xFF, // 0x23 # 0xFF, // 0x24 $ 0xFF, // 0x25 % 0xFF, // 0x26 & //--- 0x27: comilla simple 0xFF, // 0x27 \' //--- 0x28–0x2E: imprimibles 0xFF, // 0x28 ( 0xFF, // 0x29 ) 0xFF, // 0x2A * 0xFF, // 0x2B + 0xFF, // 0x2C , 0xFF, // 0x2D - 0xFF, // 0x2E . //--- 0x2F: slash '/', // 0x2F \/ //--- 0x30–0x5B: imprimibles 0xFF, // 0x30 0 0xFF, // 0x31 1 0xFF, // 0x32 2 0xFF, // 0x33 3 0xFF, // 0x34 4 0xFF, // 0x35 5 0xFF, // 0x36 6 0xFF, // 0x37 7 0xFF, // 0x38 8 0xFF, // 0x39 9 0xFF, // 0x3A : 0xFF, // 0x3B ; 0xFF, // 0x3C < 0xFF, // 0x3D = 0xFF, // 0x3E > 0xFF, // 0x3F ? 0xFF, // 0x40 @ 0xFF, // 0x41 A 0xFF, // 0x42 B 0xFF, // 0x43 C 0xFF, // 0x44 D 0xFF, // 0x45 E 0xFF, // 0x46 F 0xFF, // 0x47 G 0xFF, // 0x48 H 0xFF, // 0x49 I 0xFF, // 0x4A J 0xFF, // 0x4B K 0xFF, // 0x4C L 0xFF, // 0x4D M 0xFF, // 0x4E N 0xFF, // 0x4F O 0xFF, // 0x50 P 0xFF, // 0x51 Q 0xFF, // 0x52 R 0xFF, // 0x53 S 0xFF, // 0x54 T 0xFF, // 0x55 U 0xFF, // 0x56 V 0xFF, // 0x57 W 0xFF, // 0x58 X 0xFF, // 0x59 Y 0xFF, // 0x5A Z 0xFF, // 0x5B [ //--- 0x5C: backslash '\\', // 0x5C \\ //--- 0x5D–0x7E: imprimibles 0xFF, // 0x5D ] 0xFF, // 0x5E ^ 0xFF, // 0x5F _ 0xFF, // 0x60 ` 0xFF, // 0x61 a 0xFF, // 0x62 b 0xFF, // 0x63 c 0xFF, // 0x64 d 0xFF, // 0x65 e 0xFF, // 0x66 f 0xFF, // 0x67 g 0xFF, // 0x68 h 0xFF, // 0x69 i 0xFF, // 0x6A j 0xFF, // 0x6B k 0xFF, // 0x6C l 0xFF, // 0x6D m 0xFF, // 0x6E n 0xFF, // 0x6F o 0xFF, // 0x70 p 0xFF, // 0x71 q 0xFF, // 0x72 r 0xFF, // 0x73 s 0xFF, // 0x74 t 0xFF, // 0x75 u 0xFF, // 0x76 v 0xFF, // 0x77 w 0xFF, // 0x78 x 0xFF, // 0x79 y 0xFF, // 0x7A z 0xFF, // 0x7B { 0xFF, // 0x7C | 0xFF, // 0x7D } 0xFF, // 0x7E ~ //--- 0x7F: DEL (control) 0xFD, // 0x7F  //--- 0x80–0xFF: extended ASCII → \uXXXX 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0x80–0x87 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0x88–0x8F 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0x90–0x97 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0x98–0x9F 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xA0–0xA7 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xA8–0xAF 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xB0–0xB7 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xB8–0xBF 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xC0–0xC7 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xC8–0xCF 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xD0–0xD7 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xD8–0xDF 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xE0–0xE7 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xE8–0xEF 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xF0–0xF7 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, // 0xF8–0xFF }; } //+------------------------------------------------------------------+ #endif // JSONPARSERBYLEO_SRC_TABLES_UNESCAPE_ESCAPE_MQH