lazarus/components/codetools/examples/scanexamples/genericsexample.pas
mattias f9f4eec6ea codetools: clean up
git-svn-id: trunk@29419 -
2011-02-07 22:55:58 +00:00

39 lines
782 B
ObjectPascal

program GenericExamples;
{$mode objfpc}{$H+}
// generics
type
generic TArr<T> = array[0..2] of T;
generic TProc<T> = procedure(Arg: T);
generic TRecG<T> = record
F: T;
end;
TGenericArray<T> = array of T;
IGenericInterface<T> = interface
function DoSomething(Arg: T): T;
end;
TGenericClass<T1,T2> = class(TInterfacedObject, IGenericInterface<T1>)
F: T2;
type
Intf = IGenericInterface<Integer>;
function DoSomething(Arg: T1): T2;
function Test(Arg: Intf): Intf;
end;
const
RecLongInt: TRecG<longint> = (F:0);
var
ArraySpecialize: TGenericArray<Integer>;
ClassSpecialize: TGenericClass<Integer,String>;
function TGenericClass.DoSomething(Arg: T1): T2;
begin
end;
begin
FooInt := TGenericClass<Integer,String>.Create;
end.