Generic (void *)int

Jorn Vernee jbvernee at xs4all.nl
Mon Feb 18 09:56:20 UTC 2019


Hi Giuseppe,

You should be able to use this trick:

     long pointerValue = 12L; // e.g.
     Scope scope = Scope.newNativeScope; // or Scope.globalScope().fork() 
depending on which version you are
     Pointer<Long> ptr = scope.allocate(NativeTypes.UINT64);
     ptr.set(pointerValue);
     Pointer<?> result = 
ptr.cast(NativeTypes.VOID).cast(NativeTypes.VOID.pointer()).get();
     // use 'result'

Be aware that this does do an allocation of a 64 bit int, so you might 
want to reuse the allocated space if you create a lot of pointers from 
literals.

Maybe in the future we can add an API for creating pointers from long 
literals directly.

Jorn

Giuseppe Barbieri schreef op 2019-02-18 10:44:
> Thanks Sundar,
> 
> that works flawless for `(void *)0`
> 
> But now I also would need a generic solution, for example:
> 
> (void *)12
> 
> There is a sill opengl call ( glVertexPointer ) requesting explicitely
> that: https://stackoverflow.com/a/8283855/1047713
> 
> Signature:
> 
> void glVertexAttribPointer(int index, int size, int type, byte
> normalized, int stride, Pointer<?> pointer);
> 
> 
> is there actually a way?
> 
> 
> 
> 
> 
> 
> You can use Pointer.nullPointer() method.
> 
> -Sundar
> 
> On 18/02/19, 8:09 AM, Giuseppe Barbieri wrote:
>> Hi,
>> 
>> I'm looking for a way to convert this:
>> 
>> (void*)0
>> 
>> in Java.
>> 
>> I tried to allocate a pointer and set its value to 0, but it didnt 
>> work
>> 
>> Any ideas, guys?
>> 
>> Thanks in advance


More information about the panama-dev mailing list