143 righe
4,9 KiB
MQL5
143 righe
4,9 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| 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_SRC_DEF_MQH
|
|
#define BASESPARSERSLAN_SRC_DEF_MQH
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
#include <TSN\\PHash\\Main.mqh>
|
|
#include <TSN/Tables/AllHashes.mqh>
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
namespace TSN
|
|
{
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
#define TSN_SLF_RAW_FILE 0
|
|
#define TSN_SLF_RAW_EMBEBED 1
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
#define TSN_SLF_EXT_TYPE_FILE 0
|
|
#define TSN_SLF_EXT_TYPE_CACHE_FILE 1
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Implementacion de hashers para el hash perfecto |
|
|
//+------------------------------------------------------------------+
|
|
class CSBLHasherGenUl
|
|
{
|
|
public:
|
|
CSBLHasherGenUl(void) {}
|
|
~CSBLHasherGenUl(void) {}
|
|
|
|
|
|
static __forceinline ulong Hash(const ulong v)
|
|
{
|
|
return v; // Hasher 0
|
|
}
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
class CSBLHasherGenUl1
|
|
{
|
|
public:
|
|
CSBLHasherGenUl1(void) {}
|
|
~CSBLHasherGenUl1(void) {}
|
|
|
|
static ulong Hash(const ulong v, const ulong seed)
|
|
{
|
|
ulong h = v + seed * 0x9e3779b97f4a7c15;
|
|
h = (h ^ (h >> 30)) * 0xbf58476d1ce4e5b9;
|
|
h = (h ^ (h >> 27)) * 0x94d049bb133111eb;
|
|
h ^= (h >> 31);
|
|
return h; // Hasher 1
|
|
}
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Layout base |
|
|
//+------------------------------------------------------------------+
|
|
/*
|
|
---
|
|
Notas:
|
|
- cada [] = 1 slot = 64 bits = long
|
|
|
|
Tabla:
|
|
KEY: [tipo(4)|len(28low)<<4|start(32high)<<32]
|
|
OBJ: [tipo(4)|is_jit(1)<<4|count(3)<<5|count(24)<<8|step<<32]
|
|
ARR: [tipo(4)|Vacio por ahora 4 bits|count(24)<<8|step<<32] // Nota esto es para compatibilidad con obj
|
|
INT: [tipo(4)] [64bit=long]
|
|
FLT: [tipo(4)] [64bit=double]
|
|
BOL: [tipo(4)|bool_value(1)<<4]
|
|
STR: [tipo(4)|len(28low)<<4|start(32high)<<32]
|
|
STR_S:
|
|
|
|
---
|
|
Nota que luego el layout de yaml, etc.. para otros elemtos como ustring, etc varia...
|
|
*/
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Mask \ Bits start |
|
|
//+------------------------------------------------------------------+
|
|
//--- General
|
|
#define TSN_SBL_BIT_START_ENDTYPE (4)
|
|
#define TSN_SBL_BIT_MASK_TYPE (0xF)
|
|
|
|
//--- STRING 1-slot: [tipo(4)|len(28low)|start(32high)]
|
|
#define TSN_SBL_BIT_STR_LEN (4)
|
|
#define TSN_SBL_BIT_STR_MASK_LEN (0xFFFFFFF)
|
|
|
|
#define TSN_SBL_BIT_STR_START (32)
|
|
|
|
|
|
//--- Arrays\Obj numero de lementos (bit starts)
|
|
#define TSN_SBL_BIT_START_NUM_C (32)
|
|
|
|
#define TSN_SBL_BIT_START_NUM_EL (8)
|
|
#define TSN_SBL_BIT_MASK_NUM_EL (0xFFFFFF)
|
|
|
|
#define TSN_SBL_BIT_START_IS_HASING (4)
|
|
#define TSN_SBL_BIT_MASK_IS_HASHSING (1)
|
|
|
|
#define TSN_SBL_BIT_START_NUM_C_HASH (5)
|
|
#define TSN_SBL_BIT_MASK_NUM_C_HASH (B'111')
|
|
|
|
//---
|
|
#define TSN_SBL_BIT_START_BOOL (4)
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Tipos base |
|
|
//+------------------------------------------------------------------+
|
|
#define TSN_SBL_BASE_TYPE_KEY 0
|
|
#define TSN_SBL_BASE_TYPE_OBJ 1
|
|
#define TSN_SBL_BASE_TYPE_ARR 2
|
|
#define TSN_SBL_BASE_TYPE_INT 3
|
|
#define TSN_SBL_BASE_TYPE_FLT 4
|
|
#define TSN_SBL_BASE_TYPE_BOL 5
|
|
#define TSN_SBL_BASE_TYPE_STR 6
|
|
|
|
//--- flags base
|
|
#define TSN_SBL_BASE_F_KEY 1 // 1 << 0
|
|
#define TSN_SBL_BASE_F_OBJ 2 // 1 << 1
|
|
#define TSN_SBL_BASE_F_ARR 4 // 1 << 2
|
|
#define TSN_SBL_BASE_F_INT 8 // 1 << 3
|
|
#define TSN_SBL_BASE_F_FLT 16 // 1 << 4
|
|
#define TSN_SBL_BASE_F_BOL 32 // 1 << 5
|
|
#define TSN_SBL_BASE_F_STR 64 // 1 << 6
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
#endif // BASESPARSERSLAN_SRC_DEF_MQH
|