petdance/scratch — Issue #351: Add UINTPTR type into parrot.
Author: petdance
Created: 2011-11-01 05:42:06+00:00
State: open
Labels: core, feature, Pri-normal, Sev-medium

Hello.
For bit manipulations on pointers we do need integral type to hold it. In C99 it's declared as uintval_t. Unfortunately we have to support C89 which doesn't have such declaration. Solution is to provide own define.

Example of usage is in parrot/parrot.h:
{{{
* NOTE! UINTVAL is incorrect below. It should be UINTPTR or something like
* that. The equivalent of C99's uintptr_t- a non-pointer data type that can
* hold a pointer.
*/
#define D2FPTR(x) UINTVAL2PTR(funcptr_t, PTR2UINTVAL(x))
#define F2DPTR(x) UINTVAL2PTR(void *, PTR2UINTVAL((funcptr_t) (x)))
}}}

Originally http://trac.parrot.org/parrot/ticket/1855