On 22 December 2011 23:21, Daniel Espinosa <[email protected]> wrote:

> Find attached a patch (ready to commit) to implement missing invokers
> on GdaDataModel. This allows vala extensions to implement GdaDataModel
> with no problems.
>
> 2011/12/22 Daniel Espinosa <[email protected]>:
> > I'm implementing GdaDataModel interface in an Gee Collection object
> > called GdaData.DataModelIterable, but I can't implement the following
> > virtual functions:
> >
> >                [NoWrapper]
> >                public abstract bool i_get_notify ();
> >                [NoWrapper]
> >                public abstract bool i_iter_at_row (Gda.DataModelIter
> iter, int row);
> >                [NoWrapper]
> >                public abstract bool i_iter_next (Gda.DataModelIter iter);
> >                [NoWrapper]
> >                public abstract bool i_iter_prev (Gda.DataModelIter iter);
> >                [NoWrapper]
> >                public abstract bool i_iter_set_value (Gda.DataModelIter
> iter, int
> > col, GLib.Value value) throws GLib.Error;
> >                [NoWrapper]
> >                public abstract void i_set_notify (bool
> do_notify_changes);
> >
> > These functions are declared *abstract* because they must be
> > implemented and with the annotation [NoWrapper] because they don't
> > have any function in the public header to call like the for example
> > get_n_rows ();
> >
> >                [CCode (vfunc_name = "i_get_n_rows")]
> >                public abstract int get_n_rows ();
> >
> > In the last function implementors must declare a get_n_rows ().
> >
> > In the case of the above functions they have the following problems:
> >
> > * i_iter_at_row, i_iter_next, i_iter_prev are functions that are
> > implemented on a separated object GdaDataModelIter, then how to deal
> > with that in C? Is this correct or can be modified in future version?
> >
> >
> >  * i_set_notify and  i_get_notify they have a function that wrap it
> > but they are "incompatible" because require different number of
> > arguments and return type: freeze() and thaw (), initially I've
> > declared them in GIR  as the one to call for the virtual functions but
> > fails when Vala try to use them. Now they are declared as above with
> > no invoker and with [NoWrapper] in Vala bindings.
> >
> > To fix all this problems is possible to add the following functions to
> > the GdaDataModel just to have an invoker as a function to call and
> > make easy to Vala (and maybe other languages) to implement
> > GdaDataModel interface:
> >
> > gda_data_model_get_notify (GdaDataModel*)
> > gda_data_model_set_notify (GdaDataModel*, gboolean)
> > gda_data_model_iter_at_row (GdaDataModel*, GdaDataModelIter*, int)
> > gda_data_model_iter_next (GdaDataModel*, GdaDataModelIter*)
> > gda_data_model_iter_prev (GdaDataModel*, GdaDataModelIter*)
> >
> > Please tell me if this is correct in order to implement them and
> > continue on Vala extensions.
> >
> > --
> > Trabajar, la mejor arma para tu superación
> > "de grano en grano, se hace la arena" (R) (en trámite, pero para los
> > cuates: LIBRE
>
>

The patch does not apply to the current git master branch, but I think you
can apply it yourself; please also add the "Since: 5.2.0" in each new
function's comment.

Thanks,

Vivien
_______________________________________________
gnome-db-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-db-list

Reply via email to