12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- {
- This file is part of the Free Pascal FCL library.
- BSD parts (c) 2011 Vlado Boza
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY;without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- {$mode objfpc}
- unit gstack;
- interface
- uses gvector;
- type
- generic TStack<T>=class
- private
- type TContainer= specialize TVector<T>;
- var FData:TContainer;
- public
- Procedure Clear;
- procedure Push(x:T);inline;
- procedure Pop();inline;
- function Top():T;inline;
- function Size():longint;inline;
- function IsEmpty():boolean;inline;
- constructor Create;
- destructor Destroy;override;
- end;
- implementation
- constructor TStack.Create;
- begin
- FData:=TContainer.Create;
- end;
- Procedure TStack.Clear;
- begin
- FData.Clear;
- end;
- destructor TStack.Destroy;
- begin
- FData.Destroy;
- end;
- procedure TStack.Push(x:T);inline;
- begin
- FData.PushBack(x);
- end;
- procedure TStack.Pop;inline;
- begin
- FData.PopBack;
- end;
- function TStack.Top:T;inline;
- begin
- Top:=FData.Back;
- end;
- function TStack.Size:longint;inline;
- begin
- Size:=FData.Size;
- end;
- function TStack.IsEmpty:boolean;inline;
- begin
- IsEmpty:=FData.IsEmpty;
- end;
- end.
|