JsonParserByLeo/Src/Tables/UnescapeEscape.mqh
2026-07-24 07:27:55 -05:00

333 lines
14 KiB
MQL4
Raw Permalink Blame History

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.

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