/inc/hgl/Macro.h
https://github.com/hyzboy/CMGameEngine · C Header · 119 lines · 108 code · 11 blank · 0 comment · 18 complexity · 42b58536329e1cdbb56f1682799776c8 MD5 · raw file
- #ifndef HGL_MACRO_INCLUDE
- #define HGL_MACRO_INCLUDE
- 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(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 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); \
- }
-
- #define SAFE_FREE(name) { \
- if(name) \
- hgl_free(name); \
- }
-
- #define SAFE_RECREATE(name,code) { \
- if(name) \
- delete name; \
- \
- name=code; \
- }
-
- #define ARRAY_CALL(name,num,code) { \
- int array_call_number=num; \
- \
- while(array_call_number--) \
- name[array_call_number]->code; \
- }
-
- #define LOAD_FUNC(type,func) type func(void *buf,int buf_size) \
- { \
- if(!buf||buf_size<=0)return 0; \
- \
- MemoryInputStream ms(buf,buf_size); \
- \
- return(func(&ms)); \
- } \
- \
- type func(const UTF16String &filename) \
- { \
- FileInputStream fs; \
- \
- if(fs.Open(filename)) \
- return(func(&fs)); \
- else \
- return 0; \
- }
-
- #define SAVE_FUNC(type,func) bool func(type data,void *buf,int buf_size) \
- { \
- if(!buf||buf_size<=0)return(false); \
- \
- MemoryOutputStream ms(buf,buf_size); \
- \
- return(func(data,&ms)); \
- } \
- \
- bool func(type data,const UTF16String &filename) \
- { \
- FileOutputStream fs; \
- \
- if(fs.CreateTrunc(filename)) \
- return(func(data,&fs)); \
- else \
- return(false); \
- }
- }//namespace hgl
- #endif//HGL_MACRO_INCLUDE