83 lines
4.2 KiB
C++
83 lines
4.2 KiB
C++
#pragma once
|
|
|
|
namespace hgl
|
|
{
|
|
#define RETURN_OBJECT_OF_ARRAY(array,index,max_count) return (index<0||index>=max_count)?nullptr:array[index];
|
|
|
|
#define NEW_NULL_ARRAY(name,type,count) { \
|
|
name=new type[count]; \
|
|
\
|
|
memset(name,0,sizeof(type)*count); \
|
|
}
|
|
|
|
#define SAFE_CLEAR(name) { \
|
|
if(name) \
|
|
{ \
|
|
delete name; \
|
|
name=nullptr; \
|
|
} \
|
|
}
|
|
|
|
#define SAFE_CLEAR_ARRAY(name) { \
|
|
if(name) \
|
|
{ \
|
|
delete[] name; \
|
|
name=nullptr; \
|
|
} \
|
|
}
|
|
|
|
#define SAFE_CLEAR_OBJECT_ARRAY_OBJECT(name,num) { \
|
|
if(name&&num>=0) \
|
|
{ \
|
|
int safe_clear_object_array_number=num; \
|
|
\
|
|
while(safe_clear_object_array_number--) \
|
|
if(name[safe_clear_object_array_number]) \
|
|
delete name[safe_clear_object_array_number]; \
|
|
\
|
|
delete[] name; \
|
|
name=nullptr; \
|
|
} \
|
|
}
|
|
|
|
#define SAFE_CLEAR_OBJECT_ARRAY(name) { \
|
|
for(auto *obj:name)\
|
|
{ \
|
|
SAFE_CLEAR(obj); \
|
|
} \
|
|
}
|
|
|
|
#define FREE_OBJECT_ARRAY(name,num) { \
|
|
if(name&&num>=0) \
|
|
{ \
|
|
int free_object_array_number=num; \
|
|
\
|
|
while(free_object_array_number--) \
|
|
if(name[free_object_array_number]) \
|
|
delete name[free_object_array_number]; \
|
|
\
|
|
hgl_free(name); \
|
|
name=nullptr; \
|
|
} \
|
|
}
|
|
|
|
#define SAFE_FREE_OBJECT_ARRAY(name,num) { \
|
|
if(name) \
|
|
{ \
|
|
FREE_OBJECT_ARRAY(name,num); \
|
|
\
|
|
name=null; \
|
|
}\
|
|
}
|
|
|
|
#define SAFE_FREE(name) { \
|
|
if(name) \
|
|
{ \
|
|
hgl_free(name); \
|
|
name=nullptr; \
|
|
} \
|
|
}
|
|
|
|
#define SAFE_CLEAR_STD_MAP(name) {for(auto &it:name)delete it.second;}
|
|
}//namespace hgl
|