00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _memory_h
00018 #define _memory_h
00019
00020 #include <spl/types.h>
00021 #include <spl/Debug.h>
00022
00032 class IMemoryValidate
00033 {
00034 public:
00035 IMemoryValidate() {}
00036 virtual ~IMemoryValidate();
00037
00038 #ifdef DEBUG
00039 virtual void ValidateMem() const = 0;
00040 virtual void CheckMem() const = 0;
00041 #else
00042 inline void ValidateMem() const {}
00043 inline void CheckMem() const {}
00044 #endif
00045 };
00046
00047 inline void ValidateType( void *i )
00048 {
00049 if ( NULL != i )
00050 {
00051 ASSERT_PTR(i);
00052 DEBUG_NOTE_MEM( i );
00053 }
00054 }
00055
00056 inline void ValidateType( const IMemoryValidate *p )
00057 {
00058 if ( NULL != p )
00059 {
00060 DEBUG_NOTE_MEM(p);
00061 ASSERT_PTR( p );
00062 p->ValidateMem();
00063 p->CheckMem();
00064 }
00065 }
00066
00067 inline void ValidateType( const IMemoryValidate& p )
00068 {
00069 p.ValidateMem();
00070 p.CheckMem();
00071 }
00072
00075 #endif