From: Arjan M. <ar...@no...> - 2003-10-28 16:26:59
|
On Tue, 2003-10-28 at 12:08, Martin Willemoes Hansen wrote: > On Thu, 2003-10-23 at 16:45, Arjan Molenaar wrote: > > > > > You can also create it as a macro with the same syntax. > > > Uh I realy dont like macro's, > > > functions are much easier for me to work with. > > > > I though so. ;-) > > Also elipsis parameters (...) are kind of bad when working with c# > wrapping. > To work with elipsis, I need to make glue code for each function > signature. Fx. the dia_dash_style_new .. I have two functions: > > diasharp_create_dia_dash_style_one (gdouble dash); > diasharp_create_dia_dash_style_two (gdouble dash1, gdouble dash2); > > Unfortunately Mono does not marshall arrays, so I still have the problem > of using DashStyle :( > > How can we solve the issue? I can think of two things: > > 1. Make DashStyle not use an array, like having just fields, and make > the creator function initialize thoes. Or have some kind of wrapper > frindly object like a glist. Maybe a garray, unfortunately garray is not > implemented in gtk#, maybe it has something to do with the array > marshalling stuff which does not work in mono. It's really a bummer C# can't handle any number of arguments for it's functions. Python can and it's a really neat feature. > 2. Make DashStyle a full fledge gobject. Not really an option I think... > How much work will be involed in this solution? 3. Create some sort of builder-function: dia_dash_style_add_segment(dash_style, gdouble segment) (returns the same DiaDashStyle). In C# you can do something like this: dash = new DiaDashStyle().add_dash(7).add_dash(10).add_dash(5) etc. How does C# handle GValue's then? I've had a request before for making line-creation functions like gnomecanvas does (with _add_segment() functions). You can always create some C# glue function for this, but I think it's worth implementing in C too, especially for bezier curves (and lines in general). It's less C-ish to do the same thing for DiaDashStyle, but for the sake of wrappieness I don't think it will hurt (It's not needed for Python, since python can take any number of arguments for it's functions :-). Regards, Arjan |