TsnTables/Src/Bits/Swar/Swar.mqh

65 lines
2.9 KiB
MQL5
Raw Permalink Normal View History

2026-08-27 13:13:08 -05:00
//+------------------------------------------------------------------+
//| Swar.mqh |
//| Copyright 2026, Niquel Mendoza |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza"
#property link "https://www.mql5.com"
#property strict
#ifndef TSNTABES_SRC_BITS_SWAR_SWAR_MQH
#define TSNTABES_SRC_BITS_SWAR_SWAR_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include "Mask.mqh"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
namespace TSN
{
//+------------------------------------------------------------------+
//| Swar |
//+------------------------------------------------------------------+
// LO = 0x0101010101010101 = 72340172838076673ULL
// HI = 0x8080808080808080 = 9259542123273814144ULL
//--- Constante para compatarct ulongs en bits (ulong a uchar)
#define TSNTABLES_MAGIC_COMPACT 0x0102040810204080
// primero los bits altos ahora son los bajos luego lo muplticalos pro la constante magica
// y en los ultismo 8 bits algtos del ulong queda la mascara uchar..
#define TSNTABLES_COMPACT_UL(mask) uchar((((mask >> 7) * TSNTABLES_MAGIC_COMPACT) >> 56))
#define TSNTABLES_COMPACT_UL_F(mask) ulong((((mask >> 7) * TSNTABLES_MAGIC_COMPACT) >> 56))
//---
#define TSNTABLES_MASK_PARES (B'01010101')
#define TSNTABLES_MASK_IMPARES (B'10101010')
///--- F = Full
#define TSNTABLES_MASK_IMPARES_F (0xAAAAAAAAAAAAAAAA)
#define TSNTABLES_MASK_PARES_F (0x5555555555555555)
//+------------------------------------------------------------------+
//| Main -- consatnes bases |
//+------------------------------------------------------------------+
//--- Constantes
#define TSNTABLES_SWAR_LO 0x0101010101010101
#define TSNTABLES_SWAR_HI 0x8080808080808080
2026-09-04 22:08:43 -05:00
#define TSNTABLES_SWAR_HAS(mask) ((mask - TSNTABLES_SWAR_LO) & ~mask & TSNTABLES_SWAR_HI)
2026-08-27 13:13:08 -05:00
2026-09-04 22:08:43 -05:00
//---
#define TSNTABLES_SWAR_LO9 0x0040201008040201
#define TSNTABLES_SWAR_HI9 0x4020100804020100
//---
#define TSNTABLES_SWAR_9_MAKE_MASK(n) (n*TSNTABLES_SWAR_LO9)
#define TSNTABLES_SWAR_HAS9(mask) (~(mask - TSNTABLES_SWAR_LO9) & TSNTABLES_SWAR_HI9)
#define TSNTABLES_SWAR_LESS9_WGUARD(chunk, n) (~((chunk|TSNTABLES_SWAR_HI9) - TSNTABLES_SWAR_9_MAKE_MASK(n)) & TSNTABLES_SWAR_HI9)
}
2026-08-27 13:13:08 -05:00
//+------------------------------------------------------------------+
2026-09-04 22:08:43 -05:00
#endif // TSNTABES_SRC_BITS_SWAR_SWAR_MQH