At this stage both answers are useful to me.  For anything new, Julia is 
the way to go.  For accessing old c code, would using a `void ptr` from 
Julia work? 

On Saturday, June 27, 2015 at 4:18:13 PM UTC-5, Stefan Karpinski wrote:
>
> I interpreted the question as "how do I do this kind of thing in Julia" 
> rather than how do I make a binary-compatible structure (clearly I'm 
> failing at that).
>
> On Sat, Jun 27, 2015 at 4:46 PM, Keno Fischer <[email protected] 
> <javascript:>> wrote:
>
>> That struct is not ABI compatible to the given struct, which I believe 
>> was the original question. To get an ABI compatible version, you'll have to 
>> use the same types as the C version. Since unions aren't supported in an 
>> ABI compatible way, this generally does not work for such structs, but in 
>> this case you can use a single pointer.
>>
>> On Sat, Jun 27, 2015 at 4:42 PM, Stefan Karpinski <[email protected] 
>> <javascript:>> wrote:
>>
>>> type ITree
>>>     n::Int
>>>     children::Union(Vector{Int},Vector{ITree})
>>> end
>>>
>>> julia> t = ITree(123, [1,2,3])
>>> ITree(123,[1,2,3])
>>>
>>> julia> ITree(234, [t])
>>> ITree(234,[ITree(123,[1,2,3])])
>>>
>>> On Sat, Jun 27, 2015 at 10:50 AM, <[email protected] <javascript:>> 
>>> wrote:
>>>
>>>> I am new to Julia with mostly C and some MATLAB background.  Julia 
>>>> seems to provide an easy way to write C like code with MATLAB ease!  To 
>>>> get 
>>>> started, I am trying understand C interface. Is it be possible to create a 
>>>> Julia type for the following struct?
>>>>
>>>> typedef struct itree {
>>>>   bool isLeaf; 
>>>>   int n; //number of elements
>>>>   union {
>>>> int *i; //(isLeaf == 1): pointer to int array
>>>> struct itree **s; //(isLeaf == 0): pointer to itree array
>>>>   };
>>>> } itree;
>>>>
>>>> It seems, that the size of the pointer should be the same. So, 
>>>> anonymous union should be possible.  
>>>> I would appreciate any suggestions.
>>>>
>>>> Thanks,
>>>> ~Sue
>>>>
>>>>
>>>
>>
>

Reply via email to