TsnTables/Src/EscapeUnescape.mqh
Nique_372 25f4e61cd6
2026-06-30 08:25:03 -05:00

331 lines
10 KiB
MQL4

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//+------------------------------------------------------------------+
//| 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