Da ich jetzt durch ein anderes Projekt in der Lage bin dem Delphi
IDE Compiler andere Daten unterzujubeln kam mir mal wieder meine alte Idee (hatte die schon zu BorlandPascal 7 Zeiten), Templates zu implementieren. Jetzt stellt sich natürlich die Frage, wie diese syntaktisch eingebaut werden sollen.
Mal ein Beispiel, das mir noch nicht so ganz 100%-tig gefällt:
Delphi-Quellcode:
interface
(* Template deklarieren, dies wird hinter den Kolissen durch ein "{$INCLUDE ...}" ersetzt, in der alle Template-Instanzierungen deklariert werden. *)
template
TMyTpl<T: type; StartCount: Integer = 10> = class(TObject)
private
FField: array of T;
public
constructor Create;
end;
implementation
(*<<< wird durch {$INCLUDE ...} ersetzt, in der alle Template-Instanzierungen implementiert werden. *)
constructor TMyTpl.Create;
begin
SetLength(FField, StartCount);
end;
{>>>}
{ Template instanzieren und als TIntList deklarieren }
instantiate TMyTpl<Integer, 10> as TIntList; { wird hinter den Kolissen zu "type TIntList = WasWeissIchMangledName;" }
procedure TForm1.FormCreate(...);
var
MyList: TIntList;
begin
MyList := TIntList.Create;
...
MyList.Free;
end;
Vielleicht nenne ich das ganze auch statt "template" einfach "generic", denn so mächtig wie die C++ Templates wird das sicherlich nicht.
Ich warte auf eure syntax und andere Vorschläge/Kritiken.