Based on a quick look at the documentation, my guess would be

        [CCode (cname = "ngGet_Vec_Info")]
        public static unowned VectorInfo? get_vector_info (string name);

That said, if you put it in the VectorInfo class you might want to
consider changing the name to "from_string" or something.
VectorInfo.get_vector_info is a bit repetitive for my taste.


-Evan


On Tue, 2014-06-24 at 17:48 +0200, Steven Vanden Branden wrote:
> thanks a lot,
> it working afther some tweaking and testing.
> 
> but i got another question:
> 
> i would like to get the vector info struct working with this function:
> 
> VAPI:
> 
> [CCode (cname = "ngGet_Vec_Info")]
>               public unowned VectorInfo get_vector_info(string                
>                                 vector_name);
> 
> HEADER:
> 
> pvector_info ngGet_Vec_Info(char* vecname);
> 
> 
> VAPI:
> 
> [CCode (cname = "vector_info", has_destroy_function = false,
> has_copy_function = false, has_type_id = false)]
> public struct VectorInfo {
>               [CCode (cname = "v_name")]
>               public unowned string name;
>               [CCode (cname = "v_type")]              
>               public int type;
>               [CCode (cname = "v_flags")]             
>               public short flags;
>               [CCode (cname = "v_realdata",array_length = false)]
>               public double[] data;
>               [CCode (cname = "v_compdata",array_length = false)]  
>               public NgComplex data_complex;
>               [CCode (cname = "v_length")]
>               public int length;
> }
> 
> HEADER:
> 
> typedef struct vector_info {
>     char *v_name;             
>     int v_type;                       
>     short v_flags;            
>     double *v_realdata;               
>     ngcomplex_t *v_compdata;  
>     int v_length;
> } vector_info, *pvector_info;
> 
> HEADER:
> 
> but it gives my an errors on the number of parameters that is not
> correct.
> It seems i need to connect to v_length parameter to the data, because
> this is a vector of that length.
> 
> Any clues how to fix this or where to find info?
> 
> Evan Nemerson schreef op Tue 20-05-2014 om 12:43 [-0700]:
> > On Tue, 2014-05-20 at 19:55 +0200, Steven Vanden Branden wrote:
> > > hello,
> > > seems like the mail got lost but anyway have read the answer on
> > > mailarchive about the bool, got the vapi to compile but get an segment
> > > fault error when i try to run the application so i would like to review
> > > the vapi for the function that causes it:
> > > 
> > > #if __GNUC__ >= 4
> > >     #define IMPEXP __attribute__ ((visibility ("default")))
> > >     #define IMPEXPLOCAL  __attribute__ ((visibility ("hidden")))
> > > 
> > > 
> > > IMPEXP
> > > int  ngSpice_Init(SendChar* printfcn, SendStat* statfcn, ControlledExit*
> > > ngexit, SendData* sdata, SendInitData* sinitdata, BGThreadRunning*
> > > bgtrun, void* userData);
> > > 
> > > the arguments are almost all pointer to callback functions and these i
> > > need to get in my vala program.
> > > 
> > > vapi code :
> > > 
> > > > [CCode (cname = "ngSpice_Init")]
> > > >                 public int init(out SendOutput* a,out 
> > > > SendSimulationStatus* b,out ControlledExit* c
> > > >                 , out SendVectorData* d, out SendInitializationData* e, 
> > > > out IsBackgroundThreadRunning* f, out void * userData);
> > 
> > Do not use pointers in Vala.  They are there for some corner cases which
> > will not work any other way, but in general if you are using pointers in
> > Vala you are doing it wrong.
> > 
> > I don't know why you think these are out parameters—based on a quick
> > look at the documentation they seem like in parameters.
> > 
> > It's untested, but you should try something along the lines of:
> > 
> >         [CCode (cname = "SendChar", has_target = false, simple_generics
> >         = true)]
> >         public delegate int SendChar<T> (string str, int id, T data);
> >         [CCode (cname = "SendStat", has_target = false, simple_generics
> >         = true)]
> >         public delegate int SendStat<T> (string str, int id, T data);
> >         [CCode (cname = "ControlledExit", has_target = false,
> >         simple_generics = true)]
> >         public delegate int ControlledExit<T> (int status, bool
> >         immediate, bool quit, int id, T data);
> >         [CCode (cname = "SendData", has_target = false, simple_generics
> >         = true)]
> >         public delegate int SendData<T> (VecValuesAll[] vectors, int id,
> >         T data);
> >         [CCode (cname = "SendInitData", has_target = false,
> >         simple_generics = true)]
> >         public delegate int SendInitData<T> ([CCode (array_length =
> >         false)] VecInfoAll[] vecs, int id, T data);
> >         [CCode (cname = "BGThreadRunning", has_target = false,
> >         simple_generics = true)]
> >         public delegate int BGThreadRunning<T> (bool running, int id, T
> >         data);
> >         
> >         [CCode (cname = "ngSpice_Init", simple_generics = true)]
> >         public static int init<T> (Ngspice.SendChar<T>? send_char,
> >         Ngspice.SendStat<T>? send_stat, Ngspice.ControlledExit<T>
> >         controlled_exit, Ngspice.SendData<T>? send_data,
> >         Ngspice.SendInitData<T>? send_data_init,
> >         Ngspice.BGThreadRunning<T>? bg_thread_running, T data);
> > 
> > A copy (without the wrapping): http://pastebin.com/u3HbaVpF
> > 
> > The only weird thing about this is you can't use closures.  The C API
> > takes a single parameter to pass to all the callbacks, instead of one
> > per callback like Vala expects, so you'll have to deal with that data
> > param manually.  Also, make sure it stays alive as long as you need it,
> > otherwise you'll probably end up with a use-after-free bug.
> > 
> > 
> > -Evan
> 
> 
> _______________________________________________
> vala-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/vala-list


Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
vala-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to