On 2 July 2013 23:04, kilon <[email protected]> wrote:
> Thank you Igor for the clarifications, the reason why I prefer using the
> nativeboost methods is because :
>
> a) I was not sure if smalltalk types map correctly to C types and which
> Smalltalk types correspond to which C types

well, there's no such thing as 'types' in smalltalk :)

>
> b) many opengl functions ask for the address of the value and the value
> itself. And I have no clue how to obtain memory addresses of smalltalk
> types.
>

you don't. The value can have a type, but address don't.
Address is just a location in memory, where the value(s) (could be) stored.

For any function which takes a pointer, you can pass an instance of ByteArray,
or instance of NBExternalAddress to it. In first case, a pointer to
first byte of bytearray
will be passed to function, in second one , the value of address.

So, you either allocate buffer in object memory, or external memory..
fill it with whatever
it needs and pass to function. Does that sounds simple enough?

> c) I was not sure whether Pharo VM or garbage collector would move my data
> making my pointers invalid.
>
> But if you say its ok, I trust you. When exactly is ok to use smalltalk
> types ?
>
if you pass a pointer to something in object memory into function,
make sure GC cannot move the object while function uses/accessing its contents.

and it is only for pointers. For arguments which is passed by value
(ints/floats), you don't have to care.

> --
> View this message in context: 
> http://forum.world.st/Understanding-NBOpenGL-tp4686514p4696955.html
> Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
>



-- 
Best regards,
Igor Stasenko.

Reply via email to