- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
- unit ListSupport;
- (*
- * The contents of this file are subject to the Mozilla Public
- * License Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS
- * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * rights and limitations under the License.
- *
- * This code was inspired to expidite the creation of unit tests
- * for use the Dunit test frame work.
- *
- * The Initial Developer of XPGen is Michael A. Johnson.
- * Portions created The Initial Developer is Copyright (C) 2000.
- * Portions created by The DUnit Group are Copyright (C) 2000.
- * All rights reserved.
- *
- * Contributor(s):
- * Michael A. Johnson <majohnson@golden.net>
- * Juanco A馿z <juanco@users.sourceforge.net>
- * Chris Morris <chrismo@users.sourceforge.net>
- * Jeff Moore <JeffMoore@users.sourceforge.net>
- * The DUnit group at SourceForge <http://dunit.sourceforge.net>
- *
- *)
- {
- provides common list support functions that are commonly used throughout the system.
- ListFreeObjectItems - clears and releases tobject descended items in a list
- ListFreePointerItems - clears and releases items allocated via new/dispose
- Programmer: Michael A. Johnson
- Date: 9-Mar-2000
- }
- interface
- uses
- classes;
- procedure ListFreeObjectItems(List: TList);
- procedure ListFreePointerItems(List: TList);
- implementation
- procedure ListFreeObjectItems(List: TList);
- {
- ListFreeObjectItems - clears and releases tobject items in a list.
- Assumptions: Assumes list is composed of items are are derived from tobject and that
- the destructor is overriden from the base through all descendants.
- Programmer: Michael A. Johnson
- Date: 9-Mar-2000
- }
- var
- Item: Tobject;
- Iter: integer;
- begin
- { make sure we have a real list }
- if List <> nil then
- begin
- try
- { visit each node in the list and release memory occupied by the items }
- for Iter := 0 to List.count - 1 do
- begin
- Item := List[Iter];
- Item.free;
- end;
- finally
- { make sure we empty the list so that references to stale pointers are avoided }
- List.Clear;
- end;
- end;
- end;
- procedure ListFreePointerItems(List: TList);
- {
- ListFreePointerItems - clears and releases items allocated via new/dispose
- Assumptions: Assumes that all items in list were allocated via operator new
- and can be released by calling dispose on a generic pointer. You should be
- aware that items allocated by GetMem/AllocMem etc may not be able to be released
- via this means. If you used GetMen/AllocMem to create the items you should call
- the corresponding release procedure for those memory allocators.
- Programmer: Michael A. Johnson
- Date: 9-Mar-2000
- }
- var
- Item: pointer;
- Iter: integer;
- begin
- { make sure we have a real list }
- if List <> nil then
- begin
- try
- { visit each node in the list and release memory occupied by the items }
- for Iter := 0 to List.count - 1 do
- begin
- Item := List[Iter];
- Dispose(Item);
- end;
- finally
- { make sure we empty the list so that references to stale pointers are avoided }
- List.Clear;
- end;
- end;
- end;
- end.