From 30060cffed61b88fe53e4d6386b606050d6dfda0 Mon Sep 17 00:00:00 2001 From: no author Date: Thu, 9 Jan 2003 11:22:23 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create branch 'start'. --- helm/DEVEL/mathml_editor/.log | 21 + helm/DEVEL/mathml_editor/AUTHORS | 1 + helm/DEVEL/mathml_editor/BROWSE | 503 ++++++++++ helm/DEVEL/mathml_editor/BUGS-GDOME2 | 15 + helm/DEVEL/mathml_editor/ChangeLog | 0 helm/DEVEL/mathml_editor/LICENSE | 22 + helm/DEVEL/mathml_editor/MODES | 25 + helm/DEVEL/mathml_editor/Makefile.am | 21 + helm/DEVEL/mathml_editor/Makefile.in | 424 ++++++++ helm/DEVEL/mathml_editor/NEWS | 0 helm/DEVEL/mathml_editor/PATTERNS | 196 ++++ helm/DEVEL/mathml_editor/README | 0 helm/DEVEL/mathml_editor/TML.dtd | 58 ++ helm/DEVEL/mathml_editor/configure.ac | 181 ++++ helm/DEVEL/mathml_editor/dictionary.dtd | 20 + helm/DEVEL/mathml_editor/dictionary.xml | 350 +++++++ helm/DEVEL/mathml_editor/editex-config.in | 0 helm/DEVEL/mathml_editor/examples/abs.tex | 1 + helm/DEVEL/mathml_editor/examples/big.tex | 1 + helm/DEVEL/mathml_editor/src/APushLexer.hh | 21 + helm/DEVEL/mathml_editor/src/APushParser.hh | 14 + helm/DEVEL/mathml_editor/src/BROWSE | 503 ++++++++++ helm/DEVEL/mathml_editor/src/Makefile.am | 27 + helm/DEVEL/mathml_editor/src/Makefile.in | 408 ++++++++ helm/DEVEL/mathml_editor/src/Ptr.hh | 53 + helm/DEVEL/mathml_editor/src/TCharStream.hh | 20 + .../mathml_editor/src/TCharStreamString.hh | 22 + helm/DEVEL/mathml_editor/src/TDictionary.cc | 168 ++++ helm/DEVEL/mathml_editor/src/TDictionary.hh | 78 ++ helm/DEVEL/mathml_editor/src/TDocument.cc | 155 +++ helm/DEVEL/mathml_editor/src/TDocument.hh | 40 + helm/DEVEL/mathml_editor/src/TLexerPull.cc | 35 + helm/DEVEL/mathml_editor/src/TLexerPush.cc | 82 ++ helm/DEVEL/mathml_editor/src/TLexerPush.hh | 31 + helm/DEVEL/mathml_editor/src/TListener.hh | 11 + helm/DEVEL/mathml_editor/src/TNode.cc | 195 ++++ helm/DEVEL/mathml_editor/src/TNode.hh | 80 ++ helm/DEVEL/mathml_editor/src/TObject.hh | 16 + helm/DEVEL/mathml_editor/src/TPushLexer.cc | 117 +++ helm/DEVEL/mathml_editor/src/TPushLexer.hh | 35 + helm/DEVEL/mathml_editor/src/TPushParser.cc | 668 ++++++++++++ helm/DEVEL/mathml_editor/src/TPushParser.hh | 70 ++ helm/DEVEL/mathml_editor/src/TToken.hh | 38 + helm/DEVEL/mathml_editor/src/TTokenizer.cc | 31 + helm/DEVEL/mathml_editor/src/TTokenizer.hh | 26 + helm/DEVEL/mathml_editor/src/dom.hh | 27 + helm/DEVEL/mathml_editor/src/domnav.cc | 115 +++ helm/DEVEL/mathml_editor/src/globals.hh | 8 + helm/DEVEL/mathml_editor/src/special.cc | 62 ++ helm/DEVEL/mathml_editor/src/texlexer.cc | 26 + helm/DEVEL/mathml_editor/src/tokenizer.hh | 10 + helm/DEVEL/mathml_editor/test/Makefile.am | 21 + helm/DEVEL/mathml_editor/test/Makefile.in | 387 +++++++ helm/DEVEL/mathml_editor/test/aux.cc | 227 +++++ helm/DEVEL/mathml_editor/test/editor.cc | 214 ++++ helm/DEVEL/mathml_editor/test/guiGTK.c | 686 +++++++++++++ helm/DEVEL/mathml_editor/test/guiGTK.h | 57 ++ helm/DEVEL/mathml_editor/test/main.cc | 158 +++ helm/DEVEL/mathml_editor/xsl/d-xsl.xsl | 131 +++ helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl | 949 ++++++++++++++++++ helm/DEVEL/mathml_editor/xsl/tml-tex.xsl | 109 ++ helm/uwobo/.cvsignore | 5 + helm/uwobo/.cvswrappers | 1 + helm/uwobo/ant/ant.jar | Bin 0 -> 449624 bytes helm/uwobo/ant/jaxp.jar | Bin 0 -> 5618 bytes helm/uwobo/ant/parser.jar | Bin 0 -> 136130 bytes helm/uwobo/antRun | 8 + helm/uwobo/antRun.bat | 17 + helm/uwobo/build.xml | 176 ++++ .../uwobo/src/it/unibo/cs/helm/uwobo/Key.java | 9 + .../src/it/unibo/cs/helm/uwobo/Server.java | 301 ++++++ .../src/it/unibo/cs/helm/uwobo/Servlet.java | 247 +++++ .../src/it/unibo/cs/helm/uwobo/properties.txt | 4 + helm/uwobo/web.xml | 22 + 74 files changed, 8760 insertions(+) create mode 100644 helm/DEVEL/mathml_editor/.log create mode 100644 helm/DEVEL/mathml_editor/AUTHORS create mode 100644 helm/DEVEL/mathml_editor/BROWSE create mode 100644 helm/DEVEL/mathml_editor/BUGS-GDOME2 create mode 100644 helm/DEVEL/mathml_editor/ChangeLog create mode 100644 helm/DEVEL/mathml_editor/LICENSE create mode 100644 helm/DEVEL/mathml_editor/MODES create mode 100644 helm/DEVEL/mathml_editor/Makefile.am create mode 100644 helm/DEVEL/mathml_editor/Makefile.in create mode 100644 helm/DEVEL/mathml_editor/NEWS create mode 100644 helm/DEVEL/mathml_editor/PATTERNS create mode 100644 helm/DEVEL/mathml_editor/README create mode 100644 helm/DEVEL/mathml_editor/TML.dtd create mode 100644 helm/DEVEL/mathml_editor/configure.ac create mode 100644 helm/DEVEL/mathml_editor/dictionary.dtd create mode 100644 helm/DEVEL/mathml_editor/dictionary.xml create mode 100644 helm/DEVEL/mathml_editor/editex-config.in create mode 100644 helm/DEVEL/mathml_editor/examples/abs.tex create mode 100644 helm/DEVEL/mathml_editor/examples/big.tex create mode 100644 helm/DEVEL/mathml_editor/src/APushLexer.hh create mode 100644 helm/DEVEL/mathml_editor/src/APushParser.hh create mode 100644 helm/DEVEL/mathml_editor/src/BROWSE create mode 100644 helm/DEVEL/mathml_editor/src/Makefile.am create mode 100644 helm/DEVEL/mathml_editor/src/Makefile.in create mode 100644 helm/DEVEL/mathml_editor/src/Ptr.hh create mode 100644 helm/DEVEL/mathml_editor/src/TCharStream.hh create mode 100644 helm/DEVEL/mathml_editor/src/TCharStreamString.hh create mode 100644 helm/DEVEL/mathml_editor/src/TDictionary.cc create mode 100644 helm/DEVEL/mathml_editor/src/TDictionary.hh create mode 100644 helm/DEVEL/mathml_editor/src/TDocument.cc create mode 100644 helm/DEVEL/mathml_editor/src/TDocument.hh create mode 100644 helm/DEVEL/mathml_editor/src/TLexerPull.cc create mode 100644 helm/DEVEL/mathml_editor/src/TLexerPush.cc create mode 100644 helm/DEVEL/mathml_editor/src/TLexerPush.hh create mode 100644 helm/DEVEL/mathml_editor/src/TListener.hh create mode 100644 helm/DEVEL/mathml_editor/src/TNode.cc create mode 100644 helm/DEVEL/mathml_editor/src/TNode.hh create mode 100644 helm/DEVEL/mathml_editor/src/TObject.hh create mode 100644 helm/DEVEL/mathml_editor/src/TPushLexer.cc create mode 100644 helm/DEVEL/mathml_editor/src/TPushLexer.hh create mode 100644 helm/DEVEL/mathml_editor/src/TPushParser.cc create mode 100644 helm/DEVEL/mathml_editor/src/TPushParser.hh create mode 100644 helm/DEVEL/mathml_editor/src/TToken.hh create mode 100644 helm/DEVEL/mathml_editor/src/TTokenizer.cc create mode 100644 helm/DEVEL/mathml_editor/src/TTokenizer.hh create mode 100644 helm/DEVEL/mathml_editor/src/dom.hh create mode 100644 helm/DEVEL/mathml_editor/src/domnav.cc create mode 100644 helm/DEVEL/mathml_editor/src/globals.hh create mode 100644 helm/DEVEL/mathml_editor/src/special.cc create mode 100644 helm/DEVEL/mathml_editor/src/texlexer.cc create mode 100644 helm/DEVEL/mathml_editor/src/tokenizer.hh create mode 100644 helm/DEVEL/mathml_editor/test/Makefile.am create mode 100644 helm/DEVEL/mathml_editor/test/Makefile.in create mode 100644 helm/DEVEL/mathml_editor/test/aux.cc create mode 100644 helm/DEVEL/mathml_editor/test/editor.cc create mode 100644 helm/DEVEL/mathml_editor/test/guiGTK.c create mode 100644 helm/DEVEL/mathml_editor/test/guiGTK.h create mode 100644 helm/DEVEL/mathml_editor/test/main.cc create mode 100644 helm/DEVEL/mathml_editor/xsl/d-xsl.xsl create mode 100644 helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl create mode 100644 helm/DEVEL/mathml_editor/xsl/tml-tex.xsl create mode 100644 helm/uwobo/.cvsignore create mode 100644 helm/uwobo/.cvswrappers create mode 100644 helm/uwobo/ant/ant.jar create mode 100644 helm/uwobo/ant/jaxp.jar create mode 100644 helm/uwobo/ant/parser.jar create mode 100755 helm/uwobo/antRun create mode 100644 helm/uwobo/antRun.bat create mode 100644 helm/uwobo/build.xml create mode 100644 helm/uwobo/src/it/unibo/cs/helm/uwobo/Key.java create mode 100644 helm/uwobo/src/it/unibo/cs/helm/uwobo/Server.java create mode 100644 helm/uwobo/src/it/unibo/cs/helm/uwobo/Servlet.java create mode 100644 helm/uwobo/src/it/unibo/cs/helm/uwobo/properties.txt create mode 100644 helm/uwobo/web.xml diff --git a/helm/DEVEL/mathml_editor/.log b/helm/DEVEL/mathml_editor/.log new file mode 100644 index 000000000..3971d5a78 --- /dev/null +++ b/helm/DEVEL/mathml_editor/.log @@ -0,0 +1,21 @@ +This is TeX, Version 3.14159 (Web2C 7.3.7) (format=tex 2002.8.9) 23 NOV 2002 18:34 +**$$\root 3 \of x+1$$ +(/usr/share/texmf/tex/latex/tools/.tex File ignored) +! Missing $ inserted. + + $ + + \mathchoice +\mathpalette #1#2->\mathchoice + {#1\displaystyle {#2}}{#1\textstyle {#2}}{#1\... +<*> $$\root 3 \of x + +1$$ +? + +* +! Emergency stop. +<*> $$\root 3 \of x+1$$ + +End of file on the terminal! + +No pages of output. diff --git a/helm/DEVEL/mathml_editor/AUTHORS b/helm/DEVEL/mathml_editor/AUTHORS new file mode 100644 index 000000000..2ba63d6cc --- /dev/null +++ b/helm/DEVEL/mathml_editor/AUTHORS @@ -0,0 +1 @@ +Luca Padovani diff --git a/helm/DEVEL/mathml_editor/BROWSE b/helm/DEVEL/mathml_editor/BROWSE new file mode 100644 index 000000000..c14c1d2f5 --- /dev/null +++ b/helm/DEVEL/mathml_editor/BROWSE @@ -0,0 +1,503 @@ +[ebrowse-hs "ebrowse 5.0" " -x" () ()][ebrowse-ts [ebrowse-cs "APushParser" () 0"src/APushParser.hh" "class APushParser +{" 75"src/APushParser.hh" ] +([ebrowse-ts [ebrowse-cs "TPushParser" () 0"src/TPushParser.hh" "class TPushParser :" 226"src/TPushParser.hh" ] +()([ebrowse-ms "buffer" () 0 () " std::list buffer;" 1306 2 () () 0] +[ebrowse-ms "cursor" () 0 () " TNode cursor;" 1363 2 () () 0] +[ebrowse-ms "doc" () 0 () " TDocument doc;" 1343 2 () () 0] +[ebrowse-ms "frames" () 0 () " std::stack frames;" 1278 2 () () 0] +[ebrowse-ms "nextId" () 0 () " unsigned nextId;" 1326 2 () () 0] +) +([ebrowse-ms "PRIME" () 4 () " std::string PRIME(void" 490 2 "src/TPushParser.cc" "TPushParser::PRIME()" 279] +[ebrowse-ms "TPushParser" () 0 () () 0 0 "src/TPushParser.cc" "TPushParser::TPushParser(const TDictionary& d) :" 58] +[ebrowse-ms "TPushParser" () 0 () " TPushParser(const class TDictionary&);" 275 0 () () 0] +[ebrowse-ms "advance" () 0 () " void advance(const" 1065 2 "src/TPushParser.cc" "TPushParser::advance(const" 13192] +[ebrowse-ms "do_active" () 0 () " void do_active(const" 916 2 "src/TPushParser.cc" "TPushParser::do_active(const" 5602] +[ebrowse-ms "do_align" () 0 () " void do_align(void" 624 2 "src/TPushParser.cc" "TPushParser::do_align()" 1530] +[ebrowse-ms "do_apostrophe" () 0 () " void do_apostrophe(void" 1042 2 "src/TPushParser.cc" "TPushParser::do_apostrophe()" 4611] +[ebrowse-ms "do_begin" () 0 () " void do_begin(void" 557 2 "src/TPushParser.cc" "TPushParser::do_begin()" 461] +[ebrowse-ms "do_comment" () 0 () " void do_comment(void" 954 2 "src/TPushParser.cc" "TPushParser::do_comment()" 5668] +[ebrowse-ms "do_control" () 0 () " void do_control(const" 980 2 "src/TPushParser.cc" "TPushParser::do_control(const" 6337] +[ebrowse-ms "do_cr" () 0 () " void do_cr(void" 1014 2 "src/TPushParser.cc" "TPushParser::do_cr()" 5708] +[ebrowse-ms "do_digit" () 0 () " void do_digit(const" 841 2 "src/TPushParser.cc" "TPushParser::do_digit(const" 4072] +[ebrowse-ms "do_end" () 0 () " void do_end(void" 578 2 "src/TPushParser.cc" "TPushParser::do_end()" 910] +[ebrowse-ms "do_eol" () 0 () " void do_eol(void" 645 2 "src/TPushParser.cc" "TPushParser::do_eol()" 2464] +[ebrowse-ms "do_letter" () 0 () " void do_letter(const" 804 2 "src/TPushParser.cc" "TPushParser::do_letter(const" 3902] +[ebrowse-ms "do_other" () 0 () " void do_other(const" 878 2 "src/TPushParser.cc" "TPushParser::do_other(const" 5303] +[ebrowse-ms "do_parameter" () 0 () " void do_parameter(const" 673 2 "src/TPushParser.cc" "TPushParser::do_parameter(const" 2546] +[ebrowse-ms "do_shift" () 0 () " void do_shift(void" 601 2 "src/TPushParser.cc" "TPushParser::do_shift()" 1487] +[ebrowse-ms "do_space" () 0 () " void do_space(const" 766 2 "src/TPushParser.cc" "TPushParser::do_space(const" 3794] +[ebrowse-ms "do_subscript" () 0 () " void do_subscript(void" 742 2 "src/TPushParser.cc" "TPushParser::do_subscript()" 2609] +[ebrowse-ms "do_superscript" () 0 () " void do_superscript(void" 715 2 "src/TPushParser.cc" "TPushParser::do_superscript()" 3204] +[ebrowse-ms "document" () 4 () " TDocument document(void" 432 0 () " TDocument document(void" 432] +[ebrowse-ms "isPrimes" () 4 () " bool isPrimes(const" 520 2 "src/TPushParser.cc" "TPushParser::isPrimes(const" 4445] +[ebrowse-ms "process" () 0 () " void process(const" 1096 2 "src/TPushParser.cc" "TPushParser::process(const" 8538] +[ebrowse-ms "push" () 1 () " virtual void push(const" 349 0 "src/TPushParser.cc" "TPushParser::push(const" 9379] +[ebrowse-ms "setCursor" () 1 () " virtual void setCursor(const" 390 0 "src/TPushParser.cc" "TPushParser::setCursor(const" 13865] +[ebrowse-ms "~TPushParser" () 1 () " virtual ~TPushParser()" 321 0 "src/TPushParser.cc" "TPushParser::~TPushParser()" 241] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TTokenizer" () 0"src/TTokenizer.hh" "class TTokenizer :" 173"src/TTokenizer.hh" ] +()([ebrowse-ms "tokens" () 0 () " std::list tokens;" 405 2 () () 0] +) +([ebrowse-ms "TTokenizer" () 0 () " TTokenizer(void) {" 221 0 () " TTokenizer(void) {" 221] +[ebrowse-ms "push" () 1 () " virtual void push(const" 316 2 "src/TTokenizer.cc" "TTokenizer::push(const" 471] +[ebrowse-ms "setCursor" () 1 () " virtual void setCursor(const" 357 2 () " virtual void setCursor(const" 357] +[ebrowse-ms "tokenize" () 0 () " std::vector tokenize(const" 265 0 "src/TTokenizer.cc" "TTokenizer::tokenize(const" 120] +) +() +() +() +() +()() +])() +([ebrowse-ms "APushParser" () 0 () " APushParser(void) {" 102 0 () " APushParser(void) {" 102] +[ebrowse-ms "push" () 9 () " virtual void push(const" 164 0 () () 0] +[ebrowse-ms "setCursor" () 9 () " virtual void setCursor(const" 209 0 () () 0] +[ebrowse-ms "~APushParser" () 1 () " virtual ~APushParser()" 133 0 () " virtual ~APushParser()" 133] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "EmptyBuffer" "TLexerPush" 0"src/TLexerPush.hh" " class EmptyBuffer {" 271() ] +()() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "unary_function" "std" 32() () 0() ] +([ebrowse-ts [ebrowse-cs "StringHash" "TDictionary" 0"src/TDictionary.hh" " struct StringHash :" 1160"src/TDictionary.hh" ] +()() +([ebrowse-ms "operator ()" () 4 () " { size_t operator()(const" 1238 0 () " { size_t operator()(const" 1238] +) +() +() +() +() +()() +])() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TObject" () 0"src/TObject.hh" "class TObject +{" 63"src/TObject.hh" ] +()() +([ebrowse-ms "TObject" () 0 () " TObject(void) {" 89 1 () " TObject(void) {" 89] +[ebrowse-ms "ref" () 4 () " void ref(coid" 162 0 () " void ref(coid" 162] +[ebrowse-ms "unref" () 4 () " void unref(void" 206 0 () " void unref(void" 206] +[ebrowse-ms "~TObject" () 1 () " virtual ~TObject()" 132 1 () " virtual ~TObject()" 132] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "std" () 0() () 0() ] +()() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TLexerPush" () 0"src/TLexerPush.hh" "class TLexerPush +{" 59"src/TLexerPush.hh" ] +()([ebrowse-ms "state" () 0 () " State state;" 388 2 () () 0] +[ebrowse-ms "tokens" () 0 () " std::deque tokens;" 417 2 () () 0] +) +([ebrowse-ms "TLexerPush" () 0 () " TLexerPush(void);" 85 0 "src/TLexerPush.cc" "TLexerPush::TLexerPush() +{" 51] +[ebrowse-ms "ambiguous" () 4 () " bool ambiguous(void" 182 0 "src/TLexerPush.cc" "TLexerPush::ambiguous()" 576] +[ebrowse-ms "empty" () 4 () " bool empty(void" 240 0 "src/TLexerPush.cc" "TLexerPush::empty()" 447] +[ebrowse-ms "front" () 4 () " TToken front(void" 150 0 "src/TLexerPush.cc" "TLexerPush::front()" 338] +[ebrowse-ms "pending" () 4 () " bool pending(void" 212 0 "src/TLexerPush.cc" "TLexerPush::pending()" 510] +[ebrowse-ms "pop" () 0 () " TToken pop(void" 128 0 "src/TLexerPush.cc" "TLexerPush::pop()" 99] +[ebrowse-ms "push" () 0 () " void push(TChar" 108 0 "src/TLexerPush.cc" "TLexerPush::push(TChar" 664] +) +() +() +() +([ebrowse-ms "State" () 0 () " {" 303 2 () " {" 303] +) +()() +][ebrowse-ts [ebrowse-cs "TLexerPull" () 0() () 0"src/TLexerPull.cc" ] +()() +([ebrowse-ms "pop" () 0 () () 0 0 () "TLexerPull::pop(TCharStream" 94] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TDictionary" () 0"src/TDictionary.hh" "class TDictionary +{" 154"src/TDictionary.hh" ] +()([ebrowse-ms "entries" () 0 () " Dictionary entries;" 1560 2 () () 0] +) +([ebrowse-ms "TDictionary" () 0 () " TDictionary(void) {" 181 0 () " TDictionary(void) {" 181] +[ebrowse-ms "find" () 4 () " const Entry& find(const" 1107 0 "src/TDictionary.cc" "TDictionary::find(const" 3723] +[ebrowse-ms "load" () 0 () " void load(const" 1069 0 "src/TDictionary.cc" "TDictionary::load(const" 162] +[ebrowse-ms "~TDictionary" () 0 () " ~TDictionary()" 204 0 () " ~TDictionary()" 204] +) +() +() +() +([ebrowse-ms "Dictionary" () 0 () "ap< std::string, Entry, StringHash > Dictionary;" 1538 2 () () 0] +[ebrowse-ms "EntryClass" () 0 () " {" 301 0 () " {" 301] +[ebrowse-ms "Form" () 0 () " {" 228 0 () " {" 228] +) +()() +][ebrowse-ts [ebrowse-cs "DOM" () 0() () 0() ] +()() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "APushLexer" () 0"src/APushLexer.hh" "class APushLexer +{" 72"src/APushLexer.hh" ] +([ebrowse-ts [ebrowse-cs "TPushLexer" () 0"src/TPushLexer.hh" "class TPushLexer :" 117"src/TPushLexer.hh" ] +()([ebrowse-ms "buffer" () 0 () " std::string buffer;" 483 2 () () 0] +[ebrowse-ms "state" () 0 () " State state;" 461 2 () () 0] +) +([ebrowse-ms "TPushLexer" () 0 () () 0 0 "src/TPushLexer.cc" "TPushLexer::TPushLexer(APushParser& p) :" 108] +[ebrowse-ms "TPushLexer" () 0 () " TPushLexer(class APushParser&);" 164 0 () () 0] +[ebrowse-ms "error" () 5 () " virtual bool error(void" 290 0 "src/TPushLexer.cc" "TPushLexer::error()" 2463] +[ebrowse-ms "push" () 1 () " virtual void push(char" 234 0 "src/TPushLexer.cc" "TPushLexer::push(char" 1180] +[ebrowse-ms "reset" () 1 () " virtual void reset(void" 262 0 "src/TPushLexer.cc" "TPushLexer::reset()" 176] +[ebrowse-ms "transaction" () 0 () " void transaction(char" 436 2 "src/TPushLexer.cc" "TPushLexer::transaction(char" 251] +[ebrowse-ms "~TPushLexer" () 1 () " virtual ~TPushLexer()" 203 0 () " virtual ~TPushLexer()" 203] +) +() +() +() +([ebrowse-ms "State" () 0 () " {" 327 2 () " {" 327] +) +()() +])() +([ebrowse-ms "APushLexer" () 0 () " APushLexer(class APushParser& p) :" 99 0 () " APushLexer(class APushParser& p) :" 99] +[ebrowse-ms "error" () 13 () " virtual bool error(void" 251 0 () () 0] +[ebrowse-ms "push" () 9 () " virtual void push(char" 187 0 () () 0] +[ebrowse-ms "reset" () 9 () " virtual void reset(void" 219 0 () () 0] +[ebrowse-ms "~APushLexer" () 1 () " virtual ~APushLexer()" 156 0 () " virtual ~APushLexer()" 156] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "Ptr" () 32"src/Ptr.hh" "class Ptr +{" 1067"src/Ptr.hh" ] +()([ebrowse-ms "ptr" () 0 () " P* ptr;" 1797 2 () () 0] +) +([ebrowse-ms "P" () 4 () " operator P*()" 1487 0 () " operator P*()" 1487] +[ebrowse-ms "Ptr" () 0 () " Ptr(const Ptr& p) :" 1142 0 () " Ptr(const Ptr& p) :" 1142] +[ebrowse-ms "Ptr" () 0 () " Ptr(P* p = 0) :" 1083 0 () " Ptr(P* p = 0) :" 1083] +[ebrowse-ms "Q" () 36 () " template operator Ptr()" 1747 0 () " template operator Ptr()" 1747] +[ebrowse-ms "operator ->" () 4 () " P* operator->()" 1253 0 () " P* operator->()" 1253] +[ebrowse-ms "operator =" () 0 () " Ptr& operator=(const" 1316 0 () " Ptr& operator=(const" 1316] +[ebrowse-ms "~Ptr" () 0 () " ~Ptr()" 1202 0 () " ~Ptr()" 1202] +) +() +() +([ebrowse-ms "is_a" () 32 () " template friend bool is_a(const" 1659 0 () " template friend bool is_a(const" 1659] +[ebrowse-ms "smart_cast" () 32 () "emplate friend Ptr smart_cast(const" 1561 0 () "emplate friend Ptr smart_cast(const" 1561] +) +() +()() +][ebrowse-ts [ebrowse-cs "TToken" () 0"src/TToken.hh" "struct TToken +{" 80"src/TToken.hh" ] +()([ebrowse-ms "category" () 0 () " TCat category;" 627 0 () () 0] +[ebrowse-ms "value" () 0 () " std::string value;" 648 0 () () 0] +) +([ebrowse-ms "TToken" () 0 () " TToken(TCat c, const std::string& v) :" 438 0 () " TToken(TCat c, const std::string& v) :" 438] +[ebrowse-ms "TToken" () 0 () " TToken(TCat c, char ch) :" 366 0 () " TToken(TCat c, char ch) :" 366] +[ebrowse-ms "TToken" () 0 () " TToken(TCat c) :" 330 0 () " TToken(TCat c) :" 330] +[ebrowse-ms "operator ==" () 4 () " bool operator==(const" 517 0 () " bool operator==(const" 517] +) +() +() +() +([ebrowse-ms "TCat" () 0 () " {" 98 0 () " {" 98] +) +()() +][ebrowse-ts [ebrowse-cs "binary_function" "std" 32() () 0() ] +([ebrowse-ts [ebrowse-cs "StringEq" "TDictionary" 0"src/TDictionary.hh" " struct StringEq :" 1327() ] +()() +([ebrowse-ms "operator ()" () 4 () " { bool operator()(const" 1415 0 () () 0] +) +() +() +() +() +()() +])() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TNode" () 0"src/TNode.hh" "class TNode +{" 124"src/TNode.hh" ] +()([ebrowse-ms "node" () 0 () " DOM::Element node;" 2444 2 () () 0] +) +([ebrowse-ms "TNode" () 0 () " TNode(const TNode& n) :" 270 0 () " TNode(const TNode& n) :" 270] +[ebrowse-ms "TNode" () 0 () " TNode(void) :" 145 0 () " TNode(void) :" 145] +[ebrowse-ms "append" () 4 () " void append(const" 1667 0 "src/TNode.cc" "TNode::append(const" 2450] +[ebrowse-ms "append" () 4 () " void append(const" 1631 0 "src/TNode.cc" "TNode::append(const" 2348] +[ebrowse-ms "child" () 4 () " TNode child(unsigned" 592 0 "src/TNode.cc" "TNode::child(unsigned" 2874] +[ebrowse-ms "core" () 4 () " TNode core(void" 425 0 "src/TNode.cc" "TNode::core()" 1413] +[ebrowse-ms "empty" () 4 () " bool empty(void" 648 0 () " bool empty(void" 648] +[ebrowse-ms "first" () 4 () " TNode first(void" 480 0 "src/TNode.cc" "TNode::first()" 1075] +[ebrowse-ms "firstL" () 4 () " TNode firstL(void" 508 0 "src/TNode.cc" "TNode::firstL()" 1259] +[ebrowse-ms "get" () 4 () " std::string get(const" 1758 0 "src/TNode.cc" "TNode::get(const" 3007] +[ebrowse-ms "hasId" () 4 () " bool hasId(void" 1994 0 () " bool hasId(void" 1994] +[ebrowse-ms "insert" () 4 () " void insert(const" 1595 0 "src/TNode.cc" "TNode::insert(const" 2193] +[ebrowse-ms "is" () 4 () " bool is(const" 2055 0 () " bool is(const" 2055] +[ebrowse-ms "isC" () 4 () " bool isC(const" 2303 0 () " bool isC(const" 2303] +[ebrowse-ms "isC" () 4 () " bool isC(void" 2258 0 () " bool isC(void" 2258] +[ebrowse-ms "isG" () 4 () " bool isG(void" 2119 0 () " bool isG(void" 2119] +[ebrowse-ms "isSb" () 4 () " bool isSb(void" 2165 0 () " bool isSb(void" 2165] +[ebrowse-ms "isSp" () 4 () " bool isSp(void" 2212 0 () " bool isSp(void" 2212] +[ebrowse-ms "last" () 4 () " TNode last(void" 534 0 "src/TNode.cc" "TNode::last()" 736] +[ebrowse-ms "lastL" () 4 () " TNode lastL(void" 561 0 "src/TNode.cc" "TNode::lastL()" 922] +[ebrowse-ms "name" () 4 () " std::string name(void" 1863 0 () " std::string name(void" 1863] +[ebrowse-ms "nameC" () 4 () " std::string nameC(void" 1929 0 () " std::string nameC(void" 1929] +[ebrowse-ms "next" () 4 () " TNode next(void" 319 0 "src/TNode.cc" "TNode::next()" 63] +[ebrowse-ms "nextL" () 4 () " TNode nextL(void" 346 0 "src/TNode.cc" "TNode::nextL()" 247] +[ebrowse-ms "operator !=" () 4 () " bool operator!=(const" 1295 0 () " bool operator!=(const" 1295] +[ebrowse-ms "operator ==" () 4 () " bool operator==(const" 1227 0 () " bool operator==(const" 1227] +[ebrowse-ms "operator []" () 4 () " ProxyAttr operator[](const" 1422 0 () " ProxyAttr operator[](const" 1422] +[ebrowse-ms "operator []" () 4 () " TNode operator[](int" 1362 0 () " TNode operator[](int" 1362] +[ebrowse-ms "parent" () 4 () " TNode parent(void" 453 0 "src/TNode.cc" "TNode::parent()" 1587] +[ebrowse-ms "prepend" () 4 () " void prepend(const" 1718 0 "src/TNode.cc" "TNode::prepend(const" 2683] +[ebrowse-ms "prev" () 4 () " TNode prev(void" 372 0 "src/TNode.cc" "TNode::prev()" 396] +[ebrowse-ms "prevL" () 4 () " TNode prevL(void" 399 0 "src/TNode.cc" "TNode::prevL()" 588] +[ebrowse-ms "remove" () 4 () " void remove(void" 1529 0 "src/TNode.cc" "TNode::remove()" 1913] +[ebrowse-ms "replace" () 4 () " void replace(const" 1559 0 "src/TNode.cc" "TNode::replace(const" 2038] +[ebrowse-ms "set" () 4 () " void set(const" 1797 0 "src/TNode.cc" "TNode::set(const" 3109] +[ebrowse-ms "size" () 4 () " unsigned size(void" 621 0 "src/TNode.cc" "TNode::size()" 1749] +[ebrowse-ms "value" () 4 () " std::string value(void" 707 0 () " std::string value(void" 707] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "Entry" "TDictionary" 0"src/TDictionary.hh" " struct Entry + {" 405"src/TDictionary.hh" ] +()([ebrowse-ms "cls" () 0 () " EntryClass cls;" 806 0 () () 0] +[ebrowse-ms "delimiter" () 0 () " unsigned delimiter : 1;" 909 0 () () 0] +[ebrowse-ms "embellishment" () 0 () " unsigned embellishment : 1;" 966 0 () () 0] +[ebrowse-ms "infix" () 0 () " unsigned infix : 8;" 830 0 () () 0] +[ebrowse-ms "leftOpen" () 0 () " unsigned leftOpen : 1;" 993 0 () () 0] +[ebrowse-ms "limits" () 0 () " unsigned limits : 1;" 934 0 () () 0] +[ebrowse-ms "pattern" () 0 () " std::vector pattern;" 597 0 () () 0] +[ebrowse-ms "postfix" () 0 () " unsigned postfix : 8;" 881 0 () () 0] +[ebrowse-ms "prefix" () 0 () " unsigned prefix : 8;" 855 0 () () 0] +[ebrowse-ms "rightOpen" () 0 () " unsigned rightOpen : 1;" 1021 0 () () 0] +[ebrowse-ms "table" () 0 () " unsigned table : 1;" 1045 0 () () 0] +[ebrowse-ms "value" () 0 () " std::string value;" 620 0 () () 0] +) +([ebrowse-ms "Entry" () 0 () " {" 420 0 () " {" 420] +[ebrowse-ms "defined" () 4 () " bool defined(void" 643 0 () " bool defined(void" 643] +[ebrowse-ms "hasArguments" () 4 () " bool hasArguments(void" 707 0 () " bool hasArguments(void" 707] +[ebrowse-ms "paramDelimited" () 4 () " bool paramDelimited(unsigned" 777 0 "src/TDictionary.cc" "TDictionary::Entry::paramDelimited(unsigned" 4012] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "Frame" "TPushParser" 0"src/TPushParser.hh" " struct Frame + {" 1126"src/TPushParser.hh" ] +()([ebrowse-ms "entry" () 0 () " const TDictionary::Entry& entry;" 1226 0 () () 0] +[ebrowse-ms "pos" () 0 () " unsigned pos;" 1244 0 () () 0] +) +([ebrowse-ms "Frame" () 0 () " Frame(const TDictionary::Entry& e) :" 1142 0 () " Frame(const TDictionary::Entry& e) :" 1142] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TCharStream" () 0"src/TCharStream.hh" "class TCharStream +{" 94"src/TCharStream.hh" ] +([ebrowse-ts [ebrowse-cs "TCharStreamString" () 0"src/TCharStreamString.hh" "class TCharStreamString :" 120"src/TCharStreamString.hh" ] +()([ebrowse-ms "buffer" () 0 () " TString buffer;" 555 2 () () 0] +[ebrowse-ms "idx" () 0 () " unsigned long idx;" 536 2 () () 0] +) +([ebrowse-ms "TCharStreamString" () 0 () " TCharStreamString(const TString& s) :" 175 0 () " TCharStreamString(const TString& s) :" 175] +[ebrowse-ms "look" () 5 () " virtual TChar look(void" 343 0 () " virtual TChar look(void" 343] +[ebrowse-ms "more" () 5 () " virtual bool more(void" 275 0 () " virtual bool more(void" 275] +[ebrowse-ms "next" () 1 () " virtual TChar next(void" 439 0 () " virtual TChar next(void" 439] +[ebrowse-ms "~TCharStreamString" () 1 () " virtual ~TCharStreamString()" 243 0 () " virtual ~TCharStreamString()" 243] +) +() +() +() +() +()() +])() +([ebrowse-ms "TCharStream" () 0 () " TCharStream(void) {" 121 0 () " TCharStream(void) {" 121] +[ebrowse-ms "look" () 13 () " virtual TChar look(void" 222 0 () () 0] +[ebrowse-ms "more" () 13 () " virtual bool more(void" 184 0 () () 0] +[ebrowse-ms "next" () 9 () " virtual TChar next(void" 260 0 () () 0] +[ebrowse-ms "~TCharStream" () 1 () " virtual ~TCharStream()" 152 0 () " virtual ~TCharStream()" 152] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "EmptyStream" "TCharStream" 0"src/TCharStream.hh" " class EmptyStream {" 289() ] +()() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "*Globals*" () 0() () 0"src/APushLexer.hh" ] +()() +([ebrowse-ms "dispatch" () 0 "src/special.cc" "dispatch(const" 1012 0 "src/special.cc" "dispatch(const" 1012] +[ebrowse-ms "do_apostrophe" () 0 "src/special.cc" "do_apostrophe(const" 669 0 "src/special.cc" "do_apostrophe(const" 669] +[ebrowse-ms "do_bgroup" () 0 "src/special.cc" "do_bgroup(const" 149 0 "src/special.cc" "do_bgroup(const" 149] +[ebrowse-ms "do_control" () 0 "src/special.cc" "do_control(const" 711 0 "src/special.cc" "do_control(const" 711] +[ebrowse-ms "do_other" () 0 "src/special.cc" "do_other(const" 776 0 "src/special.cc" "do_other(const" 776] +[ebrowse-ms "finishG" () 0 "src/special.cc" "void finishG(const" 118 0 () () 0] +[ebrowse-ms "getCore" () 0 "src/domnav.cc" "getCore(const" 629 0 "src/domnav.cc" "getCore(const" 629] +[ebrowse-ms "getRightmostChild" () 0 "src/domnav.cc" "getRightmostChild(const" 37 0 "src/domnav.cc" "getRightmostChild(const" 37] +[ebrowse-ms "isDelimiter" () 0 "src/domnav.cc" "isDelimiter(const" 1716 0 "src/domnav.cc" "isDelimiter(const" 1716] +[ebrowse-ms "isFunction" () 0 "src/domnav.cc" "isFunction(const" 1879 0 "src/domnav.cc" "isFunction(const" 1879] +[ebrowse-ms "isGroup" () 0 "src/domnav.cc" "isGroup(const" 1214 0 "src/domnav.cc" "isGroup(const" 1214] +[ebrowse-ms "isInferred" () 0 "src/domnav.cc" "isInferred(const" 985 0 "src/domnav.cc" "isInferred(const" 985] +[ebrowse-ms "isMacro" () 0 "src/domnav.cc" "isMacro(const" 1085 0 "src/domnav.cc" "isMacro(const" 1085] +[ebrowse-ms "isOperator" () 0 "src/domnav.cc" "isOperator(const" 1553 0 "src/domnav.cc" "isOperator(const" 1553] +[ebrowse-ms "isPrimes" () 0 "src/domnav.cc" "isPrimes(const" 1451 0 "src/domnav.cc" "isPrimes(const" 1451] +[ebrowse-ms "isSb" () 0 "src/domnav.cc" "isSb(const" 1291 0 "src/domnav.cc" "isSb(const" 1291] +[ebrowse-ms "isSp" () 0 "src/domnav.cc" "isSp(const" 1369 0 "src/domnav.cc" "isSp(const" 1369] +[ebrowse-ms "isUnicodeAlpha" () 2 "src/dom.hh" "inline bool isUnicodeAlpha(TChar" 303 0 "src/dom.hh" "inline bool isUnicodeAlpha(TChar" 303] +[ebrowse-ms "isUnicodeDigit" () 2 "src/dom.hh" "inline bool isUnicodeDigit(TChar" 408 0 "src/dom.hh" "inline bool isUnicodeDigit(TChar" 408] +[ebrowse-ms "isUnicodeSpace" () 2 "src/dom.hh" "inline bool isUnicodeSpace(TChar" 198 0 "src/dom.hh" "inline bool isUnicodeSpace(TChar" 198] +[ebrowse-ms "main" () 0 "src/texlexer.cc" "main()" 51 0 "src/texlexer.cc" "main()" 51] +[ebrowse-ms "prevLinearSibling" () 0 "src/domnav.cc" "prevLinearSibling(const" 324 0 "src/domnav.cc" "prevLinearSibling(const" 324] +[ebrowse-ms "replace" () 0 "src/domnav.cc" "replace(const" 834 0 "src/domnav.cc" "replace(const" 834] +[ebrowse-ms "tokenize" () 0 "src/tokenizer.hh" "std::vector tokenize(const" 123 0 () () 0] +) +([ebrowse-ms "undefinedEntry" () 0 () () 0 0 "src/TDictionary.cc" "static TDictionary::Entry undefinedEntry;" 132] +) +() +([ebrowse-ms "Ptr_hh" () 512 () () 0 0 "src/Ptr.hh" "#define Ptr_hh +" 1036] +[ebrowse-ms "TML_NS_URI" () 512 () () 0 0 "src/globals.hh" "#define TML_NS_URI " 67] +[ebrowse-ms "XMLNS_NS_URI" () 512 () () 0 0 "src/globals.hh" "#define XMLNS_NS_URI " 123] +[ebrowse-ms "__APushLexer_hh__" () 512 () () 0 0 () "#define __APushLexer_hh__ +" 53] +[ebrowse-ms "__APushParser_hh__" () 512 () () 0 0 "src/APushParser.hh" "#define __APushParser_hh__ +" 55] +[ebrowse-ms "__TCharStreamString_hh__" () 512 () () 0 0 "src/TCharStreamString.hh" "#define __TCharStreamString_hh__ +" 67] +[ebrowse-ms "__TCharStream_hh__" () 512 () () 0 0 "src/TCharStream.hh" "#define __TCharStream_hh__ +" 55] +[ebrowse-ms "__TDictionary_hh__" () 512 () () 0 0 "src/TDictionary.hh" "#define __TDictionary_hh__ +" 55] +[ebrowse-ms "__TDocument_hh__" () 512 () () 0 0 "src/TDocument.hh" "#define __TDocument_hh__ +" 51] +[ebrowse-ms "__TNode_hh__" () 512 () () 0 0 "src/TNode.hh" "#define __TNode_hh__ +" 43] +[ebrowse-ms "__TObject_hh__" () 512 () () 0 0 "src/TObject.hh" "#define __TObject_hh__ +" 47] +[ebrowse-ms "__TPushLexer_hh__" () 512 () () 0 0 "src/TPushLexer.hh" "#define __TPushLexer_hh__ +" 53] +[ebrowse-ms "__TPushParser_hh__" () 512 () () 0 0 "src/TPushParser.hh" "#define __TPushParser_hh__ +" 55] +[ebrowse-ms "__TToken_hh__" () 512 () () 0 0 "src/TToken.hh" "#define __TToken_hh__ +" 45] +[ebrowse-ms "__TTokenizer_hh__" () 512 () () 0 0 "src/TTokenizer.hh" "#define __TTokenizer_hh__ +" 53] +[ebrowse-ms "__dom_hh__" () 512 () () 0 0 "src/dom.hh" "#define __dom_hh__ +" 39] +[ebrowse-ms "__globals_hh__" () 512 () () 0 0 "src/globals.hh" "#define __globals_hh__ +" 47] +[ebrowse-ms "__tokenzier_hh__" () 512 () () 0 0 "src/tokenizer.hh" "#define __tokenzier_hh__ +" 51] +) +([ebrowse-ms "TChar" () 0 () () 0 0 "src/dom.hh" "typedef DOM::Char32 TChar;" 131] +[ebrowse-ms "TString" () 0 () () 0 0 "src/dom.hh" "typedef DOM::UCS4String TString;" 164] +) +()() +][ebrowse-ts [ebrowse-cs "ProxyAttr" "TNode" 0"src/TNode.hh" " class ProxyAttr + {" 765"src/TNode.hh" ] +()([ebrowse-ms "name" () 0 () " std::string name;" 1155 2 () () 0] +[ebrowse-ms "node" () 0 () " DOM::Element node;" 1132 2 () () 0] +) +([ebrowse-ms "ProxyAttr" () 0 () "r(const DOM::Element& n, const std::string& s) :" 795 0 () "r(const DOM::Element& n, const std::string& s) :" 795] +[ebrowse-ms "operator =" () 0 () " ProxyAttr& operator=(const" 959 0 () " ProxyAttr& operator=(const" 959] +[ebrowse-ms "operator ==" () 0 () " bool operator==(const" 1040 0 () " bool operator==(const" 1040] +[ebrowse-ms "string" () 4 () " operator std::string()" 885 0 () " operator std::string()" 885] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "EventListener" "DOM" 0() () 0() ] +([ebrowse-ts [ebrowse-cs "DOMSubtreeModifiedListener" "TDocument" 0"src/TDocument.hh" " class DOMSubtreeModifiedListener :" 1015"src/TDocument.hh" ] +()([ebrowse-ms "doc" () 0 () " TDocument doc;" 1247 2 () () 0] +) +([ebrowse-ms "DOMSubtreeModifiedListener" () 0 () "DOMSubtreeModifiedListener(const TDocument& d) :" 1092 0 () "DOMSubtreeModifiedListener(const TDocument& d) :" 1092] +[ebrowse-ms "handleEvent" () 1 () " virtual void handleEvent(const" 1202 0 () () 0] +[ebrowse-ms "~DOMSubtreeModifiedListener" () 1 () " virtual ~DOMSubtreeModifiedListener()" 1162 0 () " virtual ~DOMSubtreeModifiedListener()" 1162] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TDocument" () 0"src/TDocument.hh" "class TDocument :" 108"src/TDocument.hh" ] +()([ebrowse-ms "dirty" () 0 () " DOM::Element dirty;" 971 2 () () 0] +[ebrowse-ms "doc" () 0 () " DOM::Document doc;" 949 2 () () 0] +) +([ebrowse-ms "TDocument" () 0 () " TDocument(void);" 162 0 "src/TDocument.cc" "TDocument::TDocument() +{" 108] +[ebrowse-ms "create" () 4 () " TNode create(const" 202 0 "src/TDocument.cc" "TDocument::create(const" 789] +[ebrowse-ms "createC" () 4 () " TNode createC(const" 327 0 "src/TDocument.cc" "TDocument::createC(const" 1062] +[ebrowse-ms "createG" () 4 () " TNode createG(unsigned" 262 0 () " TNode createG(unsigned" 262] +[ebrowse-ms "createI" () 4 () " TNode createI(const" 461 0 () " TNode createI(const" 461] +[ebrowse-ms "createN" () 4 () " TNode createN(const" 561 0 () " TNode createN(const" 561] +[ebrowse-ms "createO" () 4 () " TNode createO(const" 661 0 () " TNode createO(const" 661] +[ebrowse-ms "createT" () 4 () " TNode createT(const" 384 0 "src/TDocument.cc" "TDocument::createT(const" 1197] +[ebrowse-ms "dirtyIdNode" () 4 () " TNode dirtyIdNode(void" 872 0 "src/TDocument.cc" "TDocument::dirtyIdNode()" 2081] +[ebrowse-ms "dirtyNode" () 4 () " TNode dirtyNode(void" 821 0 () " TNode dirtyNode(void" 821] +[ebrowse-ms "handleEvent" () 1 () " virtual void handleEvent(const" 1293 2 "src/TDocument.cc" "TDocument::handleEvent(const" 2348] +[ebrowse-ms "root" () 0 () " TNode root(void" 758 0 () " TNode root(void" 758] +[ebrowse-ms "serialize" () 4 () " void serialize(const" 904 0 "src/TDocument.cc" "TDocument::serialize(const" 637] +[ebrowse-ms "~TDocument" () 0 () " ~TDocument()" 179 0 "src/TDocument.cc" "TDocument::~TDocument()" 460] +) +() +([ebrowse-ms "findCommonAncestor" () 0 () " static DOM::Node findCommonAncestor(const" 1398 2 "src/TDocument.cc" "TDocument::findCommonAncestor(const" 1560] +[ebrowse-ms "nodeDepth" () 0 () " static unsigned nodeDepth(const" 1341 2 "src/TDocument.cc" "TDocument::nodeDepth(const" 1362] +) +() +() +()() +])() +() +() +() +() +() +()() +] \ No newline at end of file diff --git a/helm/DEVEL/mathml_editor/BUGS-GDOME2 b/helm/DEVEL/mathml_editor/BUGS-GDOME2 new file mode 100644 index 000000000..2b89215f0 --- /dev/null +++ b/helm/DEVEL/mathml_editor/BUGS-GDOME2 @@ -0,0 +1,15 @@ + +* replaceChild on document root should work, but it is implemented as + an insertBefore + removeChild, and the insertBefore is not allowed + for the document must have xactly _one_ child +* the code to dispatch the events is wrong, because it stores + xmlNodes and not gdome wrappers, hence the nodes can be deleted +* when firing events, self is not always reffed, what is the reason for + doing it? +* DOMSubtreeModified must have bubble=yes +* when setting more event listeners for the same node, with same type + and same useCapture, the event listener also matters. It seems like + now one can set only one event per combination type/capture +* /usr/lib is given by gdome-config +* should optimize event propagation, remember only those nodes with + listeners diff --git a/helm/DEVEL/mathml_editor/ChangeLog b/helm/DEVEL/mathml_editor/ChangeLog new file mode 100644 index 000000000..e69de29bb diff --git a/helm/DEVEL/mathml_editor/LICENSE b/helm/DEVEL/mathml_editor/LICENSE new file mode 100644 index 000000000..f67b1308a --- /dev/null +++ b/helm/DEVEL/mathml_editor/LICENSE @@ -0,0 +1,22 @@ +// Copyright (C) 2002, Luca Padovani . +// +// This file is part of EdiTeX, an editor of mathematical +// expressions based on TeX syntax +// +// EdiTeX is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// EdiTeX is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with EdiTeX; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// For details, see the EdiTeX World-Wide-Web page, +// http://helm.cs.unibo.it/editex, or send a mail to +// diff --git a/helm/DEVEL/mathml_editor/MODES b/helm/DEVEL/mathml_editor/MODES new file mode 100644 index 000000000..39032e3eb --- /dev/null +++ b/helm/DEVEL/mathml_editor/MODES @@ -0,0 +1,25 @@ + +there are two basic syntactic modes: + +TeX mode: + +* any letter is an identifier by itself + +Program mode: + +* sequences of letters (and possibly other characters) + are collapsed into a single token. Id tokens are separated + by any other character not included in one of the collapsing + categories. + +The mode is a property of the parser. + +there are two basic semantic modes: + +math mode: + +* implicit operator is multiplication + +program mode: + +* implicit operator is function application diff --git a/helm/DEVEL/mathml_editor/Makefile.am b/helm/DEVEL/mathml_editor/Makefile.am new file mode 100644 index 000000000..edd3988bb --- /dev/null +++ b/helm/DEVEL/mathml_editor/Makefile.am @@ -0,0 +1,21 @@ +#EXTRA_DIST = BUGS HISTORY LICENSE aclocal.m4 debian/ +SUBDIRS = src test +CLEANFILES = core + +bin_SCRIPTS = editex-config + +backup: + cd ..; tar cvfz @PACKAGE@-@VERSION@-`date|tr ' ' '_'|tr ':' '_'`.tar.gz @PACKAGE@ + +cleanbak: + -rm -f `find . -name "*~"` + +lc: + @( \ + CFILES=`find . -name "*.c"`; \ + HFILES=`find . -name "*.h"`; \ + CCFILES=`find . -name "*.cc"`; \ + HHFILES=`find . -name "*.hh"`; \ + ICCFILES=`find . -name "*.icc"`; \ + wc -l $$CFILES $$HFILES $$CCFILES $$HHFILES $$ICCFILES | tail -n 1 \ + ) diff --git a/helm/DEVEL/mathml_editor/Makefile.in b/helm/DEVEL/mathml_editor/Makefile.in new file mode 100644 index 000000000..f68e1f659 --- /dev/null +++ b/helm/DEVEL/mathml_editor/Makefile.in @@ -0,0 +1,424 @@ +# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +#EXTRA_DIST = BUGS HISTORY LICENSE aclocal.m4 debian/ + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AS = @AS@ +CC = @CC@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EDITEX_VERSION_INFO = @EDITEX_VERSION_INFO@ +EXEEXT = @EXEEXT@ +GDOMEXSLT_CFLAGS = @GDOMEXSLT_CFLAGS@ +GDOMEXSLT_LIBS = @GDOMEXSLT_LIBS@ +GMETADOM_CFLAGS = @GMETADOM_CFLAGS@ +GMETADOM_LIBS = @GMETADOM_LIBS@ +GTKMATHVIEW_CFLAGS = @GTKMATHVIEW_CFLAGS@ +GTKMATHVIEW_LIBS = @GTKMATHVIEW_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ + +SUBDIRS = src test +CLEANFILES = core + +bin_SCRIPTS = editex-config +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = editex-config +SCRIPTS = $(bin_SCRIPTS) + +DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ +Makefile.am Makefile.in NEWS aclocal.m4 config.guess config.h.in \ +config.sub configure configure.ac editex-config.in install-sh ltmain.sh \ +missing mkinstalldirs + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.ac + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure.ac $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +config.h: stamp-h + @if test ! -f $@; then \ + rm -f stamp-h; \ + $(MAKE) stamp-h; \ + else :; fi +stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h \ + $(SHELL) ./config.status + @echo timestamp > stamp-h 2> /dev/null +$(srcdir)/config.h.in: $(srcdir)/stamp-h.in + @if test ! -f $@; then \ + rm -f $(srcdir)/stamp-h.in; \ + $(MAKE) $(srcdir)/stamp-h.in; \ + else :; fi +$(srcdir)/stamp-h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + -rm -f config.h + +maintainer-clean-hdr: +editex-config: $(top_builddir)/config.status editex-config.in + cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \ + $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ + else if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \ + $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ + else :; fi; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + list='$(bin_SCRIPTS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" = "." && dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +all-recursive-am: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +install-exec-am: install-binSCRIPTS +install-exec: install-exec-recursive + +install-data-am: +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: uninstall-binSCRIPTS +uninstall: uninstall-recursive +all-am: Makefile $(SCRIPTS) config.h +all-redirect: all-recursive-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-hdr clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-hdr distclean-tags distclean-generic clean-am + -rm -f libtool + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ +uninstall-binSCRIPTS install-binSCRIPTS install-data-recursive \ +uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ +install-exec-am install-exec install-data-am install-data install-am \ +install uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +backup: + cd ..; tar cvfz @PACKAGE@-@VERSION@-`date|tr ' ' '_'|tr ':' '_'`.tar.gz @PACKAGE@ + +cleanbak: + -rm -f `find . -name "*~"` + +lc: + @( \ + CFILES=`find . -name "*.c"`; \ + HFILES=`find . -name "*.h"`; \ + CCFILES=`find . -name "*.cc"`; \ + HHFILES=`find . -name "*.hh"`; \ + ICCFILES=`find . -name "*.icc"`; \ + wc -l $$CFILES $$HFILES $$CCFILES $$HHFILES $$ICCFILES | tail -n 1 \ + ) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/helm/DEVEL/mathml_editor/NEWS b/helm/DEVEL/mathml_editor/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/helm/DEVEL/mathml_editor/PATTERNS b/helm/DEVEL/mathml_editor/PATTERNS new file mode 100644 index 000000000..0e5814d82 --- /dev/null +++ b/helm/DEVEL/mathml_editor/PATTERNS @@ -0,0 +1,196 @@ + +identifier # + + insert(#) + +number # + + insert(#) + +\sqrt + + replace($, $) + +\root + + replace($, $) + +\of + + when (isa($.parent, "mrow") && isa($.parent.parent, "mroot")) + let mroot = $.parent.parent + if ($.prev and !$.prev.prev and !$.next) replace($.parent, $.prev) + replace(mroot.child[0], $) + +\underline + + insert([$, _]) + +\overline + + insert([$, ]) + +\cases + + replace($, {$) + +\matrix + + replace($, $) + +\over + + if isa($.parent, "mrow") + replace($.parent, [$.parent, $]) + + +_ if isa($.parent, "mrow") + if eq($.prev, null) + replace($, new(mmultiscripts, [ new mrow, $, new none ])) + elseif (isa($.prev, msub)) + let base = $.prev.children[0] + let script = $.prev.children[1] + replace($.rev, new(mmultiscripts, [ base, script, new none, $, new none ])) + elseif (isa($.prev, msup)) + let base = $.prev.children[0] + let script = $.prev.children[1] + replace($.prev, new(msubsup, [ base, $, script ])) + elseif (isa($.prev, msubsup)) + let base = $.prev.children[0] + let subscript = $.prev.children[1] + let superscript = $.prev.children[2] + replace($.prev, new(mmultiscripts, [ base, subscript, superscript, $, new none ])) + elseif isa($.prev, mmultiscripts) + if ($.prev.children[$.prev.children.size - 2] = null) + replace($.prev.children[$.prev.children.size - 2], $) + else + $.prev.children.append([$, new none]) + else + replace($.prev, new(msub, [ $.prev, $ ])) + else if isa($.parent, msub) and $.parent.children[1] = $ + let base = $.parent.children[0] + replace($.parent, new(munder, [ base, $ ])) + + +_, \sb (subscript) + + if parent.isa(mrow) + if cursor is first child then + sub = new mmultiscripts + parent.replace(cursor, sub); + sub.set_base(new mrow); + sub.set_subscript(cursor); + else + elem = element prior to cursor in parent + if elem.isa(msub) || elem.isa(msup) || elem.isa(mmultiscripts) then + append script to multiscript and/or replace single script with + multiscript + else if elem.isa(munder) || elem.isa(mover) || elem.isa(munderover) then + creates another munder + else + parent.replace(elem, sub); + sub.set_base(elem); + sub.set_subscript(cursor); + else if (parent.isa(msub) and cursor is subscript) or + change msub into a munder + cursor in same position + else + replace cursor with msub with empty base + +^, \sp (superscript) + + symmetric to subscript + +', \prime (prime) + + similar to superscript, but multiple prime superscripts should go + together in the same operator + +{ (group open) + + replace cursor with mrow, put cursor inside mrow + if cursor is inside a table, create a new table row and a new table cell + and put the cursor inside the cell + +} (group close) + + remove cursor from mrow + mrow.parent.advance(cursor, mrow) + if cursor inside a table cell then close table + +\over,\atop,\above (fraction) + + if cursor.parent.isa(mrow) then + frac = new mfrac + cursor.parent.parent.replace(mrow, frac) + numerator is current content of cursor.parent except for the cursor + itself. + set denominator to cursor + else + +\choose + + similar to fractions, but with stretchable parentheses around + +\sqrt + + parent.replace(cursor, new msqrt) + set new msqrt.base to cursor + +\root + + parent.replace(cursor, new mroot) + set empty base element + set root index to cursor + +\of + + check if cursor.parent is mroot (or mrow inside mroot index) + or and cursor is in index position. move the cursor to the base element + +\underline + + create munder element with stretchable horizontal line as underscript + substitute cursor with munder + move the cursor in the base element + +\overline + + symmetric + +accents (\hat) + + create an mover with accent=true and the operator has stretchy=false + +wide accents (\widehat) + + as accents, but mover has accent=false and the operator has stretchy=true + +\scriptstyle, ... + + create an appropriate mstyle, the cursor moves in. However, when the + subformula ends one has to skip the mstyle + +\cases + + create mrow with stretchable brace and emtpy table, put cursor inside + table + +\matrix + + create empty table, cursor inside table + +& + + check that cursor is inside a table cell + create a new cell next to it + +\cr + + check that cursor is inside a table cell inside a table row + create a new row + +\phantom + + create a mphantom element, cursor inside + diff --git a/helm/DEVEL/mathml_editor/README b/helm/DEVEL/mathml_editor/README new file mode 100644 index 000000000..e69de29bb diff --git a/helm/DEVEL/mathml_editor/TML.dtd b/helm/DEVEL/mathml_editor/TML.dtd new file mode 100644 index 000000000..a808c5ba7 --- /dev/null +++ b/helm/DEVEL/mathml_editor/TML.dtd @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/helm/DEVEL/mathml_editor/configure.ac b/helm/DEVEL/mathml_editor/configure.ac new file mode 100644 index 000000000..0dca72c8c --- /dev/null +++ b/helm/DEVEL/mathml_editor/configure.ac @@ -0,0 +1,181 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT +AC_CONFIG_SRCDIR([src/TToken.hh]) + +PACKAGE=editex +VERSION=0.0.1 +EDITEX_VERSION_INFO=`echo $VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'` +AC_SUBST(EDITEX_VERSION_INFO) + +AC_ARG_ENABLE( + profile, + [ --enable-profile[=ARG] include profiling information [default=no]], + profile=$enableval, + profile=no +) + +AC_ARG_ENABLE( + debug, + [ --enable-debug[=ARG] include debugging debug [default=yes]], + enable_debug=$enableval, + enable_debug=yes +) + +if test "x$enable_debug" = "xyes"; then + AC_DEFINE(ENABLE_DEBUG,,[Define to 1 if you want to enable validity checks while running]) +fi + +GMETADOM_PREFIX="" +AC_ARG_WITH(gmetadom-prefix, + [ --with-gmetadom-prefix=[PFX] Specify location of gmetadom], + GMETADOM_PREFIX=$withval +) + +AC_CONFIG_HEADERS([config.h]) +AM_INIT_AUTOMAKE($PACKAGE, $VERSION) +AM_CONFIG_HEADER(config.h) + +AH_TOP([ +/* Copyright (C) 2002, Luca Padovani . + * + * This file is part of EdiTeX, an editor of mathematical + * expressions based on TeX syntax + * + * EdiTeX is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * EdiTeX is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with EdiTeX; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For details, see the EdiTeX World-Wide-Web page, + * http://helm.cs.unibo.it/editex, or send a mail to + * + */ +#ifndef config_h +#define config_h +]) + +AH_BOTTOM([ +#endif /* config_h */ +]) + +AC_PROG_CC +AC_PROG_CXX +AC_PROG_INSTALL +AC_HEADER_STDC([]) + +AC_SUBST(CFLAGS) +AC_SUBST(CPPFLAGS) +AC_SUBST(LDFLAGS) + +AM_PROG_LIBTOOL + +GMETADOM_CONFIG="gmetadom-config" +GMETADOM_MIN_VERSION=0.1.0 +AC_MSG_CHECKING([for GMetaDOM C++ library] >= $GMETADOM_MIN_VERSION) +if test "x$GMETADOM_PREFIX" != "x" +then + if ${GMETADOM_PREFIX}/bin/$GMETADOM_CONFIG --version > /dev/null 2>&1 + then + GMETADOM_CONFIG=${GMETADOM_PREFIX}/bin/$GMETADOM_CONFIG + elif ! $GMETADOM_CONFIG --version > /dev/null 2>&1 + then + AC_MSG_ERROR([Could not find gmetadom anywhere (see config.log for details).]) + fi +fi + +dnl +dnl test version and init our variables +dnl +vers=`$GMETADOM_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` +minvers=`echo $GMETADOM_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` +if test "$vers" -ge "$minvers" +then + GMETADOM_LIBS="`$GMETADOM_CONFIG --module=gdome_cpp_smart --libs`" + GMETADOM_CFLAGS="`$GMETADOM_CONFIG --module=gdome_cpp_smart --cflags`" + AC_MSG_RESULT(found) +else + AC_MSG_ERROR([You need at least GMetaDOM (C++) $GMETADOM_MIN_VERSION for this version of $PACKAGE]) +fi + +AC_SUBST(GMETADOM_CFLAGS) +AC_SUBST(GMETADOM_LIBS) + +GDOMEXSLT_CONFIG="gdome_xslt_cpp_smart-config" +GDOMEXSLT_MIN_VERSION=0.0.1 +AC_MSG_CHECKING([for gdome_xslt C++ library] >= $GDOMEXSLT_MIN_VERSION) +if test "x$GDOMEXSLT_PREFIX" != "x" +then + if ${GDOMEXSLT_PREFIX}/bin/$GDOMEXSLT_CONFIG --version > /dev/null 2>&1 + then + GDOMEXSLT_CONFIG=${GDOMEXSLT_PREFIX}/bin/$GDOMEXSLT_CONFIG + elif ! $GDOMEXSLT_CONFIG --version > /dev/null 2>&1 + then + AC_MSG_ERROR([Could not find gdome_xslt anywhere (see config.log for details).]) + fi +fi + +dnl +dnl test version and init our variables +dnl +vers=`$GDOMEXSLT_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` +minvers=`echo $GDOMEXSLT_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` +if test "$vers" -ge "$minvers" +then + GDOMEXSLT_LIBS="`$GDOMEXSLT_CONFIG --libs`" + GDOMEXSLT_CFLAGS="`$GDOMEXSLT_CONFIG --cflags`" + AC_MSG_RESULT(found) +else + AC_MSG_ERROR([You need at least gdome_xslt (C++) $GDOMEXSLT_MIN_VERSION for this version of $PACKAGE]) +fi + +AC_SUBST(GDOMEXSLT_CFLAGS) +AC_SUBST(GDOMEXSLT_LIBS) + +GTKMATHVIEW_CONFIG="gtkmathview-config" +GTKMATHVIEW_MIN_VERSION=0.4.0 +AC_MSG_CHECKING([for gtkmathview library] >= $GTKMATHVIEW_MIN_VERSION) +if test "x$GTKMATHVIEW_PREFIX" != "x" +then + if ${GTKMATHVIEW_PREFIX}/bin/$GTKMATHVIEW_CONFIG --version > /dev/null 2>&1 + then + GTKMATHVIEW_CONFIG=${GTKMATHVIEW_PREFIX}/bin/$GTKMATHVIEW_CONFIG + elif ! $GTKMATHVIEW_CONFIG --version > /dev/null 2>&1 + then + AC_MSG_ERROR([Could not find gtkmathview anywhere (see config.log for details).]) + fi +fi + +dnl +dnl test version and init our variables +dnl +vers=`$GTKMATHVIEW_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` +minvers=`echo $GTKMATHVIEW_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` +if test "$vers" -ge "$minvers" +then + GTKMATHVIEW_LIBS="`$GTKMATHVIEW_CONFIG --libs`" + GTKMATHVIEW_CFLAGS="`$GTKMATHVIEW_CONFIG --cflags`" + AC_MSG_RESULT(found) +else + AC_MSG_ERROR([You need at least gtkmathview $GTKMATHVIEW_MIN_VERSION for this version of $PACKAGE]) +fi + +AC_SUBST(GTKMATHVIEW_CFLAGS) +AC_SUBST(GTKMATHVIEW_LIBS) + +AC_CONFIG_FILES([ + Makefile + src/Makefile + test/Makefile + editex-config +]) +AC_CONFIG_COMMANDS([default],[[chmod +x editex-config]],[[]]) +AC_OUTPUT diff --git a/helm/DEVEL/mathml_editor/dictionary.dtd b/helm/DEVEL/mathml_editor/dictionary.dtd new file mode 100644 index 000000000..4d092af2b --- /dev/null +++ b/helm/DEVEL/mathml_editor/dictionary.dtd @@ -0,0 +1,20 @@ + + + + + + diff --git a/helm/DEVEL/mathml_editor/dictionary.xml b/helm/DEVEL/mathml_editor/dictionary.xml new file mode 100644 index 000000000..664100c62 --- /dev/null +++ b/helm/DEVEL/mathml_editor/dictionary.xml @@ -0,0 +1,350 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/helm/DEVEL/mathml_editor/editex-config.in b/helm/DEVEL/mathml_editor/editex-config.in new file mode 100644 index 000000000..e69de29bb diff --git a/helm/DEVEL/mathml_editor/examples/abs.tex b/helm/DEVEL/mathml_editor/examples/abs.tex new file mode 100644 index 000000000..6cd86a144 --- /dev/null +++ b/helm/DEVEL/mathml_editor/examples/abs.tex @@ -0,0 +1 @@ +$|x|=\matrix{1&0\cr0&1}$ diff --git a/helm/DEVEL/mathml_editor/examples/big.tex b/helm/DEVEL/mathml_editor/examples/big.tex new file mode 100644 index 000000000..913a1a13c --- /dev/null +++ b/helm/DEVEL/mathml_editor/examples/big.tex @@ -0,0 +1 @@ +$1+x+x^2+x^3+\cdots+x^n\over{\sqrt 1+y^{-1}+y^{-2}+y^{-3}+\cdots+y^{-m}}$ diff --git a/helm/DEVEL/mathml_editor/src/APushLexer.hh b/helm/DEVEL/mathml_editor/src/APushLexer.hh new file mode 100644 index 000000000..2243426d2 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/APushLexer.hh @@ -0,0 +1,21 @@ + +#ifndef __APushLexer_hh__ +#define __APushLexer_hh__ + +class APushLexer +{ +public: + APushLexer(class APushParser& p) : parser(p) { }; + virtual ~APushLexer() { }; + + virtual void push(char) = 0; + virtual void reset(void) = 0; + virtual bool error(void) const = 0; + //virtual void freeze(void); + //virtual void thaw(void); + +protected: + class APushParser& parser; +}; + +#endif // __APushLexer_hh__ diff --git a/helm/DEVEL/mathml_editor/src/APushParser.hh b/helm/DEVEL/mathml_editor/src/APushParser.hh new file mode 100644 index 000000000..c2978106c --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/APushParser.hh @@ -0,0 +1,14 @@ + +#ifndef __APushParser_hh__ +#define __APushParser_hh__ + +class APushParser +{ +public: + APushParser(void) { }; + virtual ~APushParser() { }; + virtual void push(const TToken&) = 0; + virtual void setCursor(const std::string&) = 0; +}; + +#endif // __APushParser_hh__ diff --git a/helm/DEVEL/mathml_editor/src/BROWSE b/helm/DEVEL/mathml_editor/src/BROWSE new file mode 100644 index 000000000..ddd9c4428 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/BROWSE @@ -0,0 +1,503 @@ +[ebrowse-hs "ebrowse 5.0" " -x" () ()][ebrowse-ts [ebrowse-cs "APushParser" () 0"APushParser.hh" "class APushParser +{" 75"APushParser.hh" ] +([ebrowse-ts [ebrowse-cs "TPushParser" () 0"TPushParser.hh" "class TPushParser :" 226"TPushParser.hh" ] +()([ebrowse-ms "buffer" () 0 () " std::list buffer;" 1306 2 () () 0] +[ebrowse-ms "cursor" () 0 () " TNode cursor;" 1363 2 () () 0] +[ebrowse-ms "doc" () 0 () " TDocument doc;" 1343 2 () () 0] +[ebrowse-ms "frames" () 0 () " std::stack frames;" 1278 2 () () 0] +[ebrowse-ms "nextId" () 0 () " unsigned nextId;" 1326 2 () () 0] +) +([ebrowse-ms "PRIME" () 4 () " std::string PRIME(void" 490 2 "TPushParser.cc" "TPushParser::PRIME()" 279] +[ebrowse-ms "TPushParser" () 0 () () 0 0 "TPushParser.cc" "TPushParser::TPushParser(const TDictionary& d) :" 58] +[ebrowse-ms "TPushParser" () 0 () " TPushParser(const class TDictionary&);" 275 0 () () 0] +[ebrowse-ms "advance" () 0 () " void advance(const" 1065 2 "TPushParser.cc" "TPushParser::advance(const" 13192] +[ebrowse-ms "do_active" () 0 () " void do_active(const" 916 2 "TPushParser.cc" "TPushParser::do_active(const" 5602] +[ebrowse-ms "do_align" () 0 () " void do_align(void" 624 2 "TPushParser.cc" "TPushParser::do_align()" 1530] +[ebrowse-ms "do_apostrophe" () 0 () " void do_apostrophe(void" 1042 2 "TPushParser.cc" "TPushParser::do_apostrophe()" 4611] +[ebrowse-ms "do_begin" () 0 () " void do_begin(void" 557 2 "TPushParser.cc" "TPushParser::do_begin()" 461] +[ebrowse-ms "do_comment" () 0 () " void do_comment(void" 954 2 "TPushParser.cc" "TPushParser::do_comment()" 5668] +[ebrowse-ms "do_control" () 0 () " void do_control(const" 980 2 "TPushParser.cc" "TPushParser::do_control(const" 6337] +[ebrowse-ms "do_cr" () 0 () " void do_cr(void" 1014 2 "TPushParser.cc" "TPushParser::do_cr()" 5708] +[ebrowse-ms "do_digit" () 0 () " void do_digit(const" 841 2 "TPushParser.cc" "TPushParser::do_digit(const" 4072] +[ebrowse-ms "do_end" () 0 () " void do_end(void" 578 2 "TPushParser.cc" "TPushParser::do_end()" 910] +[ebrowse-ms "do_eol" () 0 () " void do_eol(void" 645 2 "TPushParser.cc" "TPushParser::do_eol()" 2464] +[ebrowse-ms "do_letter" () 0 () " void do_letter(const" 804 2 "TPushParser.cc" "TPushParser::do_letter(const" 3902] +[ebrowse-ms "do_other" () 0 () " void do_other(const" 878 2 "TPushParser.cc" "TPushParser::do_other(const" 5303] +[ebrowse-ms "do_parameter" () 0 () " void do_parameter(const" 673 2 "TPushParser.cc" "TPushParser::do_parameter(const" 2546] +[ebrowse-ms "do_shift" () 0 () " void do_shift(void" 601 2 "TPushParser.cc" "TPushParser::do_shift()" 1487] +[ebrowse-ms "do_space" () 0 () " void do_space(const" 766 2 "TPushParser.cc" "TPushParser::do_space(const" 3794] +[ebrowse-ms "do_subscript" () 0 () " void do_subscript(void" 742 2 "TPushParser.cc" "TPushParser::do_subscript()" 2609] +[ebrowse-ms "do_superscript" () 0 () " void do_superscript(void" 715 2 "TPushParser.cc" "TPushParser::do_superscript()" 3204] +[ebrowse-ms "document" () 4 () " TDocument document(void" 432 0 () " TDocument document(void" 432] +[ebrowse-ms "isPrimes" () 4 () " bool isPrimes(const" 520 2 "TPushParser.cc" "TPushParser::isPrimes(const" 4445] +[ebrowse-ms "process" () 0 () " void process(const" 1096 2 "TPushParser.cc" "TPushParser::process(const" 8538] +[ebrowse-ms "push" () 1 () " virtual void push(const" 349 0 "TPushParser.cc" "TPushParser::push(const" 9379] +[ebrowse-ms "setCursor" () 1 () " virtual void setCursor(const" 390 0 "TPushParser.cc" "TPushParser::setCursor(const" 13865] +[ebrowse-ms "~TPushParser" () 1 () " virtual ~TPushParser()" 321 0 "TPushParser.cc" "TPushParser::~TPushParser()" 241] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TTokenizer" () 0"TTokenizer.hh" "class TTokenizer :" 173"TTokenizer.hh" ] +()([ebrowse-ms "tokens" () 0 () " std::list tokens;" 405 2 () () 0] +) +([ebrowse-ms "TTokenizer" () 0 () " TTokenizer(void) {" 221 0 () " TTokenizer(void) {" 221] +[ebrowse-ms "push" () 1 () " virtual void push(const" 316 2 "TTokenizer.cc" "TTokenizer::push(const" 471] +[ebrowse-ms "setCursor" () 1 () " virtual void setCursor(const" 357 2 () " virtual void setCursor(const" 357] +[ebrowse-ms "tokenize" () 0 () " std::vector tokenize(const" 265 0 "TTokenizer.cc" "TTokenizer::tokenize(const" 120] +) +() +() +() +() +()() +])() +([ebrowse-ms "APushParser" () 0 () " APushParser(void) {" 102 0 () " APushParser(void) {" 102] +[ebrowse-ms "push" () 9 () " virtual void push(const" 164 0 () () 0] +[ebrowse-ms "setCursor" () 9 () " virtual void setCursor(const" 209 0 () () 0] +[ebrowse-ms "~APushParser" () 1 () " virtual ~APushParser()" 133 0 () " virtual ~APushParser()" 133] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "EmptyBuffer" "TLexerPush" 0"TLexerPush.hh" " class EmptyBuffer {" 271() ] +()() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "unary_function" "std" 32() () 0() ] +([ebrowse-ts [ebrowse-cs "StringHash" "TDictionary" 0"TDictionary.hh" " struct StringHash :" 1160"TDictionary.hh" ] +()() +([ebrowse-ms "operator ()" () 4 () " { size_t operator()(const" 1238 0 () " { size_t operator()(const" 1238] +) +() +() +() +() +()() +])() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TObject" () 0"TObject.hh" "class TObject +{" 63"TObject.hh" ] +()() +([ebrowse-ms "TObject" () 0 () " TObject(void) {" 89 1 () " TObject(void) {" 89] +[ebrowse-ms "ref" () 4 () " void ref(coid" 162 0 () " void ref(coid" 162] +[ebrowse-ms "unref" () 4 () " void unref(void" 206 0 () " void unref(void" 206] +[ebrowse-ms "~TObject" () 1 () " virtual ~TObject()" 132 1 () " virtual ~TObject()" 132] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "std" () 0() () 0() ] +()() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TLexerPush" () 0"TLexerPush.hh" "class TLexerPush +{" 59"TLexerPush.hh" ] +()([ebrowse-ms "state" () 0 () " State state;" 388 2 () () 0] +[ebrowse-ms "tokens" () 0 () " std::deque tokens;" 417 2 () () 0] +) +([ebrowse-ms "TLexerPush" () 0 () " TLexerPush(void);" 85 0 "TLexerPush.cc" "TLexerPush::TLexerPush() +{" 51] +[ebrowse-ms "ambiguous" () 4 () " bool ambiguous(void" 182 0 "TLexerPush.cc" "TLexerPush::ambiguous()" 576] +[ebrowse-ms "empty" () 4 () " bool empty(void" 240 0 "TLexerPush.cc" "TLexerPush::empty()" 447] +[ebrowse-ms "front" () 4 () " TToken front(void" 150 0 "TLexerPush.cc" "TLexerPush::front()" 338] +[ebrowse-ms "pending" () 4 () " bool pending(void" 212 0 "TLexerPush.cc" "TLexerPush::pending()" 510] +[ebrowse-ms "pop" () 0 () " TToken pop(void" 128 0 "TLexerPush.cc" "TLexerPush::pop()" 99] +[ebrowse-ms "push" () 0 () " void push(TChar" 108 0 "TLexerPush.cc" "TLexerPush::push(TChar" 664] +) +() +() +() +([ebrowse-ms "State" () 0 () " {" 303 2 () " {" 303] +) +()() +][ebrowse-ts [ebrowse-cs "TLexerPull" () 0() () 0"TLexerPull.cc" ] +()() +([ebrowse-ms "pop" () 0 () () 0 0 () "TLexerPull::pop(TCharStream" 94] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TDictionary" () 0"TDictionary.hh" "class TDictionary +{" 154"TDictionary.hh" ] +()([ebrowse-ms "entries" () 0 () " Dictionary entries;" 1560 2 () () 0] +) +([ebrowse-ms "TDictionary" () 0 () " TDictionary(void) {" 181 0 () " TDictionary(void) {" 181] +[ebrowse-ms "find" () 4 () " const Entry& find(const" 1107 0 "TDictionary.cc" "TDictionary::find(const" 3723] +[ebrowse-ms "load" () 0 () " void load(const" 1069 0 "TDictionary.cc" "TDictionary::load(const" 162] +[ebrowse-ms "~TDictionary" () 0 () " ~TDictionary()" 204 0 () " ~TDictionary()" 204] +) +() +() +() +([ebrowse-ms "Dictionary" () 0 () "ap< std::string, Entry, StringHash > Dictionary;" 1538 2 () () 0] +[ebrowse-ms "EntryClass" () 0 () " {" 301 0 () " {" 301] +[ebrowse-ms "Form" () 0 () " {" 228 0 () " {" 228] +) +()() +][ebrowse-ts [ebrowse-cs "DOM" () 0() () 0() ] +()() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "APushLexer" () 0"APushLexer.hh" "class APushLexer +{" 72"APushLexer.hh" ] +([ebrowse-ts [ebrowse-cs "TPushLexer" () 0"TPushLexer.hh" "class TPushLexer :" 117"TPushLexer.hh" ] +()([ebrowse-ms "buffer" () 0 () " std::string buffer;" 483 2 () () 0] +[ebrowse-ms "state" () 0 () " State state;" 461 2 () () 0] +) +([ebrowse-ms "TPushLexer" () 0 () () 0 0 "TPushLexer.cc" "TPushLexer::TPushLexer(APushParser& p) :" 108] +[ebrowse-ms "TPushLexer" () 0 () " TPushLexer(class APushParser&);" 164 0 () () 0] +[ebrowse-ms "error" () 5 () " virtual bool error(void" 290 0 "TPushLexer.cc" "TPushLexer::error()" 2463] +[ebrowse-ms "push" () 1 () " virtual void push(char" 234 0 "TPushLexer.cc" "TPushLexer::push(char" 1180] +[ebrowse-ms "reset" () 1 () " virtual void reset(void" 262 0 "TPushLexer.cc" "TPushLexer::reset()" 176] +[ebrowse-ms "transaction" () 0 () " void transaction(char" 436 2 "TPushLexer.cc" "TPushLexer::transaction(char" 251] +[ebrowse-ms "~TPushLexer" () 1 () " virtual ~TPushLexer()" 203 0 () " virtual ~TPushLexer()" 203] +) +() +() +() +([ebrowse-ms "State" () 0 () " {" 327 2 () " {" 327] +) +()() +])() +([ebrowse-ms "APushLexer" () 0 () " APushLexer(class APushParser& p) :" 99 0 () " APushLexer(class APushParser& p) :" 99] +[ebrowse-ms "error" () 13 () " virtual bool error(void" 251 0 () () 0] +[ebrowse-ms "push" () 9 () " virtual void push(char" 187 0 () () 0] +[ebrowse-ms "reset" () 9 () " virtual void reset(void" 219 0 () () 0] +[ebrowse-ms "~APushLexer" () 1 () " virtual ~APushLexer()" 156 0 () " virtual ~APushLexer()" 156] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "Ptr" () 32"Ptr.hh" "class Ptr +{" 1067"Ptr.hh" ] +()([ebrowse-ms "ptr" () 0 () " P* ptr;" 1797 2 () () 0] +) +([ebrowse-ms "P" () 4 () " operator P*()" 1487 0 () " operator P*()" 1487] +[ebrowse-ms "Ptr" () 0 () " Ptr(const Ptr& p) :" 1142 0 () " Ptr(const Ptr& p) :" 1142] +[ebrowse-ms "Ptr" () 0 () " Ptr(P* p = 0) :" 1083 0 () " Ptr(P* p = 0) :" 1083] +[ebrowse-ms "Q" () 36 () " template operator Ptr()" 1747 0 () " template operator Ptr()" 1747] +[ebrowse-ms "operator ->" () 4 () " P* operator->()" 1253 0 () " P* operator->()" 1253] +[ebrowse-ms "operator =" () 0 () " Ptr& operator=(const" 1316 0 () " Ptr& operator=(const" 1316] +[ebrowse-ms "~Ptr" () 0 () " ~Ptr()" 1202 0 () " ~Ptr()" 1202] +) +() +() +([ebrowse-ms "is_a" () 32 () " template friend bool is_a(const" 1659 0 () " template friend bool is_a(const" 1659] +[ebrowse-ms "smart_cast" () 32 () "emplate friend Ptr smart_cast(const" 1561 0 () "emplate friend Ptr smart_cast(const" 1561] +) +() +()() +][ebrowse-ts [ebrowse-cs "TToken" () 0"TToken.hh" "struct TToken +{" 80"TToken.hh" ] +()([ebrowse-ms "category" () 0 () " TCat category;" 627 0 () () 0] +[ebrowse-ms "value" () 0 () " std::string value;" 648 0 () () 0] +) +([ebrowse-ms "TToken" () 0 () " TToken(TCat c, const std::string& v) :" 438 0 () " TToken(TCat c, const std::string& v) :" 438] +[ebrowse-ms "TToken" () 0 () " TToken(TCat c, char ch) :" 366 0 () " TToken(TCat c, char ch) :" 366] +[ebrowse-ms "TToken" () 0 () " TToken(TCat c) :" 330 0 () " TToken(TCat c) :" 330] +[ebrowse-ms "operator ==" () 4 () " bool operator==(const" 517 0 () " bool operator==(const" 517] +) +() +() +() +([ebrowse-ms "TCat" () 0 () " {" 98 0 () " {" 98] +) +()() +][ebrowse-ts [ebrowse-cs "binary_function" "std" 32() () 0() ] +([ebrowse-ts [ebrowse-cs "StringEq" "TDictionary" 0"TDictionary.hh" " struct StringEq :" 1327() ] +()() +([ebrowse-ms "operator ()" () 4 () " { bool operator()(const" 1415 0 () () 0] +) +() +() +() +() +()() +])() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TNode" () 0"TNode.hh" "class TNode +{" 124"TNode.hh" ] +()([ebrowse-ms "node" () 0 () " DOM::Element node;" 2444 2 () () 0] +) +([ebrowse-ms "TNode" () 0 () " TNode(const TNode& n) :" 270 0 () " TNode(const TNode& n) :" 270] +[ebrowse-ms "TNode" () 0 () " TNode(void) :" 145 0 () " TNode(void) :" 145] +[ebrowse-ms "append" () 4 () " void append(const" 1667 0 "TNode.cc" "TNode::append(const" 2450] +[ebrowse-ms "append" () 4 () " void append(const" 1631 0 "TNode.cc" "TNode::append(const" 2348] +[ebrowse-ms "child" () 4 () " TNode child(unsigned" 592 0 "TNode.cc" "TNode::child(unsigned" 2874] +[ebrowse-ms "core" () 4 () " TNode core(void" 425 0 "TNode.cc" "TNode::core()" 1413] +[ebrowse-ms "empty" () 4 () " bool empty(void" 648 0 () " bool empty(void" 648] +[ebrowse-ms "first" () 4 () " TNode first(void" 480 0 "TNode.cc" "TNode::first()" 1075] +[ebrowse-ms "firstL" () 4 () " TNode firstL(void" 508 0 "TNode.cc" "TNode::firstL()" 1259] +[ebrowse-ms "get" () 4 () " std::string get(const" 1758 0 "TNode.cc" "TNode::get(const" 3007] +[ebrowse-ms "hasId" () 4 () " bool hasId(void" 1994 0 () " bool hasId(void" 1994] +[ebrowse-ms "insert" () 4 () " void insert(const" 1595 0 "TNode.cc" "TNode::insert(const" 2193] +[ebrowse-ms "is" () 4 () " bool is(const" 2055 0 () " bool is(const" 2055] +[ebrowse-ms "isC" () 4 () " bool isC(const" 2303 0 () " bool isC(const" 2303] +[ebrowse-ms "isC" () 4 () " bool isC(void" 2258 0 () " bool isC(void" 2258] +[ebrowse-ms "isG" () 4 () " bool isG(void" 2119 0 () " bool isG(void" 2119] +[ebrowse-ms "isSb" () 4 () " bool isSb(void" 2165 0 () " bool isSb(void" 2165] +[ebrowse-ms "isSp" () 4 () " bool isSp(void" 2212 0 () " bool isSp(void" 2212] +[ebrowse-ms "last" () 4 () " TNode last(void" 534 0 "TNode.cc" "TNode::last()" 736] +[ebrowse-ms "lastL" () 4 () " TNode lastL(void" 561 0 "TNode.cc" "TNode::lastL()" 922] +[ebrowse-ms "name" () 4 () " std::string name(void" 1863 0 () " std::string name(void" 1863] +[ebrowse-ms "nameC" () 4 () " std::string nameC(void" 1929 0 () " std::string nameC(void" 1929] +[ebrowse-ms "next" () 4 () " TNode next(void" 319 0 "TNode.cc" "TNode::next()" 63] +[ebrowse-ms "nextL" () 4 () " TNode nextL(void" 346 0 "TNode.cc" "TNode::nextL()" 247] +[ebrowse-ms "operator !=" () 4 () " bool operator!=(const" 1295 0 () " bool operator!=(const" 1295] +[ebrowse-ms "operator ==" () 4 () " bool operator==(const" 1227 0 () " bool operator==(const" 1227] +[ebrowse-ms "operator []" () 4 () " ProxyAttr operator[](const" 1422 0 () " ProxyAttr operator[](const" 1422] +[ebrowse-ms "operator []" () 4 () " TNode operator[](int" 1362 0 () " TNode operator[](int" 1362] +[ebrowse-ms "parent" () 4 () " TNode parent(void" 453 0 "TNode.cc" "TNode::parent()" 1587] +[ebrowse-ms "prepend" () 4 () " void prepend(const" 1718 0 "TNode.cc" "TNode::prepend(const" 2683] +[ebrowse-ms "prev" () 4 () " TNode prev(void" 372 0 "TNode.cc" "TNode::prev()" 396] +[ebrowse-ms "prevL" () 4 () " TNode prevL(void" 399 0 "TNode.cc" "TNode::prevL()" 588] +[ebrowse-ms "remove" () 4 () " void remove(void" 1529 0 "TNode.cc" "TNode::remove()" 1913] +[ebrowse-ms "replace" () 4 () " void replace(const" 1559 0 "TNode.cc" "TNode::replace(const" 2038] +[ebrowse-ms "set" () 4 () " void set(const" 1797 0 "TNode.cc" "TNode::set(const" 3109] +[ebrowse-ms "size" () 4 () " unsigned size(void" 621 0 "TNode.cc" "TNode::size()" 1749] +[ebrowse-ms "value" () 4 () " std::string value(void" 707 0 () " std::string value(void" 707] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "Entry" "TDictionary" 0"TDictionary.hh" " struct Entry + {" 405"TDictionary.hh" ] +()([ebrowse-ms "cls" () 0 () " EntryClass cls;" 806 0 () () 0] +[ebrowse-ms "delimiter" () 0 () " unsigned delimiter : 1;" 909 0 () () 0] +[ebrowse-ms "embellishment" () 0 () " unsigned embellishment : 1;" 966 0 () () 0] +[ebrowse-ms "infix" () 0 () " unsigned infix : 8;" 830 0 () () 0] +[ebrowse-ms "leftOpen" () 0 () " unsigned leftOpen : 1;" 993 0 () () 0] +[ebrowse-ms "limits" () 0 () " unsigned limits : 1;" 934 0 () () 0] +[ebrowse-ms "pattern" () 0 () " std::vector pattern;" 597 0 () () 0] +[ebrowse-ms "postfix" () 0 () " unsigned postfix : 8;" 881 0 () () 0] +[ebrowse-ms "prefix" () 0 () " unsigned prefix : 8;" 855 0 () () 0] +[ebrowse-ms "rightOpen" () 0 () " unsigned rightOpen : 1;" 1021 0 () () 0] +[ebrowse-ms "table" () 0 () " unsigned table : 1;" 1045 0 () () 0] +[ebrowse-ms "value" () 0 () " std::string value;" 620 0 () () 0] +) +([ebrowse-ms "Entry" () 0 () " {" 420 0 () " {" 420] +[ebrowse-ms "defined" () 4 () " bool defined(void" 643 0 () " bool defined(void" 643] +[ebrowse-ms "hasArguments" () 4 () " bool hasArguments(void" 707 0 () " bool hasArguments(void" 707] +[ebrowse-ms "paramDelimited" () 4 () " bool paramDelimited(unsigned" 777 0 "TDictionary.cc" "TDictionary::Entry::paramDelimited(unsigned" 4012] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "Frame" "TPushParser" 0"TPushParser.hh" " struct Frame + {" 1126"TPushParser.hh" ] +()([ebrowse-ms "entry" () 0 () " const TDictionary::Entry& entry;" 1226 0 () () 0] +[ebrowse-ms "pos" () 0 () " unsigned pos;" 1244 0 () () 0] +) +([ebrowse-ms "Frame" () 0 () " Frame(const TDictionary::Entry& e) :" 1142 0 () " Frame(const TDictionary::Entry& e) :" 1142] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TCharStream" () 0"TCharStream.hh" "class TCharStream +{" 94"TCharStream.hh" ] +([ebrowse-ts [ebrowse-cs "TCharStreamString" () 0"TCharStreamString.hh" "class TCharStreamString :" 120"TCharStreamString.hh" ] +()([ebrowse-ms "buffer" () 0 () " TString buffer;" 555 2 () () 0] +[ebrowse-ms "idx" () 0 () " unsigned long idx;" 536 2 () () 0] +) +([ebrowse-ms "TCharStreamString" () 0 () " TCharStreamString(const TString& s) :" 175 0 () " TCharStreamString(const TString& s) :" 175] +[ebrowse-ms "look" () 5 () " virtual TChar look(void" 343 0 () " virtual TChar look(void" 343] +[ebrowse-ms "more" () 5 () " virtual bool more(void" 275 0 () " virtual bool more(void" 275] +[ebrowse-ms "next" () 1 () " virtual TChar next(void" 439 0 () " virtual TChar next(void" 439] +[ebrowse-ms "~TCharStreamString" () 1 () " virtual ~TCharStreamString()" 243 0 () " virtual ~TCharStreamString()" 243] +) +() +() +() +() +()() +])() +([ebrowse-ms "TCharStream" () 0 () " TCharStream(void) {" 121 0 () " TCharStream(void) {" 121] +[ebrowse-ms "look" () 13 () " virtual TChar look(void" 222 0 () () 0] +[ebrowse-ms "more" () 13 () " virtual bool more(void" 184 0 () () 0] +[ebrowse-ms "next" () 9 () " virtual TChar next(void" 260 0 () () 0] +[ebrowse-ms "~TCharStream" () 1 () " virtual ~TCharStream()" 152 0 () " virtual ~TCharStream()" 152] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "EmptyStream" "TCharStream" 0"TCharStream.hh" " class EmptyStream {" 289() ] +()() +() +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "*Globals*" () 0() () 0"APushLexer.hh" ] +()() +([ebrowse-ms "dispatch" () 0 "special.cc" "dispatch(const" 1012 0 "special.cc" "dispatch(const" 1012] +[ebrowse-ms "do_apostrophe" () 0 "special.cc" "do_apostrophe(const" 669 0 "special.cc" "do_apostrophe(const" 669] +[ebrowse-ms "do_bgroup" () 0 "special.cc" "do_bgroup(const" 149 0 "special.cc" "do_bgroup(const" 149] +[ebrowse-ms "do_control" () 0 "special.cc" "do_control(const" 711 0 "special.cc" "do_control(const" 711] +[ebrowse-ms "do_other" () 0 "special.cc" "do_other(const" 776 0 "special.cc" "do_other(const" 776] +[ebrowse-ms "finishG" () 0 "special.cc" "void finishG(const" 118 0 () () 0] +[ebrowse-ms "getCore" () 0 "domnav.cc" "getCore(const" 629 0 "domnav.cc" "getCore(const" 629] +[ebrowse-ms "getRightmostChild" () 0 "domnav.cc" "getRightmostChild(const" 37 0 "domnav.cc" "getRightmostChild(const" 37] +[ebrowse-ms "isDelimiter" () 0 "domnav.cc" "isDelimiter(const" 1716 0 "domnav.cc" "isDelimiter(const" 1716] +[ebrowse-ms "isFunction" () 0 "domnav.cc" "isFunction(const" 1879 0 "domnav.cc" "isFunction(const" 1879] +[ebrowse-ms "isGroup" () 0 "domnav.cc" "isGroup(const" 1214 0 "domnav.cc" "isGroup(const" 1214] +[ebrowse-ms "isInferred" () 0 "domnav.cc" "isInferred(const" 985 0 "domnav.cc" "isInferred(const" 985] +[ebrowse-ms "isMacro" () 0 "domnav.cc" "isMacro(const" 1085 0 "domnav.cc" "isMacro(const" 1085] +[ebrowse-ms "isOperator" () 0 "domnav.cc" "isOperator(const" 1553 0 "domnav.cc" "isOperator(const" 1553] +[ebrowse-ms "isPrimes" () 0 "domnav.cc" "isPrimes(const" 1451 0 "domnav.cc" "isPrimes(const" 1451] +[ebrowse-ms "isSb" () 0 "domnav.cc" "isSb(const" 1291 0 "domnav.cc" "isSb(const" 1291] +[ebrowse-ms "isSp" () 0 "domnav.cc" "isSp(const" 1369 0 "domnav.cc" "isSp(const" 1369] +[ebrowse-ms "isUnicodeAlpha" () 2 "dom.hh" "inline bool isUnicodeAlpha(TChar" 303 0 "dom.hh" "inline bool isUnicodeAlpha(TChar" 303] +[ebrowse-ms "isUnicodeDigit" () 2 "dom.hh" "inline bool isUnicodeDigit(TChar" 408 0 "dom.hh" "inline bool isUnicodeDigit(TChar" 408] +[ebrowse-ms "isUnicodeSpace" () 2 "dom.hh" "inline bool isUnicodeSpace(TChar" 198 0 "dom.hh" "inline bool isUnicodeSpace(TChar" 198] +[ebrowse-ms "main" () 0 "texlexer.cc" "main()" 51 0 "texlexer.cc" "main()" 51] +[ebrowse-ms "prevLinearSibling" () 0 "domnav.cc" "prevLinearSibling(const" 324 0 "domnav.cc" "prevLinearSibling(const" 324] +[ebrowse-ms "replace" () 0 "domnav.cc" "replace(const" 834 0 "domnav.cc" "replace(const" 834] +[ebrowse-ms "tokenize" () 0 "tokenizer.hh" "std::vector tokenize(const" 123 0 () () 0] +) +([ebrowse-ms "undefinedEntry" () 0 () () 0 0 "TDictionary.cc" "static TDictionary::Entry undefinedEntry;" 132] +) +() +([ebrowse-ms "Ptr_hh" () 512 () () 0 0 "Ptr.hh" "#define Ptr_hh +" 1036] +[ebrowse-ms "TML_NS_URI" () 512 () () 0 0 "globals.hh" "#define TML_NS_URI " 67] +[ebrowse-ms "XMLNS_NS_URI" () 512 () () 0 0 "globals.hh" "#define XMLNS_NS_URI " 123] +[ebrowse-ms "__APushLexer_hh__" () 512 () () 0 0 () "#define __APushLexer_hh__ +" 53] +[ebrowse-ms "__APushParser_hh__" () 512 () () 0 0 "APushParser.hh" "#define __APushParser_hh__ +" 55] +[ebrowse-ms "__TCharStreamString_hh__" () 512 () () 0 0 "TCharStreamString.hh" "#define __TCharStreamString_hh__ +" 67] +[ebrowse-ms "__TCharStream_hh__" () 512 () () 0 0 "TCharStream.hh" "#define __TCharStream_hh__ +" 55] +[ebrowse-ms "__TDictionary_hh__" () 512 () () 0 0 "TDictionary.hh" "#define __TDictionary_hh__ +" 55] +[ebrowse-ms "__TDocument_hh__" () 512 () () 0 0 "TDocument.hh" "#define __TDocument_hh__ +" 51] +[ebrowse-ms "__TNode_hh__" () 512 () () 0 0 "TNode.hh" "#define __TNode_hh__ +" 43] +[ebrowse-ms "__TObject_hh__" () 512 () () 0 0 "TObject.hh" "#define __TObject_hh__ +" 47] +[ebrowse-ms "__TPushLexer_hh__" () 512 () () 0 0 "TPushLexer.hh" "#define __TPushLexer_hh__ +" 53] +[ebrowse-ms "__TPushParser_hh__" () 512 () () 0 0 "TPushParser.hh" "#define __TPushParser_hh__ +" 55] +[ebrowse-ms "__TToken_hh__" () 512 () () 0 0 "TToken.hh" "#define __TToken_hh__ +" 45] +[ebrowse-ms "__TTokenizer_hh__" () 512 () () 0 0 "TTokenizer.hh" "#define __TTokenizer_hh__ +" 53] +[ebrowse-ms "__dom_hh__" () 512 () () 0 0 "dom.hh" "#define __dom_hh__ +" 39] +[ebrowse-ms "__globals_hh__" () 512 () () 0 0 "globals.hh" "#define __globals_hh__ +" 47] +[ebrowse-ms "__tokenzier_hh__" () 512 () () 0 0 "tokenizer.hh" "#define __tokenzier_hh__ +" 51] +) +([ebrowse-ms "TChar" () 0 () () 0 0 "dom.hh" "typedef DOM::Char32 TChar;" 131] +[ebrowse-ms "TString" () 0 () () 0 0 "dom.hh" "typedef DOM::UCS4String TString;" 164] +) +()() +][ebrowse-ts [ebrowse-cs "ProxyAttr" "TNode" 0"TNode.hh" " class ProxyAttr + {" 765"TNode.hh" ] +()([ebrowse-ms "name" () 0 () " std::string name;" 1155 2 () () 0] +[ebrowse-ms "node" () 0 () " DOM::Element node;" 1132 2 () () 0] +) +([ebrowse-ms "ProxyAttr" () 0 () "r(const DOM::Element& n, const std::string& s) :" 795 0 () "r(const DOM::Element& n, const std::string& s) :" 795] +[ebrowse-ms "operator =" () 0 () " ProxyAttr& operator=(const" 959 0 () " ProxyAttr& operator=(const" 959] +[ebrowse-ms "operator ==" () 0 () " bool operator==(const" 1040 0 () " bool operator==(const" 1040] +[ebrowse-ms "string" () 4 () " operator std::string()" 885 0 () " operator std::string()" 885] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "EventListener" "DOM" 0() () 0() ] +([ebrowse-ts [ebrowse-cs "DOMSubtreeModifiedListener" "TDocument" 0"TDocument.hh" " class DOMSubtreeModifiedListener :" 1015"TDocument.hh" ] +()([ebrowse-ms "doc" () 0 () " TDocument doc;" 1247 2 () () 0] +) +([ebrowse-ms "DOMSubtreeModifiedListener" () 0 () "DOMSubtreeModifiedListener(const TDocument& d) :" 1092 0 () "DOMSubtreeModifiedListener(const TDocument& d) :" 1092] +[ebrowse-ms "handleEvent" () 1 () " virtual void handleEvent(const" 1202 0 () () 0] +[ebrowse-ms "~DOMSubtreeModifiedListener" () 1 () " virtual ~DOMSubtreeModifiedListener()" 1162 0 () " virtual ~DOMSubtreeModifiedListener()" 1162] +) +() +() +() +() +()() +][ebrowse-ts [ebrowse-cs "TDocument" () 0"TDocument.hh" "class TDocument :" 108"TDocument.hh" ] +()([ebrowse-ms "dirty" () 0 () " DOM::Element dirty;" 971 2 () () 0] +[ebrowse-ms "doc" () 0 () " DOM::Document doc;" 949 2 () () 0] +) +([ebrowse-ms "TDocument" () 0 () " TDocument(void);" 162 0 "TDocument.cc" "TDocument::TDocument() +{" 108] +[ebrowse-ms "create" () 4 () " TNode create(const" 202 0 "TDocument.cc" "TDocument::create(const" 789] +[ebrowse-ms "createC" () 4 () " TNode createC(const" 327 0 "TDocument.cc" "TDocument::createC(const" 1062] +[ebrowse-ms "createG" () 4 () " TNode createG(unsigned" 262 0 () " TNode createG(unsigned" 262] +[ebrowse-ms "createI" () 4 () " TNode createI(const" 461 0 () " TNode createI(const" 461] +[ebrowse-ms "createN" () 4 () " TNode createN(const" 561 0 () " TNode createN(const" 561] +[ebrowse-ms "createO" () 4 () " TNode createO(const" 661 0 () " TNode createO(const" 661] +[ebrowse-ms "createT" () 4 () " TNode createT(const" 384 0 "TDocument.cc" "TDocument::createT(const" 1197] +[ebrowse-ms "dirtyIdNode" () 4 () " TNode dirtyIdNode(void" 872 0 "TDocument.cc" "TDocument::dirtyIdNode()" 2081] +[ebrowse-ms "dirtyNode" () 4 () " TNode dirtyNode(void" 821 0 () " TNode dirtyNode(void" 821] +[ebrowse-ms "handleEvent" () 1 () " virtual void handleEvent(const" 1293 2 "TDocument.cc" "TDocument::handleEvent(const" 2348] +[ebrowse-ms "root" () 0 () " TNode root(void" 758 0 () " TNode root(void" 758] +[ebrowse-ms "serialize" () 4 () " void serialize(const" 904 0 "TDocument.cc" "TDocument::serialize(const" 637] +[ebrowse-ms "~TDocument" () 0 () " ~TDocument()" 179 0 "TDocument.cc" "TDocument::~TDocument()" 460] +) +() +([ebrowse-ms "findCommonAncestor" () 0 () " static DOM::Node findCommonAncestor(const" 1398 2 "TDocument.cc" "TDocument::findCommonAncestor(const" 1560] +[ebrowse-ms "nodeDepth" () 0 () " static unsigned nodeDepth(const" 1341 2 "TDocument.cc" "TDocument::nodeDepth(const" 1362] +) +() +() +()() +])() +() +() +() +() +() +()() +] \ No newline at end of file diff --git a/helm/DEVEL/mathml_editor/src/Makefile.am b/helm/DEVEL/mathml_editor/src/Makefile.am new file mode 100644 index 000000000..f440e528c --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/Makefile.am @@ -0,0 +1,27 @@ + +lib_LTLIBRARIES = libeditex.la + +libeditex_la_LDFLAGS = -version-info @EDITEX_VERSION_INFO@ + +libeditex_la_SOURCES = \ + TPushLexer.cc \ + TPushParser.cc \ + TDictionary.cc \ + TDocument.cc \ + TNode.cc \ + TTokenizer.cc + +pkginclude_HEADERS = \ + APushLexer.hh \ + APushParser.hh \ + TPushLexer.hh \ + TPushParser.hh \ + TTokenizer.hh \ + TDictionary.hh \ + TDocument.hh \ + TNode.hh \ + TListener.hh \ + dom.hh + +INCLUDES = $(GMETADOM_CFLAGS) $(GDOMEXSLT_CFLAGS) + diff --git a/helm/DEVEL/mathml_editor/src/Makefile.in b/helm/DEVEL/mathml_editor/src/Makefile.in new file mode 100644 index 000000000..b614c8f92 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/Makefile.in @@ -0,0 +1,408 @@ +# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AS = @AS@ +CC = @CC@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EDITEX_VERSION_INFO = @EDITEX_VERSION_INFO@ +EXEEXT = @EXEEXT@ +GDOMEXSLT_CFLAGS = @GDOMEXSLT_CFLAGS@ +GDOMEXSLT_LIBS = @GDOMEXSLT_LIBS@ +GMETADOM_CFLAGS = @GMETADOM_CFLAGS@ +GMETADOM_LIBS = @GMETADOM_LIBS@ +GTKMATHVIEW_CFLAGS = @GTKMATHVIEW_CFLAGS@ +GTKMATHVIEW_LIBS = @GTKMATHVIEW_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ + +lib_LTLIBRARIES = libeditex.la + +libeditex_la_LDFLAGS = -version-info @EDITEX_VERSION_INFO@ + +libeditex_la_SOURCES = TPushLexer.cc TPushParser.cc TDictionary.cc TDocument.cc TNode.cc TTokenizer.cc + + +pkginclude_HEADERS = APushLexer.hh APushParser.hh TPushLexer.hh TPushParser.hh TTokenizer.hh TDictionary.hh TDocument.hh TNode.hh TListener.hh dom.hh + + +INCLUDES = $(GMETADOM_CFLAGS) $(GDOMEXSLT_CFLAGS) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + + +DEFS = @DEFS@ -I. -I$(srcdir) -I.. +LIBS = @LIBS@ +libeditex_la_LIBADD = +libeditex_la_OBJECTS = TPushLexer.lo TPushParser.lo TDictionary.lo \ +TDocument.lo TNode.lo TTokenizer.lo +CXXFLAGS = @CXXFLAGS@ +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ +HEADERS = $(pkginclude_HEADERS) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +DEP_FILES = .deps/TDictionary.P .deps/TDocument.P .deps/TNode.P \ +.deps/TPushLexer.P .deps/TPushParser.P .deps/TTokenizer.P +SOURCES = $(libeditex_la_SOURCES) +OBJECTS = $(libeditex_la_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .cc .lo .o .obj .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-libLTLIBRARIES: + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + +distclean-libLTLIBRARIES: + +maintainer-clean-libLTLIBRARIES: + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +# FIXME: We should only use cygpath when building on Windows, +# and only if it is available. +.c.obj: + $(COMPILE) -c `cygpath -w $<` + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + -rm -f *.$(OBJEXT) + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +.s.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.S.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + +maintainer-clean-libtool: + +libeditex.la: $(libeditex_la_OBJECTS) $(libeditex_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libeditex_la_LDFLAGS) $(libeditex_la_OBJECTS) $(libeditex_la_LIBADD) $(LIBS) +.cc.o: + $(CXXCOMPILE) -c $< +.cc.obj: + $(CXXCOMPILE) -c `cygpath -w $<` +.cc.lo: + $(LTCXXCOMPILE) -c $< + +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ + echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ + $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + list='$(pkginclude_HEADERS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = src + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp + +%.o: %.cc + @echo '$(CXXCOMPILE) -c $<'; \ + $(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.cc + @echo '$(LTCXXCOMPILE) -c $<'; \ + $(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-libLTLIBRARIES +install-exec: install-exec-am + +install-data-am: install-pkgincludeHEADERS +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS +uninstall: uninstall-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(pkgincludedir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \ + clean-depend clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-libLTLIBRARIES distclean-compile \ + distclean-libtool distclean-tags distclean-depend \ + distclean-generic clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-libLTLIBRARIES \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \ +clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \ +uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \ +distclean-compile clean-compile maintainer-clean-compile \ +mostlyclean-libtool distclean-libtool clean-libtool \ +maintainer-clean-libtool uninstall-pkgincludeHEADERS \ +install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir mostlyclean-depend \ +distclean-depend clean-depend maintainer-clean-depend info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs \ +mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/helm/DEVEL/mathml_editor/src/Ptr.hh b/helm/DEVEL/mathml_editor/src/Ptr.hh new file mode 100644 index 000000000..9330c96cf --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/Ptr.hh @@ -0,0 +1,53 @@ +// Copyright (C) 2000-2002, Luca Padovani . +// +// This file is part of GtkMathView, a Gtk widget for MathML. +// +// GtkMathView is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// GtkMathView is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with GtkMathView; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// For details, see the GtkMathView World-Wide-Web page, +// http://www.cs.unibo.it/helm/mml-widget, or send a mail to +// + +#ifndef Ptr_hh +#define Ptr_hh + +template +class Ptr +{ +public: + Ptr(P* p = 0) : ptr(p) { if (ptr != 0) ptr->ref(); } + Ptr(const Ptr& p) : ptr(p.ptr) { if (ptr != 0) ptr->ref(); } + ~Ptr() { if (ptr != 0) ptr->unref(); } + + P* operator->() const { assert(ptr != 0); return ptr; } + Ptr& operator=(const Ptr& p) + { + if (ptr == p.ptr) return *this; + if (p.ptr != 0) p.ptr->ref(); + if (ptr != 0) ptr->unref(); + ptr = p.ptr; + return *this; + } + + operator P*() const { return ptr; } + template friend Ptr smart_cast(const Ptr& p) { return Ptr(dynamic_cast(p.ptr)); } + template friend bool is_a(const Ptr& p) { return dynamic_cast(p.ptr) != 0; } + template operator Ptr() const { return Ptr(ptr); } + +private: + P* ptr; +}; + +#endif // Ptr_hh diff --git a/helm/DEVEL/mathml_editor/src/TCharStream.hh b/helm/DEVEL/mathml_editor/src/TCharStream.hh new file mode 100644 index 000000000..47b01ffe7 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TCharStream.hh @@ -0,0 +1,20 @@ + +#ifndef __TCharStream_hh__ +#define __TCharStream_hh__ + +#include "dom.hh" + +class TCharStream +{ +public: + TCharStream(void) { }; + virtual ~TCharStream() { }; + + virtual bool more(void) const = 0; + virtual TChar look(void) const = 0; + virtual TChar next(void) = 0; + + class EmptyStream { }; +}; + +#endif // __TCharStream_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TCharStreamString.hh b/helm/DEVEL/mathml_editor/src/TCharStreamString.hh new file mode 100644 index 000000000..36306272b --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TCharStreamString.hh @@ -0,0 +1,22 @@ + +#ifndef __TCharStreamString_hh__ +#define __TCharStreamString_hh__ + +#include "TCharStream.hh" + +class TCharStreamString : public TCharStream +{ +public: + TCharStreamString(const TString& s) : buffer(s), idx(0) { }; + virtual ~TCharStreamString() { }; + + virtual bool more(void) const { return idx < buffer.length(); }; + virtual TChar look(void) const { if (more()) return buffer[idx]; else throw EmptyStream(); }; + virtual TChar next(void) { if (more()) return buffer[idx++]; else throw EmptyStream(); }; + +private: + unsigned long idx; + TString buffer; +}; + +#endif // __TCharStreamString_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TDictionary.cc b/helm/DEVEL/mathml_editor/src/TDictionary.cc new file mode 100644 index 000000000..303d743d4 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TDictionary.cc @@ -0,0 +1,168 @@ + +#include + +#include "dom.hh" +#include "TDictionary.hh" +#include "TTokenizer.hh" + +static TDictionary::Entry undefinedEntry; + +void +TDictionary::load(const char* uri) +{ + DOM::DOMImplementation di; + + DOM::Document doc = di.createDocumentFromURI(uri); + assert(doc); + + DOM::Element root = doc.get_documentElement(); + assert(root); + + TTokenizer tokenizer; + + for (DOM::Node p = root.get_firstChild(); p; p = p.get_nextSibling()) + if (p.get_nodeType() == DOM::Node::ELEMENT_NODE && p.get_nodeName() == "entry") + { + DOM::Element el = p; + assert(el); + assert(el.hasAttribute("name")); + + std::string name = el.getAttribute("name"); + if (entries.find(name) != entries.end()) + cerr << "WARNING: entry `" << name << "' is being redefined" << endl; + + Entry entry; + + if (el.hasAttribute("class")) + { + std::string cls = el.getAttribute("class"); + if (cls == "o") entry.cls = OPERATOR; + else if (cls == "i") entry.cls = IDENTIFIER; + else if (cls == "n") entry.cls == NUMBER; + else entry.cls = MACRO; + } + else + entry.cls = MACRO; + + if (el.hasAttribute("val")) + { + entry.value = el.getAttribute("val"); + if (entry.cls == MACRO) + cerr << "WARNING: `" << name << "' has a specified value, but is classified as macro" << endl; + } + + if (el.hasAttribute("pattern")) + { + if (entry.cls != MACRO) + cerr << "WARNING: `" << name << "' has a specified pattern, but is not classified as macro" << endl; + + std::string pattern = el.getAttribute("pattern"); + if (pattern == "{}") + entry.leftOpen = entry.rightOpen = 1; + else if (pattern == "{") + entry.leftOpen = 1; + else if (pattern == "}") + entry.rightOpen = 1; + else + entry.pattern = tokenizer.tokenize(pattern); + } + + if (el.hasAttribute("infix")) + { + std::istringstream is(el.getAttribute("infix")); + unsigned infix; + is >> infix; + entry.infix = infix; + if (!el.hasAttribute("prefix")) entry.prefix = infix; + if (!el.hasAttribute("postfix")) entry.postfix = infix; + } + + if (el.hasAttribute("prefix")) + { + std::istringstream is(el.getAttribute("prefix")); + unsigned prefix; + is >> prefix; + entry.prefix = prefix; + if (!el.hasAttribute("infix")) + { + entry.infix = prefix; + if (!el.hasAttribute("postfix")) entry.postfix = prefix; + } + } + + if (el.hasAttribute("postfix")) + { + std::istringstream is(el.getAttribute("postfix")); + unsigned postfix; + is >> postfix; + entry.postfix = postfix; + if (!el.hasAttribute("infix")) + { + entry.infix = postfix; + if (!el.hasAttribute("prefix")) entry.prefix = postfix; + } + } + + if (el.hasAttribute("limits")) + { + std::istringstream is(el.getAttribute("limits")); + unsigned limits; + is >> limits; + entry.limits = limits; + } + + if (el.hasAttribute("embellishment")) + { + std::istringstream is(el.getAttribute("embellishment")); + unsigned embellishment; + is >> embellishment; + entry.embellishment = embellishment; + } + + if (el.hasAttribute("delimiter")) + { + if (entry.cls != OPERATOR && !entry.embellishment) + cerr << "WARNING: `" << name << "' delimiter ignored for non-operator" << endl; + + std::istringstream is(el.getAttribute("delimiter")); + unsigned delimiter; + is >> delimiter; + entry.delimiter = delimiter; + } + + if (el.hasAttribute("table")) + { + if (entry.cls != MACRO) + cerr << "WARNING: `" << name << "' table ignored for non-macro" << endl; + + std::istringstream is(el.getAttribute("table")); + unsigned table; + is >> table; + entry.table = table; + } + + entries[name] = entry; + } +} + +const TDictionary::Entry& +TDictionary::find(const std::string& name) const +{ + Dictionary::const_iterator p = entries.find(name); + if (p != entries.end()) return (*p).second; + else + { + cerr << "ERROR: unknown entry `" << name << "'" << endl; + return undefinedEntry; + } +} + +bool +TDictionary::Entry::paramDelimited(unsigned i) const +{ + assert(i < pattern.size()); + assert(pattern[i].category == TToken::PARAMETER); + // a parameter is delimited if it is NOT the last one + // AND the next argument is not a parameter + return i + 1 < pattern.size() && pattern[i + 1].category != TToken::PARAMETER; +} diff --git a/helm/DEVEL/mathml_editor/src/TDictionary.hh b/helm/DEVEL/mathml_editor/src/TDictionary.hh new file mode 100644 index 000000000..44c020cbe --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TDictionary.hh @@ -0,0 +1,78 @@ + +#ifndef __TDictionary_hh__ +#define __TDictionary_hh__ + +#include +#include +#include + +#include "TToken.hh" + +class TDictionary +{ +public: + TDictionary(void) { }; + ~TDictionary() { }; + + enum Form + { + INFIX, + PREFIX, + POSTFIX + }; + + enum EntryClass + { + UNDEFINED, + MACRO, + OPERATOR, + IDENTIFIER, + NUMBER + }; + + struct Entry + { + Entry(void) + { + cls = UNDEFINED; + infix = prefix = postfix = 0; + delimiter = limits = embellishment = leftOpen = rightOpen = 0; + }; + + std::vector pattern; + std::string value; + + bool defined(void) const { return cls != UNDEFINED; }; + bool hasArguments(void) const { return !pattern.empty(); }; + bool paramDelimited(unsigned) const; + + EntryClass cls; + unsigned infix : 8; + unsigned prefix : 8; + unsigned postfix : 8; + unsigned delimiter : 1; + unsigned limits : 1; + unsigned embellishment : 1; + unsigned leftOpen : 1; + unsigned rightOpen : 1; + unsigned table : 1; + }; + + void load(const char* uri); + const Entry& find(const std::string&) const; + +private: + struct StringHash : public std::unary_function< std::string, size_t > + { size_t operator()(const std::string& s) const { return hash()(s.c_str()); } }; + +#if 0 + struct StringEq : public std::binary_function< std::string, std::string, bool > + { bool operator()(const std::string&, const class String*) const; }; +#endif + + typedef std::hash_map< std::string, Entry, StringHash > Dictionary; + Dictionary entries; +}; + +#endif // __TDictionary_hh__ + diff --git a/helm/DEVEL/mathml_editor/src/TDocument.cc b/helm/DEVEL/mathml_editor/src/TDocument.cc new file mode 100644 index 000000000..4c3bbbaea --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TDocument.cc @@ -0,0 +1,155 @@ + +#include + +#include "globals.hh" +#include "dom.hh" +#include "TDocument.hh" + +TDocument::TDocument() +{ + DOM::DOMImplementation di; + DOM::DocumentType dt; + doc = di.createDocument(TML_NS_URI, "tml:tex", dt); + DOM::Element root = doc.get_documentElement(); + root.setAttributeNS(XMLNS_NS_URI, "xmlns:tml", TML_NS_URI); + assert(root); + + DOM::EventTarget et(doc); + assert(et); + et.addEventListener("DOMSubtreeModified", *this, false); +} + +TDocument::~TDocument() +{ + //DOM::Element root = doc.get_documentElement(); + DOM::EventTarget et(doc); + assert(doc); + et.removeEventListener("DOMSubtreeModified", *this, false); +} + +void +TDocument::serialize(const char* filename) const +{ + DOM::DOMImplementation di; + di.saveDocumentToFile(doc, filename, GDOME_SAVE_LIBXML_INDENT); +} + +TNode +TDocument::create(const std::string& name, unsigned id) const +{ + DOM::Element elem = doc.createElementNS(TML_NS_URI, "tml:" + name); + if (id > 0) + { + ostringstream os; + os << "I" << id; + elem.setAttribute("id", os.str()); + } + return elem; +} + +TNode +TDocument::createC(const std::string& name, unsigned id) const +{ + TNode m = create("c", id); + m["name"] = name; + return m; +} + +TNode +TDocument::createT(const std::string& name, const std::string& text, unsigned id) const +{ + TNode t = create(name, id); + t["val"] = text; + return t; +} + +unsigned +TDocument::nodeDepth(const DOM::Node& node) +{ + DOM::Node n = node; + + unsigned depth = 0; + while (n) + { + depth++; + n = n.get_parentNode(); + } + return depth; +} + +DOM::Node +TDocument::findCommonAncestor(const DOM::Node& node1, const DOM::Node& node2) +{ + DOM::Node n1 = node1; + DOM::Node n2 = node2; + + unsigned d1 = nodeDepth(n1); + unsigned d2 = nodeDepth(n2); + + cout << "finding common ancestor " << d1 << " " << d2 << endl; + + while (d1 < d2) + { + assert(n2); + n2 = n2.get_parentNode(); + d2--; + } + + while (d1 > d2) + { + assert(n1); + n1 = n1.get_parentNode(); + d1--; + } + + while (n1 != n2) + { + assert(n1); + assert(n2); + n1 = n1.get_parentNode(); + n2 = n2.get_parentNode(); + } + + return n1; +} + +DOM::Node +TDocument::findIdNode(const DOM::Node& node) +{ + DOM::Node n = node; + while (n) + { + if (n.get_nodeType() == DOM::Node::ELEMENT_NODE) + { + DOM::Element el = n; + if (el.hasAttribute("id")) return el; + } + n = n.get_parentNode(); + } + + return DOM::Node(0); +} + +void +TDocument::handleEvent(const DOM::Event& ev) +{ + DOM::MutationEvent me(ev); + assert(me); + + if (dirty) + cout << "TDocument::handleEvent DIRTY BEFORE = " << dirty.getAttribute("id") << endl; + else + cout << "TDocument::handleEvent DIRTY BEFORE = (nil)" << endl; + + if (DOM::Node node = me.get_target()) + if (dirty) + dirty = findIdNode(findCommonAncestor(dirty, node)); + else + dirty = findIdNode(node); + else + assert(0); + + cout << "TDocument::handleEvent target = " << DOM::Node(me.get_target()).get_nodeName() << " DIRTY AFTER = " + << dirty.getAttribute("id") << " ME = " << DOM::Node(me.get_target()).get_nodeName() << endl; + +} diff --git a/helm/DEVEL/mathml_editor/src/TDocument.hh b/helm/DEVEL/mathml_editor/src/TDocument.hh new file mode 100644 index 000000000..cf4b7c391 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TDocument.hh @@ -0,0 +1,40 @@ + +#ifndef __TDocument_hh__ +#define __TDocument_hh__ + +#include "dom.hh" +#include "TNode.hh" + +class TDocument : private DOM::EventListener +{ +public: + TDocument(void); + ~TDocument(); + + TNode create(const std::string&, unsigned = 0) const; + TNode createG(unsigned id = 0) const { return create("g", id); }; + TNode createC(const std::string&, unsigned = 0) const; + TNode createT(const std::string&, const std::string&, unsigned = 0) const; + TNode createI(const std::string& text, unsigned id = 0) const { return createT("i", text, id); }; + TNode createN(const std::string& text, unsigned id = 0) const { return createT("n", text, id); }; + TNode createO(const std::string& text, unsigned id = 0) const { return createT("o", text, id); }; + + DOM::Document document(void) const { return doc; }; + + TNode root(void) { return doc.get_documentElement(); }; + TNode dirtyNode(void) const { return dirty; }; + void clearDirty(void) { dirty = DOM::Element(0); }; + + void serialize(const char*) const; + +private: + DOM::Document doc; + DOM::Element dirty; + + virtual void handleEvent(const DOM::Event&); + static unsigned nodeDepth(const DOM::Node&); + static DOM::Node findCommonAncestor(const DOM::Node&, const DOM::Node&); + static DOM::Node findIdNode(const DOM::Node&); +}; + +#endif // __TDocument_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TLexerPull.cc b/helm/DEVEL/mathml_editor/src/TLexerPull.cc new file mode 100644 index 000000000..0eb3a3c5a --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TLexerPull.cc @@ -0,0 +1,35 @@ + +#include "TCharStream.hh" +#include "TCharStreamString.hh" + +TToken +TLexerPull::pop(TCharStream& stream) +{ + if (stream.more()) + { + TChar ch = stream.next(); + if (ch == '\\') + { + if (stream.more()) + { + if (isUnicodeAlpha(stream.look())) + { + TString s; + while (stream.more() && isUnicodeAlpha(stream.look())) + s.push_back(stream.next()); + TToken res(TToken::CONTROL, s); + while (stream.more() && isUnicodeSpace(stream.look())) + stream.next(); + return res; + } + else + return TToken(TToken::CONTROL, TString(1, stream.next())); + } + else + return TToken(TToken::INVALID_CHAR, TString(1, ch)); + } + else return TToken(ch); + } + else return TToken(TToken::END_OF_BUFFER); +} + diff --git a/helm/DEVEL/mathml_editor/src/TLexerPush.cc b/helm/DEVEL/mathml_editor/src/TLexerPush.cc new file mode 100644 index 000000000..6b2acae7c --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TLexerPush.cc @@ -0,0 +1,82 @@ + +#include "TLexerPush.hh" + +TLexerPush::TLexerPush() +{ + state = ACCEPT; +} + +TToken +TLexerPush::pop() +{ + if (tokens.empty()) throw EmptyBuffer(); + else + { + TToken res = tokens.front(); + tokens.pop_front(); + if (tokens.size() == 1 && state == CONTROL) state = ACCEPT; + return res; + } +} + +TToken +TLexerPush::front() const +{ + if (tokens.empty()) throw EmptyBuffer(); + else return tokens.front(); +} + +bool +TLexerPush::empty() const +{ + return tokens.empty(); +} + +bool +TLexerPush::pending() const +{ + return state == ESCAPE; +} + +bool +TLexerPush::ambiguous() const +{ + return tokens.size() == 1 && state == CONTROL; +} + +void +TLexerPush::push(TChar ch) +{ + switch (state) + { + case ACCEPT: + if (ch == '\\') state = ESCAPE; + else tokens.push_back(TToken(ch)); + break; + case ESCAPE: + tokens.push_back(TToken(TToken::CONTROL, std::string(1, ch))); + if (isUnicodeAlpha(ch)) state = CONTROL; + else state = ACCEPT; + break; + case CONTROL: + if (ch == '\\') state = ESCAPE; + else if (isUnicodeAlpha(ch)) + { + assert(!tokens.empty()); + TToken& tok = tokens.back(); + tok.value.push_back(ch); + } + else if (isUnicodeSpace(ch)) state = IGNORE_SPACE; + else + { + tokens.push_back(TToken(ch)); + state = ACCEPT; + } + break; + case IGNORE_SPACE: + if (ch == '\\') state = ESCAPE; + else if (isUnicodeSpace(ch)) ; + else tokens.push_back(TToken(ch)); + break; + } +} diff --git a/helm/DEVEL/mathml_editor/src/TLexerPush.hh b/helm/DEVEL/mathml_editor/src/TLexerPush.hh new file mode 100644 index 000000000..f47def495 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TLexerPush.hh @@ -0,0 +1,31 @@ + +#include + +#include "TToken.hh" + +class TLexerPush +{ +public: + TLexerPush(void); + + void push(TChar); + TToken pop(void); + TToken front(void) const; + bool ambiguous(void) const; + bool pending(void) const; + bool empty(void) const; + + class EmptyBuffer { }; + +private: + enum State + { + ACCEPT, + ESCAPE, + CONTROL, + IGNORE_SPACE + }; + + State state; + std::deque tokens; +}; diff --git a/helm/DEVEL/mathml_editor/src/TListener.hh b/helm/DEVEL/mathml_editor/src/TListener.hh new file mode 100644 index 000000000..db93261e0 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TListener.hh @@ -0,0 +1,11 @@ + +#ifndef __TListener_hh__ +#define __TListener_hh__ + +class TListener +{ +public: + virtual void callback(TDocument&) = 0; +}; + +#endif // __TListener_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TNode.cc b/helm/DEVEL/mathml_editor/src/TNode.cc new file mode 100644 index 000000000..4235f3728 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TNode.cc @@ -0,0 +1,195 @@ + +#include "globals.hh" +#include "TNode.hh" + +TNode +TNode::next() const +{ + assert(node); + DOM::Node p = node.get_nextSibling(); + while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); + return p; +} + +TNode +TNode::nextL() const +{ + assert(node); + if (TNode n = next()) + if (n.isG()) return n.firstL(); + else return n; + else return TNode(); +} + +TNode +TNode::prev() const +{ + assert(node); + DOM::Node p = node.get_previousSibling(); + while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_previousSibling(); + return p; +} + +TNode +TNode::prevL() const +{ + assert(node); + if (TNode n = prev()) + if (n.isG()) return n.lastL(); + else return n; + else return TNode(); +} + +TNode +TNode::last() const +{ + assert(node); + DOM::Node p = node.get_lastChild(); + while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_previousSibling(); + return p; +} + +TNode +TNode::lastL() const +{ + assert(node); + if (TNode n = last()) + if (n.isG()) return n.lastL(); + else return n; + else + return TNode(); +} + +TNode +TNode::first() const +{ + assert(node); + DOM::Node p = node.get_firstChild(); + while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); + return p; +} + +TNode +TNode::firstL() const +{ + assert(node); + if (TNode n = first()) + if (n.isG()) return n.firstL(); + else return n; + else + return TNode(); +} + +TNode +TNode::core() const +{ + assert(node); + // check also if there is a macro embellishment (\not) + if (isSb() || isSp()) return first().core(); + else return *this; +} + +TNode +TNode::parent() const +{ + assert(node); + DOM::Node p = node.get_parentNode(); + assert(!p || p.get_nodeType() == DOM::Node::ELEMENT_NODE); + return p; +} + +unsigned +TNode::size() const +{ + assert(node); + unsigned size = 0; + TNode p = first(); + while (p) + { + p = p.next(); + size++; + } + + return size; +} + +void +TNode::remove() const +{ + assert(node); + DOM::Node parent = node.get_parentNode(); + parent.removeChild(node); +} + +void +TNode::replace(const TNode& newNode) const +{ + assert(node); + DOM::Node parent = node.get_parentNode(); + parent.replaceChild(newNode.node, node); +} + +void +TNode::insert(const TNode& newNode) const +{ + assert(node); + DOM::Node parent = node.get_parentNode(); + parent.insertBefore(newNode.node, node); +} + +void +TNode::append(const TNode& newNode) const +{ + assert(node); + node.appendChild(newNode.node); +} + +void +TNode::append(const TNode& first, const TNode& last) const +{ + assert(node); + assert(first); + assert(last); + + TNode p = first; + while (p != last) + { + TNode next = p.next(); + append(p); + p = next; + } +} + +void +TNode::prepend(const TNode& newNode) const +{ + assert(node); + DOM::Node parent = node.get_parentNode(); + parent.insertBefore(newNode.node, parent.get_firstChild()); +} + +#if 0 +#endif + +TNode +TNode::child(unsigned pos) const +{ + assert(node); + TNode p = first(); + while (p && pos-- > 0) p = p.next(); + return p; +} + +std::string +TNode::get(const std::string& name) const +{ + assert(node); + return node.getAttribute(name); +} + +void +TNode::set(const std::string& name, const std::string& value) const +{ + assert(node); + node.setAttribute(name, value); +} diff --git a/helm/DEVEL/mathml_editor/src/TNode.hh b/helm/DEVEL/mathml_editor/src/TNode.hh new file mode 100644 index 000000000..dde315d36 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TNode.hh @@ -0,0 +1,80 @@ + +#ifndef __TNode_hh__ +#define __TNode_hh__ + +#include "dom.hh" +#include "globals.hh" +#include "TDictionary.hh" + +class TNode +{ +public: + TNode(void) : node(0) { }; + TNode(const DOM::Node& n) : node(n) { }; + TNode(const DOM::Element& elem) : node(elem) { }; + TNode(const TNode& n) : node(n.node) { }; + + TNode next(void) const; + TNode nextL(void) const; + TNode prev(void) const; + TNode prevL(void) const; + TNode core(void) const; + TNode parent(void) const; + TNode first(void) const; + TNode firstL(void) const; + TNode last(void) const; + TNode lastL(void) const; + TNode child(unsigned) const; + unsigned size(void) const; + bool empty(void) const { return !first().node; }; + std::string value(void) const { return (*this)["val"]; }; + + class ProxyAttr + { + public: + ProxyAttr(const DOM::Element& n, const std::string& s) : node(n), name(s) { }; + operator std::string() const { return node.getAttribute(name); }; + ProxyAttr& operator=(const std::string& v) { node.setAttribute(name, v); }; + bool operator==(const std::string& v) const { return node.getAttribute(name) == v; }; + bool operator!=(const std::string& v) const { return node.getAttribute(name) != v; }; + private: + DOM::Element node; + std::string name; + }; + + operator bool() const { return node; }; + DOM::Element element(void) const { return node; }; + bool operator==(const TNode& n) const { return node == n.node; }; + bool operator!=(const TNode& n) const { return node != n.node; }; + TNode operator[](int i) const { return child(i); }; + ProxyAttr operator[](const char* s) const { return ProxyAttr(node, s); }; + + //void advance(const TNode&) const; + void remove(void) const; + void replace(const TNode&) const; + void insert(const TNode&) const; + void append(const TNode&) const; + void append(const TNode&, const TNode&) const; + void prepend(const TNode&) const; + + std::string get(const std::string&) const; + void set(const std::string&, const std::string&) const; + + std::string name(void) const { return node.get_localName(); }; + std::string nameC(void) const { return node.getAttribute("name"); }; + bool hasId(void) const { return node.hasAttribute("id"); }; + bool is(const std::string& s) const { return name() == s; }; + bool isG(void) const { return is("g"); }; + bool isSb(void) const { return is("sb"); }; + bool isSp(void) const { return is("sp"); }; + bool isC(void) const { return is("c"); } + bool isC(const std::string& name) const + { return isC() && node.getAttribute("name") == name; }; + + friend class TDocument; + +private: + DOM::Element node; +}; + +#endif // __TNode_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TObject.hh b/helm/DEVEL/mathml_editor/src/TObject.hh new file mode 100644 index 000000000..c4b4e9e3f --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TObject.hh @@ -0,0 +1,16 @@ + +#ifndef __TObject_hh__ +#define __TObject_hh__ + +class TObject +{ +protected: + TObject(void) { refCounter = 1; }; + virtual ~TObject() { }; + +public: + void ref(coid) const { refCounter++; }; + void unref(void) const { if (--refCounter) delete this; }; +}; + +#endif // __TObject_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TPushLexer.cc b/helm/DEVEL/mathml_editor/src/TPushLexer.cc new file mode 100644 index 000000000..b94387787 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TPushLexer.cc @@ -0,0 +1,117 @@ + +#include "TToken.hh" +#include "TPushLexer.hh" +#include "APushParser.hh" + +TPushLexer::TPushLexer(APushParser& p) : APushLexer(p) +{ + state = ACCEPT; +} + +void +TPushLexer::reset() +{ + buffer.erase(); + state = ACCEPT; +} + +void +TPushLexer::transaction(char ch, State newState) +{ + switch (ch) + { + case '{': parser.push(TToken(TToken::BEGIN)); break; + case '}': parser.push(TToken(TToken::END)); break; + case '$': parser.push(TToken(TToken::SHIFT)); break; + case '&': parser.push(TToken(TToken::ALIGN)); break; + case '\n': + case '\r': parser.push(TToken(TToken::EOL, ch)); break; + case '^': parser.push(TToken(TToken::SUPERSCRIPT)); break; + case '_': parser.push(TToken(TToken::SUBSCRIPT)); break; + case '\t': + case ' ': parser.push(TToken(TToken::SPACE, ch)); break; + case '~': parser.push(TToken(TToken::ACTIVE, ch)); break; + case '%': parser.push(TToken(TToken::COMMENT)); break; + default: + if (isalpha(ch)) parser.push(TToken(TToken::LETTER, ch)); + else if (isdigit(ch)) parser.push(TToken(TToken::DIGIT, ch)); + else parser.push(TToken(TToken::OTHER, ch)); + break; + } + state = newState; +} + +void +TPushLexer::push(char ch) +{ + switch (state) + { + case ACCEPT: + if (ch == '\\') state = ESCAPE; + else if (ch == '#') state = PARAMETER; + else transaction(ch, ACCEPT); + break; + case ESCAPE: + if (isalpha(ch)) + { + buffer.push_back(ch); + state = MACRO; + } + else + { + parser.push(TToken(TToken::CONTROL, ch)); + state = ACCEPT; + } + break; + case MACRO: + if (ch == '\\') + { + parser.push(TToken(TToken::CONTROL, buffer)); + buffer.erase(); + state = ESCAPE; + } + else if (ch == '#') + { + parser.push(TToken(TToken::CONTROL, buffer)); + buffer.erase(); + state = PARAMETER; + } + else if (isalpha(ch)) + buffer.push_back(ch); + else + { + parser.push(TToken(TToken::CONTROL, buffer)); + buffer.erase(); + if (isspace(ch)) state = IGNORE_SPACE; + else transaction(ch, ACCEPT); + } + break; + case IGNORE_SPACE: + if (ch == '\\') state = ESCAPE; + else if (ch == '#') state = PARAMETER; + else if (isspace(ch)) ; + else transaction(ch, ACCEPT); + break; + case PARAMETER: + parser.push(TToken(TToken::PARAMETER, ch)); + state = ACCEPT; + break; + default: + assert(0); + break; + } + + switch (state) + { + case ESCAPE: parser.setCursor("\\"); break; + case MACRO: parser.setCursor("\\" + buffer); break; + case PARAMETER: parser.setCursor("#"); break; + default: parser.setCursor("?"); break; + } +} + +bool +TPushLexer::error() const +{ + return false; +} diff --git a/helm/DEVEL/mathml_editor/src/TPushLexer.hh b/helm/DEVEL/mathml_editor/src/TPushLexer.hh new file mode 100644 index 000000000..ff61561ec --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TPushLexer.hh @@ -0,0 +1,35 @@ + +#ifndef __TPushLexer_hh__ +#define __TPushLexer_hh__ + +#include + +#include "APushLexer.hh" + +class TPushLexer : public APushLexer +{ +public: + TPushLexer(class APushParser&); + virtual ~TPushLexer() { }; + + virtual void push(char); + virtual void reset(void); + virtual bool error(void) const; + +private: + enum State + { + ACCEPT, + ESCAPE, + MACRO, + IGNORE_SPACE, + PARAMETER + }; + + void transaction(char, State); + + State state; + std::string buffer; +}; + +#endif // __TPushLexer_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TPushParser.cc b/helm/DEVEL/mathml_editor/src/TPushParser.cc new file mode 100644 index 000000000..ea82cf379 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TPushParser.cc @@ -0,0 +1,668 @@ + +#include "TPushParser.hh" +#include "TListener.hh" + +TPushParser::TPushParser(const TDictionary& d) : dictionary(d), listener(0) +{ + init(); +} + +TPushParser::TPushParser(const TDictionary& d, TListener& l) : dictionary(d), listener(&l) +{ + init(); +} + +void +TPushParser::init() +{ + nextId = 1; + cursor = doc.create("cursor"); + cursor["id"] = "I0"; + doc.clearDirty(); + doc.root().append(cursor); +} + +TPushParser::~TPushParser() +{ +} + +std::string +TPushParser::PRIME() const +{ + const TDictionary::Entry entry = dictionary.find("prime"); + if (entry.cls == TDictionary::OPERATOR) return entry.value; + else return "?"; +} + +void +TPushParser::do_begin() +{ + TNode parent = cursor.parent(); + if (parent.isC() && dictionary.find(parent.nameC()).table) + { + TNode row = doc.create("row"); + TNode cell = doc.create("cell"); + TNode g = doc.createG(); + row.append(cell); + cell.append(g); + g.append(cursor); + parent.append(row); + } + else + { + TNode g = doc.createG(nextId++); + cursor.replace(g); + g.append(cursor); + } +} + +void +TPushParser::do_end() +{ + TNode parent = cursor.parent(); + if (parent && parent.isG() && parent.hasId()) + { + // normal closing brace for an explicitly open group + cursor.remove(); + advance(parent); + } + else if (parent && parent.isG() && parent.parent() && parent.parent().is("cell")) + { + // closing brace for a structure in which & or \cr have been used + TNode row = parent.parent().parent(); + assert(row && row.is("row")); + TNode table = row.parent(); + assert(table); + advance(table); + } + else if (parent && parent.isG() && !parent.hasId() && parent.parent()) + { + // closing brace for a right-open macro (like \over) + cursor.remove(); + advance(parent.parent()); + } + else + { + // ??? + assert(0); + } +} + +void +TPushParser::do_shift() +{ + TNode parent = cursor.parent(); + assert(parent); + if (parent.is("tex")) + { + TNode math = doc.create("math", nextId++); + TNode g = doc.createG(); + cursor.replace(math); + math.append(g); + g.append(cursor); + } + else if (parent.isG() && !parent.hasId() && parent.parent() && parent.parent().is("math")) + { + if (cursor.prev()) + { + // there is something before the cursor, hence this is the + // closing math shift + if (parent.parent()["display"] != "1") + { + // one math shift is enough to close it + cursor.remove(); + } + else + { + // we need two closing math shifts + parent.parent().append(cursor); + } + } + else if (parent.parent()["display"] != "1") + { + // there is nothing before the cursor, and the math is not + // in display mode, so this must be a double math shift + parent.parent()["display"] = "1"; + } + else + { + parent.parent().append(cursor); + } + } + else if (parent.is("math")) + { + cursor.remove(); + } + else + { + cerr << "ERROR: math shift" << endl; + } +} + +void +TPushParser::do_align() +{ + TNode parent = cursor.parent(); + if (parent && parent.isG() && parent.hasId()) + { + // alignment tab used for the first time inside a group + TNode row = doc.create("row"); + TNode cell = doc.create("cell"); + TNode g = doc.createG(); + row.append(cell); + cell.append(g); + g.append(parent.first(), cursor); + } + else if (parent && parent.isG() && parent.parent().is("cell")) + { + // alignment tab used within a cell + TNode oldCell = parent.parent(); + assert(oldCell && oldCell.is("cell")); + TNode row = oldCell.parent(); + assert(row && row.is("row")); + TNode cell = doc.create("cell"); + if (oldCell.next()) oldCell.next().insert(cell); + else row.append(cell); + TNode g = doc.createG(); + cell.append(g); + g.append(cursor); + } + else + { + cerr << "alignment tab used outside matrix" << endl; + } +} + +void +TPushParser::do_eol() +{ + //if (cursor.parent()) cursor.remove(); +} + +void +TPushParser::do_parameter(const std::string& p) +{ + // ??? +} + +void +TPushParser::do_subscript() +{ + TNode parent = cursor.parent(); + if (parent.isG()) + { + TNode prev = cursor.prev(); + if (!prev) + { + TNode elem = doc.create("sb", nextId++); + TNode g = doc.createG(); + cursor.replace(elem); + elem.append(g); + elem.append(cursor); + } + else + { + TNode elem = doc.create("sb", nextId++); + prev.replace(elem); + elem.append(prev); + elem.append(cursor); + } + } + else if (parent.isSb() && cursor == parent[1]) + { + if (parent["under"] == "1") cerr << "already under" << endl; + else parent["under"] = "1"; + } +} + +void +TPushParser::do_superscript() +{ + TNode parent = cursor.parent(); + if (parent.isG()) + { + TNode prev = cursor.prev(); + if (!prev) + { + TNode elem = doc.create("sp", nextId++); + TNode g = doc.createG(); + cursor.replace(elem); + elem.append(g); + elem.append(cursor); + } + else + { + TNode elem = doc.create("sp", nextId++); + prev.replace(elem); + elem.append(prev); + elem.append(cursor); + } + } + else if (parent.isSp() && cursor == parent[1]) + { + if (parent["over"] == "1") cerr << "already over" << endl; + else parent["over"] = "1"; + } +} + +void +TPushParser::do_space(const std::string&) +{ + // ? may be used to distinguish tokens in some mode? +} + +void +TPushParser::do_letter(const std::string& s) +{ + TNode parent = cursor.parent(); + TNode elem = doc.createI(s, nextId++); + cursor.replace(elem); + advance(elem); +} + +void +TPushParser::do_digit(const std::string& s) +{ + TNode parent = cursor.parent(); + TNode prev = cursor.prev(); + if (prev && parent.isG() && prev.is("n")) + { + TNode elem = doc.createN(prev.value() + s, nextId++); + prev.replace(elem); + } + else + { + TNode elem = doc.createN(s, nextId++); + cursor.replace(elem); + advance(elem); + } +} + +bool +TPushParser::isPrimes(const TNode& node) const +{ + assert(node); + return node.isG() && node.last() && node.last().is("o") && node.last()["val"] == PRIME(); +} + +void +TPushParser::do_apostrophe() +{ + if (cursor.parent() && cursor.parent().isG()) + { + if (TNode prev = cursor.prev()) + { + if (prev.isSp() && prev[1] && isPrimes(prev[1])) + prev[1].append(doc.createO(PRIME(), nextId++)); + else if (prev.isSb() && prev[0] && + prev[0].isSp() && prev[0][1] && + isPrimes(prev[0][1])) + prev[0][1].append(doc.createO(PRIME(), nextId++)); + else + { + TNode elem = doc.create("sp"); + TNode g = doc.createG(); + prev.replace(elem); + elem.append(prev); + elem.append(g); + g.append(doc.createO(PRIME(), nextId++)); + } + } + else + { + // error ??? + } + } + else + { + // error ?? + } +} + +void +TPushParser::do_other(const std::string& s) +{ + switch (s[0]) + { + case '\'': + do_apostrophe(); + break; + default: + cout << "TPushParser::do_other " << s << endl; + cout << "DOCUMENT: " << static_cast(cursor.element().get_ownerDocument()) << endl; + TNode elem = doc.createT("o", s, nextId++); + cursor.replace(elem); + advance(elem); + break; + } +} + +void +TPushParser::do_active(const std::string&) +{ + // ??? space? +} + +void +TPushParser::do_comment() +{ + // ??? +} + +void +TPushParser::do_cr() +{ + TNode parent = cursor.parent(); + if (parent && parent.isG() && + parent.parent() && parent.parent().is("cell") && + parent.parent().parent() && parent.parent().parent().is("row")) + { + TNode oldRow = parent.parent().parent(); + assert(oldRow); + TNode table = oldRow.parent(); + assert(table); + TNode row = doc.create("row"); + TNode cell = doc.create("cell"); + TNode g = doc.createG(); + if (oldRow.next()) oldRow.next().insert(row); + else table.append(row); + row.append(cell); + cell.append(g); + g.append(cursor); + } +} + +void +TPushParser::do_control(const std::string& name) +{ + if (name == "cr") do_cr(); + else + { + TNode parent = cursor.parent(); + const TDictionary::Entry& entry = dictionary.find(name); + switch (entry.cls) + { + case TDictionary::IDENTIFIER: + { + TNode t = doc.createI(entry.value, nextId++); + t["name"] = name; + cursor.replace(t); + advance(t); + } + break; + case TDictionary::OPERATOR: + { + TNode t = doc.createO(entry.value, nextId++); + t["name"] = name; + cursor.replace(t); + advance(t); + } + break; + case TDictionary::NUMBER: + { + TNode t = doc.createN(entry.value, nextId++); + t["name"] = name; + cursor.replace(t); + advance(t); + } + break; + case TDictionary::MACRO: + { + TNode m = doc.createC(name, nextId++); + cursor.replace(m); + if (entry.leftOpen && entry.rightOpen) + { + assert(entry.pattern.empty()); + assert(parent.isG()); + TNode g1 = doc.createG(); + g1["left-open"] = "1"; + g1.append(parent.first(), m); + m.append(g1); + TNode g2 = doc.createG(); + g2.append(cursor); + m.append(g2); + frames.push(Frame(entry)); + } + else if (entry.leftOpen) + { + assert(parent.isG()); + TNode g = doc.createG(); + g["left-open"] = "1"; + g.append(parent.first(), m); + m.append(g); + advance(m); + } + else if (entry.rightOpen) + { + assert(entry.pattern.empty()); + assert(parent.isG()); + TNode g = doc.createG(); + g.append(cursor); + m.append(g); + frames.push(Frame(entry)); + } + else if (!entry.pattern.empty()) + { + if (parent.isG()) + { + frames.push(Frame(entry)); + if (entry.paramDelimited(0)) + { + TNode g = doc.createG(); + m.append(g); + g.append(cursor); + } + else + m.append(cursor); + } + else + { + // error, but we could handle this very easily + cerr << "error, but we could handle this easily" << endl; + } + } + else advance(m); + } + break; + case TDictionary::UNDEFINED: + { + cerr << "ERROR: using undefined macro `" << name << "'" << endl; + TNode m = doc.createC(name, nextId++); + cursor.replace(m); + advance(m); + } + break; + default: + assert(0); + } + } +} + +void +TPushParser::process(const TToken& token) +{ + switch (token.category) + { + case TToken::BEGIN: do_begin(); break; + case TToken::END: do_end(); break; + case TToken::SHIFT: do_shift(); break; + case TToken::ALIGN: do_align(); break; + case TToken::EOL: do_eol(); break; + case TToken::PARAMETER: do_parameter(token.value); break; + case TToken::SUPERSCRIPT: do_superscript(); break; + case TToken::SUBSCRIPT: do_subscript(); break; + case TToken::SPACE: do_space(token.value); break; + case TToken::LETTER: do_letter(token.value); break; + case TToken::DIGIT: do_digit(token.value); break; + case TToken::OTHER: do_other(token.value); break; + case TToken::ACTIVE: do_active(token.value); break; + case TToken::COMMENT: do_comment(); break; + case TToken::CONTROL: do_control(token.value); break; + } +} + +void +TPushParser::push(const TToken& token) +{ + cerr << "TPushParser::push " << token.value << " (cat: " << token.category << ")" << endl; + TNode parent = cursor.parent(); + // If the cursor has no parent then it is detached from the editing + // tree, which means this token will be ignored + if (parent) + // If the parent is a phantom group and the grand-parent is a + // control sequence, there are two cases: + // a. we are parsing a delimited argument of a entry + // b. we are parsing a side of a right- or left-open entry + if (parent.isG() && !parent.hasId() && parent.parent().isC()) + { + // There must be an open frame, for the grand-parent is a control sequence + assert(!frames.empty()); + Frame& frame = frames.top(); + if (!frame.entry.pattern.empty()) + { + // The entry pattern is not empty. By our conventions this means + // the entry cannot be open at either end, hence we are parsing + // a delimited argument + assert(frame.pos + 1 < frame.entry.pattern.size()); + assert(frame.entry.pattern[frame.pos + 1].category != TToken::PARAMETER); + if (frame.entry.pattern[frame.pos + 1] == token) + { + // The token matches with the delimiter of the argument. + cursor.remove(); + + // If the phantom group has just one child, it is not necessary + // and can be removed. However, this would complicate + // all the code that follows, so given it is a rare case we + // leave it alone + // if (parent.size() == 1) parent.replace(parent[0]); + + // Eat both the argument and its delimiter + frame.pos += 2; + if (frame.pos == frame.entry.pattern.size()) + { + // This token has completed the entry + advance(parent.parent()); + } + else if (frame.entry.paramDelimited(frame.pos)) + { + // For the next is a delimited argument we have to place + // a suitable phantom group with the cursor inside + TNode g = doc.createG(); + parent.parent().append(g); + g.append(cursor); + } + else + parent.parent().append(cursor); + } + else + { + // Delimiter mismatch. Since we are parsing a delimited + // argument we just process the token + process(token); + } + } + else + { + // The entry pattern is empty, hence we are parsing a right-open + // entry. What happens if we actually are in the left side? + // This could happen only when re-editing an entered expression + // We'll see... + assert(frame.entry.rightOpen); + process(token); + } + } + else if (parent.isC()) + { + // We are parsing a non-delimited argument entry + // or a fixed token + Frame& frame = frames.top(); + assert(frame.pos < frame.entry.pattern.size()); + if (frame.entry.pattern[frame.pos].category == TToken::PARAMETER) + { + // As by the TeX parsing rules of undelimited parameters, + // empty spaces are ignored + if (token.category != TToken::SPACE) + { + // We need to increase the frame position here, becase inside + // process the function advance will be called. At that point + // it will be important for the parser to know that the entry + // has been completed in order to place the cursor correctly + // in the next position + frame.pos++; + process(token); + } + } + else if (frame.entry.pattern[frame.pos] == token) + { + // The token has been accepted + frame.pos++; + if (frame.pos < frame.entry.pattern.size() && + frame.entry.paramDelimited(frame.pos)) + { + // If the next is a delimited argument we have to place + // the phantom group with the cursor inside + TNode g = doc.createG(); + cursor.replace(g); + g.append(cursor); + } + else + advance(parent); + } + else + { + // There is a mismatch. Emit an error and ignore the token? + cerr << "ERROR: token ignored: " << token.value << " (cat: " << token.category << ")" << endl; + } + + } + else + process(token); + else + { + cout << "ignored token" << endl; + } + + if (listener) listener->callback(doc); +} + +void +TPushParser::advance(const TNode& node) +{ + assert(node); + TNode parent = node.parent(); + if (!parent) + ; // nothing to do, the cursor is not in the document any more + else if (parent.isG()) + { + TNode next = node.next(); + if (next) next.insert(cursor); + else parent.append(cursor); + } + else if (parent.isC()) + { + if (node.next()) + ; // cursor removed + else + { + Frame& frame = frames.top(); + if (frame.pos == frame.entry.pattern.size()) + { + frames.pop(); + advance(parent); + } + else + parent.append(cursor); + } + } + else if (parent.is("math")) + ; // we are done + else + advance(parent); +} + +void +TPushParser::setCursor(const std::string& c) +{ + cursor["val"] = c; + if (listener) listener->callback(doc); +} diff --git a/helm/DEVEL/mathml_editor/src/TPushParser.hh b/helm/DEVEL/mathml_editor/src/TPushParser.hh new file mode 100644 index 000000000..bb659c3d2 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TPushParser.hh @@ -0,0 +1,70 @@ + +#ifndef __TPushParser_hh__ +#define __TPushParser_hh__ + +#include +#include +#include "TToken.hh" +#include "APushParser.hh" +#include "TDictionary.hh" +#include "TDocument.hh" +#include "TNode.hh" + +class TPushParser : public APushParser +{ +public: + TPushParser(const class TDictionary&); + TPushParser(const class TDictionary&, class TListener&); + virtual ~TPushParser(); + + virtual void push(const TToken&); + virtual void setCursor(const std::string&); + + TDocument document(void) const { return doc; } + +private: + void init(void); + + std::string PRIME(void) const; + bool isPrimes(const TNode&) const; + + void do_begin(void); + void do_end(void); + void do_shift(void); + void do_align(void); + void do_eol(void); + void do_parameter(const std::string&); + void do_superscript(void); + void do_subscript(void); + void do_space(const std::string&); + void do_letter(const std::string&); + void do_digit(const std::string&); + void do_other(const std::string&); + void do_active(const std::string&); + void do_comment(void); + void do_control(const std::string&); + + void do_cr(void); + void do_apostrophe(void); + void advance(const TNode&); + + void process(const TToken&); + + struct Frame + { + Frame(const TDictionary::Entry& e) : entry(e), pos(0) { }; + const TDictionary::Entry& entry; + unsigned pos; + }; + + std::stack frames; + std::list buffer; + unsigned nextId; + TDocument doc; + TNode cursor; + + const class TDictionary& dictionary; + class TListener* listener; +}; + +#endif // __TPushParser_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TToken.hh b/helm/DEVEL/mathml_editor/src/TToken.hh new file mode 100644 index 000000000..1cb6ca15e --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TToken.hh @@ -0,0 +1,38 @@ + +#ifndef __TToken_hh__ +#define __TToken_hh__ + +#include + +struct TToken +{ + enum TCat + { + BEGIN, + END, + SHIFT, + ALIGN, + EOL, + PARAMETER, + SUPERSCRIPT, + SUBSCRIPT, + SPACE, + LETTER, + DIGIT, + OTHER, + ACTIVE, + COMMENT, + CONTROL + }; + + TToken(TCat c) : category(c) { }; + TToken(TCat c, char ch) : category(c), value(std::string(1, ch)) { }; + TToken(TCat c, const std::string& v) : category(c), value(v) { }; + + bool operator==(const TToken& token) const { return category == token.category && value == token.value; }; + + TCat category; + std::string value; +}; + +#endif // __TToken_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TTokenizer.cc b/helm/DEVEL/mathml_editor/src/TTokenizer.cc new file mode 100644 index 000000000..cf74c1d4f --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TTokenizer.cc @@ -0,0 +1,31 @@ + +#include + +#include "TTokenizer.hh" +#include "TPushLexer.hh" + +std::vector +TTokenizer::tokenize(const std::string& s) +{ + TPushLexer lexer(*this); + + tokens.clear(); + for (std::string::const_iterator p = s.begin(); + p != s.end(); + p++) + lexer.push(*p); + //lexer.push('\n'); + + std::vector res; + res.reserve(tokens.size()); + copy(tokens.begin(), tokens.end(), back_inserter(res)); + + return res; +} + +void +TTokenizer::push(const TToken& token) +{ + tokens.push_back(token); +} + diff --git a/helm/DEVEL/mathml_editor/src/TTokenizer.hh b/helm/DEVEL/mathml_editor/src/TTokenizer.hh new file mode 100644 index 000000000..d0a54bf28 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TTokenizer.hh @@ -0,0 +1,26 @@ + +#ifndef __TTokenizer_hh__ +#define __TTokenizer_hh__ + +#include +#include +#include + +#include "TToken.hh" +#include "APushParser.hh" + +class TTokenizer : private APushParser +{ +public: + TTokenizer(void) { }; + + std::vector tokenize(const std::string&); + +private: + virtual void push(const TToken&); + virtual void setCursor(const std::string&) { }; + + std::list tokens; +}; + +#endif // __TTokenizer_hh__ diff --git a/helm/DEVEL/mathml_editor/src/dom.hh b/helm/DEVEL/mathml_editor/src/dom.hh new file mode 100644 index 000000000..f2c42dba0 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/dom.hh @@ -0,0 +1,27 @@ + +#ifndef __dom_hh__ +#define __dom_hh__ + +#include + +namespace DOM = GdomeSmartDOM; + +typedef DOM::Char32 TChar; +typedef DOM::UCS4String TString; + +inline bool isUnicodeSpace(TChar ch) +{ + return ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r';; +} + +inline bool isUnicodeAlpha(TChar ch) +{ + return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); +} + +inline bool isUnicodeDigit(TChar ch) +{ + return (ch >= '0' && ch <= '9'); +} + +#endif // __dom_hh__ diff --git a/helm/DEVEL/mathml_editor/src/domnav.cc b/helm/DEVEL/mathml_editor/src/domnav.cc new file mode 100644 index 000000000..720aeb952 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/domnav.cc @@ -0,0 +1,115 @@ + +DOM::Element +getRightmostChild(const DOM::Element& p) +{ + if (p) + { + if (DOM::Element last = g.get_lastChild()) + if (last.get_nodeName() == "g" && last.get_firstChild()) + return getRightmostChild(last); + else + return last; + else + return 0; + } + else + return 0; +} + +DOM::Element +prevLinearSibling(const DOM::Element& p) +{ + if (p) + { + DOM::Element prev = p.get_prevSibling(); + if (!prev) return 0; + else if (prev.get_nodeName() != "g" && prev.get_firstChild()) return prev; + else return prevLinearSibling(prev.get_lastChild()); + } + else + return 0; +} + +DOM::Element +getCore(const DOM::Element& p) +{ + if (p) + { + if (p.get_nodeName() == "sb" || p.get_nodeName() == "sp") + return getCore(p.get_firstChild()); + else return p; + } + else + return 0; +} + +void +replace(const DOM::Element& p0, const DOM::Element& p1) +{ + if (DOM::Element parent = p0.get_parentNode()) + parent.replaceChild(p0, p1); +} + +bool +isInferred(const DOM::Element& p) +{ + if (p) return p.hasAttribute("id"); + else return false; +} + +bool +isMacro(const DOM::Element& p, const TString& s) +{ + return p && p.get_nodeName() == "m" && p.getAttribute("name") == s; +} + +bool +isGroup(const DOM::Element& p) +{ + return p && p.get_nodeName() == "g"; +} + +bool +isSb(const DOM::Element& p) +{ + return p && p.get_nodeName() == "sb"; +} + +bool +isSp(const DOM::Element& p) +{ + return p && p.get_nodeName() == "sp"; +} + +bool +isPrimes(const DOM::Element& p) +{ + return isGroup(p) && isMacro(p.get_lastChild, "prime"); +} + +bool +isOperator(const DOM::Element& p) +{ + if (DOM::Element core = getCore(p)) + return dictionary.isOperator(core.get_nodeName()); + else + return false; +} + +bool +isDelimiter(const DOM::Element& p) +{ + if (DOM::Element core = getCore(p)) + return dictionary.isDelimiter(core.get_nodeName()); + else + return false; +} + +bool +isFunction(const DOM::Element& p) +{ + if (DOM::Element core = getCore(p)) + return dictionary.isFunction(core.get_nodeName()); + else + return false; +} diff --git a/helm/DEVEL/mathml_editor/src/globals.hh b/helm/DEVEL/mathml_editor/src/globals.hh new file mode 100644 index 000000000..2f26a9159 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/globals.hh @@ -0,0 +1,8 @@ + +#ifndef __globals_hh__ +#define __globals_hh__ + +#define TML_NS_URI "http://helm.cs.unibo.it/2002/TML" +#define XMLNS_NS_URI "http://www.w3.org/2000/xmlns/" + +#endif // __globals_hh__ diff --git a/helm/DEVEL/mathml_editor/src/special.cc b/helm/DEVEL/mathml_editor/src/special.cc new file mode 100644 index 000000000..d794ffd81 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/special.cc @@ -0,0 +1,62 @@ + +#include + +#include "dom.hh" +#include "globals.hh" +#include "TNode.hh" +#include "TToken.hh" + +void finishG(const TNode&); + +void +do_bgroup(const TNode& cursor) +{ + TNode parent = cursor.parent(); + if (parent.isM("matrix") || parent.isM("pmatrix") || + parent.isM("bordermatrix") || parent.isM("cases")) + { + TNode row = cursor.create("row"); + TNode cell = cursor.create("cell"); + TNode g = cursor.createG(); + row.append(cell); + cell.append(g); + g.append(cursor); + parent.append(row); + } + else + { + TNode g = cursor.createG(); + cursor.replace(g); + g.append(cursor); + } +} + + + + +void +do_apostrophe(const TNode& cursor) +{ +} + +void +do_control(const TNode& cursor, const std::string& name) +{ +} + +void +do_other(const TNode& cursor, const std::string& s) +{ + switch (s[0]) + { + case '\'': do_apostrophe(cursor); break; + default: + if (isUnicodeDigit(s[0])) do_number(cursor, s); + else do_control(cursor, s); + } +} + +void +dispatch(const TNode& cursor, const TToken& token) +{ + diff --git a/helm/DEVEL/mathml_editor/src/texlexer.cc b/helm/DEVEL/mathml_editor/src/texlexer.cc new file mode 100644 index 000000000..f06273214 --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/texlexer.cc @@ -0,0 +1,26 @@ + +#include "dom.hh" +#include "TLexerPush.hh" + +main() +{ + std::string s; + while (getline(std::cin, s)) + { + TLexerPush lexer; + for (unsigned long i = 0; i < s.length(); i++) + { + lexer.push(s[i]); + cout << "pending: " << lexer.pending() + << " amb: " << lexer.ambiguous(); + if (!lexer.empty()) + { + TToken tok = lexer.front(); + DOM::GdomeString v(tok.value); + cout << " cat: " << tok.category << " value: " << v << " length: " << v.length(); + if (!lexer.ambiguous()) lexer.pop(); + } + cout << endl; + } + } +} diff --git a/helm/DEVEL/mathml_editor/src/tokenizer.hh b/helm/DEVEL/mathml_editor/src/tokenizer.hh new file mode 100644 index 000000000..06731b91f --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/tokenizer.hh @@ -0,0 +1,10 @@ + +#ifndef __tokenzier_hh__ +#define __tokenzier_hh__ + +#include +#include + +std::vector tokenize(const std::string&); + +#endif // __tokenzier_hh__ diff --git a/helm/DEVEL/mathml_editor/test/Makefile.am b/helm/DEVEL/mathml_editor/test/Makefile.am new file mode 100644 index 000000000..24ebd7c42 --- /dev/null +++ b/helm/DEVEL/mathml_editor/test/Makefile.am @@ -0,0 +1,21 @@ + +noinst_PROGRAMS = test editor + +test_SOURCES = main.cc +editor_SOURCES = editor.cc guiGTK.c aux.cc + +LDADDS = \ + $(GMETADOM_LIBS) \ + $(GDOMEXSLT_LIBS) \ + $(GTKMATHVIEW_LIBS) \ + $(top_builddir)/src/.libs/libeditex.a + +test_LDADD = $(LDADDS) +editor_LDADD = $(LDADDS) + +INCLUDES = \ + $(GMETADOM_CFLAGS) \ + $(GDOMEXSLT_CFLAGS) \ + $(GTKMATHVIEW_CFLAGS) \ + -I$(top_srcdir)/src + diff --git a/helm/DEVEL/mathml_editor/test/Makefile.in b/helm/DEVEL/mathml_editor/test/Makefile.in new file mode 100644 index 000000000..3c69a2a1c --- /dev/null +++ b/helm/DEVEL/mathml_editor/test/Makefile.in @@ -0,0 +1,387 @@ +# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AS = @AS@ +CC = @CC@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EDITEX_VERSION_INFO = @EDITEX_VERSION_INFO@ +EXEEXT = @EXEEXT@ +GDOMEXSLT_CFLAGS = @GDOMEXSLT_CFLAGS@ +GDOMEXSLT_LIBS = @GDOMEXSLT_LIBS@ +GMETADOM_CFLAGS = @GMETADOM_CFLAGS@ +GMETADOM_LIBS = @GMETADOM_LIBS@ +GTKMATHVIEW_CFLAGS = @GTKMATHVIEW_CFLAGS@ +GTKMATHVIEW_LIBS = @GTKMATHVIEW_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ + +noinst_PROGRAMS = test editor + +test_SOURCES = main.cc +editor_SOURCES = editor.cc guiGTK.c aux.cc + +LDADDS = $(GMETADOM_LIBS) $(GDOMEXSLT_LIBS) $(GTKMATHVIEW_LIBS) $(top_builddir)/src/.libs/libeditex.a + + +test_LDADD = $(LDADDS) +editor_LDADD = $(LDADDS) + +INCLUDES = $(GMETADOM_CFLAGS) $(GDOMEXSLT_CFLAGS) $(GTKMATHVIEW_CFLAGS) -I$(top_srcdir)/src + +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +noinst_PROGRAMS = test$(EXEEXT) editor$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir) -I.. +LIBS = @LIBS@ +test_OBJECTS = main.$(OBJEXT) +test_DEPENDENCIES = $(top_builddir)/src/.libs/libeditex.a +test_LDFLAGS = +editor_OBJECTS = editor.$(OBJEXT) guiGTK.$(OBJEXT) aux.$(OBJEXT) +editor_DEPENDENCIES = $(top_builddir)/src/.libs/libeditex.a +editor_LDFLAGS = +CXXFLAGS = @CXXFLAGS@ +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +DEP_FILES = .deps/aux.P .deps/editor.P .deps/guiGTK.P .deps/main.P +SOURCES = $(test_SOURCES) $(editor_SOURCES) +OBJECTS = $(test_OBJECTS) $(editor_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .cc .lo .o .obj .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +mostlyclean-noinstPROGRAMS: + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + +distclean-noinstPROGRAMS: + +maintainer-clean-noinstPROGRAMS: + +# FIXME: We should only use cygpath when building on Windows, +# and only if it is available. +.c.obj: + $(COMPILE) -c `cygpath -w $<` + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + -rm -f *.$(OBJEXT) + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +.s.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.S.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + +maintainer-clean-libtool: + +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(CXXLINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +editor$(EXEEXT): $(editor_OBJECTS) $(editor_DEPENDENCIES) + @rm -f editor$(EXEEXT) + $(CXXLINK) $(editor_LDFLAGS) $(editor_OBJECTS) $(editor_LDADD) $(LIBS) +.cc.o: + $(CXXCOMPILE) -c $< +.cc.obj: + $(CXXCOMPILE) -c `cygpath -w $<` +.cc.lo: + $(LTCXXCOMPILE) -c $< + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = test + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu test/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp + +%.o: %.cc + @echo '$(CXXCOMPILE) -c $<'; \ + $(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.cc + @echo '$(LTCXXCOMPILE) -c $<'; \ + $(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \ + mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ + mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \ + clean-depend clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-noinstPROGRAMS distclean-compile \ + distclean-libtool distclean-tags distclean-depend \ + distclean-generic clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-noinstPROGRAMS \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-tags maintainer-clean-depend \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ +clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile mostlyclean-libtool distclean-libtool \ +clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir \ +mostlyclean-depend distclean-depend clean-depend \ +maintainer-clean-depend info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/helm/DEVEL/mathml_editor/test/aux.cc b/helm/DEVEL/mathml_editor/test/aux.cc new file mode 100644 index 000000000..61f9e5d79 --- /dev/null +++ b/helm/DEVEL/mathml_editor/test/aux.cc @@ -0,0 +1,227 @@ +// Copyright (C) 2000-2002, Luca Padovani . +// +// This file is part of GtkMathView, a Gtk widget for MathML. +// +// GtkMathView is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// GtkMathView is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with GtkMathView; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// For details, see the GtkMathView World-Wide-Web page, +// http://www.cs.unibo.it/helm/mml-widget, or send a mail to +// + +#include +#include + +#include +#include +#include + +//#include "gmetadom.hh" + +namespace DOM = GdomeSmartDOM; + +static unsigned +getDepth(const DOM::Element& elem) +{ + unsigned length = 0; + DOM::Element p = elem; + + while (p) + { + p = p.get_parentNode(); + length++; + } + + return length; +} + +static DOM::Element +findCommonAncestor(const DOM::Element& first, const DOM::Element& last) +{ + assert(first); + assert(last); + + DOM::Element p(first); + DOM::Element q(last); + + if (p != q) + { + unsigned pDepth = getDepth(p); + unsigned qDepth = getDepth(q); + + while (p && pDepth > qDepth) + { + p = p.get_parentNode(); + pDepth--; + } + + while (q && qDepth > pDepth) + { + q = q.get_parentNode(); + qDepth--; + } + + assert(pDepth == qDepth); + + while (p && q && p != q) + { + p = p.get_parentNode(); + q = q.get_parentNode(); + } + } + + return p; +} + +static void +findCommonSiblings(const DOM::Element& first, const DOM::Element& last, + DOM::Element& firstS, DOM::Element& lastS) +{ + assert(first); + assert(last); + + DOM::Element p(first); + DOM::Element q(last); + + if (p != q) + { + unsigned pDepth = getDepth(p); + unsigned qDepth = getDepth(q); + + while (p && pDepth > qDepth) + { + p = p.get_parentNode(); + pDepth--; + } + + while (q && qDepth > pDepth) + { + q = q.get_parentNode(); + qDepth--; + } + + assert(pDepth == qDepth); + + while (p && q && p.get_parentNode() != q.get_parentNode()) + { + p = p.get_parentNode(); + q = q.get_parentNode(); + } + } + + firstS = p; + lastS = q; +} + +static DOM::Node +leftmostChild(const DOM::Node& node) +{ + if (!node) return node; + + DOM::Node firstChild = node.get_firstChild(); + if (!firstChild) return node; + + return leftmostChild(firstChild); +} + +static DOM::Node +rightmostChild(const DOM::Node& node) +{ + if (!node) return node; + + DOM::Node lastChild = node.get_lastChild(); + if (!lastChild) return node; + + return rightmostChild(lastChild); +} + +static DOM::Node +leftSibling(const DOM::Node& node) +{ + DOM::Node p = node; + + if (!p) return p; + + while (p.get_parentNode() && p.get_parentNode().get_firstChild() == p) + p = p.get_parentNode(); + + if (!p.get_parentNode()) return DOM::Node(0); + + DOM::Node prevSibling = p.get_previousSibling(); + assert(prevSibling); + + return rightmostChild(prevSibling); +} + +static DOM::Node +rightSibling(const DOM::Node& node) +{ + DOM::Node p = node; + + if (!p) return p; + + DOM::Node firstChild = p.get_firstChild(); + if (firstChild) return firstChild; + + while (p.get_parentNode() && p.get_parentNode().get_lastChild() == p) + p = p.get_parentNode(); + + if (!p.get_parentNode()) return DOM::Node(0); + + DOM::Node nextSibling = p.get_nextSibling(); + assert(nextSibling); + + return leftmostChild(nextSibling); +} + +extern "C" GdomeElement* +find_common_ancestor(GdomeElement* first, GdomeElement* last) +{ + DOM::Element p(first); + DOM::Element q(last); + if (GdomeElement* res = gdome_cast_el(findCommonAncestor(p, q).gdome_object())) + { + GdomeException exc = 0; + gdome_el_ref(res, &exc); + assert(exc == 0); + return res; + } + else + return 0; +} + +extern "C" void +find_common_siblings(GdomeElement* first, GdomeElement* last, + GdomeElement** firstS, GdomeElement** lastS) +{ + DOM::Element fs(0); + DOM::Element ls(0); + + findCommonSiblings(DOM::Element(first), DOM::Element(last), fs, ls); + + if (firstS != NULL) *firstS = gdome_cast_el(fs.gdome_object()); + if (lastS != NULL) *lastS = gdome_cast_el(ls.gdome_object()); +} + +extern "C" void +delete_element(GdomeElement* elem) +{ + DOM::Element p(elem); + + DOM::Element parent = p.get_parentNode(); + assert(parent); + + parent.removeChild(p); +} + diff --git a/helm/DEVEL/mathml_editor/test/editor.cc b/helm/DEVEL/mathml_editor/test/editor.cc new file mode 100644 index 000000000..265d35e53 --- /dev/null +++ b/helm/DEVEL/mathml_editor/test/editor.cc @@ -0,0 +1,214 @@ + +#include "TNode.hh" +#include "TToken.hh" +#include "TDocument.hh" +#include "TPushParser.hh" +#include "TPushLexer.hh" +#include "TDictionary.hh" +#include "TListener.hh" +#include + +#include "guiGTK.h" + +class MyResultListener : public DOM::EventListener +{ +public: + MyResultListener(const std::string& s) : msg(s) { }; + + virtual void handleEvent(const DOM::Event&); + +private: + const std::string msg; +}; + +void +MyResultListener::handleEvent(const DOM::Event& ev) +{ + cout << "RECEIVED EVENT: " << ev.get_type() << " " << msg << " "; + const DOM::MutationEvent& me(ev); + assert(me); + const DOM::Node target(me.get_target()); + assert(target); + cout << "target = " << target.get_nodeName() << " " << target.get_nodeType() << endl; +} + +MyResultListener l1("?"); + +TDictionary dictionary; +DOM::Document result; + +extern void *parseMathMLFile(char *); + +bool +subst(const DOM::Element& e1, const DOM::GdomeString& id, const DOM::Element& e2) +{ + assert(e1); + assert(e2); + if (e1.getAttribute("xref") == id) + { + DOM::Node parent = e1.get_parentNode(); + assert(parent); + DOM::Node next = e1.get_nextSibling(); + parent.removeChild(e1); + parent.insertBefore(e2, next); + //parent.replaceChild(e2, e1); + return true; + } + else + { + DOM::Node p = e1.get_firstChild(); + while (p) + { + while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); + if (p) + if (subst(p, id, e2)) return true; + else p = p.get_nextSibling(); + } + return false; + } +} + +class MyListener : public TListener +{ +public: + MyListener(const DOM::XSLTStylesheet& s) : style(s) { }; + + void callback(TDocument& doc) + { + cout << "listener callback " << static_cast(doc.document()) << endl; + TNode dirty = doc.dirtyNode(); + if (dirty) + { + cout << "recreating subtree with id " << std::string(dirty["id"]) << endl; + std::vector< std::pair > dirtyId; + if (result) + dirtyId.push_back(std::make_pair(DOM::GdomeString("id"), + DOM::GdomeString("'" + std::string(dirty["id"]) + "'"))); + DOM::Document res = style.apply(doc.document(), dirtyId); + assert(res); + style.save(doc.document(), stdout); + style.save(res, stdout); + if (result) + { + cout << "REPLACING A FRAGMENT OF THE DOCUMENT" << endl; + DOM::Element root = res.get_documentElement(); + assert(root); + assert(root.hasAttribute("xref")); + + if (result.get_documentElement().getAttribute("xref") == root.getAttribute("xref")) + { + cout << "REPLACING ROOT" << endl; + // the following remove should not be necessary + // according to the spec replaceChild should work just fine + result.removeChild(result.get_documentElement()); + result.appendChild(result.importNode(root, true)); + } + else + try + { + cout << "before" << endl; + bool ok = subst(result.get_documentElement(), root.getAttribute("xref"), result.importNode(root, true)); + assert(ok); + cout << "after" << endl; + } + catch (DOM::DOMException e) + { + cout << "!!!!!!!!!!!!!!!! EXCEPTION " << e.code << " " << e.msg << endl; + assert(0); + } + } + else + { + cout << "SETTING THE DOCUMENT FOR THE FIRST TIME" << endl; + result = res; + + DOM::EventTarget et(result); + assert(et); + cout << "SETTING EVENT LISTENER (EDITOR) ON " << static_cast(result) << endl; + et.addEventListener("DOMSubtreeModified", l1, true); + + if (GUI_load_document(gdome_cast_doc(static_cast(result))) < 0) + cerr << "c'e' stato un errore" << endl; + } + + doc.clearDirty(); + } + } + +private: + const DOM::XSLTStylesheet& style; +}; + +struct Context +{ + Context(const std::string& s, TPushLexer& l) : buffer(s), i(0), lexer(l) { }; + + void send(void) + { + if (i < buffer.length()) + { + cout << "document is " << static_cast(result) << endl; + lexer.push(buffer[i++]); + } + else lexer.push('\n'); + } + + std::string buffer; + unsigned i; + TPushLexer& lexer; +}; + +extern "C" int +edit_timeout(Context* data) +{ + assert(data); + GUI_freeze(); + data->send(); + GUI_thaw(); + return 1; +} + +extern "C" void +push_char(Context* context, gchar ch) +{ + GUI_freeze(); + cout << "*** SENDING " << ch << endl; + context->lexer.push(ch); + GUI_thaw(); +} + +main(int argc, char* argv[]) +{ + cout << "loading the dictionary..." << endl; + dictionary.load("dictionary.xml"); + + cout << "loading the stylesheet..." << endl; + DOM::DOMImplementation di; + DOM::Document docStyle = di.createDocumentFromURI("./xsl/tml-mmlp.xsl"); + DOM::XSLTStylesheet style(docStyle); + + MyListener listener(style); + TPushParser parser(dictionary, listener); + TPushLexer lexer(parser); + +#if 0 + lexer.push('$'); + lexer.push(' '); + assert(result); +#endif + +#if 0 + DOM::Document doc = parser.document().document(); + std::vector< std::pair > np; + result = style.apply(doc, np); + style.save(result, stdout); +#endif + + Context context("", lexer); + + cout << "passing context " << &context << endl; + GUI_init(&argc, &argv, "mathmleditor", 500, 600, &context); + GUI_run(); + GUI_uninit(); + GUI_unload_document(); +} diff --git a/helm/DEVEL/mathml_editor/test/guiGTK.c b/helm/DEVEL/mathml_editor/test/guiGTK.c new file mode 100644 index 000000000..53bbd7410 --- /dev/null +++ b/helm/DEVEL/mathml_editor/test/guiGTK.c @@ -0,0 +1,686 @@ + +#include +#include +#include + +#include "gtkmathview.h" +#include "guiGTK.h" + +#define XLINK_NS_URI "http://www.w3.org/1999/xlink" + +static GtkWidget* window; +static GtkWidget* main_area; +static GtkWidget* scrolled_area; +static GtkWidget* status_bar; +static GtkMenuItem* anti_aliasing_item; +static GtkMenuItem* transparency_item; +static GtkMenuItem* font_size_item; +static GdkCursor* normal_cursor; +static GdkCursor* link_cursor; + +static gchar* doc_name = NULL; +static GdomeElement* root_selected = NULL; +static GdomeElement* first_selected = NULL; +static GdomeElement* last_selected = NULL; +static GdomeElement* cursor = NULL; +static gboolean selecting = FALSE; +static gboolean button_pressed = FALSE; + +static guint statusbar_context; + +static guint edit_timeout_id; +static GdomeElement* cursor_ptr = NULL; +static gboolean cursor_active = FALSE; + +static void create_widget_set(gpointer); +static GtkWidget* get_main_menu(void); +static void options_selection_mode(GtkWidget*, guint); +static void options_font_size(GtkWidget*, guint); +static void options_verbosity(GtkWidget*, guint); +static void options_anti_aliasing(GtkWidget*, gpointer); +static void options_transparency(GtkWidget*, gpointer); +static void edit_delete_selection(GtkWidget*, gpointer); +static void edit_select_parent(GtkWidget*, gpointer); +static void help_about(GtkWidget*, gpointer); + +extern int edit_timeout(gpointer); +extern void push_char(gpointer, gchar); + +static GtkItemFactoryEntry menu_items[] = { + { "/_File", NULL, NULL, 0, "" }, + { "/File/_Quit", "Q", gtk_main_quit, 0, NULL }, + + { "/_Edit", NULL, NULL, 0, "" }, + { "/Edit/Delete Selection", NULL, edit_delete_selection, 0, NULL }, + { "/Edit/Select Parent", NULL, edit_select_parent, 0, NULL }, + + { "/_Options", NULL, NULL, 0, "" }, + { "/Options/_Selection Mode", NULL, NULL, 0, "" }, + { "/Options/Selection Mode/_Structure", NULL, options_selection_mode, 0, "" }, + { "/Options/Selection Mode/_Linear", NULL, options_selection_mode, 1, "/Options/Selection Mode/Structure" }, + { "/Options/Default _Font Size", NULL, NULL, 0, "" }, + { "/Options/Default Font Size/8pt", NULL, options_font_size, 8, "" }, + { "/Options/Default Font Size/10pt", NULL, options_font_size, 10, "/Options/Default Font Size/8pt" }, + { "/Options/Default Font Size/12pt", NULL, options_font_size, 12, "/Options/Default Font Size/8pt" }, + { "/Options/Default Font Size/14pt", NULL, options_font_size, 14, "/Options/Default Font Size/8pt" }, + { "/Options/Default Font Size/18pt", NULL, options_font_size, 18, "/Options/Default Font Size/8pt" }, + { "/Options/Default Font Size/24pt", NULL, options_font_size, 24, "/Options/Default Font Size/8pt" }, + { "/Options/Default Font Size/48pt", NULL, options_font_size, 48, "/Options/Default Font Size/8pt" }, + { "/Options/Default Font Size/72pt", NULL, options_font_size, 72, "/Options/Default Font Size/8pt" }, + { "/Options/Verbosity", NULL, NULL, 0, "" }, + { "/Options/Verbosity/_Errors", NULL, options_verbosity, 0, "" }, + { "/Options/Verbosity/_Warnings", NULL, options_verbosity, 1, "/Options/Verbosity/Errors" }, + { "/Options/Verbosity/_Info", NULL, options_verbosity, 2, "/Options/Verbosity/Errors" }, + { "/Options/Verbosity/_Debug", NULL, options_verbosity, 3, "/Options/Verbosity/Errors" }, + { "/Options/sep1", NULL, NULL, 0, "" }, + { "/Options/_Anti Aliasing", NULL, options_anti_aliasing, 0, "" }, + { "/Options/_Transparency", NULL, options_transparency, 0, "" }, + + { "/_Help" , NULL, NULL, 0, "" }, + { "/Help/About...", NULL, help_about, 0, NULL } +}; + +static void +quick_message(const char* msg) +{ + GtkWidget* dialog; + GtkWidget* label; + GtkWidget* okay_button; + + /* Create the widgets */ + + dialog = gtk_dialog_new(); + label = gtk_label_new (msg); + okay_button = gtk_button_new_with_label("OK"); + + gtk_widget_set_usize(dialog, 300, 100); + + /* Ensure that the dialog box is destroyed when the user clicks ok. */ + + gtk_signal_connect_object (GTK_OBJECT (okay_button), "clicked", + GTK_SIGNAL_FUNC (gtk_widget_destroy), dialog); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), + okay_button); + + /* Add the label, and show everything we've added to the dialog. */ + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); + gtk_widget_show_all (dialog); +} + +static void +load_error_msg(const char* name) +{ + char* msg = g_strdup_printf("Could not load\n`%s'", name); + quick_message(msg); + g_free(msg); +} + +static void +cursor_off() +{ + if (cursor_active) + { + cursor_active = FALSE; + if (cursor_ptr != NULL && + gtk_math_view_is_selected(main_area, cursor_ptr)) + gtk_math_view_reset_selection(main_area, cursor_ptr); + } +} + +static void +cursor_on() +{ + if (!cursor_active) + { + cursor_active = FALSE; + if (cursor_ptr != NULL && + !gtk_math_view_is_selected(main_area, cursor_ptr)) + gtk_math_view_set_selection(main_area, cursor_ptr); + cursor_active = TRUE; + } +} + +void +GUI_init(int* argc, char*** argv, char* title, guint width, guint height, gpointer context) +{ + gtk_init(argc, argv); + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(window), title); + gtk_window_set_default_size(GTK_WINDOW(window), width, height); + gtk_signal_connect(GTK_OBJECT(window), "delete_event", (GtkSignalFunc) gtk_main_quit, NULL); + create_widget_set(context); + + gtk_widget_show(window); + + normal_cursor = gdk_cursor_new(GDK_TOP_LEFT_ARROW); + link_cursor = gdk_cursor_new(GDK_HAND2); + + /*edit_timeout_id = gtk_timeout_add(400, edit_timeout, context);*/ +} + +void +GUI_uninit() +{ + gtk_timeout_remove(edit_timeout_id); +} + +int +GUI_load_document(GdomeDocument* doc) +{ + GtkMathView* math_view; + + g_return_val_if_fail(doc != NULL, -1); + g_return_val_if_fail(main_area != NULL, -1); + g_return_val_if_fail(GTK_IS_MATH_VIEW(main_area), -1); + + math_view = GTK_MATH_VIEW(main_area); + + if (!gtk_math_view_load_doc(math_view, doc)) return -1; + + return 0; +} + +int +GUI_load_uri(const char* uri) +{ + GtkMathView* math_view; + + g_return_val_if_fail(uri != NULL, -1); + g_return_val_if_fail(main_area != NULL, -1); + g_return_val_if_fail(GTK_IS_MATH_VIEW(main_area), -1); + + math_view = GTK_MATH_VIEW(main_area); + + if (!gtk_math_view_load_uri(math_view, uri)) return -1; + + return 0; +} + +void +GUI_freeze() +{ + gtk_math_view_freeze(GTK_MATH_VIEW(main_area)); +} + +void +GUI_thaw() +{ + gtk_math_view_thaw(GTK_MATH_VIEW(main_area)); +} + +void +GUI_unload_document() +{ + GtkMathView* math_view; + + g_return_if_fail(main_area != NULL); + g_return_if_fail(GTK_IS_MATH_VIEW(main_area)); + + math_view = GTK_MATH_VIEW(main_area); + + gtk_math_view_unload(math_view); + + if (doc_name != NULL) g_free(doc_name); + doc_name = NULL; + + gtk_statusbar_pop(GTK_STATUSBAR(status_bar), statusbar_context); + gtk_statusbar_push(GTK_STATUSBAR(status_bar), statusbar_context, ""); +} + +void +GUI_run() +{ + gtk_main(); +} + +static void +options_selection_mode(GtkWidget* widget, guint mode) +{ +} + +static void +options_font_size(GtkWidget* widget, guint size) +{ + GtkMathView* math_view; + + g_return_if_fail(main_area != NULL); + g_return_if_fail(GTK_IS_MATH_VIEW(main_area)); + + math_view = GTK_MATH_VIEW(main_area); + + gtk_math_view_set_font_size(math_view, size); +} + +static void +options_anti_aliasing(GtkWidget* widget, gpointer data) +{ + gboolean aa = gtk_math_view_get_anti_aliasing(GTK_MATH_VIEW(main_area)); + gtk_math_view_set_anti_aliasing(GTK_MATH_VIEW(main_area), !aa); +} + +static void +options_transparency(GtkWidget* widget, gpointer data) +{ + gboolean t = gtk_math_view_get_transparency(GTK_MATH_VIEW(main_area)); + gtk_math_view_set_transparency(GTK_MATH_VIEW(main_area), !t); +} + +static void +options_verbosity(GtkWidget* widget, guint level) +{ + gtk_math_view_set_log_verbosity(GTK_MATH_VIEW(main_area), level); +} + +static void +edit_delete_selection(GtkWidget* widget, gpointer data) +{ + if (root_selected != NULL) + { + GdomeException exc; + gtk_math_view_freeze(GTK_MATH_VIEW(main_area)); + printf("about to remove element %p\n", root_selected); + delete_element(root_selected); + gdome_el_unref(root_selected, &exc); + g_assert(exc == 0); + root_selected = NULL; + gtk_math_view_thaw(GTK_MATH_VIEW(main_area)); + } +} + +static void +edit_select_parent(GtkWidget* widget, gpointer data) +{ + if (root_selected != NULL) + { + GdomeException exc = 0; + GdomeElement* parent = gdome_cast_el(gdome_n_parentNode(root_selected, &exc)); + g_assert(exc == 0); + gdome_el_unref(root_selected, &exc); + g_assert(exc == 0); + root_selected = parent; + gtk_math_view_set_selection(GTK_MATH_VIEW(main_area), root_selected); + } +} + +static void +help_about(GtkWidget* widget, gpointer data) +{ + GtkWidget* dialog; + GtkWidget* label; + GtkWidget* ok; + + dialog = gtk_dialog_new(); + label = gtk_label_new("\n MathML Viewer \n Copyright (C) 2000-2002 Luca Padovani \n"); + ok = gtk_button_new_with_label("Close"); + + gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", + GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) dialog); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), + ok); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); + + gtk_widget_show_all (dialog); +} + +#if 0 +#if defined(HAVE_GMETADOM) +static void +element_changed(GtkMathView* math_view, GdomeElement* node) +{ + GdomeException exc; + GdomeDOMString* name; + GdomeDOMString* ns_uri; + + g_return_if_fail(math_view != NULL); + g_return_if_fail(GTK_IS_MATH_VIEW(math_view)); + + name = gdome_str_mkref("href"); + ns_uri = gdome_str_mkref(XLINK_NS_URI); + + while (node != NULL && !gdome_el_hasAttributeNS(node, ns_uri, name, &exc)) + node = gdome_cast_el(gdome_el_parentNode(node, &exc)); + + if (node != NULL && gdome_el_hasAttributeNS(node, ns_uri, name, &exc)) + gdk_window_set_cursor(GTK_WIDGET(math_view)->window, link_cursor); + else + gdk_window_set_cursor(GTK_WIDGET(math_view)->window, normal_cursor); + + gdome_str_unref(name); + gdome_str_unref(ns_uri); +} +#endif + +static void +#if defined(HAVE_GMETADOM) +action_changed(GtkMathView* math_view, GdomeElement* node) +#endif +{ + g_return_if_fail(math_view != NULL); + g_return_if_fail(GTK_IS_MATH_VIEW(math_view)); +} + +static void +#if defined(HAVE_GMETADOM) +selection_changed(GtkMathView* math_view, GdomeElement* node) +#endif +{ + g_return_if_fail(math_view != NULL); + g_return_if_fail(GTK_IS_MATH_VIEW(math_view)); + gtk_math_view_set_selection(math_view, node); + + cursor_off(); + cursor_ptr = node; + cursor_on(); +} + +#if defined(HAVE_GMETADOM) +static void +clicked(GtkMathView* math_view, gpointer user_data) +{ + GdomeException exc; + GdomeDOMString* name; + GdomeDOMString* ns_uri; + GdomeElement* p; + + g_return_if_fail(math_view != NULL); + + name = gdome_str_mkref("href"); + ns_uri = gdome_str_mkref(XLINK_NS_URI); + + p = gtk_math_view_get_element(math_view); + while (p != NULL && !gdome_el_hasAttributeNS(p, ns_uri, name, &exc)) + p = gdome_cast_el(gdome_el_parentNode(p, &exc)); + + if (p != NULL) { + GdomeDOMString* href = gdome_el_getAttributeNS(p, ns_uri, name, &exc); + g_assert(href != NULL); + + GUI_load_document(href->str); + gdome_str_unref(href); + } else if (gtk_math_view_get_action(math_view) != NULL) + gtk_math_view_action_toggle(math_view); +} +#endif +#endif + +static gint +button_press_event(GtkWidget* widget, + GdkEventButton* event, + GtkMathView* math_view) +{ + g_return_val_if_fail(event != NULL, FALSE); + g_return_val_if_fail(math_view != NULL, FALSE); + + if (event->button == 1) + { + GdomeException exc; + + cursor_off(); + + if (root_selected != NULL) + { + gtk_math_view_reset_selection(math_view, root_selected); + gdome_el_unref(root_selected, &exc); + g_assert(exc == 0); + root_selected = NULL; + } + + if (first_selected != NULL) + { + gdome_el_unref(first_selected, &exc); + g_assert(exc == 0); + } + + if (last_selected != NULL) + { + gdome_el_unref(last_selected, &exc); + g_assert(exc == 0); + last_selected = NULL; + } + + first_selected = gtk_math_view_get_element_at(math_view, event->x, event->y); + button_pressed = TRUE; + selecting = FALSE; + } + + return FALSE; +} + +static gint +motion_notify_event(GtkWidget* widget, + GdkEventMotion* event, + GtkMathView* math_view) +{ + g_return_val_if_fail(event != NULL, FALSE); + g_return_val_if_fail(math_view != NULL, FALSE); + + if (button_pressed && first_selected != NULL) + { + GdomeException exc; + GdomeElement* el = gtk_math_view_get_element_at(math_view, event->x, event->y); + GdomeElement* root; + + selecting = TRUE; + + if (el != NULL && el != last_selected) + { + if (last_selected != NULL) + { + gdome_el_unref(last_selected, &exc); + g_assert(exc == 0); + } + + last_selected = el; + } + + if (last_selected != NULL) + { + root = find_common_ancestor(first_selected, last_selected); + g_assert(root != NULL); + + if (root != root_selected) + { + gtk_math_view_freeze(math_view); + if (root_selected != NULL) + { + gtk_math_view_reset_selection(math_view, root_selected); + gdome_el_unref(root_selected, &exc); + g_assert(exc == 0); + } + root_selected = root; + gtk_math_view_set_selection(math_view, root_selected); + gtk_math_view_thaw(math_view); + } + else + { + gdome_el_unref(root, &exc); + g_assert(exc == 0); + } + } + } + + return FALSE; +} + +static gint +button_release_event(GtkWidget* widget, + GdkEventButton* event, + GtkMathView* math_view) +{ + g_return_val_if_fail(event != NULL, FALSE); + g_return_val_if_fail(math_view != NULL, FALSE); + + if (event->button == 1) + { + if (!selecting) + { + cursor_ptr = first_selected; + cursor_on(); + } + + button_pressed = FALSE; + selecting = FALSE; + } + + return FALSE; +} + +static gboolean +key_press_event(gpointer context, + GdkEventKey* event, + GtkWidget* widget) +{ + g_return_val_if_fail(widget != NULL, FALSE); + g_return_val_if_fail(event != NULL, FALSE); + g_return_val_if_fail(context != NULL, FALSE); + + if (event->type != GDK_KEY_PRESS) return FALSE; + + switch (event->keyval) { + case GDK_Up: + case GDK_KP_Up: + break; + case GDK_Down: + case GDK_KP_Down: + break; + case GDK_Left: + case GDK_KP_Left: + break; + case GDK_Right: + case GDK_KP_Right: + break; + case GDK_Page_Up: + case GDK_KP_Page_Up: + break; + case GDK_Page_Down: + case GDK_KP_Page_Down: + break; + case GDK_Home: + case GDK_KP_Home: + break; + case GDK_End: + case GDK_KP_End: + break; + default: + if (event->keyval < 0x80) push_char(context, event->keyval); + return FALSE; + } + + return TRUE; +} + +static void +create_widget_set(gpointer context) +{ + GtkWidget* main_vbox; + GtkWidget* menu_bar; + + main_vbox = gtk_vbox_new(FALSE, 1); + gtk_container_border_width(GTK_CONTAINER(main_vbox), 1); + gtk_container_add(GTK_CONTAINER(window), main_vbox); + gtk_widget_show(main_vbox); + + menu_bar = get_main_menu(); + gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar, FALSE, TRUE, 0); + gtk_widget_show(menu_bar); + + main_area = gtk_math_view_new(NULL, NULL); + gtk_widget_show(main_area); + + //gtk_math_view_set_log_verbosity(GTK_MATH_VIEW(main_area), 3); + +#if 0 + gtk_signal_connect_object (GTK_OBJECT (main_area), + "selection_changed", GTK_SIGNAL_FUNC (selection_changed), + (gpointer) main_area); + + gtk_signal_connect_object (GTK_OBJECT (main_area), + "element_changed", GTK_SIGNAL_FUNC (element_changed), + (gpointer) main_area); + + gtk_signal_connect_object (GTK_OBJECT (main_area), + "action_changed", GTK_SIGNAL_FUNC (action_changed), + (gpointer) main_area); + + gtk_signal_connect_object (GTK_OBJECT (main_area), + "clicked", GTK_SIGNAL_FUNC(clicked), + (gpointer) main_area); +#endif + + gtk_signal_connect_object (GTK_OBJECT (main_area), + "button_press_event", GTK_SIGNAL_FUNC(button_press_event), + (gpointer) main_area); + + gtk_signal_connect_object (GTK_OBJECT (main_area), + "button_release_event", GTK_SIGNAL_FUNC(button_release_event), + (gpointer) main_area); + + gtk_signal_connect_object (GTK_OBJECT (main_area), + "motion_notify_event", GTK_SIGNAL_FUNC(motion_notify_event), + (gpointer) main_area); + + gtk_signal_connect_object (GTK_OBJECT(window), + "key_press_event", GTK_SIGNAL_FUNC(key_press_event), + context); + + gtk_widget_add_events(GTK_WIDGET(main_area), + GDK_BUTTON_PRESS_MASK + | GDK_BUTTON_RELEASE_MASK + | GDK_POINTER_MOTION_MASK + | GDK_KEY_PRESS_MASK); + + scrolled_area = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_area), + GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); + + gtk_widget_show(scrolled_area); + gtk_container_add(GTK_CONTAINER(scrolled_area), main_area); + gtk_box_pack_start(GTK_BOX(main_vbox), scrolled_area, TRUE, TRUE, 0); + + status_bar = gtk_statusbar_new(); + gtk_widget_show(status_bar); + gtk_box_pack_start(GTK_BOX(main_vbox), status_bar, FALSE, TRUE, 0); + statusbar_context = gtk_statusbar_get_context_id(GTK_STATUSBAR(status_bar), "filename"); + + gtk_widget_show(main_vbox); + + if (gtk_math_view_get_anti_aliasing(GTK_MATH_VIEW(main_area))) + gtk_menu_item_activate(anti_aliasing_item); + + gtk_menu_item_activate(font_size_item); +} + +GtkWidget* +get_main_menu() +{ + GtkItemFactory* item_factory; + GtkAccelGroup* accel_group; + GtkWidget* menu_item; + + gint nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); + + accel_group = gtk_accel_group_new(); + + item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "
", accel_group); + + gtk_item_factory_create_items(item_factory, nmenu_items, menu_items, NULL); + + gtk_window_add_accel_group(GTK_WINDOW(window), accel_group); + + menu_item = gtk_item_factory_get_widget(item_factory, "/Options/Anti Aliasing"); + anti_aliasing_item = GTK_MENU_ITEM(menu_item); + + menu_item = gtk_item_factory_get_widget(item_factory, "/Options/Transparency"); + transparency_item = GTK_MENU_ITEM(menu_item); + + /* !!!BEWARE!!! the default font size must be kept aligned with the definition + * in math-engine-configuration.xml + */ + menu_item = gtk_item_factory_get_widget(item_factory, "/Options/Default Font Size/12pt"); + font_size_item = GTK_MENU_ITEM(menu_item); + + return gtk_item_factory_get_widget(item_factory, "
"); +} diff --git a/helm/DEVEL/mathml_editor/test/guiGTK.h b/helm/DEVEL/mathml_editor/test/guiGTK.h new file mode 100644 index 000000000..71475541c --- /dev/null +++ b/helm/DEVEL/mathml_editor/test/guiGTK.h @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2000, Luca Padovani . + * + * This file is part of GtkMathView, a Gtk widget for MathML. + * + * GtkMathView is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * GtkMathView is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GtkMathView; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * For details, see the GtkMathView World-Wide-Web page, + * http://cs.unibo.it/~lpadovan/mml-widget, or send a mail to + * + */ + +#ifndef guiGTK_h +#define guiGTK_h + +#include + +#include "gtkmathview.h" + +#ifdef __cplusplus +extern "C" { +#endif + + /* initGUI: some initialization stuff, creates the main window, sets it with a title */ + void GUI_init(int *, char ***, char *, guint, guint, gpointer); + void GUI_uninit(void); + + int GUI_load_document(GdomeDocument*); + int GUI_load_uri(const char*); + void GUI_unload_document(void); + void GUI_dump_entities(void); + + /* main: this is the main event loop, to be called when the program is ready to run */ + void GUI_run(void); + + void GUI_freeze(void); + void GUI_thaw(void); + + void GUI_set_font_manager(FontManagerId); + +#ifdef __cplusplus +} +#endif + +#endif /* guiGTK_h */ diff --git a/helm/DEVEL/mathml_editor/test/main.cc b/helm/DEVEL/mathml_editor/test/main.cc new file mode 100644 index 000000000..3122d529b --- /dev/null +++ b/helm/DEVEL/mathml_editor/test/main.cc @@ -0,0 +1,158 @@ + +#include "TNode.hh" +#include "TToken.hh" +#include "TDocument.hh" +#include "TPushParser.hh" +#include "TPushLexer.hh" +#include "TDictionary.hh" +#include "TListener.hh" +#include + +TDictionary dictionary; +DOM::Document result; + +bool +subst(const DOM::Element& e1, const DOM::GdomeString& id, const DOM::Element& e2) +{ + assert(e1); + assert(e2); + if (e1.getAttribute("xref") == id) + { + DOM::Node parent = e1.get_parentNode(); + assert(parent); + parent.replaceChild(e2, e1); + return true; + } + else + { + DOM::Node p = e1.get_firstChild(); + while (p) + { + while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); + if (p) + if (subst(p, id, e2)) return true; + else p = p.get_nextSibling(); + } + return false; + } +} + +#if 0 +bool +subst(const DOM::Node& parent, const DOM::GdomeString& id, const DOM::Element& newElem) +{ + assert(parent); + assert(newElem); + + DOM::Node p = parent.get_firstChild(); + while (p) + { + while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); + if (p) + { + DOM::Element el = p; + assert(el); + if (el.getAttribute("xref") == id) + { + parent.replaceChild(el, newElem); + return true; + } + else if (subst(el, id, newElem)) + return true; + else + p = p.get_nextSibling(); + } + } + + return false; +} +#endif + +class MyListener : public TListener +{ +public: + MyListener(const DOM::XSLTStylesheet& s) : style(s) { }; + + void callback(TDocument& doc) + { + TNode dirty = doc.dirtyNode(); + if (dirty) + { + cout << "recreating subtree with id " << std::string(dirty["id"]) << endl; + std::vector< std::pair > dirtyId; + if (result) + dirtyId.push_back(std::make_pair(DOM::GdomeString("id"), + DOM::GdomeString("'" + std::string(dirty["id"]) + "'"))); + DOM::Document res = style.apply(doc.document(), dirtyId); + assert(res); + style.save(res, stdout); + if (result) + { + DOM::Element root = res.get_documentElement(); + assert(root); + assert(root.hasAttribute("xref")); + + if (result.get_documentElement().getAttribute("xref") == root.getAttribute("xref")) + { + // the following remove should not be necessary + // according to the spec replaceChild should work just fine + result.removeChild(result.get_documentElement()); + result.appendChild(result.importNode(root, true)); + } + else + try + { + cout << "before" << endl; + bool ok = subst(result.get_documentElement(), root.getAttribute("xref"), result.importNode(root, true)); + assert(ok); + cout << "after" << endl; + } + catch (DOM::DOMException e) + { + cerr << "exception " << e.code << " " << e.msg << endl; + assert(0); + } + } + else + result = res; + + doc.clearDirty(); + } + } + +private: + const DOM::XSLTStylesheet& style; +}; + +main(int argc, char* argv[]) +{ + if (argc != 2) + { + cerr << "specify a string, please" << endl; + return -1; + } + + cout << "loading the dictionary..." << endl; + dictionary.load("dictionary.xml"); + + cout << "loading the stylesheet..." << endl; + DOM::DOMImplementation di; + DOM::Document docStyle = di.createDocumentFromURI("./xsl/tml-mmlp.xsl"); + DOM::XSLTStylesheet style(docStyle); + + MyListener listener(style); + TPushParser parser(dictionary, listener); + TPushLexer lexer(parser); + + std::string s = argv[1]; + for (unsigned long i = 0; i < s.length(); i++) + lexer.push(s[i]); + lexer.push('\n'); + + cout << "finished" << endl; + di.saveDocumentToFile(result, "result.xml", GDOME_SAVE_LIBXML_INDENT); + + cout << "done" << endl; + + parser.document().serialize("output.xml"); +} diff --git a/helm/DEVEL/mathml_editor/xsl/d-xsl.xsl b/helm/DEVEL/mathml_editor/xsl/d-xsl.xsl new file mode 100644 index 000000000..2ef6083b1 --- /dev/null +++ b/helm/DEVEL/mathml_editor/xsl/d-xsl.xsl @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /// CONTROL SEQUENCES /// + + + + + + + + + + + + + + + + + + + diff --git a/helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl b/helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl new file mode 100644 index 000000000..8b237387f --- /dev/null +++ b/helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl @@ -0,0 +1,949 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + block + + block + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ + + + + + + + + + + + + λ + + : + + . + + + + + + + + + + + + + ̸ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ̂ + + + + + + + + + + + + + ̂ + + + + + + + + + + + + + ̌ + + + + + + + + + + + + + ̃ + + + + + + + + + + + + + ̃ + > + + + + + + + + + + + + ́ + + + + + + + + + + + + + ̀ + > + + + + + + + + + + + + ̇ + + + + + + + + + + + + + ̈ + + + + + + + + + + + + + ̆ + + + + + + + + + + + + + ̄ + + + + + + + + + + + + + + + + + + + + + + + + + + ̅ + > + + + + + + + + + + + + ̲ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + + ) + + + + + + + + + + + + { + + + + + } + + + + + + + + + + + + [ + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + mod + + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + ) + + + + + + + + + + + + + + + + + + + + + + + ( + + + + + + ) + + + + + + + + + + + + + + + + + ???? + > + + + + + + + + + + + + ???? + + + + + + + + + + + + { + + + + + + + diff --git a/helm/DEVEL/mathml_editor/xsl/tml-tex.xsl b/helm/DEVEL/mathml_editor/xsl/tml-tex.xsl new file mode 100644 index 000000000..f3ba8d5ce --- /dev/null +++ b/helm/DEVEL/mathml_editor/xsl/tml-tex.xsl @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + $$$$ + $$ + + + + + + \ + + {\it } + + + + + + \ + + {\rm } + + + + + + \ + + + + + + + + + __ + + + _ + + + + + + + + ^^ + + + ^ + + + + + {} + + + + + + + \cr + + + + & + + + + + + \ + + + + + \ + + + + + + diff --git a/helm/uwobo/.cvsignore b/helm/uwobo/.cvsignore new file mode 100644 index 000000000..2fd79ea45 --- /dev/null +++ b/helm/uwobo/.cvsignore @@ -0,0 +1,5 @@ +build +docs +resources +backup +dist diff --git a/helm/uwobo/.cvswrappers b/helm/uwobo/.cvswrappers new file mode 100644 index 000000000..0140b5545 --- /dev/null +++ b/helm/uwobo/.cvswrappers @@ -0,0 +1 @@ +*.jar -k 'b' -m 'COPY' diff --git a/helm/uwobo/ant/ant.jar b/helm/uwobo/ant/ant.jar new file mode 100644 index 0000000000000000000000000000000000000000..9a14d89f0b19738218fa201539c2782597aa5f42 GIT binary patch literal 449624 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

