//+------------------------------------------------------------------+ //| ArrayLayer.mqh | //| AnimateDread | //| https://www.mql5.com | //+------------------------------------------------------------------+ //| CArrayLayer - array-of-CLayer container, CNet's own topology | //| storage. Needs CLayer (AI\Network.mqh) already declared - | //| included from Network.mqh at the exact point this class used to | //| sit (right after CLayer), so ordering matches the original file. | //| Extracted verbatim (SOLID cleanup) - no logic changes. | //+------------------------------------------------------------------+ class CArrayLayer : public CArrayObj { public: CArrayLayer(void) {}; ~CArrayLayer(void) {}; //--- virtual bool CreateElement(uint neurons, uint outputs); virtual int Type(void) const { return defArrayLayer; } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CArrayLayer::CreateElement(uint neurons, uint outputs) { if(neurons <= 0) return false; //--- CLayer *layer = new CLayer(outputs); if(CheckPointer(layer) == POINTER_INVALID) return false; //--- if(!layer.Reserve(neurons + 1)) return false; for(uint i = 0; i <= neurons; i++) { if(!layer.CreateElement(i)) return false; layer.IncreaseTotal(); } //--- return (Add(layer)); }