316 lines
10 KiB
MQL5
316 lines
10 KiB
MQL5
|
|
//+------------------------------------------------------------------+
|
|||
|
|
//| 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
|
|||
|
|
0xFD, // 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
|
|||
|
|
0xFD, // 0x00 \0 null
|
|||
|
|
0xFD, // 0x01
|
|||
|
|
0xFD, // 0x02
|
|||
|
|
0xFD, // 0x03
|
|||
|
|
0xFD, // 0x04
|
|||
|
|
0xFD, // 0x05
|
|||
|
|
0xFD, // 0x06
|
|||
|
|
0xFD, // 0x07
|
|||
|
|
'b', // 0x08 \b backspace
|
|||
|
|
't', // 0x09 \t tab
|
|||
|
|
'n', // 0x0A \n newline
|
|||
|
|
0xFD, // 0x0B \v
|
|||
|
|
'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
|
|||
|
|
0xFD, // 0x1B
|
|||
|
|
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
|
|||
|
|
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)
|
|||
|
|
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 // JSONPARSERBYLEO_SRC_TABLES_UNESCAPE_ESCAPE_MQH
|