//+------------------------------------------------------------------+ //| EscapeUnescape.mqh | //| Copyright 2026, Niquel Mendoza. | //| https://www.mql5.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, Niquel Mendoza." #property link "https://www.mql5.com/" #property strict #ifndef TSNTABES_SRC_ESCAPEUNESCAPE_MQH #define TSNTABES_SRC_ESCAPEUNESCAPE_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ namespace TSN { // Se infiere que uno ya vio el \0xFF // n = \n // resta -34 /* Soporte \0 \n \r \t \\ \/ \" \a \b \f \v \e //--- solo iniciales.. \xXX \uXXXX */ //--- #define TSN_TABLE_UNESCAPE_UNICODE (0xFD) #define TSN_TABLE_UNESCAPE_HEX (0xFE) #define TSN_TABLE_UNESCAPE_INVALID (0xFF) #define TSN_UNESCAPE_SIZE (121) // const uchar g_tsn_table_unescape_table[TSN_UNESCAPE_SIZE] = { // 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 # error 0xFF, // 2 0x24 $ error 0xFF, // 3 0x25 % error 0xFF, // 4 0x26 & error '\'', // 5 0x27 ' \' = ' 0xFF, // 6 0x28 ( error 0xFF, // 7 0x29 ) error 0xFF, // 8 0x2A * error 0xFF, // 9 0x2B + error 0xFF, // 10 0x2C , error 0xFF, // 11 0x2D - error 0xFF, // 12 0x2E . error '/', // 13 0x2F / \/ = / 0, // 14 0x30 0 \0 = null 0xFF, // 15 0x31 1 error 0xFF, // 16 0x32 2 error 0xFF, // 17 0x33 3 error 0xFF, // 18 0x34 4 error 0xFF, // 19 0x35 5 error 0xFF, // 20 0x36 6 error 0xFF, // 21 0x37 7 error 0xFF, // 22 0x38 8 error 0xFF, // 23 0x39 9 error 0xFF, // 24 0x3A : error 0xFF, // 25 0x3B ; error 0xFF, // 26 0x3C < error 0xFF, // 27 0x3D = error 0xFF, // 28 0x3E > error 0xFF, // 29 0x3F ? error 0xFF, // 30 0x40 @ error 0xFF, // 31 0x41 A error 0xFF, // 32 0x42 B error 0xFF, // 33 0x43 C error 0xFF, // 34 0x44 D error 0xFF, // 35 0x45 E error 0xFF, // 36 0x46 F error 0xFF, // 37 0x47 G error 0xFF, // 38 0x48 H error 0xFF, // 39 0x49 I error 0xFF, // 40 0x4A J error 0xFF, // 41 0x4B K error 0xFF, // 42 0x4C L error 0xFF, // 43 0x4D M error 0xFF, // 44 0x4E N error 0xFF, // 45 0x4F O error 0xFF, // 46 0x50 P error 0xFF, // 47 0x51 Q error 0xFF, // 48 0x52 R error 0xFF, // 49 0x53 S error 0xFF, // 50 0x54 T error 0xFF, // 51 0x55 U error 0xFF, // 52 0x56 V error 0xFF, // 53 0x57 W error 0xFF, // 54 0x58 X error 0xFF, // 55 0x59 Y error 0xFF, // 56 0x5A Z error 0xFF, // 57 0x5B [ error '\\', // 58 0x5C \ \\ = \ 0xFF, // 59 0x5D ] error 0xFF, // 60 0x5E ^ error 0xFF, // 61 0x5F _ error 0xFF, // 62 0x60 ` error 0x07, // 63 0x61 a \a = bell 0x08, // 64 0x62 b \b = backspace 0xFF, // 65 0x63 c error 0xFF, // 66 0x64 d error 0x1B, // 67 0x65 e \e = escape 0x0C, // 68 0x66 f \f = form feed 0xFF, // 69 0x67 g error 0xFF, // 70 0x68 h error 0xFF, // 71 0x69 i error 0xFF, // 72 0x6A j error 0xFF, // 73 0x6B k error 0xFF, // 74 0x6C l error 0xFF, // 75 0x6D m error 0x0A, // 76 0x6E n \n = newline 0xFF, // 77 0x6F o error 0xFF, // 78 0x70 p error 0xFF, // 79 0x71 q error 0x0D, // 80 0x72 r \r = carriage return 0xFF, // 81 0x73 s error 0x09, // 82 0x74 t \t = tab 0xFD, // 83 0x75 u \uXXXX unicode 0x0B, // 84 0x76 v \v = vertical tab 0xFF, // 85 0x77 w error 0xFE, // 86 0x78 x \xXX hex }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #define TSN_TABLE_ESCAPE_PASSTHROUGH (0xFF) #define TSN_TABLE_ESCAPE_UNICODE (0xFD) const uchar g_tsn_table_escape_tables[256] = { //--- 0x00–0x1F: caracteres de control '0', // 0x00 \0 null 0xFD, // 0x01  0xFD, // 0x02  0xFD, // 0x03  0xFD, // 0x04  0xFD, // 0x05  0xFD, // 0x06  'a', // 0x07 \a bell 'b', // 0x08 \b backspace 't', // 0x09 \t tab 'n', // 0x0A \n newline 'v', // 0x0B \v vertical tab '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  'e', // 0x1B \e escape 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 '\'', // 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 // TSNTABES_SRC_ESCAPEUNESCAPE_MQH