//+------------------------------------------------------------------+ //| 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 TSN_TABLE_UNESCAPE_UNICODE, // 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 TSN_TABLE_ESCAPE_UNICODE, // 0x00 \0 null TSN_TABLE_ESCAPE_UNICODE, // 0x01  TSN_TABLE_ESCAPE_UNICODE, // 0x02  TSN_TABLE_ESCAPE_UNICODE, // 0x03  TSN_TABLE_ESCAPE_UNICODE, // 0x04  TSN_TABLE_ESCAPE_UNICODE, // 0x05  TSN_TABLE_ESCAPE_UNICODE, // 0x06  TSN_TABLE_ESCAPE_UNICODE, // 0x07 'b', // 0x08 \b backspace 't', // 0x09 \t tab 'n', // 0x0A \n newline TSN_TABLE_ESCAPE_UNICODE, // 0x0B \v 'f', // 0x0C \f form feed 'r', // 0x0D \r carriage return TSN_TABLE_ESCAPE_UNICODE, // 0x0E  TSN_TABLE_ESCAPE_UNICODE, // 0x0F  TSN_TABLE_ESCAPE_UNICODE, // 0x10  TSN_TABLE_ESCAPE_UNICODE, // 0x11  TSN_TABLE_ESCAPE_UNICODE, // 0x12  TSN_TABLE_ESCAPE_UNICODE, // 0x13  TSN_TABLE_ESCAPE_UNICODE, // 0x14  TSN_TABLE_ESCAPE_UNICODE, // 0x15  TSN_TABLE_ESCAPE_UNICODE, // 0x16  TSN_TABLE_ESCAPE_UNICODE, // 0x17  TSN_TABLE_ESCAPE_UNICODE, // 0x18  TSN_TABLE_ESCAPE_UNICODE, // 0x19  TSN_TABLE_ESCAPE_UNICODE, // 0x1A  TSN_TABLE_ESCAPE_UNICODE, // 0x1B TSN_TABLE_ESCAPE_UNICODE, // 0x1C  TSN_TABLE_ESCAPE_UNICODE, // 0x1D  TSN_TABLE_ESCAPE_UNICODE, // 0x1E  TSN_TABLE_ESCAPE_UNICODE, // 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) TSN_TABLE_ESCAPE_UNICODE, // 0x7F  //--- 0x80–0xFF: extended ASCII → \uXXXX TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0x80–0x87 TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0x88–0x8F TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0x90–0x97 TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0x98–0x9F TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xA0–0xA7 TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xA8–0xAF TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xB0–0xB7 TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xB8–0xBF TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xC0–0xC7 TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xC8–0xCF TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xD0–0xD7 TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xD8–0xDF TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xE0–0xE7 TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xE8–0xEF TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xF0–0xF7 TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, TSN_TABLE_ESCAPE_UNICODE, // 0xF8–0xFF }; } //+------------------------------------------------------------------+ #endif // JSONPARSERBYLEO_SRC_TABLES_UNESCAPE_ESCAPE_MQH