4 #include <caml/memory.h>
5 #include <caml/custom.h>
6 #include <caml/callback.h>
8 #include "mlgdomevalue.h"
10 #include "c_mathml_editor.h"
21 ml_Editor* editor = *((ml_Editor**) Data_custom_val(v));
22 assert(editor != NULL);
27 ml_mathml_editor_finalize(value v)
29 ml_Editor* editor = Editor_val(v);
32 remove_global_root(&editor->callback);
33 c_mathml_editor_destroy(editor->c_editor);
38 ml_mathml_editor_log_callback(int level, const char* msg, void* user_data)
40 ml_Editor* ml_editor = (ml_Editor*) user_data;
42 callback2(ml_editor->callback, Val_int(level), copy_string(msg));
46 ml_mathml_editor_new(value dictionary,
51 static struct custom_operations ops =
54 ml_mathml_editor_finalize,
55 custom_compare_default,
57 custom_serialize_default,
58 custom_deserialize_default
61 value v = alloc_custom(&ops, sizeof(ml_Editor*), 0, 1);
62 ml_Editor** ml_editor_ref = (ml_Editor**) Data_custom_val(v);
63 ml_Editor* ml_editor = *ml_editor_ref = malloc(sizeof(ml_Editor));
64 ml_editor->c_editor = c_mathml_editor_new(Document_val(dictionary),
65 Document_val(tml_mml),
66 Document_val(tml_tex),
67 ml_mathml_editor_log_callback,
69 ml_editor->callback = log_message_cb;
70 register_global_root(&ml_editor->callback);
76 ml_mathml_editor_freeze(value v)
79 ml_Editor* editor = Editor_val(v);
80 CAMLreturn(Val_bool(c_mathml_editor_freeze(editor->c_editor)));
84 ml_mathml_editor_thaw(value v)
87 ml_Editor* editor = Editor_val(v);
88 CAMLreturn(Val_bool(c_mathml_editor_thaw(editor->c_editor)));
92 ml_mathml_editor_push(value v, value ch)
95 ml_Editor* editor = Editor_val(v);
96 c_mathml_editor_push(editor->c_editor, Int_val(ch));
101 ml_mathml_editor_drop(value v, value alt)
104 ml_Editor* editor = Editor_val(v);
105 c_mathml_editor_drop(editor->c_editor, Bool_val(alt));
106 CAMLreturn(Val_unit);
110 ml_mathml_editor_cursor_hide(value v)
113 ml_Editor* editor = Editor_val(v);
114 CAMLreturn(Val_bool(c_mathml_editor_cursor_hide(editor->c_editor)));
118 ml_mathml_editor_cursor_show(value v)
121 ml_Editor* editor = Editor_val(v);
122 CAMLreturn(Val_bool(c_mathml_editor_cursor_show(editor->c_editor)));
126 ml_mathml_editor_get_tex(value v)
129 ml_Editor* editor = Editor_val(v);
130 char* res = c_mathml_editor_get_tex(editor->c_editor);
132 ml_res = copy_string(res);
138 ml_mathml_editor_reset(value v, value s)
141 ml_Editor* editor = Editor_val(v);
142 c_mathml_editor_reset(editor->c_editor);
143 CAMLreturn(Val_unit);
147 ml_mathml_editor_get_tml(value v)
150 ml_Editor* editor = Editor_val(v);
151 GdomeDocument* doc = c_mathml_editor_get_tml(editor->c_editor);
152 CAMLreturn(Val_Document(doc));
156 ml_mathml_editor_get_mml(value v)
159 ml_Editor* editor = Editor_val(v);
160 GdomeDocument* doc = c_mathml_editor_get_mml(editor->c_editor);
161 CAMLreturn(Val_Document(doc));