123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- {
- Inno Setup Preprocessor
- Copyright (C) 2001-2002 Alex Yackimoff
-
- Inno Setup
- Copyright (C) 1997-2020 Jordan Russell
- Portions by Martijn Laan
- For conditions of distribution and use, see LICENSE.TXT.
- }
- unit ISPP.Stack;
- interface
- uses Classes;
- type
- { Borrowed from Delphi 5 Contnrs unit }
- { TOrdered class }
- TOrderedList = class(TObject)
- private
- FList: TList;
- protected
- procedure PushItem(AItem: Pointer); virtual; abstract;
- function PopItem: Pointer; virtual;
- function PeekItem: Pointer; virtual;
- property List: TList read FList;
- public
- constructor Create;
- destructor Destroy; override;
- function Count: Integer;
- function AtLeast(ACount: Integer): Boolean;
- procedure Push(AItem: Pointer);
- function Pop: Pointer;
- function Peek: Pointer;
- end;
- { TStack class }
- TStack = class(TOrderedList)
- protected
- procedure PushItem(AItem: Pointer); override;
- end;
- implementation
- uses
- ISPP.Consts;
- { TOrderedList }
- function TOrderedList.AtLeast(ACount: integer): boolean;
- begin
- Result := List.Count >= ACount;
- end;
- function TOrderedList.Peek: Pointer;
- begin
- Result := PeekItem;
- end;
- function TOrderedList.Pop: Pointer;
- begin
- Result := PopItem;
- end;
- procedure TOrderedList.Push(AItem: Pointer);
- begin
- PushItem(AItem);
- end;
- function TOrderedList.Count: Integer;
- begin
- Result := List.Count;
- end;
- constructor TOrderedList.Create;
- begin
- inherited Create;
- FList := TList.Create;
- end;
- destructor TOrderedList.Destroy;
- begin
- List.Free;
- inherited Destroy;
- end;
- function TOrderedList.PeekItem: Pointer;
- begin
- Result := List[List.Count-1];
- end;
- function TOrderedList.PopItem: Pointer;
- begin
- Result := PeekItem;
- List.Delete(List.Count-1);
- end;
- { TStack }
- procedure TStack.PushItem(AItem: Pointer);
- begin
- List.Add(AItem);
- end;
- end.
|