MQLArticles/Utils/Sort/Generic/Simple.mqh
2026-09-15 15:46:48 -05:00

75 lines
2.8 KiB
MQL5

//+------------------------------------------------------------------+
//| Simple.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com"
#property strict
#ifndef MQLARTICLES_UTILS_SORT_GENERIC_SIMPLE_MQH
#define MQLARTICLES_UTILS_SORT_GENERIC_SIMPLE_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include "..\\Base\\Sort.mqh"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
// Por defecto simple..
#define TsnSort(arr, lo, hi, type) CTsnSort::Sort<type, CGenericUtilsSort_##type>(arr, (lo), (hi))
// Version custom espeicia el "TBase"
#define TsnSortP(arr, lo, hi, type, BASE) CTsnSort::Sort<type, CGenericUtilsSort_##BASE>(arr, (lo), (hi))
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CGenericUtilsSort_Simple
{
public:
CGenericUtilsSort_Simple(void) {}
~CGenericUtilsSort_Simple(void) {}
//---
template<typename TValue>
static __forceinline bool Less(const TValue a, const TValue b) { return a < b; }
template<typename TValue>
static void Swap(TValue& a, TValue& b)
{
const TValue temp = a;
a = b;
b = temp;
}
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define TSNSORT_MAKE_CLASS_SIMPLE(TYPE) \
class CGenericUtilsSort_##TYPE : public CGenericUtilsSort_Simple \
{ \
public: \
CGenericUtilsSort_##TYPE(void) {} \
~CGenericUtilsSort_##TYPE(void) {} \
};
//---
TSNSORT_MAKE_CLASS_SIMPLE(int)
TSNSORT_MAKE_CLASS_SIMPLE(long)
TSNSORT_MAKE_CLASS_SIMPLE(char)
TSNSORT_MAKE_CLASS_SIMPLE(short)
TSNSORT_MAKE_CLASS_SIMPLE(uint)
TSNSORT_MAKE_CLASS_SIMPLE(ulong)
TSNSORT_MAKE_CLASS_SIMPLE(uchar)
TSNSORT_MAKE_CLASS_SIMPLE(ushort)
TSNSORT_MAKE_CLASS_SIMPLE(float)
TSNSORT_MAKE_CLASS_SIMPLE(double)
TSNSORT_MAKE_CLASS_SIMPLE(datetime)
TSNSORT_MAKE_CLASS_SIMPLE(color)
//+------------------------------------------------------------------+
#endif // MQLARTICLES_UTILS_SORT_GENERIC_SIMPLE_MQH