mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-31 20:22:35 +02:00

rtl: fix fgl to use the new syntax tests: fix generics tests to use the new syntax git-svn-id: trunk@15646 -
71 lines
1.0 KiB
ObjectPascal
71 lines
1.0 KiB
ObjectPascal
{$mode objfpc}{$h+}
|
|
uses classes, sysutils;
|
|
type
|
|
generic TNode<T> = class
|
|
public
|
|
type
|
|
PT = ^T;
|
|
private
|
|
var
|
|
Data: T;
|
|
public
|
|
constructor Create;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
generic TContainer<T> = class
|
|
public
|
|
type
|
|
TTNode = specialize TNode<T>;
|
|
private
|
|
var
|
|
Data: TTNode;
|
|
public
|
|
constructor Create;
|
|
destructor Destroy; override;
|
|
|
|
function GetAddr: TTNode.PT;
|
|
procedure SetV(v: TTNode.T);
|
|
end;
|
|
|
|
constructor TNode.Create;
|
|
begin
|
|
end;
|
|
|
|
destructor TNode.Destroy;
|
|
begin
|
|
inherited Destroy;
|
|
end;
|
|
|
|
constructor TContainer.Create;
|
|
begin
|
|
Data:=TTNode.Create;
|
|
end;
|
|
|
|
destructor TContainer.Destroy;
|
|
begin
|
|
Data.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TContainer.GetAddr: TTNode.PT;
|
|
begin
|
|
result := @Data.Data;
|
|
end;
|
|
|
|
|
|
procedure TContainer.SetV(v: TTNode.T);
|
|
begin
|
|
Data.Data:=v;
|
|
end;
|
|
|
|
type
|
|
TStringContainer=specialize TContainer<String>;
|
|
var
|
|
c : TStringContainer;
|
|
begin
|
|
c:=TStringContainer.Create;
|
|
c.SetV('abc');
|
|
Writeln(HexStr(c.GetAddr));
|
|
end.
|