The API looks quite small, so I would suggest to just type it out -- from a
quick look, everything should be wrappable in pure Julia. e.g. the
equivalent to the first part of hello.cpp you linked would be:

julia> immutable BeagleInstanceDetails
         resourceNumber::Int
         resourceName::Ptr{Cchar}
         implName::Ptr{Cchar}
         implDescription::Ptr{Cchar}
         flags::Clong
       end

julia> retInfo = [BeagleInstanceDetails(0,0,0,0,0)]
1-element Array{BeagleInstanceDetails,1}:
 BeagleInstanceDetails(0,Ptr{Int8} @0x0000000000000000,Ptr{Int8}
@0x000000000000
0000,Ptr{Int8} @0x0000000000000000,0)

julia> nPatterns=2
2

julia> ccall((:beagleCreateInstance, "hmsbeagle64"), Int,
                 (Cint,Cint,Cint,Cint,Cint,Cint,Cint,Cint,Cint,Ptr{Int},
                  Cint,Clong,Clong,Ptr{BeagleInstanceDetails}),
                  3,2,3,4,nPatterns,1,4,1,0,C_NULL,0,0,0,retInfo)
0

julia> retInfo
1-element Array{BeagleInstanceDetails,1}:
 BeagleInstanceDetails(0,Ptr{Int8} @0x0000000002a2d54c,Ptr{Int8}
@0x0000000002a2
f040,Ptr{Int8} @0x00000000003e3390,135320150)

On Thu, Apr 16, 2015 at 9:12 AM, Simon Frost <[email protected]> wrote:

> Dear All,
>
> I'm trying to wrap the BEAGLE library for use in Julia:
>
> https://github.com/beagle-dev/beagle-lib
>
> I've used SWIG in the past, which works fine for Python:
>
> https://github.com/beagle-dev/beagle-lib/tree/master/examples/swig_python
>
> and I'm currently hacking my way through R:
>
> https://github.com/sdwfrost/beagle-lib/tree/master/examples/swig_r
>
> The API isn't big at all, but does require me to initialise some pointers
> to structs, which are filled in by reference. A toy example in C is here:
>
>
> https://github.com/sdwfrost/beagle-lib/blob/master/examples/standalone/hellobeagle/src/hello.cpp
>
> I've looked through the docs in Julia, as well as Clang.jl (I've made some
> wrappers previously using an old build, although I can't get Clang.jl
> working at the moment), and StrPack.jl, and I was wondering whether anyone
> had any pointers (no pun intended) to the current best practice for
> wrapping a library like this? I work best from examples, so any suggestions
> for a library with a similar API would be much appreciated.
>
> Best
> Simon
>

Reply via email to