MQLArticles/Utils/EnumsStr/Generate/Recolect.mqh

97 lines
3.2 KiB
MQL5
Raw Permalink Normal View History

2026-06-28 16:15:30 -05:00
//+------------------------------------------------------------------+
//| Recolect.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_ENUMSTR_GENERATE_RECOLECT_MQH
#define MQLARTICLES_ENUMSTR_GENERATE_RECOLECT_MQH
#ifndef RECOLECT_MAX_SIZE
#define RECOLECT_MAX_SIZE (1024)
#endif // RECOLECT_MAX_SIZE
2026-07-03 16:05:29 -05:00
#ifndef MQLARTICLES_RECOLECT_V
#define MQLARTICLES_RECOLECT_V int
#endif // MQLARTICLES_RECOLECT_V
2026-06-28 16:15:30 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CRecolect
{
public:
CRecolect(void) {}
~CRecolect(void) {}
//---
2026-07-03 16:05:29 -05:00
static MQLARTICLES_RECOLECT_V s_arr_v[RECOLECT_MAX_SIZE];
2026-06-28 16:15:30 -05:00
static string s_arr_s[RECOLECT_MAX_SIZE];
static int s_arr_size;
//---
2026-07-03 16:05:29 -05:00
static bool Add(const string& vs, const MQLARTICLES_RECOLECT_V vi)
2026-06-28 16:15:30 -05:00
{
s_arr_v[s_arr_size] = vi;
s_arr_s[s_arr_size++] = vs;
return true;
}
static bool Save(const string& file_name, bool comon)
{
::ResetLastError();
const int fh = FileOpen(file_name, FILE_ANSI | FILE_TXT | FILE_WRITE | (comon ? FILE_COMMON : 0));
if(fh == INVALID_HANDLE)
{
PrintFormat("Fallo al cargar el archivo = %s, ultimo err = %d", file_name, ::GetLastError());
return false;
}
//---
2026-06-28 17:04:49 -05:00
FileWrite(fh, "map: {");
2026-06-28 16:15:30 -05:00
const int last = s_arr_size - 1;
for(int i = 0; i < last; i++)
{
2026-07-03 16:05:29 -05:00
const string str = " " + s_arr_s[i] + ": " + string(s_arr_v[i]) + ",";
FileWrite(fh, str);
2026-06-28 16:15:30 -05:00
}
2026-07-04 11:58:48 -05:00
const string str = " " + s_arr_s[last] + ": " + string(s_arr_v[last]);
2026-07-03 16:05:29 -05:00
FileWrite(fh, str);
2026-06-28 17:04:49 -05:00
FileWrite(fh, "}");
2026-07-03 16:05:29 -05:00
2026-06-28 16:15:30 -05:00
//---
FileClose(fh);
return true;
}
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-07-03 16:05:29 -05:00
MQLARTICLES_RECOLECT_V CRecolect::s_arr_v[RECOLECT_MAX_SIZE];
2026-06-28 16:15:30 -05:00
string CRecolect::s_arr_s[RECOLECT_MAX_SIZE];
int CRecolect::s_arr_size = 0;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-06-28 17:04:49 -05:00
#define MQLARTICLES_ENUMREC_REG(A) const bool g_asDA12_##A = CRecolect::Add(#A,int(A));
2026-06-28 16:15:30 -05:00
// a = "user" | v = valor del enuym
//---
// A=string
// V=valor
2026-06-28 17:04:49 -05:00
#define MQLARTICLES_ENUMREC_REG_CTS(A, V) const bool g_asDA12_##V = CRecolect::Add(A,int(V));
2026-06-28 16:15:30 -05:00
//---
// prefixo custom
// A=enum_v
// P=prefijo
// V=valor real
2026-06-28 17:04:49 -05:00
#define MQLARTICLES_ENUMREC_REG_CTS_FULL(A, V, P) const bool g_asDA12_##P = CRecolect::Add(#A,int(V));
2026-06-28 16:15:30 -05:00
//+------------------------------------------------------------------+
#endif // MQLARTICLES_ENUMSTR_GENERATE_RECOLECT_MQH