Still doesn't work but getting closer

julia> using GMT; API=create_session(); dim=uint64([2,9]);

julia> V = create_data (API, 5, 1, 0)
Ptr{Void} @0x0000000000000000

julia> V = create_data (API, 5, 1, 0, dim)
ERROR: no method create_data(Ptr{None}, Int64, Int64, Int64, Array{Uint64,1
})

so its the 'dim' parameter that is causing the error now. Isn't the dim=
uint64([2,9]); compatible with par::Ptr=C_NULL (nor the before 
par::Ptr{Culonglong})?



Terça-feira, 11 de Março de 2014 1:31:50 UTC, Leah Hanson escreveu:
>
> I think Jacob was suggesting something like this:
>
> function create_data(API::Ptr{None}, family=5, geometry=1, mode=0, 
> par::Ptr=C_NULL,
>         wesn::Ptr=C_NULL, inc::Ptr=C_NULL, reg=0, pad=2, 
> data::Ptr{None}=C_NULL)
>
>
> Have you tried that? (The Ptr types are loosened by removing the type 
> parameter).
>
> -- Leah
>
> On Mon, Mar 10, 2014 at 8:23 PM, J Luis <jmf...@gmail.com <javascript:>> 
> wrote:
> >
> > Thanks, but if I try without default values
> >
> > function create_data(API::Ptr{None}, family, geometry, mode, 
> par::Ptr{Culonglong},
> >         wesn::Ptr{Cdouble}, inc::Ptr{Cdouble}, reg, pad, data::Ptr{None})
> >
> > I still get the same error, and note that the Culonglong was not using 
> the C_NULL default value before. It's the 'dim' parameter below.
> >
> > using GMT; API=create_session(); dim=uint64([2,9]);
> >
> >
> > julia> V = create_data (API, 5, 1, 0, dim, C_NULL, C_NULL, 0, 0, C_NULL)
> > ERROR: no method create_data(Ptr{None}, Int64, Int64, Int64, 
> Array{Uint64,1}, Ptr{None}, Ptr{None}, Int64, Int64, Ptr{None})
> >
> >
> >
> >
> > Terça-feira, 11 de Março de 2014 0:29:32 UTC, Jacob Quinn escreveu:
> >>
> >> Not sure, but my guess would be that C_NULL is not being accepted as a 
> Ptr{Culonglong} or Ptr{Cdouble} since it's type is Ptr{Void} (or 
> Ptr{None}). You can either remove those type annotations or just use Ptr as 
> the type annotation to test this theory.
> >>
> >> -Jacob
> >>
> >>
> >> On Mon, Mar 10, 2014 at 8:20 PM, J Luis <jmf...@gmail.com> wrote:
> >>>
> >>> I have spend some hours around this but I'm not getting nowhere. The 
> following C function has this signature
> >>>
> >>> void *GMT_Create_Data (void *API, unsigned int family, unsigned int 
> geometry,
> >>>                         unsigned int mode, uint64_t par[], double 
> *wesn,
> >>>                         double *inc, unsigned int registration, int 
> pad, void *data)
> >>>
> >>>
> >>> A Clang.jl conversion produced
> >>>
> >>> @c Ptr{None} GMT_Create_Data (Ptr{None}, Uint32, Uint32, Uint32, 
> Ptr{Culonglong}, Ptr{Cdouble},
> >>>         Ptr{Cdouble}, Uint32, Cint, Ptr{None}) gmt_w64
> >>>
> >>> than I manually try to replicate it so that I can use default values, 
> and I wrote it as
> >>>
> >>> function create_data(API::Ptr{None}, family=5, geometry=1, mode=0, 
> par::Ptr{Culonglong}=C_NULL,
> >>>         wesn::Ptr{Cdouble}=C_NULL, inc::Ptr{Cdouble}=C_NULL, reg=0, 
> pad=2, data::Ptr{None}=C_NULL)
> >>>
> >>>     ptr = ccall((:GMT_Create_Data,lib), Ptr{None}, (Ptr{None}, Uint32, 
> Uint32, Uint32, Ptr{Uint64},
> >>>         Ptr{Cdouble}, Ptr{Cdouble}, Uint32, Cint, Ptr{None}),
> >>>         API, 
> uint32(family),uint32(geometry),uint32(mode),par,wesn,inc,uint32(reg),int32(pad),
>  
> data)
> >>> end
> >>>
> >>> However, no matter what I try the manual version always error
> >>>
> >>> julia> V = create_data (API, 5, 1, 0, dim, C_NULL, C_NULL, 0, 0, 
> C_NULL)
> >>> ERROR: no method create_data(Ptr{None}, Int64, Int64, Int64, 
> Array{Uint64,1}, Ptr{None}, Ptr{None}, Int64, Int64, Ptr{None})
> >>>
> >>> or
> >>>
> >>> julia> create_data(API)
> >>> ERROR: no method create_data(Ptr{None}, Int64, Int64, Int64, 
> Ptr{None}, Ptr{None}, Ptr{None}, Int64, Int64, Ptr{None})
> >>>  in create_data at C:\progs_cygw\GMTdev\julia\GMT\src\GMTfuns.jl:22
> >>>
> >>> but the automatic one runs fine
> >>>
> >>>
> >>> julia> V = GMT_Create_Data (API, 5, 1, 0, dim, C_NULL, C_NULL, 0, 0, 
> C_NULL)
> >>> Ptr{Void} @0x0000000000216210
> >>>
> >>>
> >>> What am I doing wrong?
> >>>
> >>> Thanks
> >>
> >>
>

Reply via email to