77 lines
2 KiB
MQL5
77 lines
2 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| AutoDelete.mqh |
| |||
//| Copyright 2025, Niquel Mendoza. |
| |||
//| https://www.mql5.com/es/users/nique_372 |
| |||
//+------------------------------------------------------------------+
| |||
#property copyright "Copyright 2025, Niquel Mendoza."
| |||
#property link "https://www.mql5.com/es/users/nique_372"
| |||
#property strict
| |||
| |||
| |||
#ifndef MQLARTICLES_UTILS_FA_AUTODELETE_MQH
| |||
#define MQLARTICLES_UTILS_FA_AUTODELETE_MQH
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
struct CAutoPtrCleaner
| |||
{
| |||
private:
| |||
void* m_ptrs[];
| |||
int m_ptrs_size;
| |||
| |||
public:
| |||
CAutoPtrCleaner()
| |||
{
| |||
m_ptrs_size = ArrayResize(m_ptrs, 0);
| |||
}
| |||
~CAutoPtrCleaner()
| |||
{
| |||
Clean(true);
| |||
}
| |||
| |||
| |||
//---
| |||
void Add(void* ptr)
| |||
{
| |||
if(CheckPointer(ptr) == POINTER_DYNAMIC)
| |||
{
| |||
m_ptrs[ArrayResize(m_ptrs, ++m_ptrs_size) - 1] = ptr;
| |||
}
| |||
}
| |||
| |||
//---
| |||
void Remove(void* ptr)
| |||
{
| |||
for(int i = 0; i < m_ptrs_size; i++)
| |||
{
| |||
if(m_ptrs[i] == ptr)
| |||
{
| |||
m_ptrs[i] = m_ptrs[--m_ptrs_size];
| |||
ArrayResize(m_ptrs, m_ptrs_size);
| |||
break;
| |||
}
| |||
}
| |||
}
| |||
| |||
//---
| |||
__forceinline int Total() const { return m_ptrs_size; }
| |||
| |||
//---
| |||
void Clean(bool delete_ptr)
| |||
{
| |||
if(delete_ptr)
| |||
{
| |||
for(int i = 0; i < m_ptrs_size; i++)
| |||
{
| |||
if(CheckPointer(m_ptrs[i]) == POINTER_DYNAMIC)
| |||
delete m_ptrs[i];
| |||
}
| |||
}
| |||
m_ptrs_size = ArrayResize(m_ptrs, 0);
| |||
}
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
CAutoPtrCleaner g_ea_cleaner;
| |||
//+------------------------------------------------------------------+
| |||
#endif // MQLARTICLES_UTILS_FA_AUTODELETE_MQH
|