68 lines
997 B
C++
68 lines
997 B
C++
#pragma once
|
|
|
|
namespace MemOper
|
|
{
|
|
|
|
template <class T>
|
|
void DELETE_PTR(T *&ptr)
|
|
{
|
|
if (ptr != NULL)
|
|
{
|
|
delete ptr;
|
|
ptr = NULL;
|
|
}
|
|
}
|
|
|
|
template <class T>
|
|
void DELETE_ARR_(T *&arr)
|
|
{
|
|
if (arr != NULL)
|
|
{
|
|
delete[] arr;
|
|
arr = NULL;
|
|
}
|
|
}
|
|
|
|
template <class T>
|
|
void deleteContainerOfStd(T &ss)
|
|
{
|
|
typename T::iterator it(ss.begin());
|
|
for (; it != ss.end(); ++it)
|
|
delete(*it);
|
|
ss.clear();
|
|
}
|
|
|
|
template <class T>
|
|
void deleteContainerOfArx(AcArray<T*> &ss)
|
|
{
|
|
for (int i = 0; i < ss.length(); ++i)
|
|
{
|
|
T *p = ss[i];
|
|
if (p)
|
|
delete p;
|
|
}
|
|
ss.removeAll();
|
|
}
|
|
|
|
// 删除 arx 容器内的指针 只指对AcArray及派生类
|
|
template <class T1, class T2>
|
|
void deleteContainerOfArx(T1 &ss)
|
|
{
|
|
for (int i = 0; i < ss.length(); ++i)
|
|
{
|
|
T2 *p = (T2*)ss[i];
|
|
delete p;
|
|
}
|
|
ss.removeAll();
|
|
}
|
|
|
|
// delete AcArrayVoidPtrs
|
|
template <class T>
|
|
void deleteArrayVoidPtrs(AcDbVoidPtrArray &ptrs)
|
|
{
|
|
deleteContainerOfArx<AcDbVoidPtrArray, T>(ptrs);
|
|
}
|
|
|
|
};
|
|
|