As a follow up, here are a few generic type declaration examples
lifted directly out of the CodeGear pdf Jonas was thoughtful enough to
link:

*Please Note* These examples do not include generic constraints which
I believe are needed to work effectively with generics. Generic
constraints can be found in the referenced pdf section "3.1.3.3.5
Constraints in Generics" page 626

type
 TFoo1<T> = class(TBar) // Actual type
 end;

 TFoo2<T> = class(TBar2<T>) // Open constructed type
 end;

 TFoo3<T> = class(TBar3<Integer>) // Closed constructed type
 end;

 TMyProc<T> = procedure(Param: T); // procedure type

 TMyProc2<Y> = procedure(Param1, Param2: Y) of object;  // event type

 TRecord<T> = record
   FData: T;
 end;

 IAncestor<T> = interface
   function GetRecord: TRecord<T>;
 end;

 IFoo<T> = interface(IAncestor<T>)
   procedure AMethod(Param: T);
 end;

 TFoo<T> = class(TObject, IFoo<T>)
   FField: TRecord<T>;
   procedure AMethod(Param: T);
   function GetRecord: TRecord<T>;
 end;
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to