1 2 3 4 5 6 7 8 9 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
|
#include <cstdlib>
#include "PrivateMembers.hpp"
utilspp::PrivateMembers::TrackerArray
utilspp::PrivateMembers::mTrackerArray = NULL;
int utilspp::PrivateMembers::mNbElements = 0;
utilspp::PrivateMembers::LifetimeTracker::LifetimeTracker (unsigned int
longevity)
:
mLongevity (longevity)
{}
utilspp::PrivateMembers::LifetimeTracker::~LifetimeTracker()
{}
bool
utilspp::PrivateMembers::LifetimeTracker::compare (
const LifetimeTracker *l,
const LifetimeTracker *r
)
{
return l->mLongevity < r->mLongevity;
}
void
utilspp::PrivateMembers::atExitFunc()
{
assert ( (mTrackerArray != NULL) &&
(mNbElements > 0));
//Pick the element at the top of the stack.
LifetimeTracker* top = mTrackerArray[mNbElements - 1];
//Remove that object off the stack.
//Don't check errors-realloc with less memory, cause that can't fail.
mTrackerArray = static_cast<
utilspp::PrivateMembers::TrackerArray > (std::realloc (mTrackerArray,
--mNbElements));
//Destroy the element.
delete top;
}
|