Actually, in Delphi and C/C++ switch or case statements are compiled down to a pointer list. So instead of if statements the compiler does a test to see if the pointer index is set and valid, if so then it jumps to the handler with a return at the end. If not then it bypasses and goes to the fallout point.

I don't know if this is how FPC handles it or not, never actually took the time to look at the generated code . But, I would guess that it would be close.