garbagec.h
来自「很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.」· C头文件 代码 · 共 90 行
H
90 行
/////////////////////////////////////////////////////////////////////////////// Name: garbagec.h// Purpose: GarbageCollector class.// Author: Aleksandras Gluchovas (@Lithuania)// Modified by:// Created: ??/10/98// RCS-ID: $Id: garbagec.h,v 1.8 2005/09/23 12:46:57 MR Exp $// Copyright: (c) Aleksandras Gluchovas// Licence: wxWindows licence/////////////////////////////////////////////////////////////////////////////#ifndef __GARBAGEC_G__#define __GARBAGEC_G__#include "wx/list.h"#include "wx/fl/fldefs.h"struct GCItem{ void* mpObj; wxList mRefs; // references to other nodes};inline void* gc_node_to_obj( wxObjectList::compatibility_iterator pGCNode ){ return ( (GCItem*) (pGCNode->GetData()) )->mpObj;}/*This class implements an extremely slow but simple garbage collection algorithm.*/class WXDLLIMPEXP_FL GarbageCollector{protected: wxList mAllNodes; wxList mRegularLst; wxList mCycledLst; // Internal method for finding a node. wxNode* FindItemNode( void* pForObj ); // 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: // 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 void AddDependency( void* pObj, void* pDependsOnObj ); // Executes garbage collection algorithm. virtual void ArrangeCollection(); // Accesses the results of the algorithm. wxList& GetRegularObjects(); // Get cycled objects. wxList& GetCycledObjects(); // Removes all data from the garbage collector. void Reset();};#endif /* __GARBAGEC_G__ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?