JsonParserByLeo/Src/Tables/UnescapeEscape.mqh

333 lines
14 KiB
MQL5
Raw Permalink Normal View History

2026-07-24 07:27:55 -05:00
//+------------------------------------------------------------------+
2026-07-19 18:50:54 -05:00
//| 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 <TSN\\Tables\\UE.mqh>
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
2026-07-24 07:27:55 -05:00
TSN_TABLE_UNESCAPE_UNICODE, // 83 0x75 u \uXXXX unicode
2026-07-19 18:50:54 -05:00
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
2026-07-24 07:27:55 -05:00
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
2026-07-19 18:50:54 -05:00
'b', // 0x08 \b backspace
't', // 0x09 \t tab
'n', // 0x0A \n newline
2026-07-24 07:27:55 -05:00
TSN_TABLE_ESCAPE_UNICODE, // 0x0B \v
2026-07-19 18:50:54 -05:00
'f', // 0x0C \f form feed
'r', // 0x0D \r carriage return
2026-07-24 07:27:55 -05:00
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 
2026-07-19 18:50:54 -05:00
//--- 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)
2026-07-24 07:27:55 -05:00
TSN_TABLE_ESCAPE_UNICODE, // 0x7F 
2026-07-19 18:50:54 -05:00
//--- 0x80–0xFF: extended ASCII → \uXXXX
2026-07-24 07:27:55 -05:00
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
2026-07-19 18:50:54 -05:00
};
}
//+------------------------------------------------------------------+
#endif // JSONPARSERBYLEO_SRC_TABLES_UNESCAPE_ESCAPE_MQH