S`LZ6PCYSsHBNV?`f(lt{7}T&kSjqc}J47ALz) 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

OtMcmhfTbXIaz3 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%0A6rM>h=zGPh7Z{Y9`&x| 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 QqY3`$GXYQFT!Q}ke_%dY82|tP literal 0 HcmV?d00001 diff --git a/helm/uwobo/ant/jaxp.jar b/helm/uwobo/ant/jaxp.jar new file mode 100644 index 0000000000000000000000000000000000000000..9cfa2319ee6ef8ab7603ca71f779428166ad721b GIT binary patch literal 5618 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ℜ)TKgBAJQ!Ksz+4O#3I> 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 literal 0 HcmV?d00001 diff --git a/helm/uwobo/antRun b/helm/uwobo/antRun new file mode 100755 index 000000000..5894f4483 --- /dev/null +++ b/helm/uwobo/antRun @@ -0,0 +1,8 @@ +#! /bin/sh + +if [ "$JAVA_HOME" != "" ] ; then + $JAVA_HOME/bin/java -cp ant/ant.jar:ant/jaxp.jar:ant/parser.jar:$JAVA_HOME/lib/tools.jar -Dant.home=. $ANT_OPTS org.apache.tools.ant.Main $@ +else + echo "Warning: JAVA_HOME environment variable is not set." +fi + diff --git a/helm/uwobo/antRun.bat b/helm/uwobo/antRun.bat new file mode 100644 index 000000000..e83ce36bd --- /dev/null +++ b/helm/uwobo/antRun.bat @@ -0,0 +1,17 @@ +@echo off +set ANT_CMD_LINE_ARGS= + +:setupArgs +if %1a==a goto checkJavaHome +set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1 +shift +goto setupArgs + +:checkJavaHome +if not "%JAVA_HOME%" == "" goto runAnt +echo Warning: JAVA_HOME environment variable is not set. + +:runAnt +java -cp ant\ant.jar;ant\jaxp.jar;ant\parser.jar;%JAVA_HOME%\lib\tools.jar -Dant.home=.\ org.apache.tools.ant.Main %ANT_CMD_LINE_ARGS% + +set ANT_CMD_LINE_ARGS= diff --git a/helm/uwobo/build.xml b/helm/uwobo/build.xml new file mode 100644 index 000000000..c021b0b46 --- /dev/null +++ b/helm/uwobo/build.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/helm/uwobo/src/it/unibo/cs/helm/uwobo/Key.java b/helm/uwobo/src/it/unibo/cs/helm/uwobo/Key.java new file mode 100644 index 000000000..22df4a44f --- /dev/null +++ b/helm/uwobo/src/it/unibo/cs/helm/uwobo/Key.java @@ -0,0 +1,9 @@ +package it.unibo.cs.helm.uwobo; + +import java.util.*; + +public class Key { + public String name; + public HashMap params; +}; + diff --git a/helm/uwobo/src/it/unibo/cs/helm/uwobo/Server.java b/helm/uwobo/src/it/unibo/cs/helm/uwobo/Server.java new file mode 100644 index 000000000..da11a070c --- /dev/null +++ b/helm/uwobo/src/it/unibo/cs/helm/uwobo/Server.java @@ -0,0 +1,301 @@ +package it.unibo.cs.helm.uwobo; + +import java.io.*; +import java.net.URL; +import java.util.*; +import javax.xml.transform.*; +import javax.xml.transform.sax.*; +import javax.xml.transform.stream.*; +import org.apache.xalan.serialize.*; +import org.apache.xalan.xslt.*; +import org.apache.xalan.templates.*; +import org.apache.xalan.transformer.*; +import org.apache.xerces.parsers.*; +import org.xml.sax.*; +import org.xml.sax.ext.*; +import org.xml.sax.helpers.*; + +/** +// This file is part of UWOBO, a small and simple XSLT server. +// +// UWOBO is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// UWOBO is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with UWOBO; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// For details, send a mail to +* @author Luca Padovani, Riccardo Solmi +*/ + +public class Server { + private static class Style { + public String fileName; + public long lastModified; + public Templates stylesheet; + }; + + public static final String SERVERNAME = "uwobo-XSLT-server"; + public static final String PACKAGE; + public static final String VERSION; + public static final String DATE; + public static final String TIME; + + static { + Properties props = new Properties(); + try { + InputStream in = Server.class.getResourceAsStream("properties.txt"); + props.load(in); + in.close(); + } catch (IOException ioe) { + System.err.println("Could not load the version information."); + } + + PACKAGE = props.getProperty("PACKAGE"); + VERSION = props.getProperty("VERSION"); + DATE = props.getProperty("DATE"); + TIME = props.getProperty("TIME"); + } + + private final HashMap hashMap = new HashMap(); + private static int logCounter = 0; + + private final Templates compileStylesheet(String xsl_file) throws TransformerConfigurationException, SAXException, IOException { + StreamSource streamsource = + new StreamSource(new URL(xsl_file).openStream()); + streamsource.setSystemId(xsl_file); + return ((SAXTransformerFactory)TransformerFactory.newInstance()) + .newTemplates(streamsource); + } + + private String getContentType(Templates templates) { + final Properties oprops = templates.getOutputProperties(); + final String encoding = oprops.getProperty(OutputKeys.ENCODING); + final String media = oprops.getProperty(OutputKeys.MEDIA_TYPE); + + if (media != null) { + if (encoding != null) + return media + "; charset=" + encoding; + return media; + } else { + final String method = oprops.getProperty(OutputKeys.METHOD); + if (method.equals("html")) + return "text/html"; + else if (method.equals("text")) + return "text/plain"; + else + return "text/xml"; + } + } + + private final ContentHandler applyStylesheet(Templates stylesheet, HashMap params, ContentHandler saxOutput) + throws TransformerConfigurationException, SAXException + { + TransformerHandler th = ((SAXTransformerFactory)TransformerFactory.newInstance()).newTransformerHandler(stylesheet); + + th.setResult(new SAXResult(saxOutput)); + + if (params != null) { + final Transformer transformer = th.getTransformer(); + Iterator i = params.keySet().iterator(); + while (i.hasNext()) { + final String name = (String) i.next(); + final String value = (String) params.get(name); + transformer.setParameter(name, value); + } + } + + return th; + } + + private final void parseFile(String datasheet, ContentHandler saxOutput) throws SAXException, IOException, Exception { + final XMLReader reader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); + reader.setFeature("http://xml.org/sax/features/namespaces", true); + reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true); + reader.setContentHandler(saxOutput); + if (saxOutput instanceof LexicalHandler) + reader.setProperty("http://xml.org/sax/properties/lexical-handler", (LexicalHandler)saxOutput); + reader.parse(datasheet); + } + + private final ContentHandler saveFile(OutputStream outputStream, Properties props) throws IOException { + final Serializer ser = SerializerFactory.getSerializer(props); + ser.setOutputStream(outputStream); + return ser.asContentHandler(); + } + + public static void log(String msg) { + System.err.println(SERVERNAME + "[" + logCounter++ + "]: " + msg); + } + + public void add(String filename, String key) throws TransformerConfigurationException, SAXException, IOException { + if (hashMap.containsKey(key)) { + log("there is already a stylesheet with keyword \"" + key + "\" (aborted)"); + return; + } + + Style style = new Style(); + style.fileName = filename; + style.lastModified = new File(filename).lastModified(); + log("processing stylesheet \"" + filename + "\"... "); + style.stylesheet = compileStylesheet(filename); + log("done!"); + + hashMap.put(key, style); + } + + public void removeAll() throws TransformerConfigurationException, SAXException, IOException { + String key; + Style style; + Iterator i = hashMap.keySet().iterator(); + while (i.hasNext()) { + key = (String)i.next(); + style = (Style)hashMap.get(key); + log("removing \"" + key + " (" + style.fileName + ")"); + } + hashMap.clear(); + } + + public void remove(String key) { + Style style = (Style)hashMap.get(key); + if (style != null) { + log("removing \"" + key + " (" + style.fileName + ")"); + hashMap.remove(key); + } else { + log("error, stylesheet \"" + key + "\" not loaded"); + } + } + + public String getContentType(String key) { + Style style = (Style)hashMap.get(key); + if (style != null) { + return getContentType(style.stylesheet); + } else { + log("error, stylesheet \"" + key + "\" not loaded"); + return null; + } + } + + public List list() { + log("listing stylesheets..."); + ArrayList l = new ArrayList(); + Iterator i = hashMap.keySet().iterator(); + while (i.hasNext()) { + String key = (String)i.next(); + Style style = (Style)hashMap.get(key); + l.add(" " + key + " (" + style.fileName + "; " + getContentType(style.stylesheet) + ")"); + System.out.println(" " + key + " (" + style.fileName + ")"); + } + log("done!"); + return l; + } + + private ContentHandler applyRec(final Key[] keys, int idx, final ContentHandler saxOutput) + throws TransformerConfigurationException, SAXException, IOException + { + if (idx < 0) + return saxOutput; + else { + final Style style = (Style) hashMap.get(keys[idx].name); + if (style == null) { + log("cannot apply unknwon stylesheet \"" + keys[idx].name + "\" (aborted)"); + return null; + } + return applyStylesheet(style.stylesheet, keys[idx].params, applyRec(keys, idx - 1, saxOutput)); + } + } + + public void apply(String inFile, OutputStream outputStream, Key[] keys, Properties userProperties) + throws FileNotFoundException, IOException, TransformerConfigurationException, SAXException, Exception + { +/* File outFile = new File(outFilename); + if (outFile.exists()) + System.out.println("Using cached version\n"); + else { +*/ + final Key[] rkeys = new Key[keys.length]; + for (int i = 0; i < keys.length; i++) + rkeys[i] = keys[keys.length - i - 1]; + + Properties outputProperties; + Properties defaultProperties; + String method; + + if (keys.length > 0) { + Style style = (Style) hashMap.get(rkeys[0].name); + if (style == null) { + log("error, stylesheet \"" + rkeys[0].name + "\" not loaded"); + return; + } + outputProperties = style.stylesheet.getOutputProperties(); + method = userProperties.getProperty("method"); + if (method == null) method = outputProperties.getProperty("method"); + if (method == null) method = "xml"; + defaultProperties = org.apache.xalan.templates.OutputProperties.getDefaultMethodProperties(method); + } else { + method = userProperties.getProperty("method"); + if (method == null) method = "xml"; + outputProperties = org.apache.xalan.templates.OutputProperties.getDefaultMethodProperties(method); + defaultProperties = outputProperties; + } + + for (Enumeration e = userProperties.propertyNames(); e.hasMoreElements(); ) { + String prop = (String) e.nextElement(); + String value = userProperties.getProperty(prop); + if (value.equals("")) { + String defaultValue = defaultProperties.getProperty(prop); + if (defaultValue != null) + outputProperties.setProperty(prop, defaultProperties.getProperty(prop)); + else + outputProperties.remove(prop); + } else { + outputProperties.setProperty(prop, value); + } + } + + parseFile(inFile, applyRec(rkeys, rkeys.length - 1, saveFile(outputStream, outputProperties))); +// } + } + + public void reloadAll() throws TransformerConfigurationException, SAXException, IOException { + Iterator i = hashMap.keySet().iterator(); + while (i.hasNext()) + reload((String)i.next()); + } + + public void reload(String key) throws TransformerConfigurationException, SAXException, IOException { + Style style = (Style)hashMap.get(key); + + log("reloading \"" + key + "\"... "); + style.stylesheet = compileStylesheet(style.fileName); + style.lastModified = new File(style.fileName).lastModified(); + log("done!"); + } + + public void updateAll() throws TransformerConfigurationException, SAXException, IOException { + Iterator i = hashMap.keySet().iterator(); + while (i.hasNext()) + update((String)i.next()); + } + + public void update(String key) throws TransformerConfigurationException, SAXException, IOException { + Style style = (Style)hashMap.get(key); + + log("updating \"" + key + "\"... "); + File styleFile = new File(style.fileName); + if (styleFile.lastModified() > style.lastModified) { + style.stylesheet = compileStylesheet(style.fileName); + style.lastModified = styleFile.lastModified(); + log("done!"); + } else + log("\"" + key + "\" is up to date"); + } +} diff --git a/helm/uwobo/src/it/unibo/cs/helm/uwobo/Servlet.java b/helm/uwobo/src/it/unibo/cs/helm/uwobo/Servlet.java new file mode 100644 index 000000000..0e28877fd --- /dev/null +++ b/helm/uwobo/src/it/unibo/cs/helm/uwobo/Servlet.java @@ -0,0 +1,247 @@ +package it.unibo.cs.helm.uwobo; + +import java.io.*; +import java.util.*; +import javax.servlet.*; +import javax.servlet.http.*; +import javax.xml.transform.*; +import org.xml.sax.*; + +/* +* +* usage: +* http://aristotele/helm/servlet/uwobo/help +* http://aristotele/helm/servlet/uwobo/add?xsluri=&key= +* http://aristotele/helm/servlet/uwobo/remove[?key=] +* http://aristotele/helm/servlet/uwobo/list +* http://aristotele/helm/servlet/uwobo/reload[?key=] +* http://aristotele/helm/servlet/uwobo/update[?key=] +* http://aristotele/helm/servlet/uwobo/apply?xmluri=&keys=[¶m.=]* +* +* example: +* http://aristotele/helm/servlet/uwobo/add?xsluri=file:///D:/Archivio/Progetti/helm/resources/xsl/foo1.xsl&key=foo1 +* http://aristotele/helm/servlet/uwobo/add?xsluri=file:///D:/Archivio/Progetti/helm/resources/xsl/foo2.xsl&key=foo2 +* http://aristotele/helm/servlet/uwobo/apply?xmluri=file:///D:/Archivio/Progetti/helm/resources/xsl/foo.xml&key=foo1&key=foo2 +* +* installation notes (Tomcat): +* replace parser.jar and jaxp.jar from /lib with xerces.jar +* +* add in conf/server.xml +* +* +* +* add in uriworkermap.properties +* /helm/*=ajp12 +* +* bugs: +* directory base stylesheet inclusi +* +* @author Riccardo Solmi +*/ +public class Servlet extends HttpServlet { + public static final String[] usage = { + "http://hostname/helm/servlet/uwobo/help", + "http://hostname/helm/servlet/uwobo/add?xsluri=stylesheet&key=name", + "http://hostname/helm/servlet/uwobo/remove[?key=name]", + "http://hostname/helm/servlet/uwobo/list", + "http://hostname/helm/servlet/uwobo/reload[?key=name]", + "http://hostname/helm/servlet/uwobo/update[?key=name]", + "http://hostname/helm/servlet/uwobo/apply?xmluri=xmldata&keys=key_1,...,key_n[¶m.name=value]*" + }; + public static final String help; + + static { + StringBuffer sb = new StringBuffer(); + sb.append("

