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 >>>> >>>> >>> >> >
