I think allocate does what Pointer_make used to do. see docs in
src/preamble.js around the definition of allocate. Basically you can pass
it a C array, and it will allocate room on the stack or heap and copy that
data into there, and give you a pointer to it.

- Alon



On Tue, Jan 7, 2014 at 8:23 PM, dg123 <[email protected]> wrote:

> Hello,
> I have the same question as the OP on passing parameters by reference.
> The answer uses Pointer_make.
>
> I can't seem to find a Pointer_make. I see this thread is from 2011, so I
> was hoping someone could give me updated information.
>
> Thanks
>
> On Monday, January 10, 2011 7:45:55 PM UTC-5, Jane's Conference wrote:
>>
>> Hi everyone,
>> I would need a little clarification on how parameter passing and
>> return values work in emscriptened code.
>>
>> 1. Passing an array.
>>
>> Suppose I have a function like this (function are real examples when I
>> can):
>>
>> void tempo_input(tempo_t * t, float const * samples, size_t n)
>>
>> Emscripten compiles as:
>>
>> function _tempo_input($t, $samples, $n)
>>
>> I need to pass a Javascript array to the function, called
>> javascriptArray. From the documentation, I assume I should do:
>>
>> var javascriptArray_pointer = Pointer_make (javascriptArray);
>> var input_res = _tempo_input(tempo_instance, javascriptArray_pointer,
>> javascriptArray.length);
>>
>> Is it the right thing to do?
>>
>> 2. Receiving an array as return vale.
>>
>> Now the function is:
>>
>> static float const * tempo_output(some_parameters)
>>
>> It returns a float C array. How can I translate it into a Javascript
>> array? I scanned into the source, and in preamble.js, Array_copy
>> function seemed promising, but I don't think it's the correct answer
>> (btw, I was looking for Pointer_make definition in order to find its
>> "inverse")
>>
>> 3. Passing parameters by reference
>>
>> The C function is
>>
>> void get_output (tempo_t * t, float * samples, size_t * n)
>>
>> emscriptened, it becomes:
>>
>> function _get_output($t, $samples, $n)
>>
>> Here, the samples pointer, set inside the function, points at an array
>> of floats when the function returns. The size_t pointer n, similarly,
>> is set inside the function and points to a value when the function is
>> done. How can I invoke a function like this from javascript,
>> mantaining the pass-by-reference behaviour?
>>
>> Thank you,
>> Cristiano.
>
>  --
> 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 [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to