- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
// base class for objects that need to be initialized
//
struct Initializable
{
protected:
inline void OneTimeInit()
{
#if _DEBUG_BUILD
ASSERT(!m__hasBeenIsInitialized);
m__hasBeenIsInitialized = true;
#endif // _DEBUG_BUILD
}
inline void OneTimeDestroy()
{
#if _DEBUG_BUILD
ASSERT(m__hasBeenIsInitialized);
m__hasBeenIsInitialized = false;
#endif // _DEBUG_BUILD
}
inline void CheckInitialized()
{
#if _DEBUG_BUILD
mxBREAK_IF( !m__hasBeenIsInitialized );
#endif // _DEBUG_BUILD
}
inline Initializable()
{
#if _DEBUG_BUILD
m__hasBeenIsInitialized = false;
#endif // _DEBUG_BUILD
}
inline ~Initializable()
{
#if _DEBUG_BUILD
ASSERT(!m__hasBeenIsInitialized);
#endif // _DEBUG_BUILD
}
private:
#if _DEBUG_BUILD
bool m__hasBeenIsInitialized;
#endif // _DEBUG_BUILD
};
template< class KLASS > // where KLASS : TGlobal<KLASS>, Initializable
struct DependsOn
{
protected:
DependsOn()
{
ASSERT( KLASS::HasInstance() );
ASSERT( KLASS::Get().IsInitialized() );
}
};
template< class KLASS > // where KLASS : TGlobal<KLASS>
struct DependsOnGlobal
{
protected:
DependsOnGlobal()
{
ASSERT( KLASS::HasInstance() );
//ASSERT( KLASS::Get().IsInitialized() );
}
};
Базовый класс для дебажной проверки того, был ли инициализирован конкретный объект.
Этот бред находился в самой древней кодобазе, сейчас нигде не используется. Удаляю.
absolut 16.03.2014 09:58 # +5
Работает - не трожь!