X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8e08b761b0c5ecb6df295785b78f1f3637331887..3f4f90c2a0c1f274d1918b320132ed0ca2922fe5:/contrib/include/wx/fl/garbagec.h diff --git a/contrib/include/wx/fl/garbagec.h b/contrib/include/wx/fl/garbagec.h index d710e9f7a3..1c70b6e84a 100644 --- a/contrib/include/wx/fl/garbagec.h +++ b/contrib/include/wx/fl/garbagec.h @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo +// Name: garbagec.h +// Purpose: GarbageCollector class. // Author: Aleksandras Gluchovas (@Lithuania) // Modified by: // Created: ??/10/98 // RCS-ID: $Id$ // Copyright: (c) Aleksandras Gluchovas -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef __GARBAGEC_G__ @@ -20,54 +20,72 @@ struct GCItem { - void* mpObj; - wxList mRefs; // references to other nodes + void* mpObj; + wxList mRefs; // references to other nodes }; inline void* gc_node_to_obj( wxNode* pGCNode ) { - return ( (GCItem*) (pGCNode->Data()) )->mpObj; + return ( (GCItem*) (pGCNode->Data()) )->mpObj; } -// class implements extremely slow, but probably one of the most simple GC algorithms +/* +This class implements an extremely slow but simple garbage collection algorithm. +*/ class GarbageCollector { protected: - wxList mAllNodes; - wxList mRegularLst; - wxList mCycledLst; + wxList mAllNodes; + wxList mRegularLst; + wxList mCycledLst; - wxNode* FindItemNode( void* pForObj ); - void ResolveReferences(); + // Internal method for finding a node. + wxNode* FindItemNode( void* pForObj ); - wxNode* FindReferenceFreeItemNode(); - void RemoveReferencesToNode( wxNode* pItemNode ); - void DestroyItemList( wxList& lst ); + // Internal method for resolving references. + void ResolveReferences(); + + // Internal method for findind and freeing a node. + wxNode* FindReferenceFreeItemNode(); + + // Remove references to this node. + void RemoveReferencesToNode( wxNode* pItemNode ); + + // Destroys a list of items. + void DestroyItemList( wxList& lst ); public: - GarbageCollector() {} + // Default constructor. + GarbageCollector() {} + + // Destructor. + virtual ~GarbageCollector(); + + // Prepare data for garbage collection. + + virtual void AddObject( void* pObj, int refCnt = 1 ); + + // Prepare data for garbage collection. - virtual ~GarbageCollector(); + virtual void AddDependency( void* pObj, void* pDependsOnObj ); - // prepare data for GC alg. + // Executes garbage collection algorithm. - virtual void AddObject( void* pObj, int refCnt = 1 ); - virtual void AddDependency( void* pObj, void* pDependsOnObj ); + virtual void ArrangeCollection(); - // executes GC alg. + // Accesses the results of the algorithm. - virtual void ArrangeCollection(); + wxList& GetRegularObjects(); - // access results of the alg. + // Get cycled objects. - wxList& GetRegularObjects(); - wxList& GetCycledObjects(); + wxList& GetCycledObjects(); - // removes all data from GC + // Removes all data from the garbage collector. - void Reset(); + void Reset(); }; #endif /* __GARBAGEC_G__ */