]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/mathml_editor/ocaml/ml_mathml_editor.c
debian release 0.0.4-1
[helm.git] / helm / DEVEL / mathml_editor / ocaml / ml_mathml_editor.c
index 79594c2a8bbd566e3245c1cc515b65b0f463c7b9..7dd6bd050f21ad5948159f5c1202752b6f647e90 100644 (file)
@@ -2,11 +2,15 @@
 #include <caml/memory.h>
 #include <caml/custom.h>
 #include <caml/callback.h>
+#include <assert.h>
 
 #include "mlgdomevalue.h"
 
 #include "c_mathml_editor.h"
 
+#undef assert
+#define assert(x) {}
+
 typedef struct
 {
   Editor* c_editor;
@@ -16,7 +20,7 @@ typedef struct
 ml_Editor*
 Editor_val(value v)
 {
-  ml_Editor* editor = (ml_Editor*) Data_custom_val(v);
+  ml_Editor* editor = *((ml_Editor**) Data_custom_val(v));
   assert(editor != NULL);
   return editor;
 }
@@ -29,6 +33,7 @@ ml_mathml_editor_finalize(value v)
 
   remove_global_root(&editor->callback);
   c_mathml_editor_destroy(editor->c_editor);
+  free(editor);
 }
 
 void
@@ -55,8 +60,9 @@ ml_mathml_editor_new(value dictionary,
     custom_deserialize_default
   };
   
-  value v = alloc_custom(&ops, sizeof(ml_Editor), 0, 1);
-  ml_Editor* ml_editor = (ml_Editor*) Data_custom_val(v);
+  value v = alloc_custom(&ops, sizeof(ml_Editor*), 0, 1);
+  ml_Editor** ml_editor_ref = (ml_Editor**) Data_custom_val(v);
+  ml_Editor* ml_editor = *ml_editor_ref = malloc(sizeof(ml_Editor));
   ml_editor->c_editor = c_mathml_editor_new(Document_val(dictionary),
                                            Document_val(tml_mml),
                                            Document_val(tml_tex),
@@ -102,6 +108,22 @@ ml_mathml_editor_drop(value v, value alt)
   CAMLreturn(Val_unit);
 }
 
+value
+ml_mathml_editor_cursor_hide(value v)
+{
+  CAMLparam1(v);
+  ml_Editor* editor = Editor_val(v);
+  CAMLreturn(Val_bool(c_mathml_editor_cursor_hide(editor->c_editor)));
+}
+
+value
+ml_mathml_editor_cursor_show(value v)
+{
+  CAMLparam1(v);
+  ml_Editor* editor = Editor_val(v);
+  CAMLreturn(Val_bool(c_mathml_editor_cursor_show(editor->c_editor)));
+}
+
 value
 ml_mathml_editor_get_tex(value v)
 {