#pragma once class GlwUGRampDataManage; class GlwPlaceTreeDataManage; class CLandScapeStyle; class CCoordGridDataManage; template void deletePtr (T* &ptr) { if (!ptr) return; delete ptr; ptr = NULL; }; #define DECLARE_GLOBAL_VARIABLE(class_name)\ private:\ class_name *m_p##class_name;\ public:\ void Set_##class_name(class_name *ptr){m_p##class_name = ptr;}\ class_name* Get_##class_name(){return m_p##class_name;} #define CONSTRUCT_GLOBAL_VARIABLE(class_name)\ m_p##class_name(NULL) #define DESTRUCT_GLOBAL_VARIABLE(class_name)\ deletePtr(m_p##class_name); class GlwGlobalVariable { public: GlwGlobalVariable(void); ~GlwGlobalVariable(void); DECLARE_GLOBAL_VARIABLE(GlwPlaceTreeDataManage); DECLARE_GLOBAL_VARIABLE(CLandScapeStyle); DECLARE_GLOBAL_VARIABLE(GlwUGRampDataManage); DECLARE_GLOBAL_VARIABLE(CCoordGridDataManage); }; extern GlwGlobalVariable *pGlobalVariable; #define GET_GLOBAL_VARIABLE(class_name)\ pGlobalVariable->Get_##class_name() #define SET_GLOBAL_VARIABLE(class_name, ptr)\ pGlobalVariable->Set_##class_name(ptr)