I've come up with a gist that shows how it's done:
https://gist.github.com/aknuds1/533f7b228aa46e9ee4c8.

Arve

On Wed, Sep 17, 2014 at 12:18 AM, Chad Austin <c...@imvu.com> wrote:

> At the moment, I don't have the time (or the hardware / configuration) to
> get your code up and running, but if someone else could take a look, this
> would be a great candidate for an example to put on the wiki.  Having
> JavaScript interact with C is quite common.
>
> On Tue, Sep 16, 2014 at 2:59 PM, Arve Knudsen <arve.knud...@gmail.com>
> wrote:
>
>> Thanks very much for the info, Chad. Would it be possible for you to
>> amend my gist to employ your technique??
>>
>> Best,
>> Arve
>>
>> On Tue, Sep 16, 2014 at 11:36 PM, Chad Austin <c...@imvu.com> wrote:
>>
>>> If you want to write the C code such that it writes to a float*, then
>>> that data has to live inside the Emscripten heap.
>>>
>>> That is, JavaScript must reserve some space in the Emscripten heap (via
>>> _malloc, for example), and pass the pointer to the C function.
>>>
>>> Then, JavaScript can read the floats out of the array by accessing
>>> HEAPF32[(p>>2) + index] where p is the pointer returned by _malloc and
>>> index is the index into the array.
>>>
>>>
>>> On Tue, Sep 16, 2014 at 2:17 PM, Arve Knudsen <arve.knud...@gmail.com>
>>> wrote:
>>>
>>>> Hi guys
>>>>
>>>> I need to pass an array of floating point numbers from a JavaScript
>>>> library to a C callback, so that the latter can fill the array with data.
>>>> I'm using Runtime.getFuncWrapper to be able to call the C callback from
>>>> JavaScript.
>>>>
>>>> How do I pass an array to the C callback, so that it appears as a
>>>> writeable array of floats to the latter?
>>>>
>>>> I've created a gist of an Emscripten-generated HTML page, to
>>>> demonstrate the scenario:
>>>> https://gist.github.com/aknuds1/fd6348ab32583dea8b4a. It shows what
>>>> I've tried so far, the problem being that the data written to the array by
>>>> the C function doesn't make it back to the calling JavaScript function.
>>>> Compile the gist into an HTML page like so:
>>>>
>>>>     emcc --js-library library.js -o tst.html tst.cpp.
>>>>
>>>> The JavaScript function is called 'initialize', while the C callback is
>>>> called 'callback'. Let me know if anything is unclear.
>>>>
>>>> Thanks,
>>>> Arve
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "emscripten-discuss" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to emscripten-discuss+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> --
>>> Chad Austin
>>> Technical Director, IMVU
>>> http://engineering.imvu.com <http://www.imvu.com/members/Chad/>
>>> http://chadaustin.me
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "emscripten-discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to emscripten-discuss+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to emscripten-discuss+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Chad Austin
> Technical Director, IMVU
> http://engineering.imvu.com <http://www.imvu.com/members/Chad/>
> http://chadaustin.me
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to emscripten-discuss+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to emscripten-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to