"); + help = sb.toString(); + } + + private Server server; + + public void init(ServletConfig config) throws ServletException + { + super.init(config); + + System.out.println("UWOBO init"); + server = new Server(); + } + + public static String[] split(final String s, final String delim) + { + StringTokenizer st = new StringTokenizer(s, delim); + String[] res = new String[st.countTokens()]; + for (int i = 0; i < res.length; i++) res[i] = st.nextToken(); + return res; + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + System.out.println("UWOBO "+request.getPathInfo()); + ServletOutputStream out; + + try { + final String cmd = request.getPathInfo(); + if (cmd == null) { + sendError(response, HttpServletResponse.SC_NOT_FOUND, "unknown command", help); + return; + } + if (cmd.equals("/add")) { + final String filename = request.getParameter("xsluri"); + if (filename == null) { + sendError(response, HttpServletResponse.SC_BAD_REQUEST, "bad parameters", usage[1]); + return; + } + final String key = request.getParameter("key"); + server.add(filename, key); + } else if (cmd.equals("/apply")) { + final String infile = request.getParameter("xmluri"); + final String keys = request.getParameter("keys"); + + if (infile == null || keys == null) { + sendError(response, HttpServletResponse.SC_BAD_REQUEST, "bad parameters", usage[6]); + return; + } + + final String[] keyName = split(keys, ","); + final Key[] keySeq = new Key[keyName.length]; + for (int i = 0; i < keySeq.length; i++) { + keySeq[i] = new Key(); + keySeq[i].name = keyName[i]; + keySeq[i].params = new HashMap(); + } + + final Properties props = new Properties(); + final Enumeration e = request.getParameterNames(); + while (e.hasMoreElements()) { + String param = (String) e.nextElement(); + if (param.startsWith("param.")) { + final String name = param.substring(6); + final String value = request.getParameter(param); + final String[] keyParam = split(name, "."); + if (keyParam.length == 1) { + // this is a global parameter + Server.log("global parameter: " + keyParam[0] + " = " + value); + for (int i = 0; i < keySeq.length; i++) + // we add the global parameter only if there is no + // local parameter with the same name + if (!keySeq[i].params.containsKey(keyParam[0])) + keySeq[i].params.put(keyParam[0], value); + } else if (keyParam.length == 2) { + // this is a local parameter + Server.log("local parameter: " + keyParam[0] + "." + keyParam[1] + " = " + value); + for (int i = 0; i < keySeq.length; i++) { + if (keySeq[i].name.equals(keyParam[0])) + keySeq[i].params.put(keyParam[1], value); + } + } else { + sendError(response, HttpServletResponse.SC_BAD_REQUEST, "bad parameters", usage[6]); + return; + } + } else if (param.startsWith("prop.")) { + final String name = param.substring(5); + final String value = request.getParameter(param); + Server.log("property: " + name + " = " + value); + props.setProperty(name, value); + } + } + + String contentType = props.getProperty(OutputKeys.MEDIA_TYPE); + if (contentType == null && keySeq.length > 0) + contentType = server.getContentType(keySeq[keySeq.length - 1].name); + else if (contentType == null) + contentType = "text/xml"; + response.setContentType(contentType); + Server.log("content type: " + contentType); + + out = response.getOutputStream(); + server.apply(infile, out, keySeq, props); + out.close(); + return; + } else if (cmd.equals("/remove")) { + final String key = request.getParameter("key"); + if (key == null) + server.removeAll(); + else + server.remove(key); + } else if (cmd.equals("/list")) { + Iterator i = server.list().iterator(); + + response.setContentType("text/html"); + out = response.getOutputStream(); + out.println("

