BasesParserSLan/Src/UE/Def.mqh

84 lines
3.9 KiB
MQL5

2026-10-05 17:54:12 -05:00
//+------------------------------------------------------------------+
//| Def.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com"
#property strict
#ifndef BASESPARSERSLAN_UE_DEF_MQH
#define BASESPARSERSLAN_UE_DEF_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
namespace TSN
{
//+------------------------------------------------------------------+
//| Unescape general |
//+------------------------------------------------------------------+
// como BE
#define DOMBASEULTIS_U_UNICODE_MAKESTRING_CODE(VAL, IX) \
ushort VAL = (ushort)g_arr_valid_hex_chars[(uchar)in[++IX]] << 12 \
| (ushort)g_arr_valid_hex_chars[(uchar)in[++IX]] << 8 \
| (ushort)g_arr_valid_hex_chars[(uchar)in[++IX]] << 4 \
| (ushort)g_arr_valid_hex_chars[(uchar)in[++IX]];
//+------------------------------------------------------------------+
#define DOMBASEULTIS_U_U32_MAKESTRING_CODE(VAL, IX) \
uint VAL = (uint)g_arr_valid_hex_chars[(uchar)in[++IX]] << 28 \
| (uint)g_arr_valid_hex_chars[(uchar)in[++IX]] << 24 \
| (uint)g_arr_valid_hex_chars[(uchar)in[++IX]] << 20 \
| (uint)g_arr_valid_hex_chars[(uchar)in[++IX]] << 16 \
| (uint)g_arr_valid_hex_chars[(uchar)in[++IX]] << 12 \
| (uint)g_arr_valid_hex_chars[(uchar)in[++IX]] << 8 \
| (uint)g_arr_valid_hex_chars[(uchar)in[++IX]] << 4 \
| (uint)g_arr_valid_hex_chars[(uchar)in[++IX]];
//+------------------------------------------------------------------+
#define DOMBASEULTIS_U_MKH_ITER(CH) \
hash ^= CH; \
hash *= 1099511628211ULL;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-10-05 21:57:35 -05:00
#define BSFL_WRITE_ASCCI(V) \
if(V < 0x80) \
{ \
res[pos++] = uchar(V); \
continue; \
} \
else \
if(V < 0x800) \
{ \
res[pos++] = uchar(0xC0 | (V >> 6)); \
res[pos++] = uchar(0x80 | (V & 0x3F)); \
continue; \
2026-10-05 17:54:12 -05:00
}
//+------------------------------------------------------------------+
#define BSFL_UTF8_WRITE_3(V) \
res[pos++] = uchar(0xE0 | (V >> 12)); \
res[pos++] = uchar(0x80 | ((V >> 6) & 0x3f)); \
res[pos++] = uchar(0x80 | (V & 0x3f));
//+------------------------------------------------------------------+
#define BSFL_UTF8_WRITE_4(V) \
res[pos++] = uchar(0xF0 | (code >> 18)); \
res[pos++] = uchar(0x80 | ((code >> 12) & 0x3F)); \
res[pos++] = uchar(0x80 | ((code >> 6) & 0x3F)); \
res[pos++] = uchar(0x80 | (code & 0x3F));
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define BSFL_UE_SURROGATES ushort
2026-10-05 21:57:35 -05:00
#define BSFL_UE_NO_SURRO uchar
2026-10-05 17:54:12 -05:00
}
#endif // BASESPARSERSLAN_UE_DEF_MQH
//+------------------------------------------------------------------+