CMCore/inc/hgl/Macro.h

83 lines
4.2 KiB
C
Raw Permalink Normal View History

2023-07-18 20:54:21 +08:00
#pragma once
2019-08-19 19:19:58 +08:00
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) { \
2019-08-19 19:19:58 +08:00
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); \
} \
}
2019-08-19 19:19:58 +08:00
#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) \
2023-07-18 20:54:21 +08:00
{ \
2019-08-19 19:19:58 +08:00
FREE_OBJECT_ARRAY(name,num); \
2023-07-18 20:54:21 +08:00
\
name=null; \
}\
2019-08-19 19:19:58 +08:00
}
#define SAFE_FREE(name) { \
if(name) \
2023-07-18 20:54:21 +08:00
{ \
2019-08-19 19:19:58 +08:00
hgl_free(name); \
2023-07-18 20:54:21 +08:00
name=nullptr; \
} \
2019-08-19 19:19:58 +08:00
}
2025-05-05 03:24:36 +08:00
#define SAFE_CLEAR_STD_MAP(name) {for(auto &it:name)delete it.second;}
}//namespace hgl