[fpc-devel] case is

Hairy Pixels genericptr at gmail.com
Thu Mar 24 02:34:49 CET 2022

> On Mar 24, 2022, at 8:14 AM, Hairy Pixels <genericptr at gmail.com> wrote:
> Search for "Case statement for class introspection” and you see can the little discussion we had about a potential speed up and why it wasn’t viable so for now it’s just using a if-else statement with A.ClassType = B.ClassType comparisons. It’s just syntactic sugar at this point but it was trivial to implement and I think it’s much nicer to work with so for me that’s a total win.

I just realized one thing worth changing. So this is how I implemented it, essentially it’s a case-of-ClassType, which means the compiler now has: case of ordinal, case of string and case of classType.

c := TInterfacedObject.Create;

  case c of
    TObject:            result := 1;
    TInterfacedObject:  result := 2;
    TAggregatedObject:  result := 3;
    otherwise           result := 4;

But because I did an implicit “c.ClassType” it wouldn’t be possible to use “nil” as a case. Maybe not a big deal because you can capture nil in “otherwise” but it’s something to consider.

	Ryan Joseph

More information about the fpc-devel mailing list