MobinMQL/Include/Generic/Internal/CompareFunction.mqh

210 lines
6.8 KiB
MQL5
Raw Permalink Normal View History

2025-07-22 14:47:41 +03:00
//+------------------------------------------------------------------+
//| CompareFunction.mqh |
//| Copyright 2000-2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Generic\Interfaces\IComparable.mqh>
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const bool x,const bool y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const char x,const char y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const uchar x,const uchar y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const short x,const short y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const ushort x,const ushort y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const color x,const color y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const int x,const int y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const uint x,const uint y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const datetime x,const datetime y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const long x,const long y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const ulong x,const ulong y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const float x,const float y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const double x,const double y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
int Compare(const string x,const string y)
{
if(x>y)
return(1);
else if(x<y)
return(-1);
else
return(0);
}
//+------------------------------------------------------------------+
//| Compares two objects and returns a value indicating whether one |
//| is less than, equal to, or greater than the other. |
//+------------------------------------------------------------------+
template<typename T>
int Compare(T x,T y)
{
//--- try to convert to comparable object
IComparable<T>*comparable=dynamic_cast<IComparable<T>*>(x);
if(comparable)
{
//--- use specied compare method
return comparable.Compare(y);
}
else
{
//--- unknown compare function
return(0);
}
}
//+------------------------------------------------------------------+