Uwobo servlet

stylesheet list:

    "); + while (i.hasNext()) + out.println("
  • "+i.next()+"
  • "); + out.println("
"); + out.close(); + return; + } else if (cmd.equals("/reload")) { + final String key = request.getParameter("key"); + if (key == null) + server.reloadAll(); + else + server.reload(key); + } else if (cmd.equals("/update")) { + final String key = request.getParameter("key"); + if (key == null) + server.updateAll(); + else + server.update(key); + } else if (cmd.equals("/help")) { + response.setContentType("text/html"); + out = response.getOutputStream(); + out.println("

"+server.PACKAGE+" servlet - version "+server.VERSION+"

"); + out.println("compiled "+server.DATE+" at "+server.TIME.substring(0,2)+":"+server.TIME.substring(2)+""); + out.println("

usage:

"+help+""); + out.close(); + return; + } else { + sendError(response, HttpServletResponse.SC_NOT_FOUND, "unknown command", help); + return; + } + } catch (TransformerConfigurationException tce) { + sendError(response, HttpServletResponse.SC_BAD_REQUEST, "stylesheet error", tce); + return; + } catch (SAXException se) { + sendError(response, HttpServletResponse.SC_BAD_REQUEST, "SAX Exception", se); + return; + } catch (Exception e) { + sendError(response, HttpServletResponse.SC_BAD_REQUEST, "exception", e); + return; + } + + response.setContentType("text/html"); + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Expires", "0"); + out = response.getOutputStream(); + out.println("

Uwobo servlet

done

"); + out.close(); + } + + private void sendError(HttpServletResponse response, int code, String msg, Exception e) throws IOException { + String err; + if (e != null) + err = "

"+e.getMessage()+"

"; + else + err = ""; + response.setContentType("text/html"); + response.sendError(code, "

Uwobo servlet

"+msg+"

"+err+""); + } + + private void sendError(HttpServletResponse response, int code, String msg, String usage) throws IOException { + response.setContentType("text/html"); + response.sendError(code, "

Uwobo servlet

"+msg+"

usage: "+usage+""); + } + + public String getServletInfo() { + return "The UWOBO servlet"; + } +} diff --git a/helm/uwobo/src/it/unibo/cs/helm/uwobo/properties.txt b/helm/uwobo/src/it/unibo/cs/helm/uwobo/properties.txt new file mode 100644 index 000000000..eb2861132 --- /dev/null +++ b/helm/uwobo/src/it/unibo/cs/helm/uwobo/properties.txt @@ -0,0 +1,4 @@ +PACKAGE=@PACKAGE@ +VERSION=@VERSION@ +DATE=@DATE@ +TIME=@TIME@ diff --git a/helm/uwobo/web.xml b/helm/uwobo/web.xml new file mode 100644 index 000000000..badb809d2 --- /dev/null +++ b/helm/uwobo/web.xml @@ -0,0 +1,22 @@ + + + + + Uwobo Application + + This is an xslt web application + + + + uwobo + it.unibo.cs.helm.uwobo.Servlet + + + + uwobo + /helm/* + + + -- 2.39.2

RgZahW;gRx>~+Nwnjw9+Q(DRM6#fG>i_OOH># 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