{ %NORUN }

program gentest;

// alias test generic class
// example is a subset of a working delphi class
// the nested types are there so that they can be used to defined types (e.g.  var p : bwimagespecialization.reft;)
//

{$mode objfpc}


{.define fpchere}

Type
  generic tbwimagegen<T> = Class(TObject)
                 Type
                    TLocalType = specialize tbwimagegen<T>;
                    BaseUnit = T;
                    RefT= ^BaseUnit;
                  procedure copylines(source:  specialize tbwimagegen<T>;xfrom,xto:integer;xdestline:integer=0);
                  function GetImagePointer( OriginX, OriginY : Integer ): reft;inline;
                  function GetLinePointer(originy:integer):reft;
                  property scanline[i:integer]:reft read getlinepointer;
                  end;


procedure tbwimagegen.copylines(source: specialize tbwimagegen<T>;xfrom,xto:integer;xdestline:integer=0);
begin
end;
function tbwimagegen.GetImagePointer( OriginX, OriginY : Integer ): reft;inline;
begin
end;
function tbwimagegen.GetLinePointer(originy:integer):reft;
begin
end;

begin
end.
