Can the output, jl_value_t* ret, point to more than one output argument?

On Wednesday, January 6, 2016 at 7:45:33 PM UTC+5:30, Stefan Karpinski 
wrote:
>
> On Wed, Jan 6, 2016 at 12:15 AM, Shamika <[email protected] 
> <javascript:>> 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