[fpc-pascal] Re: Assigning pointer address

michael.vancanneyt at wisa.be michael.vancanneyt at wisa.be
Mon Oct 1 14:14:07 CEST 2012



On Mon, 1 Oct 2012, Reinier Olislagers wrote:

> On 1-10-2012 13:55, dhkblaszyk-47ckw973qWsGTViba+RHyw at public.gmane.org
> wrote:
>> On 1 okt '12, michael.vancanneyt-0Is9KJ9Sb0A at public.gmane.org wrote:
>>
>>> On Mon, 1 Oct 2012, dhkblaszyk at zeelandnet.nl <mailto:dhkblaszyk-47ckw973qWsGTViba+RHyw at public.gmane.org>wrote:
>>>> Hi Tomas, Thanks for clarifying. I will use PtrUInt to store the
>>>> pointer address in. BTW: the documentation it says not to use PtrInt
>>>> because it's signed and therefore smaller than a pointer (as in max
>>>> value). Also there seems to be an error in the documentation. On
>>>> http://www.freepascal.org/docs-html/rtl/system/ptruint.html [4] it is
>>>> described that PtrUInt is an alias to DWord. However, it depends on
>>>> the architecture which type it actually is. Could someone please
>>>> correct the docs?
>>> What do you want to see corrected ?
>>>
>>> On 32-bit systems, it is a DWord. The docs were generated on such a system,
>>> so you get this definition.
>>
>> If possible I would like to see a remark mentioning that it's a QWord on
>> 64bit and Word on 16bit. That by itself would make thing clearer already.
> That sounds good (vaguely remember that PtrUint also depends on OS, but
> leaving it to more knowledgeable people to updat the docs anyway)
>
>> In the ideal case fpdoc should be adjusted so it can handle these
>> defines. However this will be very complex I assume.
>
> IIUC, size PtrUint varies by architecture, which is more or less the
> point of PtrUint.
> Having this variation documented as Darius suggested above makes things
> much clearer, because the programmer may be working on one platform and
> programming for another (with {$IFDEFS}...).

Yes and no.

You're supposed to treat this as an opaque type, i.e. all you're supposed to know is that it is:
1) An integer type (signed or not).
2) Same size as a pointer type on all platforms.

If we start specifying when it is of what type, then 
a) we need to maintain this.
b) people will start making assumptions.

We exactly need to avoid b)

Michael.



More information about the fpc-pascal mailing list