On Thu, 3 Nov 2005 19:59:40 +0100 (CET) Daniël Mantione <[EMAIL PROTECTED]> wrote:
> > > Op Thu, 3 Nov 2005, schreef Mattias Gaertner: > > > > > Here is a proposal of the syntax: > > > > type > > TGenericClass<T,F> = class > > public > > procedure Add(Item: T; Flag: F); > > end; > > This syntax is almost impossible to implement since in one of your other > mails the symbols to mark the parameters appear in regular source code: > > begin > generictypeA<integer>.create > end. > > It will be very hard for the parser to see the difference in advance > between: > > variable<integer(another_var) > generic_type<integer > > Only when the > symbol is parsed the result is known. > > Maybe the parser may be able lookup the type first and make a decision > based on that, but it would be in the middle of a recursive expression > parse designed for infix operators. > > Also in C++ this sometimes causes trouble where you need to change your > code notation so the compiler eats it. I don't know if this proposal > suffers from this mess, but we should avoid at all cost to import it into > Pascal. Right. I didn't think of that. What about edged brackets? type TGenericClass[T,F] = class public procedure Add(Item: T; Flag: F); end; procedure TGenericClass.Add(Item: T; Flag: F); // Note: No redundant [T,F] after TGenericClass. begin end; type TListOfComponent = TGenericList[TComponent]; Analog: type TGenericListClass[T] = class of TGenericList[T]; type PGenericRecord[T] = ^TGenericRecord[T]; procedure GenericProc[T](Param: T); begin end; Mattias _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel