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=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=73bc4abb7cd2e3706b4ef6999617486ce0c31bd7;hpb=c112706f347e08e7f345131fbc4c3aa0e9ecc7b5;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 73bc4abb7..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() @@ -96,16 +105,33 @@ Editor::~Editor() delete logger; } +extern "C" const char* +c_mathml_editor_get_default_dictionary_path() +{ + return TDictionary::getDefaultDictionaryPath().c_str(); +} + +extern "C" const char* +c_mathml_editor_get_default_mathml_stylesheet_path() +{ + return AMathMLFactory::getDefaultMathMLStylesheetPath().c_str(); +} + +extern "C" const char* +c_mathml_editor_get_default_tex_stylesheet_path() +{ + return AMathMLFactory::getDefaultTeXStylesheetPath().c_str(); +} + 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 @@ -172,6 +198,7 @@ extern "C" void c_mathml_editor_reset(Editor* editor) { assert(editor); + editor->lexer->reset(); editor->parser->reset(); }