On 16 Nov 2009, at 15:51, Jonas Maebe wrote:
The main problem with changing it now would obviously be that it
would break backwards compatibility with existing code. It could
still be done in Delphi mode onlu, of course, but changing the
behaviour of a calling convention (which is normally an ABI issue)
based on a language syntax mode feels... not right.
FWIW, there was a similar problem with the Mac OS X interfaces: these
were generated based on the calling convention used by MetroWerks
Pascal, which passes all const record parameters (regardless of their
size) always by reference, but which is otherwise identical to our
cdecl. The solution there has been to simply add an "mwpascal" calling
convention. We can always add a delphicdecl (or similar calling
convention), and then you'd need only one define at the start of your
code:
{$define cdecl:=delphicdecl}
Since most large projects already have a common include file for all
sources, it shouldn't cause that much work. Also, to implement
something like that you either need a detailed description of all the
behaviours (which there does not appear to be for cdecl in case of
Delphi), and/or an extensive test for all types (even with the
description, you need the test to verify the implementation). That's a
lot more work than the actual implementation work itself.
Jonas
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal