forked from rosh/MQL5Book
43 lines
1.5 KiB
MQL5
43 lines
1.5 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| EnumToArray.mqh |
| |
//| Copyright (c) 2022, MetaQuotes Ltd. |
| |
//| https://www.mql5.com/ |
| |
//+------------------------------------------------------------------+
| |
| |
//+------------------------------------------------------------------+
| |
//| Convert enum E elements into array of ints (correponding to IDs) |
| |
//| Return number of elements in the enum E |
| |
//+------------------------------------------------------------------+
| |
template<typename E>
| |
int EnumToArray(E /*dummy*/, int &values[],
| |
const int start = INT_MIN, const int stop = INT_MAX)
| |
{
| |
const static string t = "::";
| |
| |
ArrayResize(values, 0);
| |
int count = 0;
| |
| |
for(int i = start; i < stop && !IsStopped(); i++)
| |
{
| |
E e = (E)i;
| |
if(StringFind(EnumToString(e), t) == -1)
| |
{
| |
ArrayResize(values, count + 1);
| |
values[count++] = i;
| |
}
| |
}
| |
return count;
| |
}
| |
| |
//+------------------------------------------------------------------+
| |
//| Shorthand version of enum E elements detection as array of ints |
| |
//+------------------------------------------------------------------+
| |
template<typename E>
| |
int EnumToArray(int &values[],
| |
const int start = INT_MIN, const int stop = INT_MAX)
| |
{
| |
static E e;
| |
return EnumToArray(e, values, start, stop);
| |
}
| |
| |
//+------------------------------------------------------------------+
|