[fpc-devel] Language extension: absolute for classes

Bram Kuijvenhoven kuifwaremailinglists at xs4all.nl
Tue Oct 3 22:05:33 CEST 2006


Micha Nelissen wrote:
> Marco van de Voort wrote:
>>> Changing type to something which is not a descendant (and thus
>>> incompatible) seems useless and always dangerous to me, so should be
>>> forbidden if possible.
>> I also considered it that way. But maybe the "absolute" keyword is then a
>> bit badly chosen, since it implies memory overlaying, no questions asked.
> 
> Yes, agree, but the way of use is so similar. Maybe the other usages
> should get this checking as well ;-).
> 
> Maybe 'override' instead, but that one is so closely tied to functions,
> and implies something 'virtual' as well.

Another suggestion: 'specialize'.

Regardless of the syntaxis, I'd like to have this feature very much as well. In my major FPC project it could save a lot of typecasts.

To be more specific: I have two similar class hierarchies, where each class in the second has a field refer to its 'conjugate' class in the first hierarchy. Like

type
  TA = class end;
  TB = class(TA) end;

  TAConjugate = class Conjugate:TA; end;
  TBConjugate = class(TAConjugate) end;

I'd like to be able to write instead one of

  TBConjugate = class(TAConjugate) Conjugate:TB; end;
  TBConjugate = class(TAConjugate) Conjugate:TB; override; end;
  TBConjugate = class(TAConjugate) Conjugate:TB; specialize; end;
  ... (other syntaxis) ...

One small request: if time and resources are conflicting, please finish generic support before going into this ;) Generics are needed much harder (for type safety/reducing type casts).

Regards,

Bram




More information about the fpc-devel mailing list