On Wed, Jan 6, 2016 at 12:15 AM, Shamika <[email protected]> wrote:

>
> I'm using Julia in c++ code. I have a few doubts regarding the jl_call
> function.The code is
>
> jl_array_t *ret = (jl_array_t*)jl_call(func,args,nargs);
>
> 1. Can args contain both scalar/array values?
>

Yes, both scalar and array values are represented on the C side as
jl_value_t*. Args will be a pointer to an array of jl_value_t* values –
i.e. an array of pointers (of length nargs). Some of those pointers can
point to scalar values on the heap, some can point to array values. These
can be distinguished by their type tags, which there are various macros to
access.


> Does it use zero based or one based indexing?
>

Zero-based: everything on the C side is zero-based.


> 2. Is there any data type that can hold both scalar/array output that is
> returned by jl_call? Right now, I have to define the output as jl_value_t
> or jl_array_t. Is there something more generic?
>

As I explained above, jl_value_t* is strictly more generic than
jl_array_t*. You can think of these as corresponding to Any and Array in
Julia – Array is a subtype of Any.

Reply via email to