2 #include <caml/memory.h>
3 #include <caml/custom.h>
4 #include <caml/callback.h>
7 #include "mlgdomevalue.h"
9 #include "c_mathml_editor.h"
23 ml_Editor* editor = *((ml_Editor**) Data_custom_val(v));
24 assert(editor != NULL);
29 ml_mathml_editor_finalize(value v)
31 ml_Editor* editor = Editor_val(v);
34 remove_global_root(&editor->callback);
35 c_mathml_editor_destroy(editor->c_editor);
40 ml_mathml_editor_log_callback(int level, const char* msg, void* user_data)
42 ml_Editor* ml_editor = (ml_Editor*) user_data;
44 callback2(ml_editor->callback, Val_int(level), copy_string(msg));
48 ml_mathml_editor_new(value dictionary,
53 static struct custom_operations ops =
56 ml_mathml_editor_finalize,
57 custom_compare_default,
59 custom_serialize_default,
60 custom_deserialize_default
63 value v = alloc_custom(&ops, sizeof(ml_Editor*), 0, 1);
64 ml_Editor** ml_editor_ref = (ml_Editor**) Data_custom_val(v);
65 ml_Editor* ml_editor = *ml_editor_ref = malloc(sizeof(ml_Editor));
66 ml_editor->c_editor = c_mathml_editor_new(Document_val(dictionary),
67 Document_val(tml_mml),
68 Document_val(tml_tex),
69 ml_mathml_editor_log_callback,
71 ml_editor->callback = log_message_cb;
72 register_global_root(&ml_editor->callback);
78 ml_mathml_editor_freeze(value v)
81 ml_Editor* editor = Editor_val(v);
82 CAMLreturn(Val_bool(c_mathml_editor_freeze(editor->c_editor)));
86 ml_mathml_editor_thaw(value v)
89 ml_Editor* editor = Editor_val(v);
90 CAMLreturn(Val_bool(c_mathml_editor_thaw(editor->c_editor)));
94 ml_mathml_editor_push(value v, value ch)
97 ml_Editor* editor = Editor_val(v);
98 c_mathml_editor_push(editor->c_editor, Int_val(ch));
103 ml_mathml_editor_drop(value v, value alt)
106 ml_Editor* editor = Editor_val(v);
107 c_mathml_editor_drop(editor->c_editor, Bool_val(alt));
108 CAMLreturn(Val_unit);
112 ml_mathml_editor_cursor_hide(value v)
115 ml_Editor* editor = Editor_val(v);
116 CAMLreturn(Val_bool(c_mathml_editor_cursor_hide(editor->c_editor)));
120 ml_mathml_editor_cursor_show(value v)
123 ml_Editor* editor = Editor_val(v);
124 CAMLreturn(Val_bool(c_mathml_editor_cursor_show(editor->c_editor)));
128 ml_mathml_editor_get_tex(value v)
131 ml_Editor* editor = Editor_val(v);
132 char* res = c_mathml_editor_get_tex(editor->c_editor);
134 ml_res = copy_string(res);
140 ml_mathml_editor_reset(value v, value s)
143 ml_Editor* editor = Editor_val(v);
144 c_mathml_editor_reset(editor->c_editor);
145 CAMLreturn(Val_unit);
149 ml_mathml_editor_get_tml(value v)
152 ml_Editor* editor = Editor_val(v);
153 GdomeDocument* doc = c_mathml_editor_get_tml(editor->c_editor);
154 CAMLreturn(Val_Document(doc));
158 ml_mathml_editor_get_mml(value v)
161 ml_Editor* editor = Editor_val(v);
162 GdomeDocument* doc = c_mathml_editor_get_mml(editor->c_editor);
163 CAMLreturn(Val_Document(doc));