4b2297fbfb
minor code optimization
383 lines
13 KiB
Plaintext
383 lines
13 KiB
Plaintext
|
|
#define MIN_ENUM_VALUES 0
|
|
#define MAX_ENUM_VALUES 255
|
|
//+------------------------------------------------------------------+
|
|
//| StringToEnum : Convert a string to an ENUM value, |
|
|
//| it loops between min(0) and max(255), adjustable if needed. |
|
|
//| Non existing enum value defined as -1. If -1 is used as an |
|
|
//| enum value, code need to be adjusted to an other default. |
|
|
//| Parameters : |
|
|
//| in - string to convert |
|
|
//| out - ENUM value |
|
|
//| @return - int if conversion succeeded, false otherwise |
|
|
//| |
|
|
//| Based on: |
|
|
//| https://www.mql5.com/en/forum/61741/page3#comment_5491344 |
|
|
//+------------------------------------------------------------------+
|
|
template<typename ENUM>
|
|
int StringToEnum(string in,ENUM &out)
|
|
{
|
|
out=-1;
|
|
//---
|
|
for(int i=MIN_ENUM_VALUES;i<=MAX_ENUM_VALUES;i++)
|
|
{
|
|
ENUM enumValue=(ENUM)i;
|
|
if(in==EnumToString(enumValue))
|
|
{
|
|
out=enumValue;
|
|
break;
|
|
}
|
|
}
|
|
//---
|
|
return(out);
|
|
}
|
|
|
|
|
|
int StringToEnumInt(string indicatorConstantString)
|
|
{
|
|
int r = -1;
|
|
|
|
ENUM_ACCOUNT_INFO_DOUBLE a1;
|
|
r = StringToEnum(indicatorConstantString,a1);
|
|
//if(debug) Print("ENUM type: ENUM_ACCOUNT_INFO_DOUBLE");
|
|
if(r>=0)return r;
|
|
ENUM_ACCOUNT_INFO_INTEGER a2;
|
|
r = StringToEnum(indicatorConstantString,a2);
|
|
if(r>=0)return r;
|
|
ENUM_ACCOUNT_INFO_STRING a3;
|
|
r = StringToEnum(indicatorConstantString,a3);
|
|
if(r>=0)return r;
|
|
ENUM_ACCOUNT_MARGIN_MODE a4;
|
|
r = StringToEnum(indicatorConstantString,a4);
|
|
if(r>=0)return r;
|
|
ENUM_ACCOUNT_STOPOUT_MODE a5;
|
|
r = StringToEnum(indicatorConstantString,a5);
|
|
if(r>=0)return r;
|
|
ENUM_ACCOUNT_TRADE_MODE a6;
|
|
r = StringToEnum(indicatorConstantString,a6);
|
|
if(r>=0)return r;
|
|
ENUM_ALIGN_MODE a7;
|
|
r = StringToEnum(indicatorConstantString,a7);
|
|
if(r>=0)return r;
|
|
ENUM_ANCHOR_POINT a8;
|
|
r = StringToEnum(indicatorConstantString,a8);
|
|
if(r>=0)return r;
|
|
ENUM_APPLIED_PRICE a9;
|
|
r = StringToEnum(indicatorConstantString,a9);
|
|
if(r>=0)return r;
|
|
ENUM_APPLIED_PRICE a10;
|
|
r = StringToEnum(indicatorConstantString,a10);
|
|
if(r>=0)return r;
|
|
ENUM_APPLIED_VOLUME a11;
|
|
r = StringToEnum(indicatorConstantString,a11);
|
|
if(r>=0)return r;
|
|
ENUM_ARROW_ANCHOR a12;
|
|
r = StringToEnum(indicatorConstantString,a12);
|
|
if(r>=0)return r;
|
|
ENUM_BASE_CORNER a13;
|
|
r = StringToEnum(indicatorConstantString,a13);
|
|
if(r>=0)return r;
|
|
ENUM_BOOK_TYPE a14;
|
|
r = StringToEnum(indicatorConstantString,a14);
|
|
if(r>=0)return r;
|
|
ENUM_BORDER_TYPE a15;
|
|
r = StringToEnum(indicatorConstantString,a15);
|
|
if(r>=0)return r;
|
|
ENUM_CALENDAR_EVENT_FREQUENCY a16;
|
|
r = StringToEnum(indicatorConstantString,a16);
|
|
if(r>=0)return r;
|
|
ENUM_CALENDAR_EVENT_IMPACT a17;
|
|
r = StringToEnum(indicatorConstantString,a17);
|
|
if(r>=0)return r;
|
|
ENUM_CALENDAR_EVENT_IMPORTANCE a18;
|
|
r = StringToEnum(indicatorConstantString,a18);
|
|
if(r>=0)return r;
|
|
ENUM_CALENDAR_EVENT_MULTIPLIER a19;
|
|
r = StringToEnum(indicatorConstantString,a19);
|
|
if(r>=0)return r;
|
|
ENUM_CALENDAR_EVENT_SECTOR a20;
|
|
r = StringToEnum(indicatorConstantString,a20);
|
|
if(r>=0)return r;
|
|
ENUM_CALENDAR_EVENT_TIMEMODE a21;
|
|
r = StringToEnum(indicatorConstantString,a21);
|
|
if(r>=0)return r;
|
|
ENUM_CALENDAR_EVENT_TYPE a22;
|
|
r = StringToEnum(indicatorConstantString,a22);
|
|
if(r>=0)return r;
|
|
ENUM_CALENDAR_EVENT_UNIT a23;
|
|
r = StringToEnum(indicatorConstantString,a23);
|
|
if(r>=0)return r;
|
|
ENUM_CHART_EVENT a24;
|
|
r = StringToEnum(indicatorConstantString,a24);
|
|
if(r>=0)return r;
|
|
ENUM_CHART_MODE a25;
|
|
r = StringToEnum(indicatorConstantString,a25);
|
|
if(r>=0)return r;
|
|
ENUM_CHART_POSITION a26;
|
|
r = StringToEnum(indicatorConstantString,a26);
|
|
if(r>=0)return r;
|
|
ENUM_CHART_PROPERTY_DOUBLE a27;
|
|
r = StringToEnum(indicatorConstantString,a27);
|
|
if(r>=0)return r;
|
|
ENUM_CHART_PROPERTY_INTEGER a28;
|
|
r = StringToEnum(indicatorConstantString,a28);
|
|
if(r>=0)return r;
|
|
ENUM_CHART_PROPERTY_STRING a29;
|
|
r = StringToEnum(indicatorConstantString,a29);
|
|
if(r>=0)return r;
|
|
ENUM_CHART_VOLUME_MODE a30;
|
|
r = StringToEnum(indicatorConstantString,a30);
|
|
if(r>=0)return r;
|
|
ENUM_CL_DEVICE_TYPE a31;
|
|
r = StringToEnum(indicatorConstantString,a31);
|
|
if(r>=0)return r;
|
|
ENUM_COLOR_FORMAT a32;
|
|
r = StringToEnum(indicatorConstantString,a32);
|
|
if(r>=0)return r;
|
|
ENUM_CRYPT_METHOD a33;
|
|
r = StringToEnum(indicatorConstantString,a33);
|
|
if(r>=0)return r;
|
|
ENUM_CUSTOMIND_PROPERTY_DOUBLE a34;
|
|
r = StringToEnum(indicatorConstantString,a34);
|
|
if(r>=0)return r;
|
|
ENUM_CHART_PROPERTY_INTEGER a35;
|
|
r = StringToEnum(indicatorConstantString,a35);
|
|
if(r>=0)return r;
|
|
ENUM_CUSTOMIND_PROPERTY_STRING a36;
|
|
r = StringToEnum(indicatorConstantString,a36);
|
|
if(r>=0)return r;
|
|
ENUM_DATABASE_EXPORT_FLAGS a37;
|
|
r = StringToEnum(indicatorConstantString,a37);
|
|
if(r>=0)return r;
|
|
ENUM_DATABASE_FIELD_TYPE a38;
|
|
r = StringToEnum(indicatorConstantString,a38);
|
|
if(r>=0)return r;
|
|
ENUM_DATABASE_OPEN_FLAGS a39;
|
|
r = StringToEnum(indicatorConstantString,a39);
|
|
if(r>=0)return r;
|
|
ENUM_DATABASE_PRINT_FLAGS a40;
|
|
r = StringToEnum(indicatorConstantString,a40);
|
|
if(r>=0)return r;
|
|
ENUM_DATATYPE a41;
|
|
r = StringToEnum(indicatorConstantString,a41);
|
|
if(r>=0)return r;
|
|
ENUM_DAY_OF_WEEK a42;
|
|
r = StringToEnum(indicatorConstantString,a42);
|
|
if(r>=0)return r;
|
|
ENUM_DEAL_ENTRY a43;
|
|
r = StringToEnum(indicatorConstantString,a43);
|
|
if(r>=0)return r;
|
|
ENUM_DEAL_PROPERTY_DOUBLE a44;
|
|
r = StringToEnum(indicatorConstantString,a44);
|
|
if(r>=0)return r;
|
|
ENUM_DEAL_PROPERTY_INTEGER a45;
|
|
r = StringToEnum(indicatorConstantString,a45);
|
|
if(r>=0)return r;
|
|
ENUM_DEAL_PROPERTY_STRING a46;
|
|
r = StringToEnum(indicatorConstantString,a46);
|
|
if(r>=0)return r;
|
|
ENUM_DEAL_REASON a47;
|
|
r = StringToEnum(indicatorConstantString,a47);
|
|
if(r>=0)return r;
|
|
ENUM_DEAL_TYPE a48;
|
|
r = StringToEnum(indicatorConstantString,a48);
|
|
if(r>=0)return r;
|
|
ENUM_DRAW_TYPE a49;
|
|
r = StringToEnum(indicatorConstantString,a49);
|
|
if(r>=0)return r;
|
|
ENUM_DX_BUFFER_TYPE a50;
|
|
r = StringToEnum(indicatorConstantString,a50);
|
|
if(r>=0)return r;
|
|
ENUM_DX_FORMAT a51;
|
|
r = StringToEnum(indicatorConstantString,a51);
|
|
if(r>=0)return r;
|
|
ENUM_DX_HANDLE_TYPE a52;
|
|
r = StringToEnum(indicatorConstantString,a52);
|
|
if(r>=0)return r;
|
|
ENUM_DX_PRIMITIVE_TOPOLOGY a53;
|
|
r = StringToEnum(indicatorConstantString,a53);
|
|
if(r>=0)return r;
|
|
ENUM_DX_SHADER_TYPE a54;
|
|
r = StringToEnum(indicatorConstantString,a54);
|
|
if(r>=0)return r;
|
|
ENUM_ELLIOT_WAVE_DEGREE a55;
|
|
r = StringToEnum(indicatorConstantString,a55);
|
|
if(r>=0)return r;
|
|
ENUM_FILESELECT_FLAGS a56;
|
|
r = StringToEnum(indicatorConstantString,a56);
|
|
if(r>=0)return r;
|
|
ENUM_FILE_POSITION a57;
|
|
r = StringToEnum(indicatorConstantString,a57);
|
|
if(r>=0)return r;
|
|
ENUM_FILE_PROPERTY_INTEGER a58;
|
|
r = StringToEnum(indicatorConstantString,a58);
|
|
if(r>=0)return r;
|
|
ENUM_GANN_DIRECTION a59;
|
|
r = StringToEnum(indicatorConstantString,a59);
|
|
if(r>=0)return r;
|
|
ENUM_INDEXBUFFER_TYPE a60;
|
|
r = StringToEnum(indicatorConstantString,a60);
|
|
if(r>=0)return r;
|
|
ENUM_INDICATOR a61;
|
|
r = StringToEnum(indicatorConstantString,a61);
|
|
if(r>=0)return r;
|
|
ENUM_INIT_RETCODE a62;
|
|
r = StringToEnum(indicatorConstantString,a62);
|
|
if(r>=0)return r;
|
|
ENUM_LICENSE_TYPE a63;
|
|
r = StringToEnum(indicatorConstantString,a63);
|
|
if(r>=0)return r;
|
|
ENUM_LINE_STYLE a64;
|
|
r = StringToEnum(indicatorConstantString,a64);
|
|
if(r>=0)return r;
|
|
ENUM_MA_METHOD a65;
|
|
r = StringToEnum(indicatorConstantString,a65);
|
|
if(r>=0)return r;
|
|
ENUM_MQL_INFO_INTEGER a66;
|
|
r = StringToEnum(indicatorConstantString,a66);
|
|
if(r>=0)return r;
|
|
ENUM_MQL_INFO_STRING a67;
|
|
r = StringToEnum(indicatorConstantString,a67);
|
|
if(r>=0)return r;
|
|
ENUM_OBJECT a68;
|
|
r = StringToEnum(indicatorConstantString,a68);
|
|
if(r>=0)return r;
|
|
ENUM_OBJECT_PROPERTY_DOUBLE a69;
|
|
r = StringToEnum(indicatorConstantString,a69);
|
|
if(r>=0)return r;
|
|
ENUM_OBJECT_PROPERTY_INTEGER a70;
|
|
r = StringToEnum(indicatorConstantString,a70);
|
|
if(r>=0)return r;
|
|
ENUM_OBJECT_PROPERTY_STRING a71;
|
|
r = StringToEnum(indicatorConstantString,a71);
|
|
if(r>=0)return r;
|
|
ENUM_OPENCL_HANDLE_TYPE a72;
|
|
r = StringToEnum(indicatorConstantString,a72);
|
|
if(r>=0)return r;
|
|
ENUM_OPENCL_PROPERTY_INTEGER a73;
|
|
r = StringToEnum(indicatorConstantString,a73);
|
|
if(r>=0)return r;
|
|
ENUM_PLOT_PROPERTY_STRING a74;
|
|
r = StringToEnum(indicatorConstantString,a74);
|
|
if(r>=0)return r;
|
|
ENUM_POINTER_TYPE a75;
|
|
r = StringToEnum(indicatorConstantString,a75);
|
|
if(r>=0)return r;
|
|
ENUM_POSITION_PROPERTY_DOUBLE a76;
|
|
r = StringToEnum(indicatorConstantString,a76);
|
|
if(r>=0)return r;
|
|
ENUM_ORDER_PROPERTY_INTEGER a77;
|
|
r = StringToEnum(indicatorConstantString,a77);
|
|
if(r>=0)return r;
|
|
ENUM_PLOT_PROPERTY_STRING a78;
|
|
r = StringToEnum(indicatorConstantString,a78);
|
|
if(r>=0)return r;
|
|
ENUM_PROGRAM_TYPE a79;
|
|
r = StringToEnum(indicatorConstantString,a79);
|
|
if(r>=0)return r;
|
|
ENUM_SERIESMODE a80;
|
|
r = StringToEnum(indicatorConstantString,a80);
|
|
if(r>=0)return r;
|
|
ENUM_SERIES_INFO_INTEGER a81;
|
|
r = StringToEnum(indicatorConstantString,a81);
|
|
if(r>=0)return r;
|
|
ENUM_SIGNAL_BASE_DOUBLE a82;
|
|
r = StringToEnum(indicatorConstantString,a82);
|
|
if(r>=0)return r;
|
|
ENUM_SIGNAL_BASE_INTEGER a83;
|
|
r = StringToEnum(indicatorConstantString,a83);
|
|
if(r>=0)return r;
|
|
ENUM_SIGNAL_BASE_STRING a84;
|
|
r = StringToEnum(indicatorConstantString,a84);
|
|
if(r>=0)return r;
|
|
ENUM_SIGNAL_INFO_DOUBLE a85;
|
|
r = StringToEnum(indicatorConstantString,a85);
|
|
if(r>=0)return r;
|
|
ENUM_SIGNAL_INFO_INTEGER a86;
|
|
r = StringToEnum(indicatorConstantString,a86);
|
|
if(r>=0)return r;
|
|
ENUM_SIGNAL_INFO_STRING a87;
|
|
r = StringToEnum(indicatorConstantString,a87);
|
|
if(r>=0)return r;
|
|
ENUM_STATISTICS a88;
|
|
r = StringToEnum(indicatorConstantString,a88);
|
|
if(r>=0)return r;
|
|
ENUM_STO_PRICE a89;
|
|
r = StringToEnum(indicatorConstantString,a89);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_CALC_MODE a90;
|
|
r = StringToEnum(indicatorConstantString,a90);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_CHART_MODE a91;
|
|
r = StringToEnum(indicatorConstantString,a91);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_INFO_DOUBLE a92;
|
|
r = StringToEnum(indicatorConstantString,a92);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_INFO_INTEGER a93;
|
|
r = StringToEnum(indicatorConstantString,a93);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_INFO_STRING a94;
|
|
r = StringToEnum(indicatorConstantString,a94);
|
|
if(r>=0)return r;
|
|
ENUM_STATISTICS a95;
|
|
r = StringToEnum(indicatorConstantString,a95);
|
|
if(r>=0)return r;
|
|
ENUM_STO_PRICE a96;
|
|
r = StringToEnum(indicatorConstantString,a96);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_CALC_MODE a97;
|
|
r = StringToEnum(indicatorConstantString,a97);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_CHART_MODE a98;
|
|
r = StringToEnum(indicatorConstantString,a98);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_INFO_DOUBLE a99;
|
|
r = StringToEnum(indicatorConstantString,a99);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_INFO_INTEGER a100;
|
|
r = StringToEnum(indicatorConstantString,a100);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_INFO_STRING a101;
|
|
r = StringToEnum(indicatorConstantString,a101);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_OPTION_MODE a102;
|
|
r = StringToEnum(indicatorConstantString,a102);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_OPTION_RIGHT a103;
|
|
r = StringToEnum(indicatorConstantString,a103);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_ORDER_GTC_MODE a104;
|
|
r = StringToEnum(indicatorConstantString,a104);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_SWAP_MODE a105;
|
|
r = StringToEnum(indicatorConstantString,a105);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_TRADE_EXECUTION a106;
|
|
r = StringToEnum(indicatorConstantString,a106);
|
|
if(r>=0)return r;
|
|
ENUM_SYMBOL_TRADE_MODE a107;
|
|
r = StringToEnum(indicatorConstantString,a107);
|
|
if(r>=0)return r;
|
|
ENUM_TERMINAL_INFO_DOUBLE a108;
|
|
r = StringToEnum(indicatorConstantString,a108);
|
|
if(r>=0)return r;
|
|
ENUM_TERMINAL_INFO_INTEGER a109;
|
|
r = StringToEnum(indicatorConstantString,a109);
|
|
if(r>=0)return r;
|
|
ENUM_TERMINAL_INFO_STRING a110;
|
|
r = StringToEnum(indicatorConstantString,a110);
|
|
if(r>=0)return r;
|
|
ENUM_TIMEFRAMES a111;
|
|
r = StringToEnum(indicatorConstantString,a111);
|
|
if(r>=0)return r;
|
|
ENUM_TRADE_REQUEST_ACTIONS a112;
|
|
r = StringToEnum(indicatorConstantString,a112);
|
|
if(r>=0)return r;
|
|
ENUM_TRADE_TRANSACTION_TYPE a113;
|
|
r = StringToEnum(indicatorConstantString,a113);
|
|
if(r>=0)return r;
|
|
|
|
return(-1);
|
|
}
|