]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc
ocaml 3.09 transition
[helm.git] / helm / DEVEL / mathml_editor / ocaml / c_mathml_editor.cc
index 14bab319d455df313b45d9c146889739a6979bb4..25759823ba05e8351b9d8b6ab6347121bde9a782 100644 (file)
  */
 
 #include <GdomeSmartDOMXSLT.hh>
+#include <cassert>
 
 #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 char*, const char*, const char*, void (*)(int, const char*, void*), void*);
+  Editor(const char*, const char*, const char*, void (*)(int, const char*, void*), void*, bool);
   ~Editor();
 
   ALogger*        logger;
@@ -72,7 +74,7 @@ struct Editor
 };
 
 Editor::Editor(const char* dict_uri, const char* mml_uri, const char* tex_uri,
-              void (*cb)(int, const char*, void*), void* data)
+              void (*cb)(int, const char*, void*), void* data, bool alt)
 {
   assert(dict_uri);
   assert(mml_uri);
@@ -88,7 +90,8 @@ Editor::Editor(const char* dict_uri, const char* mml_uri, const char* tex_uri,
   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()
@@ -121,13 +124,14 @@ c_mathml_editor_get_default_tex_stylesheet_path()
 }
 
 extern "C" Editor*
-c_mathml_editor_new(const char* dictionary_uri,
+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(dictionary_uri, tml_mml_uri, tml_tex_uri, 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
@@ -194,6 +198,7 @@ extern "C" void
 c_mathml_editor_reset(Editor* editor)
 {
   assert(editor);
+  editor->lexer->reset();
   editor->parser->reset();
 }