Date: Sat, 10 Sep 2005 17:02:54 -0300 From: romildo at uber.com.br To: lablgtk at math.nagoya-u.ac.jp Subject: Implementing gtk_plot_canvas_plot_new(GtkPlot * plot) Message-ID: <20050910200253.GA26631 at malaquias> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello. I want to wrap the following C function GtkPlotCanvasChild * gtk_plot_canvas_plot_new(GtkPlot *plot); ^^^^^^^^^^^^^ from the gtk+extra library. Note that it expects a GtkPlot widget as argument. I already have the following: ----------> In ml_gtkextra.c: #define GtkPlot_val(val) check_cast(GTK_PLOT,val) #define GtkPlotCanvasPlot_val(val) check_cast(GTK_PLOT_CANVAS_PLOT,val) CAMLprim value ml_gtk_plot_new_with_size (value width, value heigth) { return Val_GtkWidget_sink(gtk_plot_new_with_size(NULL, Double_val(width), Double_val(heigth))); } ML_1 (gtk_plot_canvas_plot_new, GtkPlot_val, Val_GtkWidget_sink) ----------> In gtkExtra.ml: type plot = [Gtk.widget|`plot] type plot_canvas_plot = [Gtk.widget|`plot_canvas_plot] module Plot = struct external create : float -> float -> plot Gtk.obj = "ml_gtk_plot_new_with_size" end module PlotCanvasPlot = struct external create : plot Gtk.obj -> plot_canvas_plot Gtk.obj = "ml_gtk_plot_canvas_plot_new" end ----------> In gExtra.ml class plot obj = object inherit GObj.widget (obj : GtkExtra.plot Gtk.obj) end let plot width heigth ?packing ?show () : plot = let w = Plot.create width heigth in GObj.pack_return (new plot w) ~packing ~show class plot_canvas_plot obj = object inherit GObj.widget (obj : GtkExtra.plot_canvas_plot Gtk.obj) end let plot_canvas_plot plot ?packing ?show () : plot_canvas_plot = let w = PlotCanvasPlot.create plot in GObj.pack_return (new plot_canvas_plot w) ~packing ~show ----------> In test-extra.ml let plot = GExtra.plot 0.65 0.45 () let child = GExtra.plot_canvas_plot plot () ---------- When compiling test-extra.ml, I get the error: $ ocamlc -i lablgtk.cma gtkInit.cmo gExtra.cmo lablgtkextra.cma test-extra.ml -o test-extra File "test-extra.ml", line 13, characters 36-40: This expression has type GExtra.plot but is here used with type GtkExtra.plot Gtk.obj = GtkExtra.plot Gobject.obj How should the function GExtra.plot_canvas_plot be defined? This function is to construct a new plot_canvas_plot object. Any help? Romildo