forked from rosh/MQL5Book
42 lines
1.6 KiB
MQL5
42 lines
1.6 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| RTTI.mqh |
| |||
//| Copyright 2021, MetaQuotes Ltd. |
| |||
//| https://www.mql5.com |
| |||
//+------------------------------------------------------------------+
| |||
#include "TypeName.mqh"
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| Run-Time Type Information stub (via strings) |
| |||
//+------------------------------------------------------------------+
| |||
template<typename T>
| |||
ENUM_DATATYPE rtti(T v = (T)NULL)
| |||
{
| |||
static string types[] =
| |||
{
| |||
"null", // (0)
| |||
"bool", // 0 TYPE_BOOL=1 (1)
| |||
"char", // 1 TYPE_CHAR=2 (2)
| |||
"uchar", // 2 TYPE_UCHAR=3 (3)
| |||
"short", // 3 TYPE_SHORT=4 (4)
| |||
"ushort", // 4 TYPE_USHORT=5 (5)
| |||
"color", // 5 TYPE_COLOR=6 (6)
| |||
"int", // 6 TYPE_INT=7 (7)
| |||
"uint", // 7 TYPE_UINT=8 (8)
| |||
"datetime", // 8 TYPE_DATETIME=9 (9)
| |||
"long", // 9 TYPE_LONG=10 (A)
| |||
"ulong", // 10 TYPE_ULONG=11 (B)
| |||
"float", // 11 TYPE_FLOAT=12 (C)
| |||
"double", // 12 TYPE_DOUBLE=13 (D)
| |||
"string", // 13 TYPE_STRING=14 (E)
| |||
};
| |||
const string t = TYPENAME(T);
| |||
for(int i = 0; i < ArraySize(types); ++i)
| |||
{
| |||
if(types[i] == t)
| |||
{
| |||
return (ENUM_DATATYPE)i;
| |||
}
| |||
}
| |||
return (ENUM_DATATYPE)0;
| |||
}
| |||
//+------------------------------------------------------------------+
|