Adwizard/Base/FactorableCreator.mqh

47 lines
4 KiB
MQL5
Raw Permalink Normal View History

2025-04-11 13:28:40 +03:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| FactorableCreator.mqh |
//| Copyright 2024, Yuriy Bykov |
//| https://www.mql5.com/ru/users/antekov |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019-2024, Yuriy Bykov"
#property link "https://www.mql5.com/ru/users/antekov"
#property version "1.00"
#include "../Utils/Macros.mqh"
// @5420@8B5;L=>5 >?@545;5=85 :;0AA0
class CFactorable;
// 1JO2;5=85 B8?0 - C:070B5;L =0 DC=:F8N A>740=8O >1J5:B>2 :;0AA0 CFactorable
typedef CFactorable* (*TCreateFunc)(string);
//+------------------------------------------------------------------+
//| ;0AA A>740B5;59, A2O7K20NI8E =0720=8O 8 AB0B8G5A:85 |
//| :>=AB@C:B>@K :;0AA>2-=0A;54=8:>2 CFactorable |
//+------------------------------------------------------------------+
class CFactorableCreator {
public:
string m_className; // 0720=85 :;0AA0
TCreateFunc m_creator; // !B0B8G5A:89 :>=AB@C:B>@ 4;O MB>3> :;0AA0
// >=AB@C:B>@ A>740B5;O
CFactorableCreator(string p_className, TCreateFunc p_creator);
// !B0B8G5A:89 <0AA82 2A5E A>740==KE >1J5:B>2-A>740B5;59
static CFactorableCreator* creators[];
};
// !B0B8G5A:89 <0AA82 2A5E A>740==KE >1J5:B>2-A>740B5;59
CFactorableCreator* CFactorableCreator::creators[];
//+------------------------------------------------------------------+
//| >=AB@C:B>@ A>740B5;O |
//+------------------------------------------------------------------+
CFactorableCreator::CFactorableCreator(string p_className, TCreateFunc p_creator) :
m_className(p_className),
m_creator(p_creator) {
// >102;O5< B5:CI89 >1J5:B A>740B5;O 2 AB0B8G5A:89 <0AA82
APPEND(creators, &this);
}
//+------------------------------------------------------------------+