#include <garbagepointer.h>
Public Member Functions | |
virtual bool | finalize () |
Performs pre-delete finalization of the object. | |
GarbagePointer (FalconData *p) | |
Creates the garbage pointer. | |
virtual void | gcMark (uint32 gen) |
Applies mark to subclasses. | |
FalconData * | ptr () const |
Returns the inner data stored in this garbage pointer. | |
virtual | ~GarbagePointer () |
Destructor. |
This pointer can be used to wrap FalconData derived classes into garbage sensible behavior.
In this way, it's possible to bless simple pointers to FalconData managed internally by VM or inner routines, and let them to live in the wild. They will be marked when reachable and disposed cleanly when not reachable anymore.
GarbagePointer can be set directly into items (they are the "user pointer" items).
Falcon::GarbagePointer::GarbagePointer | ( | FalconData * | p | ) | [inline] |
Creates the garbage pointer.
Must be filled with the data guarded falcon data
References Falcon::FalconData::isSequence().
virtual Falcon::GarbagePointer::~GarbagePointer | ( | ) | [inline, virtual] |
Destructor.
The guard will destroy its content with it.
virtual bool Falcon::GarbagePointer::finalize | ( | ) | [inline, virtual] |
Performs pre-delete finalization of the object.
If this function returns false, then the destructor is called. If it returns true, it means that the finalizer has somewhat reclaimed the memory in a clean way (i.e. deleting itself), so the delete on this garbageable won't be called.
Reimplemented from Falcon::GarbageableBase.
virtual void Falcon::GarbagePointer::gcMark | ( | uint32 | mk | ) | [inline, virtual] |
Applies mark to subclasses.
By default, this method just changes the mark() value.
Subclasses having deep data may overload this to take care of marking it.
Reimplemented from Falcon::Garbageable.
FalconData* Falcon::GarbagePointer::ptr | ( | ) | const [inline] |
Returns the inner data stored in this garbage pointer.