/usr/include/BALL/CONCEPT/autoDeletable.iC is in libball1.4-dev 1.4.1+20111206-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | // -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
BALL_INLINE
AutoDeletable::AutoDeletable()
{
if (this == last_ptr_)
{
// if it has been created using it's own
// new operator, it should be on the heap
// and can be deleted automatically
enabled_ = true;
}
else
{
// otherwise it is on the stack or part of an
// array - we can't delete it automatically
enabled_ = false;
}
}
BALL_INLINE
AutoDeletable::AutoDeletable(const AutoDeletable&, bool /* deep */)
{
// autodeletable object cannot be copied by default
// it doesn't make sense!
// To prevent any misuse, we behave as in the default constructor
if ((void*)this == last_ptr_)
{
// if it has been created using it's own
// new operator, it should be on the heap
// and can be deleted automatically
enabled_ = true;
}
else
{
// otherwise it is on the stack or part of an
// array - we can't delete it automatically
enabled_ = false;
}
}
BALL_INLINE
void AutoDeletable::operator delete (void* ptr)
{
::operator delete(ptr);
}
BALL_INLINE
AutoDeletable::~AutoDeletable()
{
}
BALL_INLINE
void* AutoDeletable::operator new (size_t size)
{
last_ptr_ = ::operator new(size);
return last_ptr_;
}
BALL_INLINE
void* AutoDeletable::operator new (size_t size, void* ptr)
{
last_ptr_ = ::operator new (size, ptr);
return last_ptr_;
}
BALL_INLINE
void AutoDeletable::operator delete (void* ptr, void*)
{
::operator delete(ptr);
}
BALL_INLINE
void AutoDeletable::setAutoDeletable(bool enable)
{
enabled_ = enable;
}
BALL_INLINE
bool AutoDeletable::isAutoDeletable() const
{
return enabled_;
}
|