2026-06-14 13:31:28 -05:00
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
|
//| 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)
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-30 08:25:03 -05:00
|
|
|
|
//
|
2026-06-14 13:31:28 -05:00
|
|
|
|
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
|
|
|
|
|
|
};
|
2026-06-30 08:25:03 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
|
//| |
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
|
#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
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
2026-06-14 13:31:28 -05:00
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
|
#endif // TSNTABES_SRC_ESCAPEUNESCAPE_MQH
|