]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/include/wx/fl/garbagec.h
Tweaks to install guide
[wxWidgets.git] / contrib / include / wx / fl / garbagec.h
index d710e9f7a3fbde226c10c81158c1988eed3fdb4d..5e3da01ef7184903535363e6353cd5749fda5e08 100644 (file)
@@ -1,73 +1,92 @@
 /////////////////////////////////////////////////////////////////////////////
-// 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__
 #define __GARBAGEC_G__
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "garbagec.h"
 #endif
 
 #include "wx/list.h"
+#include "wx/fl/fldefs.h"
 
 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 )
+inline void* gc_node_to_obj( wxObjectList::compatibility_iterator pGCNode )
 {
-       return ( (GCItem*) (pGCNode->Data()) )->mpObj;
+    return ( (GCItem*) (pGCNode->GetData()) )->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
+class WXDLLIMPEXP_FL 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__ */