Re: [fpc-pascal] IntToStr implementation
Michael Van Canneyt via fpc-pascal wrote: More accurately, I meant: you cannot write a function declaration to handle that syntax. It is true that a regular (non-built-in) procedure/function with that syntax can not be declared. Some more strange ducks - Exit allowing Program as parameter (UCSD-Pasca) - Scan allowing a partial-expression as second parameter (UCSD-Pascal) e.g. Scan( -26, =':', S) - SizeOf allowing a type-identifier as parameter etcetera. Regards, Adriaan van Os ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] IntToStr implementation
On Thu, 18 Jan 2024, Adriaan van Os via fpc-pascal wrote: Also something which cannot be handled by 'standard' syntax. (unless you wish to count generics and implicit specialization as "standard syntax") actual-parameter = expression { ":" expression } . actual-parameter-list = "(" actual-parameter { "," actual-parameter } ")" . The compiler obviously can parse it. More accurately, I meant: you cannot write a function declaration to handle that syntax. procedure Str(O : Integer { what to write here for the :N:M ??? }; var S); Michael. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] IntToStr implementation
Also something which cannot be handled by 'standard' syntax. (unless you wish to count generics and implicit specialization as "standard syntax") actual-parameter = expression { ":" expression } . actual-parameter-list = "(" actual-parameter { "," actual-parameter } ")" . Regards, Adriaan van Os ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] IntToStr implementation
On Thu, 18 Jan 2024, Hairy Pixels via fpc-pascal wrote: On Jan 18, 2024, at 1:51 PM, Sven Barth via fpc-pascal wrote: There is no source for Str() in that sense, because Str() is a compiler intrinsic implemented in the compiler's ninl.pas. Well that explains everything now! What is this an intrinsic? I was curious how it was implemented and now I'm even more curious. I asked myself the same question. The reason is it needs to support the same syntax as Write(ln) for padding the output: Str(I:N:M,S); This is not a "standard" syntax and needs to be handled specially by the compiler. Additionally, Str() can be used to convert an enum to a string value: Type TMyEnum = (one,two,three); var M : TMyEnum = one; S : String; begin Str(M,S); end. Also something which cannot be handled by 'standard' syntax. (unless you wish to count generics and implicit specialization as "standard syntax") Michael.___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] IntToStr implementation
> On Jan 18, 2024, at 1:51 PM, Sven Barth via fpc-pascal > wrote: > > There is no source for Str() in that sense, because Str() is a compiler > intrinsic implemented in the compiler's ninl.pas. > Well that explains everything now! What is this an intrinsic? I was curious how it was implemented and now I'm even more curious. Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] IntToStr implementation
Hairy Pixels via fpc-pascal schrieb am Do., 18. Jan. 2024, 00:44: > > > > On Jan 17, 2024, at 10:15 PM, Marco van de Voort via fpc-pascal < > fpc-pascal@lists.freepascal.org> wrote: > > > > > > Op 17-1-2024 om 15:57 schreef Hairy Pixels via fpc-pascal: > >> Can anyone show me where to find the IntToStr implementation in > SysUtils? There's so many level of indirection and macros I have no idea > where to look for it! > > > > Grep rtl/objpas/sysutils for it. > > > > > > sysstr.inc for the implementation sysstrh.inc for the declaration > > > > Which then goes to System.Str(), where is that? I found some other Str > functions in a lstrings.pas file but I don't think that's it. All the > macros break code tools for me and I can't find anything. > There is no source for Str() in that sense, because Str() is a compiler intrinsic implemented in the compiler's ninl.pas. Regards, Sven > ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] IntToStr implementation
> On Jan 17, 2024, at 10:15 PM, Marco van de Voort via fpc-pascal > wrote: > > > Op 17-1-2024 om 15:57 schreef Hairy Pixels via fpc-pascal: >> Can anyone show me where to find the IntToStr implementation in SysUtils? >> There's so many level of indirection and macros I have no idea where to look >> for it! > > Grep rtl/objpas/sysutils for it. > > > sysstr.inc for the implementation sysstrh.inc for the declaration > Which then goes to System.Str(), where is that? I found some other Str functions in a lstrings.pas file but I don't think that's it. All the macros break code tools for me and I can't find anything. Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] IntToStr implementation
Op 17-1-2024 om 15:57 schreef Hairy Pixels via fpc-pascal: Can anyone show me where to find the IntToStr implementation in SysUtils? There's so many level of indirection and macros I have no idea where to look for it! Grep rtl/objpas/sysutils for it. sysstr.inc for the implementation sysstrh.inc for the declaration ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
[fpc-pascal] IntToStr implementation
Can anyone show me where to find the IntToStr implementation in SysUtils? There's so many level of indirection and macros I have no idea where to look for it! Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal