init.h (Firebird-3.0.2.32703-0.tar.bz2) | : | init.h (Firebird-3.0.4.33054-0.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 74 | skipping to change at line 74 | |||
// but who cares for 100 global variables? | // but who cares for 100 global variables? | |||
// | // | |||
class InstanceList | class InstanceList | |||
{ | { | |||
public: | public: | |||
explicit InstanceList(DtorPriority p); | explicit InstanceList(DtorPriority p); | |||
virtual ~InstanceList(); | virtual ~InstanceList(); | |||
static void destructors(); | static void destructors(); | |||
// remove self from common list under StaticMutex protection | ||||
void remove(); | ||||
private: | private: | |||
virtual void dtor() = 0; | ||||
void unlist(); | ||||
InstanceList* next; | InstanceList* next; | |||
InstanceList* prev; | ||||
DtorPriority priority; | DtorPriority priority; | |||
virtual void dtor() = 0; | ||||
}; | }; | |||
template <typename T, InstanceControl::DtorPriority P = InstanceControl:: PRIORITY_REGULAR> | template <typename T, InstanceControl::DtorPriority P = InstanceControl:: PRIORITY_REGULAR> | |||
class InstanceLink : private InstanceList, public GlobalStorage | class InstanceLink : private InstanceList, public GlobalStorage | |||
{ | { | |||
private: | private: | |||
T* link; | T* link; | |||
public: | public: | |||
explicit InstanceLink(T* l) | explicit InstanceLink(T* l) | |||
: InstanceControl::InstanceList(P), link(l) | : InstanceControl::InstanceList(P), link(l) | |||
{ | { | |||
fb_assert(link); | fb_assert(link); | |||
} | } | |||
void remove() | ||||
{ | ||||
InstanceList::remove(); | ||||
} | ||||
void dtor() | void dtor() | |||
{ | { | |||
fb_assert(link); | fb_assert(link); | |||
if (link) | if (link) | |||
{ | { | |||
link->dtor(); | link->dtor(); | |||
link = NULL; | link = NULL; | |||
} | } | |||
} | } | |||
}; | }; | |||
End of changes. 5 change blocks. | ||||
1 lines changed or deleted | 12 lines changed or added |