X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Fmathml_editor%2Focaml%2Fc_mathml_editor.cc;h=25759823ba05e8351b9d8b6ab6347121bde9a782;hb=97c2d258a5c524eb5c4b85208899d80751a2c82f;hp=f610a7ff5d92bd810ee56dcefdb67310f65a9274;hpb=84877da90dd68c88915b5ee54d31e9849f340eac;p=helm.git diff --git a/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc b/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc index f610a7ff5..25759823b 100644 --- a/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc +++ b/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc @@ -24,11 +24,13 @@ */ #include +#include #include "ALogger.hh" #include "TDictionary.hh" #include "CMathMLFactoryXSLT.hh" #include "TPushLexer.hh" +#include "LPushLexer.hh" #include "TPushParser.hh" class CCallbackLogger : public ALogger @@ -59,7 +61,7 @@ CCallbackLogger::message(Level l, const std::string& s) struct Editor { - Editor(const DOM::Document&, const DOM::Document&, const DOM::Document&, void (*)(int, const char*, void*), void*); + Editor(const char*, const char*, const char*, void (*)(int, const char*, void*), void*, bool); ~Editor(); ALogger* logger; @@ -71,18 +73,25 @@ struct Editor APushLexer* lexer; }; -Editor::Editor(const DOM::Document& dict, const DOM::Document& mml, const DOM::Document& tex, - void (*cb)(int, const char*, void*), void* data) +Editor::Editor(const char* dict_uri, const char* mml_uri, const char* tex_uri, + void (*cb)(int, const char*, void*), void* data, bool alt) { + assert(dict_uri); + assert(mml_uri); + assert(tex_uri); assert(cb); logger = new CCallbackLogger(cb, data); dictionary = new TDictionary(*logger); - dictionary->load(DOM::Document(dict)); + dictionary->load(dict_uri); + DOM::DOMImplementation di; + DOM::Document mml = di.createDocumentFromURI(mml_uri); + DOM::Document tex = di.createDocumentFromURI(tex_uri); tml_mml = new DOMX::XSLTStylesheet(mml); tml_tex = new DOMX::XSLTStylesheet(tex); factory = new CMathMLFactoryXSLT(*logger, *tml_mml); parser = new TPushParser(*logger, *factory, *dictionary); - lexer = new TPushLexer(*logger, *parser); + if (alt) lexer = new LPushLexer(*logger, *parser); + else lexer = new TPushLexer(*logger, *parser); } Editor::~Editor() @@ -115,15 +124,14 @@ c_mathml_editor_get_default_tex_stylesheet_path() } extern "C" Editor* -c_mathml_editor_new(GdomeDocument* dictionary, - GdomeDocument* tml_mml, - GdomeDocument* tml_tex, +c_mathml_editor_new(bool alt, + const char* dictionary_uri, + const char* tml_mml_uri, + const char* tml_tex_uri, void (*log_message_cb)(int, const char*, void*), void* user_data) { - return new Editor(DOM::Document(dictionary), - DOM::Document(tml_mml), - DOM::Document(tml_tex), log_message_cb, user_data); + return new Editor(dictionary_uri, tml_mml_uri, tml_tex_uri, log_message_cb, user_data, alt); } extern "C" void @@ -190,6 +198,7 @@ extern "C" void c_mathml_editor_reset(Editor* editor) { assert(editor); + editor->lexer->reset(); editor->parser->reset(); }