[Reproducible-commits] [doxygen] 01/02: Imported Upstream version 1.8.11

Reiner Herrmann reiner at reiner-h.de
Sat Feb 13 11:08:12 UTC 2016


This is an automated email from the git hooks/post-receive script.

deki-guest pushed a commit to branch master
in repository doxygen.

commit ec3cab5ab42bfa9ec108437d465e624d38ac1c0a
Author: Reiner Herrmann <reiner at reiner-h.de>
Date:   Sat Feb 13 11:54:03 2016 +0100

    Imported Upstream version 1.8.11
---
 BUILD.txt                                          |   53 +
 CMakeLists.txt                                     |  143 +
 Makefile.in                                        |  161 -
 Makefile.win_make.in                               |   34 -
 Makefile.win_nmake.in                              |   51 -
 PLATFORMS                                          |   32 -
 VERSION                                            |    1 +
 addon/doxmlparser/CMakeLists.txt                   |    0
 addon/doxmlparser/src/Makefile.in                  |   15 -
 addon/doxmlparser/src/basehandler.h                |    2 +-
 addon/doxmlparser/src/baseiterator.h               |    2 +-
 addon/doxmlparser/src/compoundhandler.cpp          |    2 +-
 addon/doxmlparser/src/compoundhandler.h            |    2 +-
 addon/doxmlparser/src/dochandler.cpp               |    2 +-
 addon/doxmlparser/src/dochandler.h                 |    2 +-
 addon/doxmlparser/src/doxmlintf.h                  |    2 +-
 addon/doxmlparser/src/doxmlparser.pro.in           |   27 -
 addon/doxmlparser/src/graphhandler.h               |    2 +-
 addon/doxmlparser/src/linkedtexthandler.cpp        |    2 +-
 addon/doxmlparser/src/linkedtexthandler.h          |    2 +-
 addon/doxmlparser/src/loamhandler.h                |    2 +-
 addon/doxmlparser/src/mainhandler.cpp              |    2 +-
 addon/doxmlparser/src/mainhandler.h                |    2 +-
 addon/doxmlparser/src/memberhandler.cpp            |    2 +-
 addon/doxmlparser/src/memberhandler.h              |    2 +-
 addon/doxmlparser/src/paramhandler.cpp             |    2 +-
 addon/doxmlparser/src/paramhandler.h               |    2 +-
 addon/doxmlparser/src/sectionhandler.cpp           |    2 +-
 addon/doxmlparser/src/sectionhandler.h             |    2 +-
 addon/doxyapp/CMakeLists.txt                       |   30 +
 addon/doxyapp/Makefile.in                          |   19 -
 addon/doxyapp/doxyapp.cpp                          |   11 +-
 addon/doxyapp/doxyapp.pro.in                       |   12 -
 addon/doxypysql/search.py                          |  483 +-
 addon/doxysearch/CMakeLists.txt                    |   36 +
 addon/doxysearch/Makefile.in                       |   34 -
 addon/doxysearch/doxyindexer.cpp                   |    2 +-
 addon/doxysearch/doxyindexer.pro.in                |   12 -
 addon/doxysearch/doxysearch.cpp                    |    2 +-
 addon/doxysearch/doxysearch.pro.in                 |   12 -
 addon/doxywizard/CMakeLists.txt                    |  116 +
 addon/doxywizard/Makefile.in                       |   40 -
 addon/doxywizard/config.l                          |  555 ---
 addon/doxywizard/config_doxyw.l                    |  117 +-
 addon/doxywizard/doxywizard.cpp                    |   99 +-
 addon/doxywizard/doxywizard.pro.in                 |   40 -
 addon/doxywizard/expert.cpp                        |   73 +-
 addon/doxywizard/images/add.png                    |  Bin 4321 -> 1680 bytes
 addon/doxywizard/images/del.png                    |  Bin 4231 -> 1592 bytes
 addon/doxywizard/images/file.png                   |  Bin 4380 -> 1740 bytes
 addon/doxywizard/images/folder.png                 |  Bin 4308 -> 1668 bytes
 addon/doxywizard/images/refresh.png                |  Bin 4458 -> 1823 bytes
 addon/doxywizard/images/tunecolor.png              |  Bin 116333 -> 102299 bytes
 addon/doxywizard/inputbool.cpp                     |   22 +-
 addon/doxywizard/inputbool.h                       |    2 +-
 addon/doxywizard/inputint.cpp                      |   11 +-
 addon/doxywizard/inputint.h                        |    2 +-
 addon/doxywizard/inputstring.cpp                   |   27 +-
 addon/doxywizard/inputstring.h                     |    2 +-
 addon/doxywizard/inputstrlist.cpp                  |   31 +-
 addon/doxywizard/inputstrlist.h                    |    2 +-
 addon/doxywizard/version.h                         |    2 +-
 addon/doxywizard/wizard.cpp                        |  118 +-
 addon/doxywizard/wizard.h                          |    2 +-
 cmake/FindIconv.cmake                              |  126 +
 cmake/FindLibClang.cmake                           |   51 +
 cmake/FindSQLite3.cmake                            |   86 +
 cmake/FindXapian.cmake                             |   42 +
 cmake/lang_cfg.cmake                               |   11 +
 cmake/packaging.cmake                              |  112 +
 cmake/version.cmake                                |    2 +
 configure                                          |  993 ----
 doc/.gitignore                                     |    2 +-
 doc/CMakeLists.txt                                 |  185 +
 doc/Doxyfile                                       |    6 +-
 doc/Makefile.in                                    |   39 -
 doc/Makefile.latex                                 |    2 +-
 doc/Makefile.win_make.in                           |   40 -
 doc/Makefile.win_nmake.in                          |   41 -
 doc/arch.doc                                       |   47 +-
 doc/autolink.doc                                   |   20 +-
 doc/changelog.doc                                  | 2649 ++++++-----
 doc/commands.doc                                   |  231 +-
 doc/config.doc                                     | 3903 ---------------
 doc/custcmd.doc                                    |    2 +-
 doc/customize.doc                                  |    2 +-
 doc/dbusxml.doc                                    |  149 -
 doc/diagrams.doc                                   |   32 +-
 doc/docblocks.doc                                  |   64 +-
 doc/doxygen.1                                      |    4 +-
 doc/doxygen.sty                                    |  486 --
 doc/doxygen_manual.tex                             |   75 +-
 doc/doxygen_usage.doc                              |    2 +-
 doc/doxyindexer.1                                  |    2 +-
 doc/doxysearch.1                                   |    2 +-
 doc/doxywizard.1                                   |    2 +-
 doc/doxywizard_usage.doc                           |    2 +-
 doc/external.doc                                   |    2 +-
 doc/extsearch.doc                                  |    2 +-
 doc/faq.doc                                        |   17 +-
 doc/features.doc                                   |    2 +-
 doc/formulas.doc                                   |    4 +-
 doc/grouping.doc                                   |   22 +-
 doc/htmlcmds.doc                                   |    2 +-
 doc/index.doc                                      |    4 +-
 doc/install.doc                                    |  416 +-
 doc/language.doc                                   |  773 ---
 doc/language.tpl                                   |    2 +-
 doc/mailto.txt                                     |    4 +-
 doc/maintainers.txt                                |    2 +-
 doc/manual.sty                                     |   33 +
 doc/markdown.doc                                   |   12 +-
 doc/output.doc                                     |    2 +-
 doc/preprocessing.doc                              |    2 +-
 doc/searching.doc                                  |    2 +-
 doc/starting.doc                                   |    2 +-
 doc/tables.doc                                     |   95 +
 doc/translator.py                                  |   13 +-
 doc/translator_report.txt                          | 1138 -----
 doc/trouble.doc                                    |    4 +-
 doc/xmlcmds.doc                                    |    2 +-
 examples/CMakeLists.txt                            |  250 +
 examples/Makefile.in                               |  129 -
 examples/Makefile.win.in                           |  122 -
 examples/afterdoc.cfg                              |    7 +-
 examples/afterdoc.h                                |    2 +-
 examples/author.cfg                                |    6 +-
 examples/autolink.cfg                              |    6 +-
 examples/autolink.cpp                              |   38 +-
 examples/class.cfg                                 |    7 +-
 examples/class.h                                   |    2 +-
 examples/dbusxml.cfg                               |    6 +-
 examples/define.cfg                                |    7 +-
 examples/diagrams.cfg                              |    7 +-
 examples/docstring.cfg                             |    6 +-
 examples/enum.cfg                                  |    7 +-
 examples/enum.h                                    |    8 +-
 examples/example.cfg                               |    6 +-
 examples/example.cpp                               |    8 +-
 examples/example_test.cpp                          |    2 +-
 examples/file.cfg                                  |    7 +-
 examples/func.cfg                                  |    7 +-
 examples/func.h                                    |   12 +-
 examples/group.cfg                                 |    6 +-
 examples/include.cfg                               |    8 +-
 examples/include.cpp                               |    8 +-
 examples/{example_test.cpp => include_test.cpp}    |    2 +-
 examples/jdstyle.cfg                               |    6 +-
 examples/jdstyle.cpp                               |   10 +-
 examples/manual.cfg                                |    6 +-
 examples/memgrp.cfg                                |    6 +-
 examples/memgrp.cpp                                |   10 +-
 examples/mux.cfg                                   |    6 +-
 examples/overload.cfg                              |    6 +-
 examples/overload.cpp                              |   12 +-
 examples/page.cfg                                  |    6 +-
 examples/par.cfg                                   |    6 +-
 examples/par.cpp                                   |    4 +-
 examples/pyexample.cfg                             |    6 +-
 examples/qtstyle.cfg                               |    6 +-
 examples/qtstyle.cpp                               |    8 +-
 examples/relates.cfg                               |    6 +-
 examples/restypedef.cfg                            |    6 +-
 examples/strip_example.py                          |    9 +
 examples/structcmd.cfg                             |    7 +-
 examples/tag.cfg                                   |    2 +-
 examples/tclexample.cfg                            |    6 +-
 examples/templ.cfg                                 |    2 +-
 jquery/jquery.ui-1.8.18.core.js                    |    2 +-
 libmd5/CMakeLists.txt                              |    3 +
 packages/rpm/doxygen.spec                          |  129 -
 packages/rpm/doxygen.spec.in                       |  126 -
 qtools/CMakeLists.txt                              |   57 +
 qtools/Doxyfile                                    |    6 +-
 qtools/qcstring.cpp                                |    8 +-
 qtools/qcstring.h                                  |    5 +-
 qtools/qfeatures.h                                 |    2 +-
 qtools/qfile_win32.cpp                             |    2 +-
 qtools/qgdict.cpp                                  |   26 +
 qtools/qglobal.h                                   |   28 -
 qtools/qstring.cpp                                 |   60 +-
 qtools/qstring.h                                   |    1 +
 src/CMakeLists.txt                                 |  242 +
 src/Makefile.in                                    |   53 -
 src/arguments.cpp                                  |    5 +
 src/arguments.h                                    |   47 +-
 src/bufstr.h                                       |    2 +-
 src/cite.cpp                                       |    4 +-
 src/classdef.cpp                                   |   94 +-
 src/classdef.h                                     |   66 +-
 src/classlist.cpp                                  |    2 +-
 src/classlist.h                                    |    2 +-
 src/cmdmapper.cpp                                  |    5 +-
 src/cmdmapper.h                                    |    7 +-
 src/code.h                                         |    2 +-
 src/code.l                                         |   17 +-
 src/commentcnv.h                                   |    2 +-
 src/commentcnv.l                                   |   18 +-
 src/commentscan.h                                  |    2 +-
 src/commentscan.l                                  |  137 +-
 src/condparser.cpp                                 |    2 +-
 src/condparser.h                                   |    2 +-
 src/config.h                                       |   20 +-
 src/config.l                                       |  214 +-
 src/config.xml                                     |   94 +-
 src/configgen.py                                   |    2 +-
 src/configoptions.h                                |    2 +-
 src/constexp.h                                     |    2 +-
 src/constexp.l                                     |    6 +-
 src/constexp.y                                     |    2 +-
 src/context.cpp                                    | 4508 +++++++++++++-----
 src/context.h                                      |  214 +-
 src/cppvalue.cpp                                   |    2 +-
 src/cppvalue.h                                     |    2 +-
 src/dbusxmlscanner.cpp                             |  881 ----
 src/debug.cpp                                      |    2 +-
 src/debug.h                                        |    2 +-
 src/declinfo.h                                     |    2 +-
 src/declinfo.l                                     |    5 +-
 src/defargs.h                                      |    2 +-
 src/defargs.l                                      |   43 +-
 src/defgen.cpp                                     |    2 +-
 src/defgen.h                                       |    2 +-
 src/define.cpp                                     |    2 +-
 src/define.h                                       |    2 +-
 src/definition.cpp                                 |   49 +-
 src/definition.h                                   |   15 +-
 src/dia.cpp                                        |    2 +-
 src/dia.h                                          |    2 +-
 src/diagram.cpp                                    |    4 +-
 src/diagram.h                                      |    2 +-
 src/dirdef.cpp                                     |   12 +-
 src/dirdef.h                                       |    3 +-
 src/docbookgen.cpp                                 |   16 +-
 src/docbookgen.h                                   |    2 +-
 src/docbookvisitor.cpp                             |    4 +-
 src/docbookvisitor.h                               |    2 +-
 src/docparser.cpp                                  |  154 +-
 src/docparser.h                                    |   58 +-
 src/docsets.cpp                                    |    6 +-
 src/docsets.h                                      |    2 +-
 src/doctokenizer.h                                 |    2 +-
 src/doctokenizer.l                                 |   38 +-
 src/docvisitor.h                                   |    2 +-
 src/dot.cpp                                        |  214 +-
 src/dot.h                                          |   55 +-
 src/doxygen.cpp                                    | 1193 ++---
 src/doxygen.h                                      |   16 +-
 src/doxygen.md                                     |    4 +
 src/doxygen.pro.in                                 |   40 -
 src/eclipsehelp.cpp                                |    2 +-
 src/eclipsehelp.h                                  |    2 +-
 src/entry.cpp                                      |   10 +-
 src/entry.h                                        |    2 +-
 src/example.h                                      |    2 +-
 src/filedef.cpp                                    |    7 +-
 src/filedef.h                                      |    4 +-
 src/filename.cpp                                   |    2 +-
 src/filename.h                                     |    2 +-
 src/fileparser.cpp                                 |    2 +-
 src/fileparser.h                                   |    2 +-
 src/filestorage.h                                  |    2 +-
 src/formula.cpp                                    |    6 +-
 src/formula.h                                      |    2 +-
 src/fortrancode.h                                  |    3 +-
 src/fortrancode.l                                  |   43 +-
 src/fortranscanner.h                               |    2 +-
 src/fortranscanner.l                               |   84 +-
 src/ftvhelp.cpp                                    |    3 +-
 src/ftvhelp.h                                      |    2 +-
 src/groupdef.cpp                                   |    7 +-
 src/groupdef.h                                     |    2 +-
 src/htags.cpp                                      |    4 +-
 src/htags.h                                        |    2 +-
 src/htmlattrib.h                                   |    2 +-
 src/htmldocvisitor.cpp                             |  102 +-
 src/htmldocvisitor.h                               |    2 +-
 src/htmlentity.cpp                                 |    8 +-
 src/htmlentity.h                                   |    2 +-
 src/htmlgen.cpp                                    |   74 +-
 src/htmlgen.h                                      |    2 +-
 src/htmlhelp.cpp                                   |    2 +-
 src/htmlhelp.h                                     |    2 +-
 src/image.cpp                                      |    2 +-
 src/image.h                                        |    2 +-
 src/increasebuffer.py                              |    7 -
 src/index.cpp                                      |   29 +-
 src/index.h                                        |    3 +-
 src/lang_cfg.py                                    |    8 -
 src/language.cpp                                   |    2 +-
 src/language.h                                     |    2 +-
 src/latexdocvisitor.cpp                            |  235 +-
 src/latexdocvisitor.h                              |   88 +-
 src/latexgen.cpp                                   |  584 ++-
 src/latexgen.h                                     |   90 +-
 src/layout.cpp                                     |    8 +-
 src/layout.h                                       |    2 +-
 src/libdoxycfg.pro.in                              |   27 -
 src/libdoxycfg.t.in                                |   53 -
 src/libdoxygen.pro.in                              |  242 -
 src/libdoxygen.t.in                                |  126 -
 src/lodepng.cpp                                    |    2 +-
 src/logos.cpp                                      |    2 +-
 src/logos.h                                        |    2 +-
 src/main.cpp                                       |   10 +-
 src/mandocvisitor.cpp                              |    2 +-
 src/mandocvisitor.h                                |    2 +-
 src/mangen.cpp                                     |    3 +-
 src/mangen.h                                       |    2 +-
 src/markdown.cpp                                   |   57 +-
 src/markdown.h                                     |    2 +-
 src/marshal.h                                      |    2 +-
 src/memberdef.cpp                                  |   87 +-
 src/memberdef.h                                    |    4 +-
 src/membergroup.cpp                                |    7 +-
 src/membergroup.h                                  |   11 +-
 src/memberlist.cpp                                 |   20 +-
 src/memberlist.h                                   |    2 +-
 src/membername.cpp                                 |    2 +-
 src/membername.h                                   |    2 +-
 src/message.cpp                                    |   59 +-
 src/message.h                                      |    3 +-
 src/msc.cpp                                        |    2 +-
 src/msc.h                                          |    2 +-
 src/namespacedef.cpp                               |   23 +-
 src/namespacedef.h                                 |    3 +-
 src/objcache.cpp                                   |    2 +-
 src/objcache.h                                     |    2 +-
 src/outputgen.cpp                                  |    7 +-
 src/outputgen.h                                    |    2 +-
 src/outputlist.cpp                                 |    2 +-
 src/outputlist.h                                   |    2 +-
 src/pagedef.cpp                                    |   19 +-
 src/pagedef.h                                      |    4 +-
 src/parserintf.h                                   |    2 +-
 src/perlmodgen.cpp                                 |    2 +-
 src/perlmodgen.h                                   |    2 +-
 src/plantuml.cpp                                   |    8 +-
 src/plantuml.h                                     |    2 +-
 src/portable.cpp                                   |    2 +-
 src/portable_c.c                                   |    4 +
 src/pre.h                                          |    2 +-
 src/pre.l                                          |   46 +-
 src/printdocvisitor.h                              |    9 +-
 src/pycode.h                                       |    2 +-
 src/pycode.l                                       |  155 +-
 src/pyscanner.h                                    |    2 +-
 src/pyscanner.l                                    |   89 +-
 src/qtbc.h                                         |    2 +-
 src/reflist.cpp                                    |   19 +-
 src/reflist.h                                      |    4 +-
 src/res2cc_cmd.py                                  |    2 +-
 src/resourcemgr.cpp                                |    2 +-
 src/resourcemgr.h                                  |    8 +-
 src/rtfdocvisitor.cpp                              |    5 +-
 src/rtfdocvisitor.h                                |    2 +-
 src/rtfgen.cpp                                     |   50 +-
 src/rtfgen.h                                       |    2 +-
 src/rtfstyle.cpp                                   |    2 +-
 src/rtfstyle.h                                     |    2 +-
 src/scanner.h                                      |    2 +-
 src/scanner.l                                      |  135 +-
 src/searchindex.cpp                                |  333 +-
 src/searchindex.h                                  |   55 +-
 src/section.h                                      |    5 +-
 src/settings.py                                    |   29 -
 src/sortdict.h                                     |    2 +-
 src/sqlite3gen.cpp                                 |  254 +-
 src/sqlite3gen.h                                   |    2 +-
 src/store.cpp                                      |    2 +-
 src/store.h                                        |    2 +-
 src/tagreader.cpp                                  |    2 +-
 src/tagreader.h                                    |    2 +-
 src/tclscanner.h                                   |    2 +-
 src/tclscanner.l                                   |   14 +-
 src/template.cpp                                   |  666 +--
 src/template.h                                     |  127 +-
 src/textdocvisitor.cpp                             |    2 +-
 src/textdocvisitor.h                               |    2 +-
 src/tooltip.cpp                                    |    2 +-
 src/tooltip.h                                      |    2 +-
 src/translator.h                                   |    2 +-
 src/translator_am.h                                |    4 +-
 src/translator_ar.h                                |    6 +-
 src/translator_br.h                                |    8 +-
 src/translator_ca.h                                |    4 +-
 src/translator_cn.h                                |  231 +-
 src/translator_cz.h                                |    8 +-
 src/translator_de.h                                |    8 +-
 src/translator_dk.h                                |    4 +-
 src/translator_en.h                                |   10 +-
 src/translator_eo.h                                |    8 +-
 src/translator_es.h                                |    8 +-
 src/translator_fa.h                                |    6 +-
 src/translator_fi.h                                |    6 +-
 src/translator_fr.h                                |   10 +-
 src/translator_gr.h                                |  163 +-
 src/translator_hr.h                                |    4 +-
 src/translator_hu.h                                |    4 +-
 src/translator_id.h                                |    4 +-
 src/translator_it.h                                |  137 +-
 src/translator_je.h                                |    2 +-
 src/translator_jp.h                                |    8 +-
 src/translator_ke.h                                |    2 +-
 src/translator_kr.h                                |    8 +-
 src/translator_lt.h                                |    6 +-
 src/translator_lv.h                                |   10 +-
 src/translator_mk.h                                |    4 +-
 src/translator_nl.h                                |    8 +-
 src/translator_no.h                                |    4 +-
 src/translator_pl.h                                |    4 +-
 src/translator_pt.h                                |    8 +-
 src/translator_ro.h                                |    8 +-
 src/translator_ru.h                                |    8 +-
 src/translator_sc.h                                |    4 +-
 src/translator_si.h                                |    6 +-
 src/translator_sk.h                                |    8 +-
 src/translator_sr.h                                |    4 +-
 src/translator_sv.h                                |   53 +-
 src/translator_tr.h                                |    4 +-
 src/translator_tw.h                                |   32 +-
 src/translator_ua.h                                |    8 +-
 src/translator_vi.h                                |    4 +-
 src/translator_za.h                                |    4 +-
 src/types.h                                        |    2 +-
 src/util.cpp                                       |  331 +-
 src/util.h                                         |   19 +-
 src/version.cpp                                    |    1 -
 src/version.h                                      |    2 +-
 src/version.py                                     |   58 -
 src/vhdlcode.l                                     |    8 +-
 src/vhdldocgen.cpp                                 |  159 +-
 src/vhdldocgen.h                                   |    5 +-
 src/vhdljjparser.cpp                               |   56 +-
 src/{pycode.h => xmlcode.h}                        |   14 +-
 src/xmlcode.l                                      |  413 ++
 src/xmldocvisitor.cpp                              |   24 +-
 src/xmldocvisitor.h                                |    2 +-
 src/xmlgen.cpp                                     |   22 +-
 src/xmlgen.h                                       |    2 +-
 src/{dbusxmlscanner.h => xmlscanner.h}             |   48 +-
 templates/html/doxygen.css                         |   30 +-
 templates/html/header.html                         |    2 +-
 templates/html/htmlallmembers.tpl                  |   59 +-
 templates/html/htmlannotated.tpl                   |    2 +-
 templates/html/htmlbase.tpl                        |   31 +-
 templates/html/htmlclass.tpl                       |   15 +-
 templates/html/htmlclasses.tpl                     |    4 +-
 templates/html/htmldeclcomp.tpl                    |    1 -
 templates/html/htmldir.tpl                         |   29 +-
 templates/html/htmldirtree.tpl                     |    8 +-
 templates/html/htmlexample.tpl                     |   17 +
 .../html/{htmlmodules.tpl => htmlexamples.tpl}     |    6 +-
 templates/html/htmlfile.tpl                        |   81 +-
 templates/html/htmlfiles.tpl                       |    2 +-
 templates/html/htmlhierarchy.tpl                   |    2 +-
 templates/html/htmlindexpages.tpl                  |    2 +-
 templates/html/htmlinlineclasses.tpl               |   70 +
 templates/html/htmljsnavtree.tpl                   |    5 +-
 templates/html/htmljssearchdata.tpl                |   31 +
 templates/html/htmljssearchindex.tpl               |   15 +
 templates/html/htmllayout.tpl                      |   80 +-
 templates/html/htmlmembersindex.tpl                |   20 +-
 templates/html/htmlmemdecl.tpl                     |   20 +-
 templates/html/htmlmemdef.tpl                      |   59 +-
 templates/html/htmlmodule.tpl                      |   81 +-
 templates/html/htmlmodules.tpl                     |    2 +-
 templates/html/htmlnamespace.tpl                   |   81 +-
 templates/html/htmlnamespaces.tpl                  |    2 +-
 templates/html/htmlnavtree.tpl                     |    2 +-
 templates/html/htmlobjlink.tpl                     |    6 +-
 templates/html/htmlpage.tpl                        |    8 +-
 templates/html/htmlpages.tpl                       |    2 +-
 .../html/htmlsearchresult.tpl                      |   11 +-
 templates/html/htmlsource.tpl                      |   16 +-
 templates/html/htmltabs.tpl                        |    4 +-
 templates/html/htmltypeconstraints.tpl             |    2 +-
 templates/html/resize.js                           |    2 +-
 templates/latex/doxygen.sty                        |  147 +-
 templates/latex/latexannotated.tpl                 |    9 +
 templates/latex/latexclass.tpl                     |  114 +
 templates/latex/latexfiles.tpl                     |    1 +
 templates/latex/latexinclude.tpl                   |   32 +
 templates/latex/latexlayout.tpl                    |   35 +
 templates/latex/latexmakefile.tpl                  |   64 +
 templates/latex/latexmodules.tpl                   |    1 +
 templates/latex/latexnamespaces.tpl                |    1 +
 templates/latex/latexobjlink.tpl                   |    6 +
 templates/latex/latexrefman.tpl                    |  227 +
 templates/latex/latextypeconstraints.tpl           |   12 +
 templates/xml/compound.xsd                         |    2 +
 testing/009/class_bug.xml                          |    2 +-
 testing/009/class_deprecated.xml                   |    2 +-
 testing/009/class_reminder.xml                     |    2 +-
 testing/009/class_test.xml                         |    2 +-
 testing/009/class_todo.xml                         |    2 +-
 testing/011/category_integer_07_arithmetic_08.xml  |    4 +-
 testing/011/interface_integer.xml                  |    4 +-
 testing/011_category.m                             |    2 +-
 testing/012_cite.dox                               |    2 +-
 testing/013/class_t1.xml                           |    2 +-
 testing/013/class_t2.xml                           |    2 +-
 testing/013/class_t3.xml                           |    2 +-
 testing/013/class_t4.xml                           |    2 +-
 testing/015/015__cond_8c.xml                       |    2 +-
 testing/018/018__def_8c.xml                        |   10 +-
 testing/020/indexpage.xml                          |   16 +-
 testing/021_dontinclude.cpp                        |    1 -
 testing/022_dot.cpp                                |    2 +-
 testing/025/class_test.xml                         |    4 +-
 testing/025_example.cpp                            |    2 +-
 testing/026/class_test.xml                         |    2 +-
 testing/027/struct_car.xml                         |    4 +-
 testing/027/struct_object.xml                      |    4 +-
 testing/027/struct_truck.xml                       |    4 +-
 testing/027/struct_vehicle.xml                     |    4 +-
 testing/029/029__hideinit_8c.xml                   |    4 +-
 testing/030_htmlinclude.dox                        |    1 -
 testing/031_image.dox                              |    2 +-
 testing/032_include.cpp                            |    1 -
 testing/035/035__invariant_8c.xml                  |    2 +-
 testing/037/class_receiver.xml                     |    2 +-
 testing/037/class_sender.xml                       |    2 +-
 testing/039/class_test.xml                         |    2 +-
 testing/041/class_test.xml                         |    8 +-
 testing/044/struct_s.xml                           |   14 +-
 testing/046/class_test.xml                         |    2 +-
 testing/048/048__showinit_8c.xml                   |    4 +-
 testing/049/indexpage.xml                          |    2 +-
 testing/049_snippet.cpp                            |    3 +-
 testing/050_verbatim.dox                           |    1 -
 testing/051/indexpage.xml                          |    2 +-
 testing/051_escape.dox                             |    2 +
 testing/056_latexinclude.dox                       |    1 -
 testing/057/057__caller__graphs_8tcl.xml           |   10 +-
 testing/057/__057__caller__graphs_8tcl.xml         |    2 +-
 testing/057/namespace1.xml                         |   14 +-
 testing/057/namespace1_1_11.xml                    |    2 +-
 testing/057/namespace1_1_11_1_11.xml               |    2 +-
 testing/057/namespace2.xml                         |    2 +-
 testing/057/namespace2_1_12.xml                    |    2 +-
 testing/057/namespace2_1_12_1_12.xml               |    2 +-
 testing/057/namespace2_1_12_1_12_1_12.xml          |    2 +-
 testing/057/namespace2_1_12_1_12_1_12_1_12.xml     |    2 +-
 testing/057/namespacebar.xml                       |    6 +-
 testing/057/namespacefoo.xml                       |    2 +-
 testing/057_caller_graphs.tcl                      |    2 +-
 testing/058/058__bracket__recursion_8tcl.xml       |   50 +-
 testing/059/059__command__catch_8tcl.xml           |   24 +-
 testing/060/060__command__switch_8tcl.xml          |   42 +-
 testing/061/class_test.xml                         |    8 +-
 testing/062/namespacen1.xml                        |    4 +-
 testing/062/namespacen2.xml                        |    4 +-
 testing/062/namespacen3.xml                        |    4 +-
 testing/063/namespaceoo_1_1_helpers.xml            |    2 +-
 testing/063/namespaceoo_1_1define.xml              |    2 +-
 testing/064/struct_foo.xml                         |    2 +-
 testing/CMakeLists.txt                             |    9 +
 testing/Makefile                                   |    3 -
 testing/{README => README.txt}                     |   34 +-
 testing/debug.txt                                  |   30 -
 testing/html/063__bug__729092_8tcl.html            |  112 -
 testing/html/arrowdown.png                         |  Bin 246 -> 0 bytes
 testing/html/arrowright.png                        |  Bin 229 -> 0 bytes
 testing/html/bc_s.png                              |  Bin 676 -> 0 bytes
 testing/html/bdwn.png                              |  Bin 147 -> 0 bytes
 testing/html/closed.png                            |  Bin 132 -> 0 bytes
 testing/html/doc.png                               |  Bin 746 -> 0 bytes
 testing/html/doxygen.css                           | 1449 ------
 testing/html/doxygen.png                           |  Bin 3779 -> 0 bytes
 testing/html/dynsections.js                        |   97 -
 testing/html/files.html                            |   99 -
 testing/html/folderclosed.png                      |  Bin 616 -> 0 bytes
 testing/html/folderopen.png                        |  Bin 597 -> 0 bytes
 testing/html/ftv2blank.png                         |  Bin 86 -> 0 bytes
 testing/html/ftv2doc.png                           |  Bin 746 -> 0 bytes
 testing/html/ftv2folderclosed.png                  |  Bin 616 -> 0 bytes
 testing/html/ftv2folderopen.png                    |  Bin 597 -> 0 bytes
 testing/html/ftv2lastnode.png                      |  Bin 86 -> 0 bytes
 testing/html/ftv2link.png                          |  Bin 746 -> 0 bytes
 testing/html/ftv2mlastnode.png                     |  Bin 246 -> 0 bytes
 testing/html/ftv2mnode.png                         |  Bin 246 -> 0 bytes
 testing/html/ftv2node.png                          |  Bin 86 -> 0 bytes
 testing/html/ftv2plastnode.png                     |  Bin 229 -> 0 bytes
 testing/html/ftv2pnode.png                         |  Bin 229 -> 0 bytes
 testing/html/ftv2splitbar.png                      |  Bin 314 -> 0 bytes
 testing/html/ftv2vertline.png                      |  Bin 86 -> 0 bytes
 testing/html/index.html                            |   89 -
 testing/html/jquery.js                             |   68 -
 testing/html/namespacemembers.html                 |  105 -
 testing/html/namespacemembers_func.html            |  105 -
 testing/html/namespaceoo.html                      |  105 -
 testing/html/namespaceoo_1_1_helpers.html          |  129 -
 testing/html/namespaceoo_1_1define.html            |  129 -
 testing/html/namespaces.html                       |  102 -
 testing/html/nav_f.png                             |  Bin 153 -> 0 bytes
 testing/html/nav_g.png                             |  Bin 95 -> 0 bytes
 testing/html/nav_h.png                             |  Bin 98 -> 0 bytes
 testing/html/open.png                              |  Bin 123 -> 0 bytes
 testing/html/search/all_0.html                     |   26 -
 testing/html/search/all_0.js                       |    4 -
 testing/html/search/all_1.html                     |   26 -
 testing/html/search/all_1.js                       |    5 -
 testing/html/search/all_2.html                     |   26 -
 testing/html/search/all_2.js                       |    6 -
 testing/html/search/close.png                      |  Bin 273 -> 0 bytes
 testing/html/search/files_0.js                     |    4 -
 testing/html/search/functions_0.html               |   26 -
 testing/html/search/functions_0.js                 |    5 -
 testing/html/search/mag_sel.png                    |  Bin 563 -> 0 bytes
 testing/html/search/namespaces_0.html              |   26 -
 testing/html/search/namespaces_0.js                |    6 -
 testing/html/search/nomatches.html                 |   12 -
 testing/html/search/search.css                     |  271 --
 testing/html/search/search.js                      |  791 ----
 testing/html/search/search_l.png                   |  Bin 604 -> 0 bytes
 testing/html/search/search_m.png                   |  Bin 158 -> 0 bytes
 testing/html/search/search_r.png                   |  Bin 612 -> 0 bytes
 testing/html/search/searchdata.js                  |   24 -
 testing/html/splitbar.png                          |  Bin 314 -> 0 bytes
 testing/html/sync_off.png                          |  Bin 853 -> 0 bytes
 testing/html/sync_on.png                           |  Bin 845 -> 0 bytes
 testing/html/tab_a.png                             |  Bin 142 -> 0 bytes
 testing/html/tab_b.png                             |  Bin 169 -> 0 bytes
 testing/html/tab_h.png                             |  Bin 177 -> 0 bytes
 testing/html/tab_s.png                             |  Bin 184 -> 0 bytes
 testing/html/tabs.css                              |   60 -
 testing/runtests.pl                                |  252 -
 testing/runtests.py                                |  202 +
 tmake/CHANGES                                      |   49 -
 tmake/LICENSE                                      |    9 -
 tmake/README                                       |   10 -
 tmake/bin/progen                                   |  249 -
 tmake/bin/tmake                                    | 1262 -----
 tmake/doc/m-linux-gcc.html                         |   85 -
 tmake/doc/m-win32-msvc.html                        |   89 -
 tmake/doc/tmake.html                               |  727 ---
 tmake/doc/tmake_ref.html                           |  463 --
 tmake/example/hello.cpp                            |  102 -
 tmake/example/hello.h                              |   34 -
 tmake/example/hello.pro                            |    3 -
 tmake/example/main.cpp                             |   38 -
 tmake/example/wc.t                                 |    6 -
 tmake/lib/aix-g++/app.t                            |    2 -
 tmake/lib/aix-g++/lib.t                            |    2 -
 tmake/lib/aix-g++/subdirs.t                        |    2 -
 tmake/lib/aix-g++/tmake.conf                       |   58 -
 tmake/lib/aix-xlc/app.t                            |    2 -
 tmake/lib/aix-xlc/lib.t                            |    2 -
 tmake/lib/aix-xlc/subdirs.t                        |    2 -
 tmake/lib/aix-xlc/tmake.conf                       |   64 -
 tmake/lib/beos-g++/app.t                           |    2 -
 tmake/lib/beos-g++/lib.t                           |    2 -
 tmake/lib/beos-g++/subdirs.t                       |    2 -
 tmake/lib/beos-g++/tmake.conf                      |   51 -
 tmake/lib/bsdi-g++/app.t                           |    2 -
 tmake/lib/bsdi-g++/lib.t                           |    2 -
 tmake/lib/bsdi-g++/subdirs.t                       |    2 -
 tmake/lib/bsdi-g++/tmake.conf                      |   61 -
 tmake/lib/dgux-g++/app.t                           |    2 -
 tmake/lib/dgux-g++/lib.t                           |    2 -
 tmake/lib/dgux-g++/subdirs.t                       |    2 -
 tmake/lib/dgux-g++/tmake.conf                      |   59 -
 tmake/lib/freebsd-g++/app.t                        |    2 -
 tmake/lib/freebsd-g++/lib.t                        |    2 -
 tmake/lib/freebsd-g++/subdirs.t                    |    2 -
 tmake/lib/freebsd-g++/tmake.conf                   |   60 -
 tmake/lib/gnu-g++/app.t                            |    2 -
 tmake/lib/gnu-g++/lib.t                            |    2 -
 tmake/lib/gnu-g++/subdirs.t                        |    2 -
 tmake/lib/gnu-g++/tmake.conf                       |   58 -
 tmake/lib/hpux-acc/app.t                           |    2 -
 tmake/lib/hpux-acc/lib.t                           |    2 -
 tmake/lib/hpux-acc/subdirs.t                       |    2 -
 tmake/lib/hpux-acc/tmake.conf                      |   60 -
 tmake/lib/hpux-cc/app.t                            |    2 -
 tmake/lib/hpux-cc/lib.t                            |    2 -
 tmake/lib/hpux-cc/subdirs.t                        |    2 -
 tmake/lib/hpux-cc/tmake.conf                       |   59 -
 tmake/lib/hpux-g++/app.t                           |    2 -
 tmake/lib/hpux-g++/lib.t                           |    2 -
 tmake/lib/hpux-g++/subdirs.t                       |    2 -
 tmake/lib/hpux-g++/tmake.conf                      |   60 -
 tmake/lib/irix-64/app.t                            |    2 -
 tmake/lib/irix-64/lib.t                            |    2 -
 tmake/lib/irix-64/subdirs.t                        |    2 -
 tmake/lib/irix-64/tmake.conf                       |   60 -
 tmake/lib/irix-dcc/app.t                           |    2 -
 tmake/lib/irix-dcc/lib.t                           |    2 -
 tmake/lib/irix-dcc/subdirs.t                       |    2 -
 tmake/lib/irix-dcc/tmake.conf                      |   60 -
 tmake/lib/irix-g++/app.t                           |    2 -
 tmake/lib/irix-g++/lib.t                           |    2 -
 tmake/lib/irix-g++/subdirs.t                       |    2 -
 tmake/lib/irix-g++/tmake.conf                      |   60 -
 tmake/lib/irix-n32/app.t                           |    2 -
 tmake/lib/irix-n32/lib.t                           |    2 -
 tmake/lib/irix-n32/subdirs.t                       |    2 -
 tmake/lib/irix-n32/tmake.conf                      |   60 -
 tmake/lib/irix-o32/app.t                           |    2 -
 tmake/lib/irix-o32/lib.t                           |    2 -
 tmake/lib/irix-o32/subdirs.t                       |    2 -
 tmake/lib/irix-o32/tmake.conf                      |   60 -
 tmake/lib/linux-64/app.t                           |    2 -
 tmake/lib/linux-64/lib.t                           |    2 -
 tmake/lib/linux-64/subdirs.t                       |    2 -
 tmake/lib/linux-64/tmake.conf                      |   59 -
 tmake/lib/linux-g++/app.t                          |    2 -
 tmake/lib/linux-g++/lib.t                          |    2 -
 tmake/lib/linux-g++/subdirs.t                      |    2 -
 tmake/lib/linux-g++/tmake.conf                     |   59 -
 tmake/lib/m68k-atari-mint-g++/app.t                |    2 -
 tmake/lib/m68k-atari-mint-g++/lib.t                |    2 -
 tmake/lib/m68k-atari-mint-g++/subdirs.t            |    2 -
 tmake/lib/m68k-atari-mint-g++/tmake.conf           |   59 -
 tmake/lib/macosx-c++/app.t                         |    2 -
 tmake/lib/macosx-c++/lib.t                         |    2 -
 tmake/lib/macosx-c++/subdirs.t                     |    2 -
 tmake/lib/macosx-c++/tmake.conf                    |   59 -
 tmake/lib/macosx-intel-c++/app.t                   |    2 -
 tmake/lib/macosx-intel-c++/lib.t                   |    2 -
 tmake/lib/macosx-intel-c++/subdirs.t               |    2 -
 tmake/lib/macosx-intel-c++/tmake.conf              |   59 -
 tmake/lib/macosx-uni-c++/app.t                     |    2 -
 tmake/lib/macosx-uni-c++/lib.t                     |    2 -
 tmake/lib/macosx-uni-c++/subdirs.t                 |    2 -
 tmake/lib/macosx-uni-c++/tmake.conf                |   59 -
 tmake/lib/netbsd-g++/app.t                         |    2 -
 tmake/lib/netbsd-g++/lib.t                         |    2 -
 tmake/lib/netbsd-g++/subdirs.t                     |    2 -
 tmake/lib/netbsd-g++/tmake.conf                    |   61 -
 tmake/lib/openbsd-g++/app.t                        |    2 -
 tmake/lib/openbsd-g++/lib.t                        |    2 -
 tmake/lib/openbsd-g++/subdirs.t                    |    2 -
 tmake/lib/openbsd-g++/tmake.conf                   |   61 -
 tmake/lib/osf1-cxx/app.t                           |    2 -
 tmake/lib/osf1-cxx/lib.t                           |    2 -
 tmake/lib/osf1-cxx/subdirs.t                       |    2 -
 tmake/lib/osf1-cxx/tmake.conf                      |   60 -
 tmake/lib/osf1-g++/app.t                           |    2 -
 tmake/lib/osf1-g++/lib.t                           |    2 -
 tmake/lib/osf1-g++/subdirs.t                       |    2 -
 tmake/lib/osf1-g++/tmake.conf                      |   58 -
 tmake/lib/qnx-g++/app.t                            |    2 -
 tmake/lib/qnx-g++/lib.t                            |    2 -
 tmake/lib/qnx-g++/subdirs.t                        |    2 -
 tmake/lib/qnx-g++/tmake.conf                       |   58 -
 tmake/lib/sco-g++/app.t                            |    2 -
 tmake/lib/sco-g++/lib.t                            |    2 -
 tmake/lib/sco-g++/subdirs.t                        |    2 -
 tmake/lib/sco-g++/tmake.conf                       |   58 -
 tmake/lib/solaris-cc-64/app.t                      |    2 -
 tmake/lib/solaris-cc-64/lib.t                      |    2 -
 tmake/lib/solaris-cc-64/subdirs.t                  |    2 -
 tmake/lib/solaris-cc-64/tmake.conf                 |   61 -
 tmake/lib/solaris-cc-gcc/app.t                     |    2 -
 tmake/lib/solaris-cc-gcc/lib.t                     |    2 -
 tmake/lib/solaris-cc-gcc/subdirs.t                 |    2 -
 tmake/lib/solaris-cc-gcc/tmake.conf                |   62 -
 tmake/lib/solaris-cc/app.t                         |    2 -
 tmake/lib/solaris-cc/lib.t                         |    2 -
 tmake/lib/solaris-cc/subdirs.t                     |    2 -
 tmake/lib/solaris-cc/tmake.conf                    |   61 -
 tmake/lib/solaris-g++/app.t                        |    2 -
 tmake/lib/solaris-g++/lib.t                        |    2 -
 tmake/lib/solaris-g++/subdirs.t                    |    2 -
 tmake/lib/solaris-g++/tmake.conf                   |   59 -
 tmake/lib/sunos-g++/app.t                          |    2 -
 tmake/lib/sunos-g++/lib.t                          |    2 -
 tmake/lib/sunos-g++/subdirs.t                      |    2 -
 tmake/lib/sunos-g++/tmake.conf                     |   58 -
 tmake/lib/ultrix-g++/app.t                         |    2 -
 tmake/lib/ultrix-g++/lib.t                         |    2 -
 tmake/lib/ultrix-g++/subdirs.t                     |    2 -
 tmake/lib/ultrix-g++/tmake.conf                    |   58 -
 tmake/lib/unix/app.t                               |    6 -
 tmake/lib/unix/generic.t                           |  283 --
 tmake/lib/unix/lib.t                               |    6 -
 tmake/lib/unix/subdirs.t                           |   38 -
 tmake/lib/unixware-g++/app.t                       |    2 -
 tmake/lib/unixware-g++/lib.t                       |    2 -
 tmake/lib/unixware-g++/subdirs.t                   |    2 -
 tmake/lib/unixware-g++/tmake.conf                  |   60 -
 tmake/lib/unixware7-cc/app.t                       |    2 -
 tmake/lib/unixware7-cc/lib.t                       |    2 -
 tmake/lib/unixware7-cc/subdirs.t                   |    2 -
 tmake/lib/unixware7-cc/tmake.conf                  |   60 -
 tmake/lib/unixware7-g++/app.t                      |    2 -
 tmake/lib/unixware7-g++/lib.t                      |    2 -
 tmake/lib/unixware7-g++/subdirs.t                  |    2 -
 tmake/lib/unixware7-g++/tmake.conf                 |   60 -
 tmake/lib/win32-borland/app.t                      |    6 -
 tmake/lib/win32-borland/generic.t                  |  237 -
 tmake/lib/win32-borland/lib.t                      |    6 -
 tmake/lib/win32-borland/subdirs.t                  |    3 -
 tmake/lib/win32-borland/tmake.conf                 |   56 -
 tmake/lib/win32-g++/app.t                          |    6 -
 tmake/lib/win32-g++/generic.t                      |  243 -
 tmake/lib/win32-g++/lib.t                          |    6 -
 tmake/lib/win32-g++/subdirs.t                      |    2 -
 tmake/lib/win32-g++/tmake.conf                     |   56 -
 tmake/lib/win32-mingw/app.t                        |    6 -
 tmake/lib/win32-mingw/generic.t                    |  239 -
 tmake/lib/win32-mingw/lib.t                        |    6 -
 tmake/lib/win32-mingw/subdirs.t                    |    2 -
 tmake/lib/win32-mingw/tmake.conf                   |   56 -
 tmake/lib/win32-msvc/app.t                         |    6 -
 tmake/lib/win32-msvc/generic.t                     |  229 -
 tmake/lib/win32-msvc/lib.t                         |    6 -
 tmake/lib/win32-msvc/subdirs.t                     |    2 -
 tmake/lib/win32-msvc/tmake.conf                    |   65 -
 tmake/lib/win32-msvc/vcapp.t                       |  244 -
 tmake/lib/win32-msvc/vclib.t                       |  178 -
 tmake/lib/win32-symantec/app.t                     |    6 -
 tmake/lib/win32-symantec/generic.t                 |  211 -
 tmake/lib/win32-symantec/lib.t                     |    6 -
 tmake/lib/win32-symantec/subdirs.t                 |    2 -
 tmake/lib/win32-symantec/tmake.conf                |   56 -
 tmake/lib/win32-visage/app.t                       |    6 -
 tmake/lib/win32-visage/generic.t                   |  207 -
 tmake/lib/win32-visage/lib.t                       |    6 -
 tmake/lib/win32-visage/subdirs.t                   |    2 -
 tmake/lib/win32-visage/tmake.conf                  |   56 -
 tmake/lib/win32-watcom/app.t                       |    6 -
 tmake/lib/win32-watcom/generic.t                   |  201 -
 tmake/lib/win32-watcom/lib.t                       |    6 -
 tmake/lib/win32-watcom/subdirs.t                   |    2 -
 tmake/lib/win32-watcom/tmake.conf                  |   54 -
 tmake/lib/win32/subdirs.t                          |   54 -
 vhdlparser/CMakeLists.txt                          |   10 +
 vhdlparser/CharStream.h                            |   34 +-
 vhdlparser/ErrorHandler.h                          |   10 +-
 vhdlparser/{Makefile.in => Makefile}               |   31 +-
 vhdlparser/TokenManager.h                          |    5 +-
 vhdlparser/TokenMgrError.cc                        |    4 +-
 vhdlparser/VhdlParser.cc                           |  801 ++--
 vhdlparser/VhdlParser.h                            | 4440 ++++++++---------
 vhdlparser/VhdlParserTokenManager.cc               |  272 +-
 vhdlparser/VhdlParserTokenManager.h                |    4 +-
 vhdlparser/vhdlparser.jj                           |   78 +-
 vhdlparser/vhdlparser.pro.in                       |   33 -
 winbuild/.gitignore                                |    7 -
 winbuild/Config.rules                              |   30 -
 winbuild/Doxygen.sln                               |   71 -
 winbuild/Doxygen.vcproj                            | 5008 --------------------
 winbuild/Doxywizard.vcproj                         |  718 ---
 winbuild/GenResources.rules                        |   19 -
 winbuild/Gen_head.rules                            |   19 -
 winbuild/Languages.rules                           |  862 ----
 winbuild/Lex.rules                                 |   34 -
 winbuild/Settings.rules                            |   59 -
 winbuild/Unistd.rules                              |   18 -
 winbuild/Version.rules                             |   19 -
 winbuild/doxyindexer.vcproj                        |  363 --
 winbuild/doxysearch.vcproj                         |  359 --
 winbuild/iconv.vcproj                              |  468 --
 winbuild/moc.rules                                 |   20 -
 winbuild/pack_the_distribution_for_windows.py      |  234 -
 winbuild/qtools.vcproj                             | 1583 -------
 winbuild/unistd.py                                 |   16 -
 860 files changed, 17735 insertions(+), 43140 deletions(-)

diff --git a/BUILD.txt b/BUILD.txt
new file mode 100644
index 0000000..ad3424b
--- /dev/null
+++ b/BUILD.txt
@@ -0,0 +1,53 @@
+Doxygen uses cmake (http://www.cmake.org/) to build executables for various platforms.
+It's required at least cmake version 3.0.
+
+The first step is to create a build directory where the output should be stored.
+Doxygen can be fully build outside of the source tree.
+
+The second step is to invoke cmake from within the build directory with the desired generator.
+
+For Linux/Unix systems do the following
+
+  mkdir build
+  cd build
+  cmake -G "Unix Makefiles" path/to/root/of/doxygen/source/tree
+  make
+
+This also works for MacOSX, but if XCode is installed you can also generate an XCode project file
+
+  cmake -G XCode path/to/root/of/doxygen/source/tree
+
+For Windows one can generate a Visual Studio project using
+
+  cmake -G "Visual Studio 12 2013" path\to\root\of\doxygen\source\tree
+
+(this is for Visual Studio 12, there are typically also generators for other versions of
+Visual Studio or other compiler environments like MinGW)
+
+Doxygen's cmake configuration provides a number of options:
+- build_wizard    Build the GUI frontend for doxygen.
+- build_app       Example showing how to embed doxygen in an application.
+- build_xmlparser Example showing how to parse doxygen's XML output.
+- build_search    Build external search tools (doxysearch and doxyindexer).
+- build_doc       Build user manual.
+- use_sqlite3     Add support for sqlite3 output [experimental].
+- use_libclang    Add support for libclang parsing.
+- win_static      Link with /MT in stead of /MD on windows.
+- english_only    Only compile in support for the English language.
+
+An option can be turned on, by adding -D<option>=ON as a command line option, this can be
+done when generating the initial build files, but also afterwards, i.e. to enable building
+of the documentation after an initial cmake -G run, do
+
+  cmake -Dbuild_doc=ON path/to/root/of/doxygen/source/tree
+
+To turn the option off use
+
+  cmake -Dbuild_doc=OFF path/to/root/of/doxygen/source/tree
+
+To see the current value is of the various options, you can run
+
+  cmake -L path/to/root/of/doxygen/source/tree
+
+The build target for building the documentation is 'docs' and the build target for
+the regression tests is 'tests'
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..a020f41
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,143 @@
+# vim:ts=4:sw=4:expandtab:autoindent:
+#
+# Copyright (C) 1997-2015 by Dimitri van Heesch.
+#
+# Permission to use, copy, modify, and distribute this software and its
+# documentation under the terms of the GNU General Public License is hereby
+# granted. No representations are made about the suitability of this software
+# for any purpose. It is provided "as is" without express or implied warranty.
+# See the GNU General Public License for more details.
+#
+# Documents produced by Doxygen are derivative works derived from the
+# input used in their production; they are not affected by this license.
+
+cmake_minimum_required(VERSION 2.8.12)
+project(doxygen)
+
+option(build_wizard    "Build the GUI frontend for doxygen." OFF)
+option(build_app       "Example showing how to embed doxygen in an application." OFF)
+option(build_xmlparser "Example showing how to parse doxygen's XML output." OFF)
+option(build_search    "Build external search tools (doxysearch and doxyindexer)" OFF)
+option(build_doc       "Build user manual" OFF)
+option(use_sqlite3     "Add support for sqlite3 output [experimental]." OFF)
+option(use_libclang    "Add support for libclang parsing." OFF)
+option(win_static      "Link with /MT in stead of /MD on windows" OFF)
+option(english_only    "Only compile in support for the English language" OFF)
+option(force_qt4       "Forces doxywizard to build using Qt4 even if Qt5 is installed" OFF)
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
+set(TOP "${CMAKE_SOURCE_DIR}")
+include(version)
+
+set(sqlite3  "0" CACHE INTERNAL "used in settings.h")
+set(clang    "0" CACHE INTERNAL "used in settings.h")
+if (use_sqlite3)
+	set(sqlite3  "1" CACHE INTERNAL "used in settings.h")
+endif()
+if (use_libclang)
+	set(clang    "1" CACHE INTERNAL "used in settings.h")
+        find_package(LibClang REQUIRED)
+endif()
+
+if (${CMAKE_SYSTEM} MATCHES "Darwin")
+    set(CMAKE_CXX_FLAGS "-Wno-deprecated-register -mmacosx-version-min=10.5 ${CMAKE_CXX_FLAGS}")
+    set(CMAKE_C_FLAGS "-Wno-deprecated-register -mmacosx-version-min=10.5 ${CMAKE_C_FLAGS}")
+    find_library(CORESERVICES_LIB CoreServices)
+    set(EXTRA_LIBS ${CORESERVICES_LIB})
+endif()
+
+if (WIN32)
+    if(NOT ICONV_DIR)
+      set(ICONV_DIR "${CMAKE_SOURCE_DIR}/winbuild")
+    endif()
+    set(CMAKE_REQUIRED_DEFINITIONS "-DLIBICONV_STATIC")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") # needed for language.cpp on 64bit
+    add_definitions(-DLIBICONV_STATIC -D_CRT_SECURE_NO_WARNINGS)
+endif()
+
+find_program(DOT NAMES dot)
+find_package(PythonInterp REQUIRED)
+find_package(FLEX REQUIRED)
+find_package(BISON REQUIRED)
+find_package(Threads)
+
+if (sqlite3)
+    find_package(SQLite3 REQUIRED)
+endif()
+
+find_package(Iconv REQUIRED)
+include_directories(${ICONV_INCLUDE_DIR})
+
+
+#set(DOXYDOCS ${CMAKE_SOURCE_DIR}/doc CACHE INTERNAL "Path to doxygen docs")
+set(DOXYDOCS ${PROJECT_BINARY_DIR}/doc)
+set(ENV{DOXYGEN_DOCDIR} ${DOXYDOCS})
+set(GENERATED_SRC "${CMAKE_BINARY_DIR}/generated_src" CACHE INTERNAL "Stores generated files")
+set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
+set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
+set(CUSTOM_INCLUDE_DIR "" CACHE FILEPATH "Extra include path")
+set(CUSTOM_LINK_DIR "" CACHE FILEPATH "Extra library path")
+
+# place binaries for all build types in the same directory, so we know where to find it
+# when running tests or generating docs
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${EXECUTABLE_OUTPUT_PATH})
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${EXECUTABLE_OUTPUT_PATH})
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${EXECUTABLE_OUTPUT_PATH})
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${EXECUTABLE_OUTPUT_PATH})
+
+# gather lang codes for translation
+file(GLOB lang_files RELATIVE "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/translator_??.h")
+set(lcodes "")
+foreach (_lang ${lang_files})
+  string(REGEX REPLACE "translator_(.*).h" "\\1" _lang_code ${_lang})
+  string(TOUPPER ${_lang_code} lang_code)
+  list(APPEND lcodes "${lang_code}")
+endforeach()
+if (english_only) # user only wants English
+  set(lcodes "ENONLY")
+endif()
+set(LANG_CODES ${lcodes} CACHE STRING "List of language codes for which translations should be compiled in")
+
+if (${CUSTOM_INCLUDE_DIR})
+   include_directories(${CUSTOM_INCLUDE_DIR})
+endif()
+
+if (${CUSTOM_LINK_DIR})
+   link_directories(${CUSTOM_LINK_DIR})
+endif()
+
+if (win_static)
+    set(CompilerFlags
+        CMAKE_CXX_FLAGS
+        CMAKE_CXX_FLAGS_DEBUG
+        CMAKE_CXX_FLAGS_RELEASE
+        CMAKE_CXX_FLAGS_MINSIZEREL
+        CMAKE_CXX_FLAGS_RELWITHDEBINFO
+        CMAKE_C_FLAGS
+        CMAKE_C_FLAGS_DEBUG
+        CMAKE_C_FLAGS_RELEASE
+        CMAKE_C_FLAGS_MINSIZEREL
+        CMAKE_C_FLAGS_RELWITHDEBINFO)
+    foreach(CompilerFlag ${CompilerFlags})
+      string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
+    endforeach()
+endif()
+
+
+add_subdirectory(libmd5)
+add_subdirectory(qtools)
+add_subdirectory(vhdlparser)
+add_subdirectory(src)
+add_subdirectory(examples)
+add_subdirectory(doc)
+
+add_subdirectory(addon/doxmlparser)
+add_subdirectory(addon/doxyapp)
+add_subdirectory(addon/doxysearch)
+add_subdirectory(addon/doxywizard)
+
+enable_testing()
+add_subdirectory(testing)
+
+include(cmake/packaging.cmake) # set CPACK_xxxx properties
+include(CPack)
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index af7a76f..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,161 +0,0 @@
-
-DESTDIR = 
-
-doxywizard:
-	cd addon/doxywizard ; $(MAKE) 
-
-doxysearch:
-	cd addon/doxysearch ; $(MAKE) 
-
-doxmlparser:
-	cd addon/doxmlparser/src ; $(MAKE)
-	cd addon/doxmlparser/test ; $(MAKE)
-	cd addon/doxmlparser/examples/metrics ; $(MAKE)
-
-doxyapp:
-	cd addon/doxyapp ; $(MAKE) clean
-
-clean: FORCE
-	- cd examples ; $(MAKE) clean
-	- cd doc ; $(MAKE) clean
-	- cd qtools ; $(MAKE) clean
-	- cd src ; $(MAKE) clean
-	- cd libmd5 ; $(MAKE) clean
-	- cd vhdlparser ; $(MAKE) clean
-	-cd addon/doxywizard ; $(MAKE) clean
-	-cd addon/doxysearch ; $(MAKE) clean
-	-cd addon/doxyapp ; $(MAKE) clean
-	-cd addon/doxmlparser/src ; $(MAKE) clean
-	-cd addon/doxmlparser/test ; $(MAKE) clean
-	-cd addon/doxmlparser/examples/metrics ; $(MAKE) clean
-	-rm -f bin/doxy*
-	-rm -f objects/*/*.o
-
-distclean: clean
-	-cd src ; $(MAKE) distclean
-	-cd libmd5 ; $(MAKE) distclean
-	-cd vhdlparser ; $(MAKE) distclean
-	-cd qtools ; $(MAKE) distclean
-	-cd addon/doxywizard ; $(MAKE) distclean
-	-cd addon/doxysearch ; $(MAKE) distclean
-	-cd addon/doxyapp ; $(MAKE) distclean
-	-cd addon/doxmlparser/src ; $(MAKE) distclean
-	-cd addon/doxmlparser/test ; $(MAKE) distclean
-	-cd addon/doxmlparser/examples/metrics ; $(MAKE) distclean
-	-rm -rf lib
-	-rm -rf bin
-	-rm -rf objects
-	-rm -rf html
-	-rm -rf latex
-	-rm -rf man
-	-rm -rf docbook
-	-rm -rf perlmod
-	-rm -rf rtf
-	-rm -rf xml
-	-rm -f src/Makefile.doxygen src/Makefile.libdoxygen 
-	-rm -f src/Makefile.libdoxycfg src/libdoxycfg.t src/libdoxygen.t
-	-rm -f libmd5/Makefile.libmd5
-	-rm -f vhdlparser/Makefile.vhdlparser
-	-rm -f .makeconfig .tmakeconfig
-	-rm -f src/doxygen.pro src/libdoxygen.pro qtools/qtools.pro src/libdoxycfg.pro libmd5/libmd5.pro vhdlparser/vhdlparser.pro
-	-rm -rf generated_src
-	-rm -f addon/doxywizard/doxywizard.pro
-	-rm -f VERSION
-	-rm -f packages/rpm/doxygen.spec
-	-rm -r addon/doxywizard/Makefile
-	-rm -f addon/doxysearch/Makefile
-	-rm -f addon/doxyapp/Makefile
-	-rm -f addon/doxmlparser/src/Makefile
-	-rm -f addon/doxmlparser/test/Makefile
-	-rm -f addon/doxmlparser/examples/metrics/Makefile
-	-rm -f qtools/Makefile src/Makefile examples/Makefile doc/Makefile 
-	-rm -f Makefile
-
-DATE=$(shell date "+%B %Y")
-
-MAN1DIR = man/man1
-
-install: doxywizard_install doxysearch_install
-	$(INSTTOOL) -d $(DESTDIR)$(INSTALL)/bin
-	$(INSTTOOL) -m 755 bin/doxygen        $(DESTDIR)$(INSTALL)/bin
-	$(INSTTOOL) -d $(DESTDIR)$(INSTALL)/$(MAN1DIR)
-	cat doc/doxygen.1    | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxygen.1 
-	$(INSTTOOL) -m 644 doxygen.1 $(DESTDIR)$(INSTALL)/$(MAN1DIR)/doxygen.1
-	rm doxygen.1
-
-install_docs: 
-	$(INSTTOOL) -d $(DESTDIR)$(DOCDIR)
-	$(MAKE) -C examples
-	$(MAKE) -C doc 
-	$(MAKE) -C latex 
-	$(INSTTOOL) -m 644 latex/doxygen_manual.pdf $(DESTDIR)$(DOCDIR)
-	cp -r examples $(DESTDIR)$(DOCDIR)
-	cp -r html $(DESTDIR)$(DOCDIR)
-
-docs: FORCE
-	cd examples ; $(MAKE)
-	cd doc ; $(MAKE)
-
-pdf: docs
-	cd latex ; $(MAKE)
-
-DISTFILES =  Doxyfile vhdlparser libmd5 addon tmake doc examples bin lib objects testing \
-             qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \
-             Makefile.win_make.in INSTALL LANGUAGE.HOWTO LICENSE PLATFORMS \
-             VERSION README.md packages winbuild jquery templates
-
-archive: clean
-	tar zcvf dx`date +%y%m%d`.tgz $(DISTFILES)
-
-DISTDIR = doxygen-`echo $(VERSION) | tr - _`
-
-dist: clean
-	rm -rf $(DISTDIR)
-	mkdir $(DISTDIR)
-	cp -a $(DISTFILES) $(DISTDIR)
-	find $(DISTDIR) \( -name ".svn" \) -print0 | xargs -0 rm -rf
-	tar zcvf $(DISTDIR).src.tar.gz $(DISTDIR)
-	rm -rf $(DISTDIR)
-
-DISTDIR = doxygen-`echo $(VERSION) | tr - _`
-rpm: dist
-	gzip -df $(DISTDIR).src.tar.gz
-	mkdir $(DISTDIR)
-	mkdir $(DISTDIR)/packages
-	mkdir $(DISTDIR)/packages/rpm
-	cp packages/rpm/doxygen.spec $(DISTDIR)/packages/rpm
-	rm -rf $(DISTDIR)
-	gzip -9v $(DISTDIR).src.tar
-	rpmbuild -ta %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
-
-rpmsrc: dist
-	gzip -df $(DISTDIR).src.tar.gz
-	mkdir $(DISTDIR)
-	mkdir $(DISTDIR)/packages
-	mkdir $(DISTDIR)/packages/rpm
-	cp packages/rpm/doxygen.spec $(DISTDIR)/packages/rpm
-	tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
-	rm -rf $(DISTDIR)
-	gzip -9v $(DISTDIR).src.tar
-	rpmbuild -ts %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
-
-rpmbinary: dist
-	gzip -df $(DISTDIR).src.tar.gz
-	mkdir $(DISTDIR)
-	mkdir $(DISTDIR)/packages
-	mkdir $(DISTDIR)/packages/rpm
-	cp packages/rpm/doxygen.spec $(DISTDIR)/packages/rpm
-	tar -rvf $(DISTDIR).src.tar $(DISTDIR)/packages/rpm/doxygen.spec
-	rm -rf $(DISTDIR)
-	gzip -9v $(DISTDIR).src.tar
-	rpmbuild -tb %%WITHDOXYWIZARD%% $(DISTDIR).src.tar.gz
-
-
-ctags:
-	ctags -R -f tags src addon/doxywizard qtools
-
-test: FORCE
-	make -C testing
-
-FORCE:
-
diff --git a/Makefile.win_make.in b/Makefile.win_make.in
deleted file mode 100644
index 1218979..0000000
--- a/Makefile.win_make.in
+++ /dev/null
@@ -1,34 +0,0 @@
-all: src\version.cpp
-	set TMAKEPATH=$(TMAKEPATH) & cd qtools & $(MAKE)
-	set TMAKEPATH=$(TMAKEPATH) & cd libmd5 & $(MAKE)
-	set TMAKEPATH=$(TMAKEPATH) & cd src & $(MAKE)
-
-clean:
-	cd examples & $(MAKE) clean
-	cd doc & $(MAKE) clean
-	cd src & $(MAKE) clean
-	-del bin\doxy*.*
-	-del objects\*.o
-
-distclean: clean
-	-del src\Makefile.libdoxygen \
-	     src\Makefile.doxygen \
-	     src\Makefile.libdoxycfg \
-	     src\libdoxycfg.t src\libdoxygen.t
-	-del Makefile src\Makefile examples\Makefile doc\Makefile
-	-del src\libdoxygen.pro src\doxygen.pro src\libdoxycfg.pro
-	-del src\version.cpp
-
-realclean: distclean
-
-docs:
-	set TMAKEPATH=$(TMAKEPATH) & cd examples & $(MAKE)
-	set TMAKEPATH=$(TMAKEPATH) & cd doc & $(MAKE)
-
-ps: docs
-	cd latex & $(MAKE)
-
-src\version.cpp: Makefile
-	echo char versionString[]="""$(VERSION)"""; > src\version.cpp
-
-FORCE:
diff --git a/Makefile.win_nmake.in b/Makefile.win_nmake.in
deleted file mode 100644
index 069bb53..0000000
--- a/Makefile.win_nmake.in
+++ /dev/null
@@ -1,51 +0,0 @@
-all: src\version.cpp
-	set TMAKEPATH=$(TMAKEPATH)
-	cd qtools
-	$(MAKE)
-	cd ..
-	cd libmd5
-	$(MAKE)
-	cd ..
-	cd src 
-	$(MAKE)
-
-clean: FORCE
-	cd examples
-	$(MAKE) clean
-	cd ..
-	cd doc
-	$(MAKE) clean
-	cd ..
-	cd src
-	$(MAKE) clean
-	cd ..
-	-del bin\doxy*.*
-	-del objects\*.o
-
-distclean: clean
-	-del src\Makefile.libdoxygen \
-	     src\Makefile.doxygen \
-	     src\Makefile.libdoxycfg \
-	     src\libdoxycfg.t src\libdoxygen.t
-	-del Makefile src\Makefile examples\Makefile doc\Makefile
-	-del src\libdoxygen.pro src\doxygen.pro src\libdoxycfg.pro
-	-del src\version.cpp
-
-realclean: distclean
-
-docs: FORCE
-	cd examples 
-	$(MAKE)
-	cd ..
-	cd doc
-	$(MAKE)
-	cd ..
-
-ps: docs
-	cd latex
-	$(MAKE)
-
-src\version.cpp: Makefile
-	echo char versionString[]="$(VERSION)"; > src\version.cpp
-
-FORCE:
diff --git a/PLATFORMS b/PLATFORMS
deleted file mode 100644
index 22a8d8c..0000000
--- a/PLATFORMS
+++ /dev/null
@@ -1,32 +0,0 @@
-aix-g++
-aix-xlc
-beos-g++
-dgux-g++
-freebsd-g++
-gnu-g++
-hpux-acc
-hpux-cc
-hpux-g++
-irix-64
-irix-dcc
-irix-g++
-irix-n32
-linux-g++
-linux-64
-macosx-c++
-macosx-uni-c++
-m68k-atari-mint-g++
-netbsd-g++
-openbsd-g++
-osf1-cxx
-osf1-g++
-qnx-g++
-sco-g++
-solaris-cc
-solaris-cc-64
-solaris-g++
-sunos-g++
-ultrix-g++
-unixware-g++
-win32-g++
-win32-mingw
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..267637b
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+1.8.11
diff --git a/addon/doxmlparser/CMakeLists.txt b/addon/doxmlparser/CMakeLists.txt
new file mode 100644
index 0000000..e69de29
diff --git a/addon/doxmlparser/src/Makefile.in b/addon/doxmlparser/src/Makefile.in
deleted file mode 100644
index 47d20c2..0000000
--- a/addon/doxmlparser/src/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-all clean depend: Makefile.doxmlparser 
-	$(MAKE) -f Makefile.doxmlparser $@
-
-distclean: clean
-	$(RM) -rf Makefile.doxmlparser doxmlparser.pro Makefile obj
-
-realclean: distclean
-
-tmake:
-	$(ENV) $(PERL) $(TMAKE) doxmlparser.pro >Makefile.doxmlparser
-
-Makefile.doxmlparser: doxmlparser.pro
-	$(ENV) $(PERL) $(TMAKE) doxmlparser.pro >Makefile.doxmlparser
-
-install:
diff --git a/addon/doxmlparser/src/basehandler.h b/addon/doxmlparser/src/basehandler.h
index 31fbf24..5715dda 100644
--- a/addon/doxmlparser/src/basehandler.h
+++ b/addon/doxmlparser/src/basehandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/baseiterator.h b/addon/doxmlparser/src/baseiterator.h
index 2ee9c2f..3325f54 100644
--- a/addon/doxmlparser/src/baseiterator.h
+++ b/addon/doxmlparser/src/baseiterator.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp
index 87b0440..3e729e9 100644
--- a/addon/doxmlparser/src/compoundhandler.cpp
+++ b/addon/doxmlparser/src/compoundhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/compoundhandler.h b/addon/doxmlparser/src/compoundhandler.h
index c7e5ac0..f669133 100644
--- a/addon/doxmlparser/src/compoundhandler.h
+++ b/addon/doxmlparser/src/compoundhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/dochandler.cpp b/addon/doxmlparser/src/dochandler.cpp
index df71e6a..4e25813 100644
--- a/addon/doxmlparser/src/dochandler.cpp
+++ b/addon/doxmlparser/src/dochandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/dochandler.h b/addon/doxmlparser/src/dochandler.h
index 6bc2bd9..4340dbd 100644
--- a/addon/doxmlparser/src/dochandler.h
+++ b/addon/doxmlparser/src/dochandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h
index ba863d4..22cecdb 100644
--- a/addon/doxmlparser/src/doxmlintf.h
+++ b/addon/doxmlparser/src/doxmlintf.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/doxmlparser.pro.in b/addon/doxmlparser/src/doxmlparser.pro.in
deleted file mode 100644
index 2bbf326..0000000
--- a/addon/doxmlparser/src/doxmlparser.pro.in
+++ /dev/null
@@ -1,27 +0,0 @@
-TEMPLATE     =	lib.t
-CONFIG       =	console staticlib warn_on $extraopts
-HEADERS      =	basehandler.h mainhandler.h \
-                compoundhandler.h sectionhandler.h \
-                memberhandler.h paramhandler.h \
-                dochandler.h linkedtexthandler.h \
-                debug.h graphhandler.h stringimpl.h \
-                loamhandler.h
-SOURCES      =	mainhandler.cpp \
-                compoundhandler.cpp sectionhandler.cpp \
-                memberhandler.cpp paramhandler.cpp \
-                dochandler.cpp linkedtexthandler.cpp \
-                basehandler.cpp debug.cpp graphhandler.cpp \
-                loamhandler.cpp
-unix:LIBS                  += -L../../../lib -lqtools 
-win32:INCLUDEPATH          += .
-win32-mingw:LIBS           += -L../../../lib -lqtools 
-win32-msvc:LIBS            += qtools.lib shell32.lib 
-win32-msvc:TMAKE_LFLAGS    += /LIBPATH:....\\..\lib
-win32-borland:LIBS         += qtools.lib doxycfg.lib shell32.lib
-win32-borland:TMAKE_LFLAGS += -L..\..\..\lib
-win32:TMAKE_CXXFLAGS       += -DQT_NODLL
-DESTDIR                     = ../../../lib
-OBJECTS_DIR                 = ../../../objects/doxmlparser
-TARGET                      = doxmlparser
-INCLUDEPATH                += ../../../qtools ../include
-
diff --git a/addon/doxmlparser/src/graphhandler.h b/addon/doxmlparser/src/graphhandler.h
index 090c62a..783b9f2 100644
--- a/addon/doxmlparser/src/graphhandler.h
+++ b/addon/doxmlparser/src/graphhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/linkedtexthandler.cpp b/addon/doxmlparser/src/linkedtexthandler.cpp
index fe45133..1164688 100644
--- a/addon/doxmlparser/src/linkedtexthandler.cpp
+++ b/addon/doxmlparser/src/linkedtexthandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/linkedtexthandler.h b/addon/doxmlparser/src/linkedtexthandler.h
index cebdeb0..816726e 100644
--- a/addon/doxmlparser/src/linkedtexthandler.h
+++ b/addon/doxmlparser/src/linkedtexthandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/loamhandler.h b/addon/doxmlparser/src/loamhandler.h
index a113aa9..48a9952 100644
--- a/addon/doxmlparser/src/loamhandler.h
+++ b/addon/doxmlparser/src/loamhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/mainhandler.cpp b/addon/doxmlparser/src/mainhandler.cpp
index 48c77fa..93525f0 100644
--- a/addon/doxmlparser/src/mainhandler.cpp
+++ b/addon/doxmlparser/src/mainhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/mainhandler.h b/addon/doxmlparser/src/mainhandler.h
index 270f417..21e9b0a 100644
--- a/addon/doxmlparser/src/mainhandler.h
+++ b/addon/doxmlparser/src/mainhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/memberhandler.cpp b/addon/doxmlparser/src/memberhandler.cpp
index ea55333..7a3f228 100644
--- a/addon/doxmlparser/src/memberhandler.cpp
+++ b/addon/doxmlparser/src/memberhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/memberhandler.h b/addon/doxmlparser/src/memberhandler.h
index a84cc79..7438172 100644
--- a/addon/doxmlparser/src/memberhandler.h
+++ b/addon/doxmlparser/src/memberhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/paramhandler.cpp b/addon/doxmlparser/src/paramhandler.cpp
index e6d3db1..831d5e4 100644
--- a/addon/doxmlparser/src/paramhandler.cpp
+++ b/addon/doxmlparser/src/paramhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/paramhandler.h b/addon/doxmlparser/src/paramhandler.h
index 7ecf711..3f0f09b 100644
--- a/addon/doxmlparser/src/paramhandler.h
+++ b/addon/doxmlparser/src/paramhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/sectionhandler.cpp b/addon/doxmlparser/src/sectionhandler.cpp
index bb43925..1137901 100644
--- a/addon/doxmlparser/src/sectionhandler.cpp
+++ b/addon/doxmlparser/src/sectionhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/sectionhandler.h b/addon/doxmlparser/src/sectionhandler.h
index 2730307..a212e62 100644
--- a/addon/doxmlparser/src/sectionhandler.h
+++ b/addon/doxmlparser/src/sectionhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxyapp/CMakeLists.txt b/addon/doxyapp/CMakeLists.txt
new file mode 100644
index 0000000..99a6fd4
--- /dev/null
+++ b/addon/doxyapp/CMakeLists.txt
@@ -0,0 +1,30 @@
+if (build_app)
+
+find_package(Iconv)
+
+include_directories(
+	${CMAKE_SOURCE_DIR}/src
+	${CMAKE_SOURCE_DIR}/qtools
+	${ICONV_INCLUDE_DIR}
+	${CLANG_INCLUDEDIR}
+)
+
+add_executable(doxyapp
+doxyapp.cpp
+)
+target_link_libraries(doxyapp
+_doxygen
+qtools
+md5
+doxycfg
+vhdlparser
+${ICONV_LIBRARIES}
+${CMAKE_THREAD_LIBS_INIT}
+${SQLITE3_LIBRARIES}
+${EXTRA_LIBS}
+${CLANG_LIBS}
+)
+
+install(TARGETS doxyapp DESTINATION bin)
+
+endif()
diff --git a/addon/doxyapp/Makefile.in b/addon/doxyapp/Makefile.in
deleted file mode 100644
index d0629d9..0000000
--- a/addon/doxyapp/Makefile.in
+++ /dev/null
@@ -1,19 +0,0 @@
-
-all clean depend distclean: Makefile.doxyapp 
-	$(MAKE) -f Makefile.doxyapp $@
-
-distclean: clean
-	$(RM) -rf Makefile doxyapp.pro Makefile.doxyapp
-
-realclean: distclean
-
-tmake:
-	$(ENV) $(PERL) "$(TMAKE)" doxyapp.pro >Makefile.doxyapp
-
-strip:
-	strip doxyapp
-
-Makefile.doxyapp: doxyapp.pro
-	$(ENV) $(PERL) "$(TMAKE)" doxyapp.pro >Makefile.doxyapp
-
-install:
diff --git a/addon/doxyapp/doxyapp.cpp b/addon/doxyapp/doxyapp.cpp
index e73d12a..6564981 100644
--- a/addon/doxyapp/doxyapp.cpp
+++ b/addon/doxyapp/doxyapp.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -26,7 +26,8 @@
  */
 
 #include <stdlib.h>
-#include <unistd.h>
+#include <qfile.h>
+#include <qdir.h>
 #include "doxygen.h"
 #include "outputgen.h"
 #include "parserintf.h"
@@ -308,10 +309,10 @@ int main(int argc,char **argv)
   }
 
   // remove temporary files
-  if (!Doxygen::objDBFileName.isEmpty()) unlink(Doxygen::objDBFileName);
-  if (!Doxygen::entryDBFileName.isEmpty()) unlink(Doxygen::entryDBFileName);
+  if (!Doxygen::objDBFileName.isEmpty()) QFile::remove(Doxygen::objDBFileName);
+  if (!Doxygen::entryDBFileName.isEmpty()) QFile::remove(Doxygen::entryDBFileName);
   // clean up after us
-  rmdir("/tmp/doxygen");
+  QDir().rmdir("/tmp/doxygen");
 
   while (1)
   {
diff --git a/addon/doxyapp/doxyapp.pro.in b/addon/doxyapp/doxyapp.pro.in
deleted file mode 100644
index 7a8c5ee..0000000
--- a/addon/doxyapp/doxyapp.pro.in
+++ /dev/null
@@ -1,12 +0,0 @@
-TEMPLATE     =	app.t
-CONFIG       =	console warn_on debug
-HEADERS      =	
-SOURCES      =	doxyapp.cpp
-LIBS          += -L../../lib -ldoxygen -lqtools -lmd5 -ldoxycfg -lpthread -liconv
-DESTDIR        = 
-OBJECTS_DIR    = ../../objects/doxyapp
-TARGET         = ../../bin/doxyapp
-INCLUDEPATH   += ../../qtools ../../src
-DEPENDPATH    += ../../src
-TARGETDEPS     = ../../lib/libdoxygen.a
-
diff --git a/addon/doxypysql/search.py b/addon/doxypysql/search.py
index d0c88c0..c185138 100755
--- a/addon/doxypysql/search.py
+++ b/addon/doxypysql/search.py
@@ -14,6 +14,7 @@ import sys
 import os
 import getopt
 import json
+import re
 
 class MemberType:
   Define="0"
@@ -28,6 +29,7 @@ class MemberType:
   DCOP="9"
   Property="10"
   Event="11"
+  File="12"
 
 class RequestType:
   References="9901"
@@ -38,252 +40,253 @@ class RequestType:
   BaseClasses="9906"
   SubClasses="9907"
 
-g_conn=None
+g_use_regexp=False
 ###############################################################################
 
-def escapeLike(val):
-    return 'LIKE "%' + val.replace("\\", "\\\\").replace("_", "\\_") \
-        .replace("%", "\\%") + '%" ESCAPE "\\"'
+# case-insensitive sqlite regexp function
+def re_fn(expr, item):
+    reg = re.compile(expr, re.I)
+    return reg.search(item) is not None
 
-def matchName(name):
-    if type(name) is str:
-        return "name "+escapeLike(name)
-    else:
-        return 'id=%d' %name
-
-def fileName(id_file):
-    if g_conn.execute("SELECT COUNT(*) FROM files WHERE id=?",[id_file]).fetchone()[0] > 1:
-        print "non-uniq fileid"
-
-    for r in g_conn.execute("SELECT * FROM files WHERE id=?",[id_file]).fetchall():
-            return r['name']
+def openDb(dbname):
+    if dbname == None:
+        dbname = "doxygen_sqlite3.db"
 
-    return ""
+    if not os.path.isfile(dbname):
+        raise BaseException("No such file %s" % dbname )
 
-def fileId(name):
-    if g_conn.execute("SELECT COUNT(*) FROM files WHERE name=?",[name]).fetchone()[0] > 1:
-        print "non-uniq file name"
+    conn = sqlite3.connect(dbname)
+    conn.execute('PRAGMA temp_store = MEMORY;')
+    conn.row_factory = sqlite3.Row
+    conn.create_function("REGEXP", 2, re_fn)
+    return conn
+###############################################################################
+class Finder:
+    def __init__(self,cn,name,row_type=str):
+        self.cn=cn
+        self.name=name
+        self.row_type=row_type
+
+    def match(self,row):
+        if self.row_type is int:
+            return " id=?"
+        else:
+            if g_use_regexp == True:
+                return " REGEXP (?,%s)" %row
+            else:
+                return " %s=?" %row
 
-    for r in g_conn.execute("SELECT * FROM files WHERE name=?",[name]).fetchall():
-            return r['id']
+    def fileName(self,id_file):
+        if self.cn.execute("SELECT COUNT(*) FROM files WHERE rowid=?",[id_file]).fetchone()[0] > 1:
+            print >>sys.stderr,"WARNING: non-uniq fileid [%s]. Considering only the first match." % id_file
 
-    return -1
+        for r in self.cn.execute("SELECT * FROM files WHERE rowid=?",[id_file]).fetchall():
+                return r['name']
 
-###############################################################################
+        return ""
 
-def findReferences(name):
-    o=[]
+    def fileId(self,name):
+        if self.cn.execute("SELECT COUNT(*) FROM files WHERE"+self.match("name"),[name]).fetchone()[0] > 1:
+            print >>sys.stderr,"WARNING: non-uniq file name [%s]. Considering only the first match." % name
 
-    cur = g_conn.cursor()
-    cur.execute("SELECT refid FROM memberdef WHERE name=?",[name])
-    refids = cur.fetchall()
+        for r in self.cn.execute("SELECT rowid FROM files WHERE"+self.match("name"),[name]).fetchall():
+                return r[0]
 
-    if len(refids) == 0:
+        return -1
+###############################################################################
+    def references(self):
+        o=[]
+        cur = self.cn.cursor()
+        cur.execute("SELECT refid FROM memberdef WHERE"+self.match("name"),[self.name])
+        refids = cur.fetchall()
+
+        if len(refids) == 0:
+            return o
+
+        refid = refids[0]['refid']
+        cur = self.cn.cursor()
+        #TODO:SELECT rowid from refids where refid=refid
+        for info in cur.execute("SELECT * FROM xrefs WHERE refid_dst LIKE '%"+refid+"%'"):
+            item={}
+            cur = self.cn.cursor()
+            for i2 in cur.execute("SELECT * FROM memberdef WHERE refid=?",[info['src']]):
+                item['name']=i2['name']
+                item['src']=info['src']
+                item['file']=self.fileName(info['id_file'])
+                item['line']=info['line']
+
+            o.append(item)
         return o
-
-    refid = refids[0]['refid']
-    cur = g_conn.cursor()
-    for info in cur.execute("SELECT * FROM xrefs WHERE dst LIKE '%"+refid+"%'"):
-        item={}
-        cur = g_conn.cursor()
-        for i2 in cur.execute("SELECT * FROM memberdef WHERE refid=?",[info['src']]):
-            item['name']=i2['name']
-            item['src']=info['src']
-            item['file']=fileName(info['id_file'])
-            item['line']=info['line']
-
-        o.append(item)
-    return o
-
-
-def findFunction(name):
-    o=[]
-    for r in g_conn.execute('SELECT * FROM memberdef WHERE '+matchName(name)+' AND kind=?',[MemberType.Function]).fetchall():
-        item={}
-        item['name'] = r['name']
-        item['definition'] = r['definition']
-        item['argsstring'] = r['argsstring']
-        item['file'] = fileName(r['id_file'])
-        item['line'] = r['line']
-        item['detaileddescription'] = r['detaileddescription']
-        o.append(item)
-    return o
-
-
-def findMacro(name):
-    o=[]
-    for r in g_conn.execute('SELECT * FROM memberdef WHERE '+matchName(name)+' AND kind=?',[MemberType.Define]).fetchall():
-        item={}
-        item['name'] = r['name']
-        if r['argsstring']:
+###############################################################################
+    def function(self):
+        o=[]
+        c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("name")+' AND kind=?',[self.name,MemberType.Function])
+        for r in c.fetchall():
+            item={}
+            item['name'] = r['name']
+            item['definition'] = r['definition']
             item['argsstring'] = r['argsstring']
-        item['definition'] = r['initializer']
-        item['file'] = fileName(r['id_file'])
-        item['line'] = r['line']
-        o.append(item)
-    return o
-
-
-def findTypedef(name):
-    o=[]
-    for r in g_conn.execute('SELECT * FROM memberdef WHERE '+matchName(name)+' AND kind=?',[MemberType.Typedef]).fetchall():
-        item={}
-        item['name'] = r['name']
-        item['definition'] = r['definition']
-        item['file'] = fileName(r['id_file'])
-        item['line'] = r['line']
-        o.append(item)
-    return o
-
-
-def findVariable(name):
-    o=[]
-    for r in g_conn.execute('SELECT * FROM memberdef WHERE '+matchName(name)+' AND kind=?',[MemberType.Variable]).fetchall():
-        item={}
-        item['name'] = r['name']
-        item['definition'] = r['definition']
-        item['file'] = fileName(r['id_file'])
-        item['line'] = r['line']
-        o.append(item)
-    return o
-
-def findParams(name):
-    o=[]
-    for r in g_conn.execute('SELECT id FROM memberdef WHERE '+matchName(name)).fetchall():
-        #a=("SELECT * FROM params where id=(SELECT id_param FROM memberdef_params where id_memberdef=?",[id_memberdef])
-        item={}
-        item['id'] = r['id']
-        o.append(item)
-    return o
-
-
-def findStruct(name):
-    o=[]
-    for r in g_conn.execute('SELECT * FROM compounddef WHERE '+matchName(name)).fetchall():
-        item={}
-        item['name'] = r['name']
-        o.append(item)
-    return o
-
-def findIncluders(name):
-    o=[]
-    fid = fileId(name)
-    for r in g_conn.execute('SELECT * FROM includes WHERE id_dst=?',[fid]).fetchall():
-        item={}
-        item['name'] = fileName(r['id_src'])
-        o.append(item)
-    return o
-
-def findIncludees(name):
-    o=[]
-    fid = fileId(name)
-    for r in g_conn.execute('SELECT * FROM includes WHERE id_src=?',[fid]).fetchall():
-        item={}
-        item['name'] = r['dst']
-        o.append(item)
-    return o
-
-
-def findMembers(name):
-    o=[]
-    for r in g_conn.execute('SELECT * FROM memberdef WHERE scope LIKE "%'+name+'%";').fetchall():
-        item={}
-        item['name'] = r['name']
-        item['definition'] = r['definition']
-        item['argsstring'] = r['argsstring']
-        item['file'] = fileName(r['id_file'])
-        item['line'] = r['line']
-        item['documentation'] = r['documentation']
-        o.append(item)
-    return o
-
-
-def findBaseClasses(name):
-    o=[]
-    for r in g_conn.execute('SELECT base FROM basecompoundref WHERE derived=?',[name]).fetchall():
-        item={}
-        item['name'] = r['base']
-        o.append(item)
-    return o
-
-
-def findSubClasses(name):
-    o=[]
-    for r in g_conn.execute('SELECT derived FROM basecompoundref WHERE base=?',[name]).fetchall():
-        item={}
-        item['name'] = r['derived']
-        o.append(item)
-    return o
-
-
+            item['file'] = self.fileName(r['id_file'])
+            item['line'] = r['line']
+            item['detaileddescription'] = r['detaileddescription']
+            o.append(item)
+        return o
 ###############################################################################
+    def file(self):
+        o=[]
+        for r in self.cn.execute("SELECT rowid,* FROM files WHERE"+self.match("name"),[self.name]).fetchall():
+            item={}
+            item['name'] = r['name']
+            item['id'] =   r['rowid']
+            o.append(item)
+        return o
 
-def usage():
-  print """Usage: search.py [Options]
-Options:
-    -h, --help
-    -d <D>    Use database <D> for queries
-    -r <F>    Search for references to <F>
-    -f <F>    Search for definition of function <F>
-    -m <M>    Search for definition of macro <M>
-    -t <T>    Search for definition of type <T>
-    -v <V>    Search for definition of variable <V>
-    -I <I>    Get the includers of <I>
-    -i <I>    Get the includees of <I>
-    -M <C>    Get all members of class <C>
-    -B <C>    Get the base classes of class <C>
-    -S <C>    Get the sub classes of class <C>
-"""
-
-def openDb(dbname):
-    global g_conn
-
-    if dbname == None:
-        dbname = "doxygen_sqlite3.db"
-
-    if not os.path.isfile(dbname):
-        raise BaseException("No such file %s" % dbname )
-
-    g_conn = sqlite3.connect(dbname)
-    g_conn.execute('PRAGMA temp_store = MEMORY;')
-    g_conn.row_factory = sqlite3.Row
-
 ###############################################################################
-def process(kind,o):
+    def macro(self):
+        o=[]
+        c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("name")+' AND kind=?',[self.name,MemberType.Define])
+        for r in c.fetchall():
+            item={}
+            item['name'] = r['name']
+            if r['argsstring']:
+                item['argsstring'] = r['argsstring']
+            item['definition'] = r['initializer']
+            item['file'] = self.fileName(r['id_file'])
+            item['line'] = r['line']
+            o.append(item)
+        return o
+###############################################################################
+    def typedef(self):
+        o=[]
+        c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("name")+' AND kind=?',[self.name,MemberType.Typedef])
+        for r in c.fetchall():
+            item={}
+            item['name'] = r['name']
+            item['definition'] = r['definition']
+            item['file'] = self.fileName(r['id_file'])
+            item['line'] = r['line']
+            o.append(item)
+        return o
+###############################################################################
+    def variable(self):
+        o=[]
+        c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("name")+' AND kind=?',[self.name,MemberType.Variable])
+        for r in c.fetchall():
+            item={}
+            item['name'] = r['name']
+            item['definition'] = r['definition']
+            item['file'] = self.fileName(r['id_file'])
+            item['line'] = r['line']
+            o.append(item)
+        return o
+###############################################################################
+    def params(self):
+        o=[]
+        c=self.cn.execute('SELECT id FROM memberdef WHERE'+self.match("name"),[self.name])
+        for r in c.fetchall():
+            #a=("SELECT * FROM params where id=(SELECT id_param FROM memberdef_params where id_memberdef=?",[id_memberdef])
+            item={}
+            item['id'] = r['id']
+            o.append(item)
+        return o
+###############################################################################
+    def struct(self):
+        o=[]
+        c=self.cn.execute('SELECT * FROM compounddef WHERE'+self.match("name"),[self.name])
+        for r in c.fetchall():
+            item={}
+            item['name'] = r['name']
+            o.append(item)
+        return o
+###############################################################################
+    def includers(self):
+        o=[]
+        fid = self.fileId(self.name)
+        c=self.cn.execute('SELECT * FROM includes WHERE id_dst=?',[fid])
+        for r in c.fetchall():
+            item={}
+            item['name'] = self.fileName(r['id_src'])
+            o.append(item)
+        return o
+###############################################################################
+    def includees(self):
+        o=[]
+        fid = self.fileId(self.name)
+        c=self.cn.execute('SELECT * FROM includes WHERE id_src=?',[fid])
+        for r in c.fetchall():
+            item={}
+            item['name'] = self.fileName(r['id_dst'])
+            o.append(item)
+        return o
+###############################################################################
+    def members(self):
+        o=[]
+        c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("scope"),[self.name])
+        for r in c.fetchall():
+            item={}
+            item['name'] = r['name']
+            item['definition'] = r['definition']
+            item['argsstring'] = r['argsstring']
+            item['file'] = self.fileName(r['id_file'])
+            item['line'] = r['line']
+            #item['documentation'] = r['documentation']
+            o.append(item)
+        return o
+###############################################################################
+    def baseClasses(self):
+        o=[]
+        c=self.cn.execute('SELECT base FROM basecompoundref WHERE'+self.match("derived"),[self.name])
+        for r in c.fetchall():
+            item={}
+            item['name'] = r['base']
+            o.append(item)
+        return o
+###############################################################################
+    def subClasses(self):
+        o=[]
+        c=self.cn.execute('SELECT derived FROM basecompoundref WHERE'+self.match("base"),[self.name])
+        for r in c.fetchall():
+            item={}
+            item['name'] = r['derived']
+            o.append(item)
+        return o
+###############################################################################
+def process(f,kind):
     request_processors = {
-        MemberType.Function: findFunction,
-        MemberType.Define:   findMacro,
-        MemberType.Variable: findVariable,
-        MemberType.Typedef:  findTypedef,
-        RequestType.References: findReferences,
-        RequestType.Struct: findStruct,
-        RequestType.Includers: findIncluders,
-        RequestType.Includees: findIncludees,
-        RequestType.Members: findMembers,
-        RequestType.BaseClasses: findBaseClasses,
-        RequestType.SubClasses: findSubClasses
+        MemberType.Function: f.function,
+        MemberType.File: f.file,
+        MemberType.Define:   f.macro,
+        MemberType.Variable: f.variable,
+        MemberType.Typedef:  f.typedef,
+        RequestType.References: f.references,
+        RequestType.Struct: f.struct,
+        RequestType.Includers: f.includers,
+        RequestType.Includees: f.includees,
+        RequestType.Members: f.members,
+        RequestType.BaseClasses: f.baseClasses,
+        RequestType.SubClasses: f.subClasses
     }
-    return request_processors[kind](o)
-
-
-def processHref(ref):
+    return request_processors[kind]()
+###############################################################################
+def processHref(cn,ref):
     j={}
 
     # is it in memberdef ?
     table="memberdef"
-    if ( g_conn.execute("SELECT count(*) from %s WHERE refid='%s'" % (table,ref) ).fetchone()[0] > 0 ):
-        for r in g_conn.execute("SELECT kind,id FROM %s WHERE refid='%s'" % (table,ref) ).fetchall():
-            j=process(str(r['kind']),int(r['id']))
+    if ( cn.execute("SELECT count(*) from %s WHERE refid=?"%table,[ref] ).fetchone()[0] > 0 ):
+        for r in cn.execute("SELECT kind,id FROM %s WHERE refid='%s'" % (table,ref) ).fetchall():
+            f=Finder(cn,r['id'],int)
+            j=process(f,str(r['kind']))
 
     # is it in compounddef ?
     table="compounddef"
-    if ( g_conn.execute("SELECT count(*) from %s WHERE refid='%s'" % (table,ref)).fetchone()[0] > 0 ):
-        for r in g_conn.execute("SELECT id FROM %s WHERE refid='%s'" % (table,ref) ).fetchall():
-            j=process(RequestType.Struct,int(r['id']))
+    if ( cn.execute("SELECT count(*) from %s WHERE refid=?"%table,[ref]).fetchone()[0] > 0 ):
+        for r in cn.execute("SELECT id FROM %s WHERE refid=?"%table,[ref] ).fetchall():
+            f=Finder(cn,r['id'],int)
+            j=process(f,RequestType.Struct)
 
     return j
-
-
+###############################################################################
 def serveCgi():
     import cgi
 
@@ -298,16 +301,33 @@ def serveCgi():
         print '{"result": null, "error": "no refid given"}'
         sys.exit(0)
 
-    openDb('doxygen_sqlite3.db')
+    cn=openDb('doxygen_sqlite3.db')
 
-    j = processHref(ref)
+    j = processHref(cn,ref)
 
     print json.dumps({"result":j,"error":None})
-
-
+###############################################################################
+def usage():
+  print >>sys.stderr,"""Usage: search.py [Options]
+Options:
+    -h, --help
+    -d <D>    Use database <D> for queries.
+    -f <F>    Search for definition of function <F>.
+    -m <M>    Search for definition of macro <M>.
+    -r <F>    Search for references to function <F>.
+    -t <T>    Search for definition of type <T>.
+    -v <V>    Search for definition of variable <V>.
+    -I <I>    What files are including <I>.
+    -i <i>    What files are included by <i>.
+    -B <C>    Get the base classes of class <C>.
+    -M <C>    Get all members of class <C>.
+    -S <C>    Get the sub classes of class <C>.
+    -R        Consider the search <term> to be a regex.
+"""
+###############################################################################
 def serveCli(argv):
     try:
-        opts, args = getopt.getopt(argv, "hr:I:i:d:f:m:t:v:H:M:B:S:",["help"])
+        opts, args = getopt.getopt(argv, "hr:RI:i:d:f:m:t:v:H:M:B:S:F:",["help"])
     except getopt.GetoptError:
         usage()
         sys.exit(1)
@@ -315,6 +335,7 @@ def serveCli(argv):
     ref=None
     dbname=None
     j={}
+    global g_use_regexp
 
     for a, o in opts:
         if a in ('-h', '--help'):
@@ -325,6 +346,9 @@ def serveCli(argv):
             continue
         elif a in ('-r'):
             kind=RequestType.References
+        elif a in ('-R'):
+            g_use_regexp=True
+            continue
         elif a in ('-I'):
             kind=RequestType.Includers
         elif a in ('-i'):
@@ -337,6 +361,8 @@ def serveCli(argv):
             kind=RequestType.SubClasses
         elif a in ('-f'):
             kind=MemberType.Function
+        elif a in ('-F'):
+            kind=MemberType.File
         elif a in ('-m'):
             kind=MemberType.Define
         elif a in ('-t'):
@@ -346,12 +372,13 @@ def serveCli(argv):
         elif a in ('-H'):
             ref = o
 
-        openDb(dbname)
+        cn=openDb(dbname)
+        f=Finder(cn,o)
         if ref != None:
-          j=processHref(ref)
+          j=processHref(cn,ref)
         else:
-          j=process(kind,o)
-        print json.dumps(j)
+          j=process(f,kind)
+        print json.dumps(j,indent=4)
 
 
 def main(argv):
diff --git a/addon/doxysearch/CMakeLists.txt b/addon/doxysearch/CMakeLists.txt
new file mode 100644
index 0000000..33e01c1
--- /dev/null
+++ b/addon/doxysearch/CMakeLists.txt
@@ -0,0 +1,36 @@
+if (build_search)
+
+find_package(Xapian REQUIRED)
+find_package(ZLIB REQUIRED)
+
+if (WIN32)
+  set(WIN_EXTRA_LIBS "uuid.lib rpcrt4.lib ws2_32.lib")
+endif()
+
+include_directories(
+	${CMAKE_SOURCE_DIR}/qtools
+	${XAPIAN_INCLUDE_DIR}
+        ${ZLIB_INCLUDE_DIRS}
+)
+add_executable(doxyindexer
+               doxyindexer.cpp
+)
+target_link_libraries(doxyindexer
+                      ${XAPIAN_LIBRARIES}
+                      ${ZLIB_LIBRARIES}
+		      ${WIN_EXTRA_LIBS}
+                      qtools
+)
+
+add_executable(doxysearch.cgi
+               doxysearch.cpp
+)
+target_link_libraries(doxysearch.cgi
+                      ${XAPIAN_LIBRARIES}
+                      ${ZLIB_LIBRARIES}
+		      ${WIN_EXTRA_LIBS}
+)
+
+install(TARGETS doxyindexer doxysearch.cgi DESTINATION bin)
+
+endif()
diff --git a/addon/doxysearch/Makefile.in b/addon/doxysearch/Makefile.in
deleted file mode 100644
index 7daafee..0000000
--- a/addon/doxysearch/Makefile.in
+++ /dev/null
@@ -1,34 +0,0 @@
-
-all clean depend: Makefile.doxysearch Makefile.doxyindexer
-	$(MAKE) -f Makefile.doxysearch $@
-	$(MAKE) -f Makefile.doxyindexer $@
-
-distclean: clean
-	$(RM) -rf Makefile doxysearch.pro Makefile.doxysearch
-	$(RM) -rf Makefile doxyindexer.pro Makefile.doxyindexer
-
-tmake:
-	$(ENV) $(PERL) "$(TMAKE)" doxysearch.pro >Makefile.doxysearch
-	$(ENV) $(PERL) "$(TMAKE)" doxyindexer.pro >Makefile.doxyindexer
-
-strip:
-	strip doxysearch
-
-Makefile.doxysearch: doxysearch.pro
-	$(ENV) $(PERL) "$(TMAKE)" doxysearch.pro >Makefile.doxysearch
-
-Makefile.doxyindexer: doxyindexer.pro
-	$(ENV) $(PERL) "$(TMAKE)" doxyindexer.pro >Makefile.doxyindexer
-
-install:
-	$(INSTTOOL) -d $(INSTALL)/bin	
-	$(INSTTOOL) -m 755 ../../bin/doxysearch.cgi $(INSTALL)/bin	
-	$(INSTTOOL) -m 755 ../../bin/doxyindexer $(INSTALL)/bin	
-	$(INSTTOOL) -d $(INSTALL)/$(MAN1DIR)
-	cat ../../doc/doxyindexer.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxyindexer.1
-	$(INSTTOOL) -m 644 doxyindexer.1 $(INSTALL)/$(MAN1DIR)/doxyindexer.1
-	rm doxyindexer.1
-	cat ../../doc/doxysearch.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxysearch.1
-	$(INSTTOOL) -m 644 doxysearch.1 $(INSTALL)/$(MAN1DIR)/doxysearch.1
-	rm doxysearch.1
-
diff --git a/addon/doxysearch/doxyindexer.cpp b/addon/doxysearch/doxyindexer.cpp
index e1006be..12d3e9a 100644
--- a/addon/doxysearch/doxyindexer.cpp
+++ b/addon/doxysearch/doxyindexer.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxysearch/doxyindexer.pro.in b/addon/doxysearch/doxyindexer.pro.in
deleted file mode 100644
index c84a2ac..0000000
--- a/addon/doxysearch/doxyindexer.pro.in
+++ /dev/null
@@ -1,12 +0,0 @@
-TEMPLATE     =	app.t
-CONFIG       =	console warn_on static release
-HEADERS      =	
-SOURCES      =	doxyindexer.cpp
-LIBS        += -L../../lib -lxapian -lqtools
-DESTDIR      = 
-OBJECTS_DIR  = ../../objects/doxyindexer
-TARGET       = ../../bin/doxyindexer
-INCLUDEPATH += ../../qtools
-DEPENDPATH  += 
-TARGETDEPS   = 
-
diff --git a/addon/doxysearch/doxysearch.cpp b/addon/doxysearch/doxysearch.cpp
index f6946ef..1c4effd 100644
--- a/addon/doxysearch/doxysearch.cpp
+++ b/addon/doxysearch/doxysearch.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxysearch/doxysearch.pro.in b/addon/doxysearch/doxysearch.pro.in
deleted file mode 100644
index 702f5a4..0000000
--- a/addon/doxysearch/doxysearch.pro.in
+++ /dev/null
@@ -1,12 +0,0 @@
-TEMPLATE     =	app.t
-CONFIG       =	console warn_on debug cgi
-HEADERS      =	
-SOURCES      =	doxysearch.cpp
-LIBS        += -lxapian
-DESTDIR      = 
-OBJECTS_DIR  = ../../objects/doxysearch
-TARGET       = ../../bin/doxysearch.cgi
-INCLUDEPATH += 
-DEPENDPATH  += 
-TARGETDEPS   = 
-
diff --git a/addon/doxywizard/CMakeLists.txt b/addon/doxywizard/CMakeLists.txt
new file mode 100644
index 0000000..bf2eda8
--- /dev/null
+++ b/addon/doxywizard/CMakeLists.txt
@@ -0,0 +1,116 @@
+if (build_wizard)
+
+# search for Qt5
+if (NOT force_qt4)
+  find_package(Qt5Core QUIET)
+  if (Qt5Core_FOUND)
+    message(STATUS "Using Qt5")
+    find_package(Qt5 COMPONENTS Widgets Gui Xml)
+    macro(qt_use_modules)
+        qt5_use_modules(${ARGN})
+    endmacro()
+    macro(qt_wrap_cpp)
+        qt5_wrap_cpp(${ARGN})
+    endmacro()
+    macro(qt_add_resources)
+        qt5_add_resources(${ARGN})
+    endmacro()
+  endif()
+endif()
+# fallback to Qt4
+if (NOT Qt5Core_FOUND)
+  if (NOT force_qt4)
+    message(STATUS "Qt5 not found, searching for Qt4 instead...")
+  else()
+    message(STATUS "Using Qt4")
+  endif()
+  find_package(Qt4 REQUIRED COMPONENTS QtCore QtXml QtGui)
+  macro(qt_use_modules)
+  endmacro()
+  macro(qt_wrap_cpp)
+      qt4_wrap_cpp(${ARGN})
+  endmacro()
+  macro(qt_add_resources)
+      qt4_add_resources(${ARGN})
+  endmacro()
+endif()
+
+include_directories(
+	.
+	${CMAKE_SOURCE_DIR}/src
+	${CMAKE_SOURCE_DIR}/qtools
+	${GENERATED_SRC}
+)
+
+set(GENERATED_SRC_WIZARD ${GENERATED_SRC}/doxywizard)
+file(MAKE_DIRECTORY ${GENERATED_SRC_WIZARD})
+
+add_definitions(-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DUNICODE)
+if (NOT Qt5Core_FOUND)
+  include(${QT_USE_FILE})
+endif()
+
+# generate settings.h
+file(GENERATE OUTPUT ${GENERATED_SRC_WIZARD}/settings.h
+CONTENT "#ifndef SETTINGS_H
+#define SETTINGS_H
+#define USE_SQLITE3 ${sqlite3}
+#define USE_LIBCLANG ${clang}
+#define IS_SUPPORTED(x) \\
+  ((USE_SQLITE3  && strcmp(\"USE_SQLITE3\",(x))==0)  || \\
+   (USE_LIBCLANG && strcmp(\"USE_LIBCLANG\",(x))==0) || \\
+  0)
+#endif" )
+set_source_files_properties(${GENERATED_SRC_WIZARD}/settings.h PROPERTIES GENERATED 1)
+
+# generate version.cpp
+file(GENERATE OUTPUT ${GENERATED_SRC_WIZARD}/version.cpp
+    CONTENT "char versionString[]=\"${VERSION}\";"
+)
+set_source_files_properties(${GENERATED_SRC_WIZARD}/version.cpp PROPERTIES GENERATED 1)
+
+# generate configdoc.cpp
+add_custom_command(
+COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -wiz ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC_WIZARD}/configdoc.cpp
+OUTPUT ${GENERATED_SRC_WIZARD}/configdoc.cpp
+)
+set_source_files_properties(${GENERATED_SRC_WIZARD}/configdoc.cpp PROPERTIES GENERATED 1)
+
+FLEX_TARGET(config_doxyw config_doxyw.l ${GENERATED_SRC_WIZARD}/config_doxyw.cpp COMPILE_FLAGS "$(LEX_FLAGS) -Pconfig_doxywYY")
+
+qt_wrap_cpp(doxywizard_MOC
+doxywizard.h
+expert.h
+helplabel.h
+inputint.h
+inputbool.h
+inputstring.h
+inputstrlist.h
+wizard.h
+)
+
+qt_add_resources(doxywizard_RESOURCES_RCC doxywizard.qrc)
+
+add_executable(doxywizard WIN32
+doxywizard.cpp
+expert.cpp
+wizard.cpp
+inputbool.cpp
+inputstring.cpp
+inputint.cpp
+inputstrlist.cpp
+${GENERATED_SRC_WIZARD}/settings.h
+${GENERATED_SRC_WIZARD}/version.cpp
+${GENERATED_SRC_WIZARD}/config_doxyw.cpp
+${GENERATED_SRC_WIZARD}/configdoc.cpp
+${doxywizard_MOC}
+${doxywizard_RESOURCES_RCC}
+)
+qt_use_modules(doxywizard Core Gui Widgets Xml)
+target_link_libraries(doxywizard
+${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY}
+)
+
+install(TARGETS doxywizard DESTINATION bin)
+
+endif()
diff --git a/addon/doxywizard/Makefile.in b/addon/doxywizard/Makefile.in
deleted file mode 100644
index 9b14174..0000000
--- a/addon/doxywizard/Makefile.in
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-# 
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-# 
-
-QMAKE=$(QTDIR)/bin/qmake $(MKSPECS)
-INCBUFSIZE=$(PYTHON) ../../src/increasebuffer.py
-
-all: Makefile.doxywizard  
-	$(MAKE) -f Makefile.doxywizard LEX=$(LEX) PYTHON=$(PYTHON) INCBUFSIZE="$(INCBUFSIZE)"
-
-Makefile.doxywizard: doxywizard.pro
-	$(QMAKE) doxywizard.pro -o Makefile.doxywizard
-
-qmake: 
-	$(QMAKE) doxywizard.pro -o Makefile.doxywizard
-
-clean: Makefile.doxywizard 
-	$(MAKE) -f Makefile.doxywizard clean 
-
-distclean: Makefile.doxywizard
-	$(MAKE) -f Makefile.doxywizard distclean 
-	$(RM) Makefile.doxywizard
-
-install:
-	$(INSTTOOL) -d $(INSTALL)/bin	
-	$(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin	
-	$(INSTTOOL) -d $(INSTALL)/$(MAN1DIR)
-	cat ../../doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxywizard.1
-	$(INSTTOOL) -m 644 doxywizard.1 $(INSTALL)/$(MAN1DIR)/doxywizard.1
-	rm doxywizard.1
-
-FORCE:
diff --git a/addon/doxywizard/config.l b/addon/doxywizard/config.l
deleted file mode 100644
index f11bc46..0000000
--- a/addon/doxywizard/config.l
+++ /dev/null
@@ -1,555 +0,0 @@
-/******************************************************************************
- *
- * $Id: config_templ.l,v 1.8 2001/01/01 10:15:16 root Exp $
- *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby 
- * granted. No representations are made about the suitability of this software 
- * for any purpose. It is provided "as is" without express or implied warranty.
- * See the GNU General Public License for more details.
- *
- */
-
-%{
-
-/*
- *	includes
- */
-#include "config.h"
-#include "input.h"
-#include <QtCore>
-
-#define MAX_INCLUDE_DEPTH 10
-
-
-/* -----------------------------------------------------------------
- *
- *	static variables
- */
-
-struct ConfigFileState
-{
-  int lineNr;
-  FILE *file;
-  YY_BUFFER_STATE oldState;
-  YY_BUFFER_STATE newState;
-  QString fileName;
-};  
-
-static const QHash<QString,Input*>   *g_options;
-static FILE                          *g_file;
-static QString                        g_yyFileName;
-static QString                        g_includeName;
-static QVariant                       g_includePathList;
-static QStack<ConfigFileState*>       g_includeStack;  
-static int                            g_includeDepth;
-static QVariant                      *g_arg;
-static Input                         *g_curOption=0;
-static QString                        g_elemStr;
-static QTextCodec                    *g_codec     = QTextCodec::codecForName("UTF-8");
-static QString                        g_codecName = QString::fromAscii("UTF-8");
-static int                            g_lastState;
-static QByteArray                     g_tmpString;
-
-/* -----------------------------------------------------------------
- */
-#undef	YY_INPUT
-#define	YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
-
-static int yyread(char *buf,int maxSize)
-{
-    // no file included
-    if (g_includeStack.isEmpty()) 
-    {
-      return fread(buf,1,maxSize,g_file);
-    } 
-    else 
-    {
-      return fread(buf,1,maxSize,g_includeStack.top()->file);
-    }
-}
-
-void config_err(const char *fmt, ...)
-{
-  va_list args;
-  va_start(args, fmt);
-  vfprintf(stderr, fmt, args);
-  va_end(args); 
-}
-void config_warn(const char *fmt, ...)
-{
-  va_list args;
-  va_start(args, fmt);
-  vfprintf(stderr, fmt, args);
-  va_end(args);
-}
-
-static void substEnvVarsInStrList(QStringList &sl);
-static void substEnvVarsInString(QString &s);
-
-static void checkEncoding()
-{
-  Input *option = g_options->value(QString::fromAscii("DOXYFILE_ENCODING"));
-  if (option && option->value().toString()!=g_codecName)
-  {
-    QTextCodec *newCodec = QTextCodec::codecForName(option->value().toString().toAscii());
-    if (newCodec)
-    {
-      g_codec = newCodec;
-      g_codecName = option->value().toString();
-    }
-  }
-}
-
-static FILE *tryPath(const QString &path,const QString &fileName)
-{
-  QString absName=!path.isEmpty() ? path+QString::fromAscii("/")+fileName : fileName;
-  QFileInfo fi(absName);
-  if (fi.exists() && fi.isFile())
-  {
-    FILE *f = fopen(absName.toLocal8Bit(),"r");
-    if (f==NULL)
-      config_err("Error: could not open file %s for reading\n",absName.toLatin1().data());
-    else 
-      return f;
-  }
-  return NULL;
-}
-
-static FILE *findFile(const QString &fileName)
-{
-  if (QFileInfo(fileName).isAbsolute()) // absolute path
-  {
-    return tryPath(QString(), fileName);
-  }
-
-  // relative path, try with include paths in the list
-  QStringList sl = g_includePathList.toStringList();
-  substEnvVarsInStrList(sl);
-  foreach (QString s, sl) 
-  {
-    FILE *f = tryPath(s,fileName);
-    if (f) return f;
-  }
-  // try cwd if g_includePathList fails
-  return tryPath(QString::fromAscii("."),fileName);
-}
-
-static void readIncludeFile(const QString &incName)
-{
-  if (g_includeDepth==MAX_INCLUDE_DEPTH) 
-  {
-    config_err("Error: maximum include depth (%d) reached, %s is not included. Aborting...\n",
-	MAX_INCLUDE_DEPTH,qPrintable(incName));
-    exit(1);
-  } 
-
-  QString inc = incName;
-  substEnvVarsInString(inc);
-  inc = inc.trimmed();
-  uint incLen = inc.length();
-  if (inc.at(0)==QChar::fromAscii('"') && 
-      inc.at(incLen-1)==QChar::fromAscii('"')) // strip quotes
-  {
-    inc=inc.mid(1,incLen-2);
-  }
-
-  FILE *f = findFile(inc);
-  if (f) // see if the include file can be found
-  {
-    // For debugging
-#if SHOW_INCLUDES
-    for (i=0;i<includeStack.count();i++) msg("  ");
-    msg("@INCLUDE = %s: parsing...\n",inc.toLatin1().data());
-#endif
-
-    // store the state of the old file 
-    ConfigFileState *fs=new ConfigFileState;
-    fs->oldState=YY_CURRENT_BUFFER;
-    fs->fileName=g_yyFileName;
-    fs->file=f;
-    // push the state on the stack
-    g_includeStack.push(fs);
-    // set the scanner to the include file
-    yy_switch_to_buffer(yy_create_buffer(f, YY_BUF_SIZE));
-    fs->newState=YY_CURRENT_BUFFER;
-    g_yyFileName=inc;
-    g_includeDepth++;
-  } 
-  else
-  {
-    config_err("Error: @INCLUDE = %s: not found!\n",inc.toLatin1().data());
-    exit(1);
-  }
-}
-
-
-%}
-
-%option nounput
-%option noyywrap
-%option yylineno
-
-%x      Start
-%x	SkipComment
-%x      SkipInvalid
-%x      GetString
-%x      GetStrList
-%x      GetQuotedString
-%x      GetEnvVar
-%x      Include
-
-%%
-
-<*>\0x0d
-<Start,GetString,GetStrList,SkipInvalid>"#"	 { BEGIN(SkipComment); }
-<Start>[a-z_A-Z][a-z_A-Z0-9]*[ \t]*"="	 { QString cmd = g_codec->toUnicode(yytext);
-                                           cmd=cmd.left(cmd.length()-1).trimmed(); 
-					   g_curOption = g_options->value(cmd);
-					   if (g_curOption==0) // oops not known
-					   {
-					     config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n",
-						 qPrintable(cmd),yylineno,qPrintable(g_yyFileName)); 
-					     BEGIN(SkipInvalid);
-					   }
-					   else // known tag
-					   {
-					     //option->setEncoding(encoding);
-					     g_arg = &g_curOption->value();
-					     switch(g_curOption->kind())
-					     {
-					       case Input::StrList:
-						 g_elemStr = QString();
-						 *g_arg = QStringList();
-					         BEGIN(GetStrList);
-					         break;
-					       case Input::String:
-					         BEGIN(GetString);
-					         break;
-					       case Input::Int:
-					         BEGIN(GetString);
-					         break;
-					       case Input::Bool:
-					         BEGIN(GetString);
-						 break;
-					       case Input::Obsolete:
-					         config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n"
-						            "To avoid this warning please update your configuration "
-							    "file using \"doxygen -u\"\n", qPrintable(cmd),
-							    yylineno,qPrintable(g_yyFileName)); 
-					         BEGIN(SkipInvalid);
-						 break;
-					     }
-					   }
-					}
-<Start>[a-z_A-Z][a-z_A-Z0-9]*[ \t]*"+="	{ QString cmd=g_codec->toUnicode(yytext);
-                                          cmd=cmd.left(cmd.length()-2).trimmed(); 
-					  g_curOption = g_options->value(cmd);
-					  if (g_curOption==0) // oops not known
-					  {
-					    config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n",
-						yytext,yylineno,qPrintable(g_yyFileName)); 
-					    BEGIN(SkipInvalid);
-					  }
-					  else // known tag
-					  {
-					    switch(g_curOption->kind())
-					    {
-					      case Input::StrList:
-						g_arg = &g_curOption->value();
-						g_elemStr=QString();
-					        BEGIN(GetStrList);
-					        break;
-					      case Input::String:
-					      case Input::Int:
-					      case Input::Bool:
-					        config_err("Warning: operator += not supported for `%s'. Ignoring line at line %d, file %s\n",
-						    yytext,yylineno,qPrintable(g_yyFileName)); 
-					        BEGIN(SkipInvalid);
-						break;
-					      case Input::Obsolete:
-					         config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n"
-						            "To avoid this warning please update your configuration "
-							    "file using \"doxygen -u\"\n", 
-							    qPrintable(cmd),yylineno,qPrintable(g_yyFileName)); 
-					         BEGIN(SkipInvalid);
-						 break;
-					     }
-					   }
-					}
-<Start>"@INCLUDE_PATH"[ \t]*"=" 	{ BEGIN(GetStrList); g_arg=&g_includePathList; *g_arg = QStringList(); g_elemStr=QString(); }
-  /* include a config file */
-<Start>"@INCLUDE"[ \t]*"="     		{ BEGIN(Include);}
-<Include>([^ \"\t\r\n]+)|("\""[^\n\"]+"\"") { 
-  					  readIncludeFile(g_codec->toUnicode(yytext)); 
-  					  BEGIN(Start);
-					}
-<<EOF>>					{
-                                          //printf("End of include file\n");
-					  //printf("Include stack depth=%d\n",g_includeStack.count());
-                                          if (g_includeStack.isEmpty())
-					  {
-					    //printf("Terminating scanner!\n");
-					    yyterminate();
-					  }
-					  else
-					  {
-					    ConfigFileState *fs = g_includeStack.pop();
-					    fclose(fs->file);
-					    YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER;
-					    yy_switch_to_buffer( fs->oldState );
-					    yy_delete_buffer( oldBuf );
-					    g_yyFileName=fs->fileName;
-					    delete fs; 
-                                            g_includeDepth--;
-					  }
-  					}
-
-<Start>[a-z_A-Z0-9]+			{ config_err("Warning: ignoring unknown tag `%s' at line %d, file %s\n",yytext,yylineno,qPrintable(g_yyFileName)); }
-<GetString,SkipInvalid>\n	        { BEGIN(Start); }
-<GetStrList>\n				{ 
-					  if (!g_elemStr.isEmpty())
-					  {
-					    //printf("elemStr1=`%s'\n",elemStr.toLatin1().data());
-					    *g_arg = QVariant(g_arg->toStringList() << g_elemStr);
-					  }
-					  BEGIN(Start); 
-					}
-<GetStrList>[ \t]+			{
-  				          if (!g_elemStr.isEmpty())
-					  {
-					    //printf("elemStr2=`%s'\n",elemStr.toLatin1().data());
-  					    *g_arg = QVariant(g_arg->toStringList() << g_elemStr);
-					  }
-					  g_elemStr = QString();
-  					}
-<GetString>[^ \"\t\r\n]+		{ 
-                                          *g_arg = QVariant(g_codec->toUnicode(yytext)); 
-                                          checkEncoding();
-                                        }
-<GetString,GetStrList,SkipInvalid>"\""	{ g_lastState=YY_START;
-  					  BEGIN(GetQuotedString); 
-                                          g_tmpString="";
-					}
-<GetQuotedString>"\""|"\n" 		{ 
-                                          // we add a bogus space to signal that the string was quoted. This space will be stripped later on.
-                                          g_tmpString+=" ";
-  					  //printf("Quoted String = `%s'\n",tmpString.toLatin1().data());
-  					  if (g_lastState==GetString)
-					  {
-					    *g_arg = g_codec->toUnicode(g_tmpString);
-                                            checkEncoding();
-					  }
-					  else
-					  {
-					    g_elemStr+=g_codec->toUnicode(g_tmpString);
-					  }
-					  if (*yytext=='\n')
-					  {
-					    config_err("Warning: Missing end quote (\") on line %d, file %s\n",yylineno,
-                                                qPrintable(g_yyFileName));
-					  }
-					  BEGIN(g_lastState);
-  					}
-<GetQuotedString>"\\\""			{
-  					  g_tmpString+='"';
-  					}
-<GetQuotedString>.			{ g_tmpString+=*yytext; }
-<GetStrList>[^ \#\"\t\r\n]+		{
-  					  g_elemStr+=g_codec->toUnicode(yytext);
-  					}
-<SkipComment>\n				{ BEGIN(Start); }
-<SkipComment>\\[ \r\t]*\n		{ BEGIN(Start); }
-<*>\\[ \r\t]*\n				{ }
-<*>\n
-<*>.					
-
-%%
-
-/*@ ----------------------------------------------------------------------------
- */
-
-static void substEnvVarsInString(QString &s)
-{
-  static QRegExp re(QString::fromAscii("\\$\\([a-z_A-Z0-9]+\\)"));
-  if (s.isEmpty()) return;
-  int p=0;
-  int i,l;
-  //printf("substEnvVarInString(%s) start\n",s.toLatin1().data());
-  while ((i=re.indexIn(s,p))!=-1)
-  {
-    l = re.matchedLength();
-    //printf("Found environment var s.mid(%d,%d)=`%s'\n",i+2,l-3,s.mid(i+2,l-3).toLatin1().data());
-    QString env=g_codec->toUnicode(getenv(s.mid(i+2,l-3).toLatin1()));
-    substEnvVarsInString(env); // recursively expand variables if needed.
-    s = s.left(i)+env+s.right(s.length()-i-l);
-    p=i+env.length(); // next time start at the end of the expanded string
-  }
-  s=s.trimmed(); // to strip the bogus space that was added when an argument
-                         // has quotes
-  //printf("substEnvVarInString(%s) end\n",s.toLatin1().data());
-}
-
-static void substEnvVarsInStrList(QStringList &sl)
-{
-  QStringList out;
-
-  foreach (QString result, sl)
-  {
-    // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE.
-    bool wasQuoted = (result.indexOf(QChar::fromAscii(' '))!=-1) || 
-                     (result.indexOf(QChar::fromAscii('\t'))!=-1);
-    // here we strip the quote again
-    substEnvVarsInString(result);
-
-    //printf("Result %s was quoted=%d\n",result.toLatin1().data(),wasQuoted);
-
-    if (!wasQuoted) /* as a result of the expansion, a single string
-		       may have expanded into a list, which we'll
-		       add to sl. If the original string already
-		       contained multiple elements no further 
-		       splitting is done to allow quoted items with spaces! */
-    {
-      int l=result.length();
-      int i,p=0;
-      // skip spaces
-      // search for a "word"
-      for (i=0;i<l;i++)
-      {
-	QChar c=0;
-	// skip until start of new word
-	while (i<l && ((c=result.at(i))==QChar::fromAscii(' ') || c==QChar::fromAscii('\t'))) i++; 
-	p=i; // p marks the start index of the word
-	// skip until end of a word
-	while (i<l && ((c=result.at(i))!=QChar::fromAscii(' ') && 
-	              c!=QChar::fromAscii('\t') && 
-		      c!=QChar::fromAscii('"'))) i++;
-	if (i<l) // not at the end of the string
-	{
-	  if (c==QChar::fromAscii('"')) // word within quotes
-	  {
-	    p=i+1;
-	    for (i++;i<l;i++)
-	    {
-	      c=result.at(i);
-	      if (c==QChar::fromAscii('"')) // end quote
-	      {
-                out += result.mid(p,i-p);
-		p=i+1;
-		break; 
-	      }
-	      else if (c==QChar::fromAscii('\\')) // skip escaped stuff
-	      {
-		i++;
-	      }
-	    }
-	  }
-	  else if (c==QChar::fromAscii(' ') || c==QChar::fromAscii('\t')) // separator
-	  {
-            out += result.mid(p,i-p);
-	    p=i+1;
-	  }
-	}
-      }
-      if (p!=l) // add the leftover as a string
-      {
-        out += result.right(l-p);
-      }
-    }
-    else // just goto the next element in the list
-    {
-      out += result;
-    }
-  }
-  sl = out;
-}
-
-//--------------------------------------------------------------------------
-
-bool parseConfig(
-      const QString &fileName,
-      const QHash<QString,Input *> &options
-    )
-{
-  QHashIterator<QString, Input*> i(options);
-  g_file = fopen(fileName.toLocal8Bit(),"r");
-  if (g_file==NULL) return false;
-
-  // reset all values
-  i.toFront();
-  while (i.hasNext()) 
-  {
-    i.next();
-    if (i.value())
-    {
-      i.value()->reset();
-    }
-  }
-
-  // parse config file
-  g_options       = &options;
-  g_yyFileName    = fileName;
-  g_includeStack.clear();
-  g_includeDepth  = 0;
-  configrestart( configin );
-  BEGIN( Start );
-  configlex();
-
-  // update the values in the UI
-  i.toFront();
-  while (i.hasNext()) 
-  {
-    i.next();
-    if (i.value())
-    {
-      //printf("Updating: %s\n",qPrintable(i.key()));
-      i.value()->update();
-    }
-    else
-    {
-      printf("Invalid option: %s\n",qPrintable(i.key()));
-    }
-  } 
-  fclose(g_file);
-  return true;
-}
-
-void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
-{
-  QChar c;
-  bool needsEscaping=FALSE;
-  // convert the string back to it original encoding
-  //QByteArray se = codec->fromUnicode(s);
-  t.setCodec(codec);
-  const QChar *p=s.data();
-  if (!s.isEmpty() && !p->isNull())
-  {
-    while (!(c=*p++).isNull() && !needsEscaping) 
-    {
-      needsEscaping = (c==QChar::fromAscii(' ')  || 
-	               c==QChar::fromAscii('\n') || 
-		       c==QChar::fromAscii('\t') || 
-		       c==QChar::fromAscii('"'));
-    }
-    if (needsEscaping)
-    { 
-      t << "\"";
-      p=s.data();
-      while (!p->isNull())
-      {
-	if (*p   ==QChar::fromAscii(' ') && 
-	   *(p+1)==QChar::fromAscii('\0')) break; // skip inserted space at the end
-	if (*p   ==QChar::fromAscii('"')) t << "\\"; // escape quotes
-	t << *p++;
-      }
-      t << "\"";
-    }
-    else
-    {
-      t << s;
-    }
-  }
-}
-
diff --git a/addon/doxywizard/config_doxyw.l b/addon/doxywizard/config_doxyw.l
index 400330f..90bd09e 100644
--- a/addon/doxywizard/config_doxyw.l
+++ b/addon/doxywizard/config_doxyw.l
@@ -2,7 +2,7 @@
  *
  * $Id: config_templ.l,v 1.8 2001/01/01 10:15:16 root Exp $
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -12,6 +12,7 @@
  *
  */
 
+%option never-interactive
 %{
 
 /*
@@ -19,7 +20,18 @@
  */
 #include "config.h"
 #include "input.h"
-#include <QtCore>
+
+#include <QString>
+#include <QVariant>
+#include <QStack>
+#include <QTextCodec>
+#include <QByteArray>
+#include <QFileInfo>
+#include <QStringList>
+#include <QRegExp>
+#include <QTextStream>
+
+#define YY_NO_UNISTD_H 1
 
 #define MAX_INCLUDE_DEPTH 10
 
@@ -49,7 +61,7 @@ static QVariant                      *g_arg;
 static Input                         *g_curOption=0;
 static QString                        g_elemStr;
 static QTextCodec                    *g_codec     = QTextCodec::codecForName("UTF-8");
-static QString                        g_codecName = QString::fromAscii("UTF-8");
+static QString                        g_codecName = QString::fromLatin1("UTF-8");
 static int                            g_lastState;
 static QByteArray                     g_tmpString;
 
@@ -71,18 +83,25 @@ static int yyread(char *buf,int maxSize)
     }
 }
 
+static QString warning_str = QString::fromLatin1("warning: ");
+static QString error_str = QString::fromLatin1("error: ");
+
 void config_err(const char *fmt, ...)
 {
+  QString msg = error_str;
+  msg.append(QString::fromLatin1(fmt));
   va_list args;
   va_start(args, fmt);
-  vfprintf(stderr, fmt, args);
-  va_end(args); 
+  vfprintf(stderr, qPrintable(msg), args);
+  va_end(args);
 }
 void config_warn(const char *fmt, ...)
 {
+  QString msg = warning_str;
+  msg.append(QString::fromLatin1(fmt));
   va_list args;
   va_start(args, fmt);
-  vfprintf(stderr, fmt, args);
+  vfprintf(stderr, qPrintable(msg), args);
   va_end(args);
 }
 
@@ -91,10 +110,10 @@ static void substEnvVarsInString(QString &s);
 
 static void checkEncoding()
 {
-  Input *option = g_options->value(QString::fromAscii("DOXYFILE_ENCODING"));
+  Input *option = g_options->value(QString::fromLatin1("DOXYFILE_ENCODING"));
   if (option && option->value().toString()!=g_codecName)
   {
-    QTextCodec *newCodec = QTextCodec::codecForName(option->value().toString().toAscii());
+    QTextCodec *newCodec = QTextCodec::codecForName(option->value().toString().toLatin1());
     if (newCodec)
     {
       g_codec = newCodec;
@@ -105,13 +124,13 @@ static void checkEncoding()
 
 static FILE *tryPath(const QString &path,const QString &fileName)
 {
-  QString absName=!path.isEmpty() ? path+QString::fromAscii("/")+fileName : fileName;
+  QString absName=!path.isEmpty() ? path+QString::fromLatin1("/")+fileName : fileName;
   QFileInfo fi(absName);
   if (fi.exists() && fi.isFile())
   {
     FILE *f = fopen(absName.toLocal8Bit(),"r");
     if (f==NULL)
-      config_err("Error: could not open file %s for reading\n",absName.toLatin1().data());
+      config_err("could not open file %s for reading\n",qPrintable(absName));
     else 
       return f;
   }
@@ -134,14 +153,14 @@ static FILE *findFile(const QString &fileName)
     if (f) return f;
   }
   // try cwd if g_includePathList fails
-  return tryPath(QString::fromAscii("."),fileName);
+  return tryPath(QString::fromLatin1("."),fileName);
 }
 
 static void readIncludeFile(const QString &incName)
 {
   if (g_includeDepth==MAX_INCLUDE_DEPTH) 
   {
-    config_err("Error: maximum include depth (%d) reached, %s is not included. Aborting...\n",
+    config_err("maximum include depth (%d) reached, %s is not included. Aborting...\n",
 	MAX_INCLUDE_DEPTH,qPrintable(incName));
     exit(1);
   } 
@@ -150,8 +169,8 @@ static void readIncludeFile(const QString &incName)
   substEnvVarsInString(inc);
   inc = inc.trimmed();
   uint incLen = inc.length();
-  if (inc.at(0)==QChar::fromAscii('"') && 
-      inc.at(incLen-1)==QChar::fromAscii('"')) // strip quotes
+  if (inc.at(0)==QChar::fromLatin1('"') && 
+      inc.at(incLen-1)==QChar::fromLatin1('"')) // strip quotes
   {
     inc=inc.mid(1,incLen-2);
   }
@@ -162,7 +181,7 @@ static void readIncludeFile(const QString &incName)
     // For debugging
 #if SHOW_INCLUDES
     for (i=0;i<includeStack.count();i++) msg("  ");
-    msg("@INCLUDE = %s: parsing...\n",inc.toLatin1().data());
+    msg("@INCLUDE = %s: parsing...\n",qPrintable(inc));
 #endif
 
     // store the state of the old file 
@@ -180,7 +199,7 @@ static void readIncludeFile(const QString &incName)
   } 
   else
   {
-    config_err("Error: @INCLUDE = %s: not found!\n",inc.toLatin1().data());
+    config_err("@INCLUDE = %s: not found!\n",qPrintable(inc));
     exit(1);
   }
 }
@@ -210,7 +229,7 @@ static void readIncludeFile(const QString &incName)
 					   g_curOption = g_options->value(cmd);
 					   if (g_curOption==0) // oops not known
 					   {
-					     config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n",
+					     config_warn("ignoring unsupported tag `%s' at line %d, file %s\n",
 						 qPrintable(cmd),yylineno,qPrintable(g_yyFileName)); 
 					     BEGIN(SkipInvalid);
 					   }
@@ -235,7 +254,7 @@ static void readIncludeFile(const QString &incName)
 					         BEGIN(GetString);
 						 break;
 					       case Input::Obsolete:
-					         config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n"
+					         config_warn("Tag `%s' at line %d of file %s has become obsolete.\n"
 						            "To avoid this warning please update your configuration "
 							    "file using \"doxygen -u\"\n", qPrintable(cmd),
 							    yylineno,qPrintable(g_yyFileName)); 
@@ -249,7 +268,7 @@ static void readIncludeFile(const QString &incName)
 					  g_curOption = g_options->value(cmd);
 					  if (g_curOption==0) // oops not known
 					  {
-					    config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n",
+					    config_warn("ignoring unsupported tag `%s' at line %d, file %s\n",
 						yytext,yylineno,qPrintable(g_yyFileName)); 
 					    BEGIN(SkipInvalid);
 					  }
@@ -265,12 +284,12 @@ static void readIncludeFile(const QString &incName)
 					      case Input::String:
 					      case Input::Int:
 					      case Input::Bool:
-					        config_err("Warning: operator += not supported for `%s'. Ignoring line at line %d, file %s\n",
+					        config_warn("operator += not supported for `%s'. Ignoring line at line %d, file %s\n",
 						    yytext,yylineno,qPrintable(g_yyFileName)); 
 					        BEGIN(SkipInvalid);
 						break;
 					      case Input::Obsolete:
-					         config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n"
+					         config_warn("Tag `%s' at line %d of file %s has become obsolete.\n"
 						            "To avoid this warning please update your configuration "
 							    "file using \"doxygen -u\"\n", 
 							    qPrintable(cmd),yylineno,qPrintable(g_yyFileName)); 
@@ -307,12 +326,12 @@ static void readIncludeFile(const QString &incName)
 					  }
   					}
 
-<Start>[a-z_A-Z0-9]+			{ config_err("Warning: ignoring unknown tag `%s' at line %d, file %s\n",yytext,yylineno,qPrintable(g_yyFileName)); }
+<Start>[a-z_A-Z0-9]+			{ config_warn("ignoring unknown tag `%s' at line %d, file %s\n",yytext,yylineno,qPrintable(g_yyFileName)); }
 <GetString,SkipInvalid>\n	        { BEGIN(Start); }
 <GetStrList>\n				{ 
 					  if (!g_elemStr.isEmpty())
 					  {
-					    //printf("elemStr1=`%s'\n",elemStr.toLatin1().data());
+					    //printf("elemStr1=`%s'\n",qPrintable(elemStr));
 					    *g_arg = QVariant(g_arg->toStringList() << g_elemStr);
 					  }
 					  BEGIN(Start); 
@@ -320,7 +339,7 @@ static void readIncludeFile(const QString &incName)
 <GetStrList>[ \t]+			{
   				          if (!g_elemStr.isEmpty())
 					  {
-					    //printf("elemStr2=`%s'\n",elemStr.toLatin1().data());
+					    //printf("elemStr2=`%s'\n",qPrintable(elemStr));
   					    *g_arg = QVariant(g_arg->toStringList() << g_elemStr);
 					  }
 					  g_elemStr = QString();
@@ -336,7 +355,7 @@ static void readIncludeFile(const QString &incName)
 <GetQuotedString>"\""|"\n" 		{ 
                                           // we add a bogus space to signal that the string was quoted. This space will be stripped later on.
                                           g_tmpString+=" ";
-  					  //printf("Quoted String = `%s'\n",tmpString.toLatin1().data());
+  					  //printf("Quoted String = `%s'\n",qPrintable(tmpString));
   					  if (g_lastState==GetString)
 					  {
 					    *g_arg = g_codec->toUnicode(g_tmpString);
@@ -348,7 +367,7 @@ static void readIncludeFile(const QString &incName)
 					  }
 					  if (*yytext=='\n')
 					  {
-					    config_err("Warning: Missing end quote (\") on line %d, file %s\n",yylineno,
+					    config_warn("Missing end quote (\") on line %d, file %s\n",yylineno,
                                                 qPrintable(g_yyFileName));
 					  }
 					  BEGIN(g_lastState);
@@ -373,15 +392,15 @@ static void readIncludeFile(const QString &incName)
 
 static void substEnvVarsInString(QString &s)
 {
-  static QRegExp re(QString::fromAscii("\\$\\([a-z_A-Z0-9]+\\)"));
+  static QRegExp re(QString::fromLatin1("\\$\\([a-z_A-Z0-9]+\\)"));
   if (s.isEmpty()) return;
   int p=0;
   int i,l;
-  //printf("substEnvVarInString(%s) start\n",s.toLatin1().data());
+  //printf("substEnvVarInString(%s) start\n",qPrintable(s));
   while ((i=re.indexIn(s,p))!=-1)
   {
     l = re.matchedLength();
-    //printf("Found environment var s.mid(%d,%d)=`%s'\n",i+2,l-3,s.mid(i+2,l-3).toLatin1().data());
+    //printf("Found environment var s.mid(%d,%d)=`%s'\n",i+2,l-3,qPrintable(s.mid(i+2,l-3)));
     QString env=g_codec->toUnicode(getenv(s.mid(i+2,l-3).toLatin1()));
     substEnvVarsInString(env); // recursively expand variables if needed.
     s = s.left(i)+env+s.right(s.length()-i-l);
@@ -389,7 +408,7 @@ static void substEnvVarsInString(QString &s)
   }
   s=s.trimmed(); // to strip the bogus space that was added when an argument
                          // has quotes
-  //printf("substEnvVarInString(%s) end\n",s.toLatin1().data());
+  //printf("substEnvVarInString(%s) end\n",qPrintable(s));
 }
 
 static void substEnvVarsInStrList(QStringList &sl)
@@ -399,12 +418,12 @@ static void substEnvVarsInStrList(QStringList &sl)
   foreach (QString result, sl)
   {
     // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE.
-    bool wasQuoted = (result.indexOf(QChar::fromAscii(' '))!=-1) || 
-                     (result.indexOf(QChar::fromAscii('\t'))!=-1);
+    bool wasQuoted = (result.indexOf(QChar::fromLatin1(' '))!=-1) || 
+                     (result.indexOf(QChar::fromLatin1('\t'))!=-1);
     // here we strip the quote again
     substEnvVarsInString(result);
 
-    //printf("Result %s was quoted=%d\n",result.toLatin1().data(),wasQuoted);
+    //printf("Result %s was quoted=%d\n",qPrintable(result),wasQuoted);
 
     if (!wasQuoted) /* as a result of the expansion, a single string
 		       may have expanded into a list, which we'll
@@ -420,33 +439,33 @@ static void substEnvVarsInStrList(QStringList &sl)
       {
 	QChar c=0;
 	// skip until start of new word
-	while (i<l && ((c=result.at(i))==QChar::fromAscii(' ') || c==QChar::fromAscii('\t'))) i++; 
+	while (i<l && ((c=result.at(i))==QChar::fromLatin1(' ') || c==QChar::fromLatin1('\t'))) i++; 
 	p=i; // p marks the start index of the word
 	// skip until end of a word
-	while (i<l && ((c=result.at(i))!=QChar::fromAscii(' ') && 
-	              c!=QChar::fromAscii('\t') && 
-		      c!=QChar::fromAscii('"'))) i++;
+	while (i<l && ((c=result.at(i))!=QChar::fromLatin1(' ') && 
+	              c!=QChar::fromLatin1('\t') && 
+		      c!=QChar::fromLatin1('"'))) i++;
 	if (i<l) // not at the end of the string
 	{
-	  if (c==QChar::fromAscii('"')) // word within quotes
+	  if (c==QChar::fromLatin1('"')) // word within quotes
 	  {
 	    p=i+1;
 	    for (i++;i<l;i++)
 	    {
 	      c=result.at(i);
-	      if (c==QChar::fromAscii('"')) // end quote
+	      if (c==QChar::fromLatin1('"')) // end quote
 	      {
                 out += result.mid(p,i-p);
 		p=i+1;
 		break; 
 	      }
-	      else if (c==QChar::fromAscii('\\')) // skip escaped stuff
+	      else if (c==QChar::fromLatin1('\\')) // skip escaped stuff
 	      {
 		i++;
 	      }
 	    }
 	  }
-	  else if (c==QChar::fromAscii(' ') || c==QChar::fromAscii('\t')) // separator
+	  else if (c==QChar::fromLatin1(' ') || c==QChar::fromLatin1('\t')) // separator
 	  {
             out += result.mid(p,i-p);
 	    p=i+1;
@@ -519,7 +538,7 @@ bool parseConfig(
 void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
 {
   QChar c;
-  bool needsEscaping=FALSE;
+  bool needsEscaping=false;
   // convert the string back to it original encoding
   //QByteArray se = codec->fromUnicode(s);
   t.setCodec(codec);
@@ -528,10 +547,10 @@ void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
   {
     while (!(c=*p++).isNull() && !needsEscaping) 
     {
-      needsEscaping = (c==QChar::fromAscii(' ')  || 
-	               c==QChar::fromAscii('\n') || 
-		       c==QChar::fromAscii('\t') || 
-		       c==QChar::fromAscii('"'));
+      needsEscaping = (c==QChar::fromLatin1(' ')  || 
+	               c==QChar::fromLatin1('\n') || 
+		       c==QChar::fromLatin1('\t') || 
+		       c==QChar::fromLatin1('"'));
     }
     if (needsEscaping)
     { 
@@ -539,9 +558,9 @@ void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s)
       p=s.data();
       while (!p->isNull())
       {
-	if (*p   ==QChar::fromAscii(' ') && 
-	   *(p+1)==QChar::fromAscii('\0')) break; // skip inserted space at the end
-	if (*p   ==QChar::fromAscii('"')) t << "\\"; // escape quotes
+	if (*p   ==QChar::fromLatin1(' ') && 
+	   *(p+1)==QChar::fromLatin1('\0')) break; // skip inserted space at the end
+	if (*p   ==QChar::fromLatin1('"')) t << "\\"; // escape quotes
 	t << *p++;
       }
       t << "\"";
diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp
index d0728ae..e292d0c 100644
--- a/addon/doxywizard/doxywizard.cpp
+++ b/addon/doxywizard/doxywizard.cpp
@@ -1,9 +1,28 @@
-#include <QtGui>
 #include "doxywizard.h"
 #include "version.h"
 #include "expert.h"
 #include "wizard.h"
 
+#include <QMenu>
+#include <QMenuBar>
+#include <QPushButton>
+#include <QMessageBox>
+#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QLabel>
+#include <QTextEdit>
+#include <QStatusBar>
+#include <QProcess>
+#include <QTimer>
+#include <QCloseEvent>
+#include <QApplication>
+#include <QDir>
+#include <QFileDialog>
+#include <QDesktopServices>
+#include <QUrl>
+#include <QTextStream>
+#include <QDebug>
+
 #ifdef WIN32
 #include <windows.h>
 #endif
@@ -19,7 +38,7 @@ MainWindow &MainWindow::instance()
 }
 
 MainWindow::MainWindow()
-  : m_settings(QString::fromAscii("Doxygen.org"), QString::fromAscii("Doxywizard"))
+  : m_settings(QString::fromLatin1("Doxygen.org"), QString::fromLatin1("Doxywizard"))
 {
   QMenu *file = menuBar()->addMenu(tr("File"));
   file->addAction(tr("Open..."), 
@@ -84,7 +103,7 @@ MainWindow::MainWindow()
   QGridLayout *grid = new QGridLayout;
   m_outputLog = new QTextEdit;
   m_outputLog->setReadOnly(true);
-  m_outputLog->setFontFamily(QString::fromAscii("courier"));
+  m_outputLog->setFontFamily(QString::fromLatin1("courier"));
   m_outputLog->setMinimumWidth(600);
   grid->addWidget(m_outputLog,0,0);
   grid->setColumnStretch(0,1);
@@ -183,17 +202,17 @@ void MainWindow::updateWorkingDir()
 
 void MainWindow::manual()
 {
-  QDesktopServices::openUrl(QUrl(QString::fromAscii("http://www.doxygen.org/manual.html")));
+  QDesktopServices::openUrl(QUrl(QString::fromLatin1("http://www.doxygen.org/manual.html")));
 }
 
 void MainWindow::about()
 {
   QString msg;
   QTextStream t(&msg,QIODevice::WriteOnly);
-  t << QString::fromAscii("<qt><center>A tool to configure and run doxygen version ")+
-       QString::fromAscii(versionString)+
-       QString::fromAscii(" on your source files.</center><p><br>"
-       "<center>Written by<br> Dimitri van Heesch<br>© 2000-2014</center><p>"
+  t << QString::fromLatin1("<qt><center>A tool to configure and run doxygen version ")+
+       QString::fromLatin1(versionString)+
+       QString::fromLatin1(" on your source files.</center><p><br>"
+       "<center>Written by<br> Dimitri van Heesch<br>© 2000-2015</center><p>"
        "</qt>");
   QMessageBox::about(this,tr("Doxygen GUI"),msg);
 }
@@ -273,7 +292,7 @@ bool MainWindow::saveConfig()
 bool MainWindow::saveConfigAs()
 {
   QString fileName = QFileDialog::getSaveFileName(this, QString(), 
-             m_workingDir->text()+QString::fromAscii("/Doxyfile"));
+             m_workingDir->text()+QString::fromLatin1("/Doxyfile"));
   if (fileName.isEmpty()) return false;
   saveConfig(fileName);
   return true;
@@ -289,7 +308,7 @@ void MainWindow::makeDefaults()
   {
     //printf("MainWindow:makeDefaults()\n");
     m_expert->saveSettings(&m_settings);
-    m_settings.setValue(QString::fromAscii("wizard/loadsettings"), true);
+    m_settings.setValue(QString::fromLatin1("wizard/loadsettings"), true);
     m_settings.sync();
   }
 }
@@ -306,7 +325,7 @@ void MainWindow::clearRecent()
     m_recentFiles.clear();
     for (int i=0;i<MAX_RECENT_FILES;i++)
     {
-      m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromAscii(""));
+      m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromLatin1(""));
     }
     m_settings.sync();
   }
@@ -323,7 +342,7 @@ void MainWindow::resetToDefaults()
   {
     //printf("MainWindow:resetToDefaults()\n");
     m_expert->resetToDefaults();
-    m_settings.setValue(QString::fromAscii("wizard/loadsettings"), false);
+    m_settings.setValue(QString::fromLatin1("wizard/loadsettings"), false);
     m_settings.sync();
     m_wizard->refresh();
   }
@@ -331,11 +350,11 @@ void MainWindow::resetToDefaults()
 
 void MainWindow::loadSettings()
 {
-  QVariant geometry     = m_settings.value(QString::fromAscii("main/geometry"), QVariant::Invalid);
-  QVariant state        = m_settings.value(QString::fromAscii("main/state"),    QVariant::Invalid);
-  QVariant wizState     = m_settings.value(QString::fromAscii("wizard/state"),  QVariant::Invalid);
-  QVariant loadSettings = m_settings.value(QString::fromAscii("wizard/loadsettings"),  QVariant::Invalid);
-  QVariant workingDir   = m_settings.value(QString::fromAscii("wizard/workingdir"), QVariant::Invalid);
+  QVariant geometry     = m_settings.value(QString::fromLatin1("main/geometry"), QVariant::Invalid);
+  QVariant state        = m_settings.value(QString::fromLatin1("main/state"),    QVariant::Invalid);
+  QVariant wizState     = m_settings.value(QString::fromLatin1("wizard/state"),  QVariant::Invalid);
+  QVariant loadSettings = m_settings.value(QString::fromLatin1("wizard/loadsettings"),  QVariant::Invalid);
+  QVariant workingDir   = m_settings.value(QString::fromLatin1("wizard/workingdir"), QVariant::Invalid);
 
   if (geometry  !=QVariant::Invalid) restoreGeometry(geometry.toByteArray());
   if (state     !=QVariant::Invalid) restoreState   (state.toByteArray());
@@ -362,12 +381,12 @@ void MainWindow::loadSettings()
 
 void MainWindow::saveSettings()
 {
-  QSettings settings(QString::fromAscii("Doxygen.org"), QString::fromAscii("Doxywizard"));
+  QSettings settings(QString::fromLatin1("Doxygen.org"), QString::fromLatin1("Doxywizard"));
 
-  m_settings.setValue(QString::fromAscii("main/geometry"), saveGeometry());
-  m_settings.setValue(QString::fromAscii("main/state"),    saveState());
-  m_settings.setValue(QString::fromAscii("wizard/state"),  m_wizard->saveState());
-  m_settings.setValue(QString::fromAscii("wizard/workingdir"), m_workingDir->text());
+  m_settings.setValue(QString::fromLatin1("main/geometry"), saveGeometry());
+  m_settings.setValue(QString::fromLatin1("main/state"),    saveState());
+  m_settings.setValue(QString::fromLatin1("wizard/state"),  m_wizard->saveState());
+  m_settings.setValue(QString::fromLatin1("wizard/workingdir"), m_workingDir->text());
 }
 
 void MainWindow::selectTab(int id)
@@ -405,7 +424,7 @@ void MainWindow::addRecentFile(const QString &fileName)
   }
   for (;i<MAX_RECENT_FILES;i++)
   {
-    m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromAscii(""));
+    m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromLatin1(""));
   }
 }
 
@@ -423,19 +442,19 @@ void MainWindow::runDoxygen()
   {
     QString doxygenPath; 
 #if defined(Q_OS_MACX)
-    doxygenPath = qApp->applicationDirPath()+QString::fromAscii("/../Resources/");
+    doxygenPath = qApp->applicationDirPath()+QString::fromLatin1("/../Resources/");
     qDebug() << tr("Doxygen path: ") << doxygenPath;
-    if ( !QFile(doxygenPath + QString::fromAscii("doxygen")).exists() ) 
+    if ( !QFile(doxygenPath + QString::fromLatin1("doxygen")).exists() ) 
     {
       // No Doxygen binary in the resources, if there is a system Doxygen binary, use that instead
-      if ( QFile(QString::fromAscii("/usr/local/bin/doxygen")).exists() )
+      if ( QFile(QString::fromLatin1("/usr/local/bin/doxygen")).exists() )
       {
-        doxygenPath = QString::fromAscii("/usr/local/bin/");
+        doxygenPath = QString::fromLatin1("/usr/local/bin/");
       }
       else 
       {
         qDebug() << tr("Can't find the doxygen command, make sure it's in your $$PATH");
-        doxygenPath = QString::fromAscii("");
+        doxygenPath = QString::fromLatin1("");
       }
     }
     qDebug() << tr("Getting doxygen from: ") << doxygenPath;
@@ -446,20 +465,20 @@ void MainWindow::runDoxygen()
     m_runProcess->setWorkingDirectory(m_workingDir->text());
     QStringList env=QProcess::systemEnvironment();
     // set PWD environment variable to m_workingDir
-    env.replaceInStrings(QRegExp(QString::fromAscii("^PWD=(.*)"),Qt::CaseInsensitive), 
-                         QString::fromAscii("PWD=")+m_workingDir->text());
+    env.replaceInStrings(QRegExp(QString::fromLatin1("^PWD=(.*)"),Qt::CaseInsensitive), 
+                         QString::fromLatin1("PWD=")+m_workingDir->text());
     m_runProcess->setEnvironment(env);
 
     QStringList args;
-    args << QString::fromAscii("-b"); // make stdout unbuffered
-    args << QString::fromAscii("-");  // read config from stdin
+    args << QString::fromLatin1("-b"); // make stdout unbuffered
+    args << QString::fromLatin1("-");  // read config from stdin
 
     m_outputLog->clear();
-    m_runProcess->start(doxygenPath + QString::fromAscii("doxygen"), args);
+    m_runProcess->start(doxygenPath + QString::fromLatin1("doxygen"), args);
 
     if (!m_runProcess->waitForStarted())
     {
-      m_outputLog->append(QString::fromAscii("*** Failed to run doxygen\n"));
+      m_outputLog->append(QString::fromLatin1("*** Failed to run doxygen\n"));
       return;
     }
     QTextStream t(m_runProcess);
@@ -468,7 +487,7 @@ void MainWindow::runDoxygen()
 
     if (m_runProcess->state() == QProcess::NotRunning)
     {
-      m_outputLog->append(QString::fromAscii("*** Failed to run doxygen\n"));
+      m_outputLog->append(QString::fromLatin1("*** Failed to run doxygen\n"));
     }
     else
     {
@@ -536,10 +555,10 @@ void MainWindow::showHtmlOutput()
   QFileInfo fi(indexFile);
   // TODO: the following doesn't seem to work with IE
 #ifdef WIN32
-  //QString indexUrl(QString::fromAscii("file:///"));
+  //QString indexUrl(QString::fromLatin1("file:///"));
   ShellExecute(NULL, L"open", (LPCWSTR)fi.absoluteFilePath().utf16(), NULL, NULL, SW_SHOWNORMAL);
 #else
-  QString indexUrl(QString::fromAscii("file://"));
+  QString indexUrl(QString::fromLatin1("file://"));
   indexUrl+=fi.absoluteFilePath();
   QDesktopServices::openUrl(QUrl(indexUrl));
 #endif
@@ -549,7 +568,7 @@ void MainWindow::saveLog()
 {
   QString fn = QFileDialog::getSaveFileName(this, tr("Save log file"), 
         m_workingDir->text()+
-        QString::fromAscii("/doxygen_log.txt"));
+        QString::fromLatin1("/doxygen_log.txt"));
   if (!fn.isEmpty())
   {
     QFile f(fn);
@@ -589,11 +608,11 @@ void MainWindow::updateTitle()
   QString title = tr("Doxygen GUI frontend");
   if (m_modified)
   {
-    title+=QString::fromAscii(" +");
+    title+=QString::fromLatin1(" +");
   }
   if (!m_fileName.isEmpty())
   {
-    title+=QString::fromAscii(" (")+m_fileName+QString::fromAscii(")");
+    title+=QString::fromLatin1(" (")+m_fileName+QString::fromLatin1(")");
   }
   setWindowTitle(title);
 }
diff --git a/addon/doxywizard/doxywizard.pro.in b/addon/doxywizard/doxywizard.pro.in
deleted file mode 100644
index 1ad36a9..0000000
--- a/addon/doxywizard/doxywizard.pro.in
+++ /dev/null
@@ -1,40 +0,0 @@
-######################################################################
-# Automatically generated by qmake (2.01a) zo okt 19 12:50:02 2008
-######################################################################
-
-TEMPLATE     = app
-DESTDIR      = ../../bin
-TARGET       = 
-DEPENDPATH  += .
-INCLUDEPATH += . ../../generated_src/doxywizard
-QT          += xml
-CONFIG      += $extraopts
-OBJECTS_DIR  = ../../objects/doxywizard
-MOC_DIR      = ../../moc/doxywizard
-RCC_DIR      = ../../rcc/doxywizard
-DEFINES     += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII
-
-macx-g++ {
-  CONFIG += x86 x86_64
-}
-
-# Input
-HEADERS     += doxywizard.h version.h expert.h config.h helplabel.h \
-               inputbool.h inputstring.h inputint.h inputstrlist.h wizard.h docintf.h
-SOURCES     += doxywizard.cpp expert.cpp wizard.cpp \
-               inputbool.cpp inputstring.cpp inputint.cpp inputstrlist.cpp 
-RESOURCES   += doxywizard.qrc
-win32:RC_FILE += doxywizard.rc
-
-config.target = ../../generated_src/doxywizard/config_doxyw.cpp
-config.commands = $(LEX) -Pconfig_doxywYY -t ../../addon/doxywizard/config_doxyw.l | $(PYTHON) ../../src/increasebuffer.py >../../generated_src/doxywizard/$*.cpp
-config.depends = ../../addon/doxywizard/config_doxyw.l  ../../src/increasebuffer.py
-configdoc.target = ../../generated_src/doxywizard/configdoc.cpp
-configdoc.commands = $(PYTHON) ../../src/configgen.py -wiz ../../src/config.xml > ../../generated_src/doxywizard/configdoc.cpp
-configdoc.depends = ../../src/config.xml ../../src/configgen.py
-version.target = ../../generated_src/doxywizard/version.cpp
-version.commands = cd ../../src;$(PYTHON) version.py
-version.depends = ../../configure
-QMAKE_EXTRA_TARGETS += configdoc config version
-GENERATED_SOURCES += $$configdoc.target $$config.target $$version.target
-
diff --git a/addon/doxywizard/expert.cpp b/addon/doxywizard/expert.cpp
index 3a03c69..66a0955 100644
--- a/addon/doxywizard/expert.cpp
+++ b/addon/doxywizard/expert.cpp
@@ -1,5 +1,3 @@
-#include <QtGui>
-#include <QtXml>
 #include "expert.h"
 #include "inputbool.h"
 #include "inputstring.h"
@@ -11,7 +9,22 @@
 #include "configdoc.h"
 #include "settings.h"
 
-#define SA(x) QString::fromAscii(x)
+#include <QTreeWidget>
+#include <QStackedWidget>
+#include <QTextBrowser>
+#include <QSplitter>
+#include <QGridLayout>
+#include <QPushButton>
+#include <QScrollArea>
+#include <QFile>
+#include <QMessageBox>
+#include <QSettings>
+#include <QTextStream>
+#include <QTextCodec>
+#include <QFileInfo>
+
+#define SA(x) QString::fromLatin1(x)
+
 
 static QString convertToComment(const QString &s)
 {
@@ -48,7 +61,7 @@ Expert::Expert()
   m_treeWidget = new QTreeWidget;
   m_treeWidget->setColumnCount(1);
   m_topicStack = new QStackedWidget;
-  m_inShowHelp = FALSE;
+  m_inShowHelp = false;
 
   QFile file(SA(":/config.xml"));
   QString err;
@@ -69,7 +82,7 @@ Expert::Expert()
   createTopics(m_rootElement);
   m_helper = new QTextBrowser;
   m_helper->setReadOnly(true);
-  m_helper->setOpenExternalLinks(TRUE);
+  m_helper->setOpenExternalLinks(true);
   m_splitter = new QSplitter(Qt::Vertical);
   m_splitter->addWidget(m_treeWidget);
   m_splitter->addWidget(m_helper);
@@ -471,7 +484,7 @@ QWidget *Expert::createTopicWidget(QDomElement &elem)
   while (!child.isNull())
   {
     QString setting = child.attribute(SA("setting"));
-    if (setting.isEmpty() || IS_SUPPORTED(setting.toAscii()))
+    if (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1()))
     {
       QString type = child.attribute(SA("type"));
       QString docs = getDocsForNode(child);
@@ -634,7 +647,7 @@ QWidget *Expert::createTopicWidget(QDomElement &elem)
     QString dependsOn = child.attribute(SA("depends"));
     QString id        = child.attribute(SA("id"));
     if (!dependsOn.isEmpty() && 
-        (setting.isEmpty() || IS_SUPPORTED(setting.toAscii())))
+        (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1())))
     {
        Input *parentOption = m_options[dependsOn];
        if (parentOption==0)
@@ -740,7 +753,7 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec,
     QString setting = childElem.attribute(SA("setting"));
     QString type = childElem.attribute(SA("type"));
     QString name = childElem.attribute(SA("id"));
-    if (setting.isEmpty() || IS_SUPPORTED(setting.toAscii()))
+    if (setting.isEmpty() || IS_SUPPORTED(setting.toLatin1()))
     {
       QHash<QString,Input*>::const_iterator i = m_options.find(name);
       if (i!=m_options.end())
@@ -774,10 +787,10 @@ bool Expert::writeConfig(QTextStream &t,bool brief)
   }
 
   QTextCodec *codec = 0;
-  Input *option = m_options[QString::fromAscii("DOXYFILE_ENCODING")];
+  Input *option = m_options[QString::fromLatin1("DOXYFILE_ENCODING")];
   if (option)
   {
-    codec = QTextCodec::codecForName(option->value().toString().toAscii());
+    codec = QTextCodec::codecForName(option->value().toString().toLatin1());
     if (codec==0) // fallback: use UTF-8
     {
       codec = QTextCodec::codecForName("UTF-8");
@@ -809,16 +822,16 @@ void Expert::showHelp(Input *option)
 {
   if (!m_inShowHelp)
   {
-    m_inShowHelp = TRUE;
+    m_inShowHelp = true;
     m_helper->setText(
-        QString::fromAscii("<qt><b>")+option->id()+
-        QString::fromAscii("</b><br>")+
-        QString::fromAscii("<br/>")+
+        QString::fromLatin1("<qt><b>")+option->id()+
+        QString::fromLatin1("</b><br>")+
+        QString::fromLatin1("<br/>")+
         option->docs().
-        replace(QChar::fromAscii('\n'),QChar::fromAscii(' '))+
-        QString::fromAscii("</qt>")
+        replace(QChar::fromLatin1('\n'),QChar::fromLatin1(' '))+
+        QString::fromLatin1("</qt>")
         );
-    m_inShowHelp = FALSE;
+    m_inShowHelp = false;
   }
 }
 
@@ -862,7 +875,7 @@ void Expert::resetToDefaults()
 static bool stringVariantToBool(const QVariant &v)
 {
   QString s = v.toString().toLower();
-  return s==QString::fromAscii("yes") || s==QString::fromAscii("true") || s==QString::fromAscii("1");
+  return s==QString::fromLatin1("yes") || s==QString::fromLatin1("true") || s==QString::fromLatin1("1");
 } 
 
 static bool getBoolOption(
@@ -884,7 +897,7 @@ static QString getStringOption(
 
 bool Expert::htmlOutputPresent(const QString &workingDir) const
 {
-  bool generateHtml = getBoolOption(m_options,QString::fromAscii("GENERATE_HTML"));
+  bool generateHtml = getBoolOption(m_options,QString::fromLatin1("GENERATE_HTML"));
   if (!generateHtml || workingDir.isEmpty()) return false;
   QString indexFile = getHtmlOutputIndex(workingDir);
   QFileInfo fi(indexFile);
@@ -893,8 +906,8 @@ bool Expert::htmlOutputPresent(const QString &workingDir) const
 
 QString Expert::getHtmlOutputIndex(const QString &workingDir) const
 {
-  QString outputDir = getStringOption(m_options,QString::fromAscii("OUTPUT_DIRECTORY"));
-  QString htmlOutputDir = getStringOption(m_options,QString::fromAscii("HTML_OUTPUT"));
+  QString outputDir = getStringOption(m_options,QString::fromLatin1("OUTPUT_DIRECTORY"));
+  QString htmlOutputDir = getStringOption(m_options,QString::fromLatin1("HTML_OUTPUT"));
   //printf("outputDir=%s\n",qPrintable(outputDir));
   //printf("htmlOutputDir=%s\n",qPrintable(htmlOutputDir));
   QString indexFile = workingDir;
@@ -904,7 +917,7 @@ QString Expert::getHtmlOutputIndex(const QString &workingDir) const
   }
   else // append
   { 
-    indexFile += QString::fromAscii("/")+outputDir;
+    indexFile += QString::fromLatin1("/")+outputDir;
   }
   if (QFileInfo(htmlOutputDir).isAbsolute()) // override
   {
@@ -912,27 +925,27 @@ QString Expert::getHtmlOutputIndex(const QString &workingDir) const
   }
   else // append
   {
-    indexFile += QString::fromAscii("/")+htmlOutputDir;
+    indexFile += QString::fromLatin1("/")+htmlOutputDir;
   }
-  indexFile+=QString::fromAscii("/index.html");
+  indexFile+=QString::fromLatin1("/index.html");
   return indexFile;
 }
 
 bool Expert::pdfOutputPresent(const QString &workingDir) const
 {
-  bool generateLatex = getBoolOption(m_options,QString::fromAscii("GENERATE_LATEX"));
-  bool pdfLatex = getBoolOption(m_options,QString::fromAscii("USE_PDFLATEX"));
+  bool generateLatex = getBoolOption(m_options,QString::fromLatin1("GENERATE_LATEX"));
+  bool pdfLatex = getBoolOption(m_options,QString::fromLatin1("USE_PDFLATEX"));
   if (!generateLatex || !pdfLatex) return false;
-  QString latexOutput = getStringOption(m_options,QString::fromAscii("LATEX_OUTPUT"));
+  QString latexOutput = getStringOption(m_options,QString::fromLatin1("LATEX_OUTPUT"));
   QString indexFile;
   if (QFileInfo(latexOutput).isAbsolute())
   {
-    indexFile = latexOutput+QString::fromAscii("/refman.pdf");
+    indexFile = latexOutput+QString::fromLatin1("/refman.pdf");
   }
   else
   {
-    indexFile = workingDir+QString::fromAscii("/")+
-                latexOutput+QString::fromAscii("/refman.pdf");
+    indexFile = workingDir+QString::fromLatin1("/")+
+                latexOutput+QString::fromLatin1("/refman.pdf");
   }
   QFileInfo fi(indexFile);
   return fi.exists() && fi.isFile();
diff --git a/addon/doxywizard/images/add.png b/addon/doxywizard/images/add.png
old mode 100644
new mode 100755
index 30a7090..3af7eb7
Binary files a/addon/doxywizard/images/add.png and b/addon/doxywizard/images/add.png differ
diff --git a/addon/doxywizard/images/del.png b/addon/doxywizard/images/del.png
old mode 100644
new mode 100755
index ceb6a60..c2e3bc8
Binary files a/addon/doxywizard/images/del.png and b/addon/doxywizard/images/del.png differ
diff --git a/addon/doxywizard/images/file.png b/addon/doxywizard/images/file.png
old mode 100644
new mode 100755
index e204f67..14f2c95
Binary files a/addon/doxywizard/images/file.png and b/addon/doxywizard/images/file.png differ
diff --git a/addon/doxywizard/images/folder.png b/addon/doxywizard/images/folder.png
old mode 100644
new mode 100755
index 2e420e0..c91c582
Binary files a/addon/doxywizard/images/folder.png and b/addon/doxywizard/images/folder.png differ
diff --git a/addon/doxywizard/images/refresh.png b/addon/doxywizard/images/refresh.png
old mode 100644
new mode 100755
index fd6d565..413735b
Binary files a/addon/doxywizard/images/refresh.png and b/addon/doxywizard/images/refresh.png differ
diff --git a/addon/doxywizard/images/tunecolor.png b/addon/doxywizard/images/tunecolor.png
old mode 100644
new mode 100755
index bf7be83..4c7dd9d
Binary files a/addon/doxywizard/images/tunecolor.png and b/addon/doxywizard/images/tunecolor.png differ
diff --git a/addon/doxywizard/inputbool.cpp b/addon/doxywizard/inputbool.cpp
index be99b0a..ef71dd9 100644
--- a/addon/doxywizard/inputbool.cpp
+++ b/addon/doxywizard/inputbool.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -14,7 +14,11 @@
 
 #include "inputbool.h"
 #include "helplabel.h"
-#include <QtGui>
+
+#include <QCheckBox>
+#include <QTextStream>
+#include <QTextCodec>
+#include <QGridLayout>
 
 InputBool::InputBool( QGridLayout *layout, int &row, 
                       const QString &id, bool checked,
@@ -73,11 +77,11 @@ void InputBool::updateDefault()
 {
   if (m_state==m_default || !m_lab->isEnabled())
   {
-    m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
+    m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
   }
   else
   {
-    m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
+    m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
   }
 }
 
@@ -89,9 +93,9 @@ QVariant &InputBool::value()
 void InputBool::update()
 {
   QString v = m_value.toString().toLower();
-  m_state = (v==QString::fromAscii("yes")  || 
-             v==QString::fromAscii("true") || 
-             v==QString::fromAscii("1"));
+  m_state = (v==QString::fromLatin1("yes")  || 
+             v==QString::fromLatin1("true") || 
+             v==QString::fromLatin1("1"));
   m_cb->setChecked( m_state );
   updateDefault();
   updateDependencies();
@@ -105,8 +109,8 @@ void InputBool::reset()
 void InputBool::writeValue(QTextStream &t,QTextCodec *codec)
 {
   if (m_state) 
-    t << codec->fromUnicode(QString::fromAscii("YES")); 
+    t << codec->fromUnicode(QString::fromLatin1("YES")); 
   else 
-    t << codec->fromUnicode(QString::fromAscii("NO"));
+    t << codec->fromUnicode(QString::fromLatin1("NO"));
 }
 
diff --git a/addon/doxywizard/inputbool.h b/addon/doxywizard/inputbool.h
index 03bb76e..5a90477 100644
--- a/addon/doxywizard/inputbool.h
+++ b/addon/doxywizard/inputbool.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputint.cpp b/addon/doxywizard/inputint.cpp
index e0c426c..a57e7f4 100644
--- a/addon/doxywizard/inputint.cpp
+++ b/addon/doxywizard/inputint.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -15,7 +15,10 @@
 #include "inputint.h"
 #include "helplabel.h"
 
-#include <QtGui>
+#include <QSpinBox>
+#include <QGridLayout>
+#include <QWheelEvent>
+#include <QTextStream>
 
 class NoWheelSpinBox : public QSpinBox
 {
@@ -74,11 +77,11 @@ void InputInt::updateDefault()
   {
     if (m_val==m_default || !m_lab->isEnabled())
     {
-      m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
+      m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
     }
     else
     {
-      m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
+      m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
     }
     emit changed(); 
   }
diff --git a/addon/doxywizard/inputint.h b/addon/doxywizard/inputint.h
index 6662865..457c942 100644
--- a/addon/doxywizard/inputint.h
+++ b/addon/doxywizard/inputint.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp
index 48ede55..7fb6ec3 100644
--- a/addon/doxywizard/inputstring.cpp
+++ b/addon/doxywizard/inputstring.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -17,7 +17,14 @@
 #include "doxywizard.h"
 #include "config.h"
 
-#include <QtGui>
+#include <QComboBox>
+#include <QLineEdit>
+#include <QGridLayout>
+#include <QWheelEvent>
+#include <QToolBar>
+#include <QFileInfo>
+#include <QFileDialog>
+#include <QTextCodec>
 
 class NoWheelComboBox : public QComboBox
 {
@@ -34,7 +41,7 @@ InputString::InputString( QGridLayout *layout,int &row,
                           StringMode m, const QString &docs,
                           const QString &absPath )
   : m_default(s), m_sm(m), m_index(0), m_docs(docs), m_id(id),
-    m_absPath(absPath==QString::fromAscii("1"))
+    m_absPath(absPath==QString::fromLatin1("1"))
 {
   m_lab = new HelpLabel(id);
   if (m==StringFixed)
@@ -61,7 +68,7 @@ InputString::InputString( QGridLayout *layout,int &row,
       m_br->setIconSize(QSize(24,24));
       if (m==StringFile || m==StringImage) 
       {
-        QAction *file = m_br->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(),this,SLOT(browse()));
+        QAction *file = m_br->addAction(QIcon(QString::fromLatin1(":/images/file.png")),QString(),this,SLOT(browse()));
         file->setToolTip(tr("Browse to a file"));
         layout->addWidget( m_br,row,2 );
         if (m==StringImage) 
@@ -75,7 +82,7 @@ InputString::InputString( QGridLayout *layout,int &row,
       }
       else 
       {
-        QAction *dir = m_br->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(),this,SLOT(browse()));
+        QAction *dir = m_br->addAction(QIcon(QString::fromLatin1(":/images/folder.png")),QString(),this,SLOT(browse()));
         dir->setToolTip(tr("Browse to a folder"));
         layout->addWidget( m_br,row,2 );
       }
@@ -94,7 +101,7 @@ InputString::InputString( QGridLayout *layout,int &row,
                       this,   SLOT(setValue(const QString&)) );
   if (m_com) connect( m_com,  SIGNAL(activated(const QString &)), 
                       this,   SLOT(setValue(const QString &)) );
-  m_str = s+QChar::fromAscii('!'); // force update
+  m_str = s+QChar::fromLatin1('!'); // force update
   setValue(s);
   connect( m_lab, SIGNAL(enter()), SLOT(help()) );
   connect( m_lab, SIGNAL(reset()), SLOT(reset()) );
@@ -125,11 +132,11 @@ void InputString::updateDefault()
   {
     if (m_str==m_default || !m_lab->isEnabled())
     {
-      m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
+      m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
     }
     else
     {
-      m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
+      m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
     }
     if (m_im)
     {
@@ -142,7 +149,7 @@ void InputString::updateDefault()
         QFile Fout(m_str);
         if(!Fout.exists()) 
         {
-          m_im->setText(tr("Sorry, cannot find file(")+m_str+QString::fromAscii(");"));
+          m_im->setText(tr("Sorry, cannot find file(")+m_str+QString::fromLatin1(");"));
         }
         else
         {
@@ -153,7 +160,7 @@ void InputString::updateDefault()
           }
           else
           {
-            m_im->setText(tr("Sorry, no preview available (")+m_str+QString::fromAscii(");"));
+            m_im->setText(tr("Sorry, no preview available (")+m_str+QString::fromLatin1(");"));
           }
         }
       }
diff --git a/addon/doxywizard/inputstring.h b/addon/doxywizard/inputstring.h
index 90ea87d..dba31f6 100644
--- a/addon/doxywizard/inputstring.h
+++ b/addon/doxywizard/inputstring.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputstrlist.cpp b/addon/doxywizard/inputstrlist.cpp
index 0a0f01f..660ce40 100644
--- a/addon/doxywizard/inputstrlist.cpp
+++ b/addon/doxywizard/inputstrlist.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -17,7 +17,14 @@
 #include "doxywizard.h"
 #include "config.h"
 
-#include <QtGui>
+#include <QToolBar>
+#include <QGridLayout>
+#include <QLineEdit>
+#include <QListWidget>
+#include <QFileInfo>
+#include <QFileDialog>
+#include <QTextStream>
+#include <QTextCodec>
 
 InputStrList::InputStrList( QGridLayout *layout,int &row,
                             const QString & id, 
@@ -32,13 +39,13 @@ InputStrList::InputStrList( QGridLayout *layout,int &row,
 
   QToolBar *toolBar = new QToolBar;
   toolBar->setIconSize(QSize(24,24));
-  m_add = toolBar->addAction(QIcon(QString::fromAscii(":/images/add.png")),QString(),
+  m_add = toolBar->addAction(QIcon(QString::fromLatin1(":/images/add.png")),QString(),
                              this,SLOT(addString()));
   m_add->setToolTip(tr("Add item"));
-  m_del = toolBar->addAction(QIcon(QString::fromAscii(":/images/del.png")),QString(),
+  m_del = toolBar->addAction(QIcon(QString::fromLatin1(":/images/del.png")),QString(),
                              this,SLOT(delString()));
   m_del->setToolTip(tr("Delete selected item"));
-  m_upd = toolBar->addAction(QIcon(QString::fromAscii(":/images/refresh.png")),QString(),
+  m_upd = toolBar->addAction(QIcon(QString::fromLatin1(":/images/refresh.png")),QString(),
                              this,SLOT(updateString()));
   m_upd->setToolTip(tr("Update selected item"));
 
@@ -52,13 +59,13 @@ InputStrList::InputStrList( QGridLayout *layout,int &row,
   {
     if (lm&ListFile)
     {
-      m_brFile = toolBar->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(),
+      m_brFile = toolBar->addAction(QIcon(QString::fromLatin1(":/images/file.png")),QString(),
                                     this,SLOT(browseFiles()));
       m_brFile->setToolTip(tr("Browse to a file"));
     } 
     if (lm&ListDir)
     {
-      m_brDir = toolBar->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(),
+      m_brDir = toolBar->addAction(QIcon(QString::fromLatin1(":/images/folder.png")),QString(),
                                    this,SLOT(browseDir()));
       m_brDir->setToolTip(tr("Browse to a folder"));
     }
@@ -188,7 +195,7 @@ void InputStrList::browseDir()
     }
     if (dirName.isEmpty())
     {
-      dirName=QString::fromAscii(".");
+      dirName=QString::fromLatin1(".");
     }
     m_lb->addItem(dirName);
     m_strList.append(dirName);
@@ -225,11 +232,11 @@ void InputStrList::updateDefault()
 {
   if (m_strList==m_default || !m_lab->isEnabled())
   {
-    m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));
+    m_lab->setText(QString::fromLatin1("<qt>")+m_id+QString::fromLatin1("</qt"));
   }
   else
   {
-    m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));
+    m_lab->setText(QString::fromLatin1("<qt><font color='red'>")+m_id+QString::fromLatin1("</font></qt>"));
   }
 }
 
@@ -240,7 +247,7 @@ void InputStrList::reset()
 
 void InputStrList::writeValue(QTextStream &t,QTextCodec *codec)
 {
-  bool first=TRUE;
+  bool first=true;
   foreach (QString s, m_strList) 
   {
     if (!first) 
@@ -248,7 +255,7 @@ void InputStrList::writeValue(QTextStream &t,QTextCodec *codec)
       t << " \\" << endl;
       t << "                         ";
     }
-    first=FALSE;
+    first=false;
     writeStringValue(t,codec,s);
   }
 }
diff --git a/addon/doxywizard/inputstrlist.h b/addon/doxywizard/inputstrlist.h
index 0d7efe7..53f3bcc 100644
--- a/addon/doxywizard/inputstrlist.h
+++ b/addon/doxywizard/inputstrlist.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/version.h b/addon/doxywizard/version.h
index b31fe4f..16bf9df 100644
--- a/addon/doxywizard/version.h
+++ b/addon/doxywizard/version.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/wizard.cpp b/addon/doxywizard/wizard.cpp
index a8b7f94..b320aaa 100644
--- a/addon/doxywizard/wizard.cpp
+++ b/addon/doxywizard/wizard.cpp
@@ -3,46 +3,64 @@
 #include "doxywizard.h"
 
 #include <math.h>
-#include <QtGui>
+
+#include <QGridLayout>
+#include <QImage>
+#include <QLabel>
+#include <QHBoxLayout>
+#include <QPushButton>
+#include <QPixmap>
+#include <QPainter>
+#include <QMouseEvent>
+#include <QLineEdit>
+#include <QCheckBox>
+#include <QFileInfo>
+#include <QFileDialog>
+#include <QButtonGroup>
+#include <QGroupBox>
+#include <QRadioButton>
+#include <QTreeWidget>
+#include <QStackedWidget>
+#include <qdrawutil.h>
 
 // options configurable via the wizard
-#define STR_PROJECT_NAME          QString::fromAscii("PROJECT_NAME")
-#define STR_PROJECT_LOGO          QString::fromAscii("PROJECT_LOGO")
-#define STR_PROJECT_BRIEF         QString::fromAscii("PROJECT_BRIEF")
-#define STR_INPUT                 QString::fromAscii("INPUT")
-#define STR_OUTPUT_DIRECTORY      QString::fromAscii("OUTPUT_DIRECTORY")
-#define STR_PROJECT_NUMBER        QString::fromAscii("PROJECT_NUMBER")
-#define STR_RECURSIVE             QString::fromAscii("RECURSIVE")
-#define STR_OPTIMIZE_OUTPUT_FOR_C QString::fromAscii("OPTIMIZE_OUTPUT_FOR_C")
-#define STR_OPTIMIZE_OUTPUT_JAVA  QString::fromAscii("OPTIMIZE_OUTPUT_JAVA")
-#define STR_OPTIMIZE_FOR_FORTRAN  QString::fromAscii("OPTIMIZE_FOR_FORTRAN")
-#define STR_OPTIMIZE_OUTPUT_VHDL  QString::fromAscii("OPTIMIZE_OUTPUT_VHDL")
-#define STR_CPP_CLI_SUPPORT       QString::fromAscii("CPP_CLI_SUPPORT")
-#define STR_HIDE_SCOPE_NAMES      QString::fromAscii("HIDE_SCOPE_NAMES")
-#define STR_EXTRACT_ALL           QString::fromAscii("EXTRACT_ALL")
-#define STR_SOURCE_BROWSER        QString::fromAscii("SOURCE_BROWSER")
-#define STR_GENERATE_HTML         QString::fromAscii("GENERATE_HTML")
-#define STR_GENERATE_LATEX        QString::fromAscii("GENERATE_LATEX")
-#define STR_GENERATE_MAN          QString::fromAscii("GENERATE_MAN")
-#define STR_GENERATE_RTF          QString::fromAscii("GENERATE_RTF")
-#define STR_GENERATE_XML          QString::fromAscii("GENERATE_XML")
-#define STR_GENERATE_HTMLHELP     QString::fromAscii("GENERATE_HTMLHELP")
-#define STR_GENERATE_TREEVIEW     QString::fromAscii("GENERATE_TREEVIEW")
-#define STR_USE_PDFLATEX          QString::fromAscii("USE_PDFLATEX")
-#define STR_PDF_HYPERLINKS        QString::fromAscii("PDF_HYPERLINKS")
-#define STR_SEARCHENGINE          QString::fromAscii("SEARCHENGINE")
-#define STR_HAVE_DOT              QString::fromAscii("HAVE_DOT")
-#define STR_CLASS_DIAGRAMS        QString::fromAscii("CLASS_DIAGRAMS")
-#define STR_CLASS_GRAPH           QString::fromAscii("CLASS_GRAPH")
-#define STR_COLLABORATION_GRAPH   QString::fromAscii("COLLABORATION_GRAPH")
-#define STR_GRAPHICAL_HIERARCHY   QString::fromAscii("GRAPHICAL_HIERARCHY")
-#define STR_INCLUDE_GRAPH         QString::fromAscii("INCLUDE_GRAPH")
-#define STR_INCLUDED_BY_GRAPH     QString::fromAscii("INCLUDED_BY_GRAPH")
-#define STR_CALL_GRAPH            QString::fromAscii("CALL_GRAPH")
-#define STR_CALLER_GRAPH          QString::fromAscii("CALLER_GRAPH")
-#define STR_HTML_COLORSTYLE_HUE   QString::fromAscii("HTML_COLORSTYLE_HUE")
-#define STR_HTML_COLORSTYLE_SAT   QString::fromAscii("HTML_COLORSTYLE_SAT")
-#define STR_HTML_COLORSTYLE_GAMMA QString::fromAscii("HTML_COLORSTYLE_GAMMA")
+#define STR_PROJECT_NAME          QString::fromLatin1("PROJECT_NAME")
+#define STR_PROJECT_LOGO          QString::fromLatin1("PROJECT_LOGO")
+#define STR_PROJECT_BRIEF         QString::fromLatin1("PROJECT_BRIEF")
+#define STR_INPUT                 QString::fromLatin1("INPUT")
+#define STR_OUTPUT_DIRECTORY      QString::fromLatin1("OUTPUT_DIRECTORY")
+#define STR_PROJECT_NUMBER        QString::fromLatin1("PROJECT_NUMBER")
+#define STR_RECURSIVE             QString::fromLatin1("RECURSIVE")
+#define STR_OPTIMIZE_OUTPUT_FOR_C QString::fromLatin1("OPTIMIZE_OUTPUT_FOR_C")
+#define STR_OPTIMIZE_OUTPUT_JAVA  QString::fromLatin1("OPTIMIZE_OUTPUT_JAVA")
+#define STR_OPTIMIZE_FOR_FORTRAN  QString::fromLatin1("OPTIMIZE_FOR_FORTRAN")
+#define STR_OPTIMIZE_OUTPUT_VHDL  QString::fromLatin1("OPTIMIZE_OUTPUT_VHDL")
+#define STR_CPP_CLI_SUPPORT       QString::fromLatin1("CPP_CLI_SUPPORT")
+#define STR_HIDE_SCOPE_NAMES      QString::fromLatin1("HIDE_SCOPE_NAMES")
+#define STR_EXTRACT_ALL           QString::fromLatin1("EXTRACT_ALL")
+#define STR_SOURCE_BROWSER        QString::fromLatin1("SOURCE_BROWSER")
+#define STR_GENERATE_HTML         QString::fromLatin1("GENERATE_HTML")
+#define STR_GENERATE_LATEX        QString::fromLatin1("GENERATE_LATEX")
+#define STR_GENERATE_MAN          QString::fromLatin1("GENERATE_MAN")
+#define STR_GENERATE_RTF          QString::fromLatin1("GENERATE_RTF")
+#define STR_GENERATE_XML          QString::fromLatin1("GENERATE_XML")
+#define STR_GENERATE_HTMLHELP     QString::fromLatin1("GENERATE_HTMLHELP")
+#define STR_GENERATE_TREEVIEW     QString::fromLatin1("GENERATE_TREEVIEW")
+#define STR_USE_PDFLATEX          QString::fromLatin1("USE_PDFLATEX")
+#define STR_PDF_HYPERLINKS        QString::fromLatin1("PDF_HYPERLINKS")
+#define STR_SEARCHENGINE          QString::fromLatin1("SEARCHENGINE")
+#define STR_HAVE_DOT              QString::fromLatin1("HAVE_DOT")
+#define STR_CLASS_DIAGRAMS        QString::fromLatin1("CLASS_DIAGRAMS")
+#define STR_CLASS_GRAPH           QString::fromLatin1("CLASS_GRAPH")
+#define STR_COLLABORATION_GRAPH   QString::fromLatin1("COLLABORATION_GRAPH")
+#define STR_GRAPHICAL_HIERARCHY   QString::fromLatin1("GRAPHICAL_HIERARCHY")
+#define STR_INCLUDE_GRAPH         QString::fromLatin1("INCLUDE_GRAPH")
+#define STR_INCLUDED_BY_GRAPH     QString::fromLatin1("INCLUDED_BY_GRAPH")
+#define STR_CALL_GRAPH            QString::fromLatin1("CALL_GRAPH")
+#define STR_CALLER_GRAPH          QString::fromLatin1("CALLER_GRAPH")
+#define STR_HTML_COLORSTYLE_HUE   QString::fromLatin1("HTML_COLORSTYLE_HUE")
+#define STR_HTML_COLORSTYLE_SAT   QString::fromLatin1("HTML_COLORSTYLE_SAT")
+#define STR_HTML_COLORSTYLE_GAMMA QString::fromLatin1("HTML_COLORSTYLE_GAMMA")
 
 static bool g_optimizeMapping[6][6] = 
 {
@@ -76,7 +94,7 @@ static QString g_optimizeOptionNames[6] =
 static bool stringVariantToBool(const QVariant &v)
 {
   QString s = v.toString().toLower();
-  return s==QString::fromAscii("yes") || s==QString::fromAscii("true") || s==QString::fromAscii("1");
+  return s==QString::fromLatin1("yes") || s==QString::fromLatin1("true") || s==QString::fromLatin1("1");
 } 
 
 static bool getBoolOption(
@@ -111,7 +129,7 @@ static void updateBoolOption(
   bool bOld = stringVariantToBool(option->value());
   if (bOld!=bNew)
   {
-    option->value()=QString::fromAscii(bNew ? "true" : "false");
+    option->value()=QString::fromLatin1(bNew ? "true" : "false");
     option->update();
   }
 }
@@ -124,7 +142,7 @@ static void updateIntOption(
   int iOld = option->value().toInt();
   if (iOld!=iNew)
   {
-    option->value()=QString::fromAscii("%1").arg(iNew);
+    option->value()=QString::fromLatin1("%1").arg(iNew);
     option->update();
   }
 }
@@ -148,7 +166,7 @@ TuneColorDialog::TuneColorDialog(int hue,int sat,int gamma,QWidget *parent) : QD
 {
    setWindowTitle(tr("Tune the color of the HTML output"));
    QGridLayout *layout = new QGridLayout(this);
-   m_image = new QImage(QString::fromAscii(":/images/tunecolor.png"));
+   m_image = new QImage(QString::fromLatin1(":/images/tunecolor.png"));
    m_imageLab = new QLabel;
    updateImage(hue,sat,gamma);
    layout->addWidget(new QLabel(tr("Example output: use the sliders on the right to adjust the color")),0,0);
@@ -519,7 +537,7 @@ Step1::Step1(Wizard *wizard,const QHash<QString,Input*> &modelData) : m_wizard(w
 
   m_recursive = new QCheckBox(this);
   m_recursive->setText(tr("Scan recursively"));
-  m_recursive->setChecked(TRUE);
+  m_recursive->setChecked(true);
   layout->addWidget(m_recursive);
 
   //---------------------------------------------------
@@ -574,7 +592,7 @@ void Step1::selectProjectIcon()
     QFile Fout(iconName);
     if(!Fout.exists()) 
     {
-      m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromAscii(");"));
+      m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromLatin1(");"));
     }
     else
     {
@@ -585,7 +603,7 @@ void Step1::selectProjectIcon()
       }
       else
       {
-        m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromAscii(");"));
+        m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromLatin1(");"));
       }
     }
   }
@@ -604,7 +622,7 @@ void Step1::selectSourceDir()
   }
   if (dirName.isEmpty())
   {
-    dirName=QString::fromAscii(".");
+    dirName=QString::fromLatin1(".");
   }
   m_sourceDir->setText(dirName);
 }
@@ -621,7 +639,7 @@ void Step1::selectDestinationDir()
   }
   if (dirName.isEmpty())
   {
-    dirName=QString::fromAscii(".");
+    dirName=QString::fromLatin1(".");
   }
   m_destDir->setText(dirName);
 }
@@ -683,7 +701,7 @@ void Step1::init()
     QFile Fout(iconName);
     if(!Fout.exists()) 
     {
-      m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromAscii(");"));
+      m_projIconLab->setText(tr("Sorry, cannot find file(")+iconName+QString::fromLatin1(");"));
     }
     else
     {
@@ -694,7 +712,7 @@ void Step1::init()
       }
       else
       {
-        m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromAscii(");"));
+        m_projIconLab->setText(tr("Sorry, no preview available (")+iconName+QString::fromLatin1(");"));
       }
     }
   }
@@ -1220,7 +1238,7 @@ Wizard::Wizard(const QHash<QString,Input*> &modelData, QWidget *parent) :
 {
   m_treeWidget = new QTreeWidget;
   m_treeWidget->setColumnCount(1);
-  m_treeWidget->setHeaderLabels(QStringList() << QString::fromAscii("Topics"));
+  m_treeWidget->setHeaderLabels(QStringList() << QString::fromLatin1("Topics"));
   QList<QTreeWidgetItem*> items;
   items.append(new QTreeWidgetItem((QTreeWidget*)0,QStringList(tr("Project"))));
   items.append(new QTreeWidgetItem((QTreeWidget*)0,QStringList(tr("Mode"))));
diff --git a/addon/doxywizard/wizard.h b/addon/doxywizard/wizard.h
index 4d5eb9d..11a42be 100644
--- a/addon/doxywizard/wizard.h
+++ b/addon/doxywizard/wizard.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/cmake/FindIconv.cmake b/cmake/FindIconv.cmake
new file mode 100644
index 0000000..d96e3c0
--- /dev/null
+++ b/cmake/FindIconv.cmake
@@ -0,0 +1,126 @@
+# vim:ts=4:sw=4:expandtab:autoindent:
+#
+# The MIT License
+#
+# Copyright (c) 2008, 2009 Flusspferd contributors (see "CONTRIBUTORS" or
+#                                      http://flusspferd.org/contributors.txt)
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+
+Include(CheckFunctionExists)
+include(CheckCXXSourceCompiles)
+
+if(ICONV_INCLUDE_DIR)
+  set(ICONV_FIND_QUIETLY TRUE)
+endif()
+
+find_path(ICONV_INCLUDE_DIR iconv.h
+    HINTS
+    ${CMAKE_PREFIX_PATH}
+    ${ICONV_DIR}
+    $ENV{ICONV_DIR}
+    PATH_SUFFIXES include
+)
+
+if(NOT ICONV_INCLUDE_DIR STREQUAL "ICONV_INCLUDE_DIR-NOTFOUND")
+    set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
+    check_function_exists(iconv_open ICONV_IN_GLIBC)
+endif()
+
+if(NOT ICONV_IN_GLIBC)
+    if (CMAKE_CL_64)
+        find_library(ICONV_LIBRARY
+            NAMES iconv64
+            HINTS
+            ${CMAKE_PREFIX_PATH}
+            ${ICONV_DIR}
+            $ENV{ICONV_DIR}
+            PATH_SUFFIXES lib64 lib
+            )
+    else()
+        find_library(ICONV_LIBRARY
+            NAMES iconv
+            HINTS
+            ${CMAKE_PREFIX_PATH}
+            ${ICONV_DIR}
+            $ENV{ICONV_DIR}
+            PATH_SUFFIXES lib64 lib
+            )
+    endif()
+    set(ICONV_TEST ${ICONV_LIBRARY})
+else()
+    set(ICONV_TEST "In glibc")
+endif()
+
+set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
+set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY})
+check_cxx_source_compiles(
+    "#include <iconv.h>
+     int main() {
+        iconv(iconv_t(-1), 0, 0, 0, 0);
+     }"
+    ICONV_COMPILES)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(ICONV DEFAULT_MSG ICONV_TEST ICONV_INCLUDE_DIR ICONV_COMPILES)
+
+if(ICONV_FOUND)
+  set(ICONV_LIBRARIES ${ICONV_LIBRARY})
+else(ICONV_FOUND)
+  set(ICONV_LIBRARIES)
+endif(ICONV_FOUND)
+
+if(ICONV_FOUND)
+    set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
+    set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
+
+    if (NOT DEFINED ICONV_ACCEPTS_NONCONST_INPUT)
+        # Display a useful message first time we come through here
+        message(STATUS "One (and only one) of the ICONV_ACCEPTS_... tests must pass")
+    endif()
+    check_cxx_source_compiles(
+        "#include <iconv.h>
+         int main() {
+            char *p = 0;
+            iconv(iconv_t(-1), &p, 0, 0, 0);
+         }"
+        ICONV_ACCEPTS_NONCONST_INPUT)
+
+    check_cxx_source_compiles(
+        "#include <iconv.h>
+         int main() {
+            char const *p = 0;
+            iconv(iconv_t(-1), &p, 0, 0, 0);
+         }"
+        ICONV_ACCEPTS_CONST_INPUT)
+
+    if (ICONV_LIBRARY)
+        list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY})
+        list(REMOVE_DUPLICATES CMAKE_REQUIRED_LIBRARIES)
+    endif()
+endif()
+
+if(NOT ICONV_ACCEPTS_CONST_INPUT AND NOT ICONV_ACCEPTS_NONCONST_INPUT)
+  MESSAGE(FATAL_ERROR "Unable to determine iconv() signature")
+elseif(ICONV_ACCEPTS_CONST_INPUT AND ICONV_ACCEPTS_NONCONST_INPUT)
+  MESSAGE(FATAL_ERROR "Unable to determine iconv() signature - both test cases passed!")
+endif()
+
+mark_as_advanced(ICONV_LIBRARY ICONV_INCLUDE_DIR)
diff --git a/cmake/FindLibClang.cmake b/cmake/FindLibClang.cmake
new file mode 100644
index 0000000..2835b1f
--- /dev/null
+++ b/cmake/FindLibClang.cmake
@@ -0,0 +1,51 @@
+if (NOT CLANG_ROOT)
+  set(CLANG_ROOT $ENV{CLANG_ROOT})
+endif ()
+
+if (NOT LLVM_CONFIG)
+  set(LLVM_CONFIG $ENV{LLVM_CONFIG})
+  if (NOT LLVM_CONFIG)
+    set(llvm_config_names llvm-config)
+    foreach(minor RANGE 9 1)
+      list(APPEND llvm_config_names "llvm-config3${minor}" "llvm-config-3.${minor}" "llvm-config-mp-3.${minor}")
+    endforeach ()
+    find_program(LLVM_CONFIG NAMES ${llvm_config_names})
+  endif ()
+endif ()
+
+if (LLVM_CONFIG)
+  message(STATUS "llvm-config found at: ${LLVM_CONFIG}")
+else ()
+  message(FATAL_ERROR "Could NOT find llvm-config executable.")
+endif ()
+
+if (NOT EXISTS ${CLANG_INCLUDEDIR})
+  execute_process(COMMAND ${LLVM_CONFIG} --includedir OUTPUT_VARIABLE CLANG_INCLUDEDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if (NOT EXISTS ${CLANG_INCLUDEDIR})
+    message(FATAL_ERROR "Could NOT find clang includedir. You can fix this by setting CLANG_INCLUDEDIR in your shell or as a cmake variable.")
+  endif ()
+endif ()
+
+if (NOT EXISTS ${CLANG_LIBDIR})
+  execute_process(COMMAND ${LLVM_CONFIG} --libdir OUTPUT_VARIABLE CLANG_LIBDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if (NOT EXISTS ${CLANG_LIBDIR})
+    message(FATAL_ERROR "Could NOT find clang libdir. You can fix this by setting CLANG_LIBDIR in your shell or as a cmake variable.")
+  endif ()
+endif ()
+
+if (NOT CLANG_LIBS)
+  find_library(CLANG_LIB_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT NAMES clang libclang ${CLANG_ROOT}/lib ${CLANG_LIBDIR} NO_DEFAULT_PATH)
+  if (NOT EXISTS ${CLANG_CLANG_LIB_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT})
+    find_library(CLANG_LIBS NAMES clang libclang)
+    if (NOT EXISTS ${CLANG_LIBS})
+      set (CLANG_LIBS "-L${CLANG_LIBDIR}" "-lclang" "-Wl,-rpath,${CLANG_LIBDIR}")
+    endif ()
+  else ()
+    set(CLANG_LIBS "${CLANG_LIB_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT}")
+  endif ()
+endif ()
+
+execute_process(COMMAND ${LLVM_CONFIG} --version OUTPUT_VARIABLE CLANG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+message("-- Using Clang ${CLANG_VERSION} from ${CLANG_LIBDIR} with LIBS ${CLANG_LIBS} and CXXFLAGS ${CLANG_CXXFLAGS}")
+
+
diff --git a/cmake/FindSQLite3.cmake b/cmake/FindSQLite3.cmake
new file mode 100644
index 0000000..77b8eb4
--- /dev/null
+++ b/cmake/FindSQLite3.cmake
@@ -0,0 +1,86 @@
+# - Try to find Sqlite3
+# Once done this will define
+#
+#  SQLITE3_FOUND - system has Sqlite3
+#  SQLITE3_INCLUDE_DIRS - the Sqlite3 include directory
+#  SQLITE3_LIBRARIES - Link these to use Sqlite3
+#  SQLITE3_DEFINITIONS - Compiler switches required for using Sqlite3
+#
+#  Copyright (c) 2008 Andreas Schneider <mail at cynapses.org>
+#
+#  Redistribution and use is allowed according to the terms of the New
+#  BSD license.
+#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+#
+
+
+if (SQLITE3_LIBRARIES AND SQLITE3_INCLUDE_DIRS)
+  # in cache already
+  set(SQLITE3_FOUND TRUE)
+else (SQLITE3_LIBRARIES AND SQLITE3_INCLUDE_DIRS)
+  # use pkg-config to get the directories and then use these values
+  # in the FIND_PATH() and FIND_LIBRARY() calls
+  if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
+    include(UsePkgConfig)
+    pkgconfig(sqlite3 _SQLITE3_INCLUDEDIR _SQLITE3_LIBDIR _SQLITE3_LDFLAGS _SQLITE3_CFLAGS)
+  else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
+    find_package(PkgConfig)
+    if (PKG_CONFIG_FOUND)
+      pkg_check_modules(_SQLITE3 sqlite3)
+    endif (PKG_CONFIG_FOUND)
+  endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
+  find_path(SQLITE3_INCLUDE_DIR
+    NAMES
+      sqlite3.h
+    PATHS
+      ${_SQLITE3_INCLUDEDIR}
+      /usr/include
+      /usr/local/include
+      /opt/local/include
+      /sw/include
+  )
+
+  find_library(SQLITE3_LIBRARY
+    NAMES
+      sqlite3
+    PATHS
+      ${_SQLITE3_LIBDIR}
+      /usr/lib
+      /usr/local/lib
+      /opt/local/lib
+      /sw/lib
+  )
+
+  if (SQLITE3_LIBRARY)
+    set(SQLITE3_FOUND TRUE)
+  endif (SQLITE3_LIBRARY)
+
+  set(SQLITE3_INCLUDE_DIRS
+    ${SQLITE3_INCLUDE_DIR}
+  )
+
+  if (SQLITE3_FOUND)
+    set(SQLITE3_LIBRARIES
+      ${SQLITE3_LIBRARIES}
+      ${SQLITE3_LIBRARY}
+    )
+  endif (SQLITE3_FOUND)
+
+  if (SQLITE3_INCLUDE_DIRS AND SQLITE3_LIBRARIES)
+     set(SQLITE3_FOUND TRUE)
+  endif (SQLITE3_INCLUDE_DIRS AND SQLITE3_LIBRARIES)
+
+  if (SQLITE3_FOUND)
+    if (NOT Sqlite3_FIND_QUIETLY)
+      message(STATUS "Found Sqlite3: ${SQLITE3_LIBRARIES}")
+    endif (NOT Sqlite3_FIND_QUIETLY)
+  else (SQLITE3_FOUND)
+    if (Sqlite3_FIND_REQUIRED)
+      message(FATAL_ERROR "Could not find Sqlite3")
+    endif (Sqlite3_FIND_REQUIRED)
+  endif (SQLITE3_FOUND)
+
+  # show the SQLITE3_INCLUDE_DIRS and SQLITE3_LIBRARIES variables only in the advanced view
+  mark_as_advanced(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES)
+
+endif (SQLITE3_LIBRARIES AND SQLITE3_INCLUDE_DIRS)
diff --git a/cmake/FindXapian.cmake b/cmake/FindXapian.cmake
new file mode 100644
index 0000000..6109d7f
--- /dev/null
+++ b/cmake/FindXapian.cmake
@@ -0,0 +1,42 @@
+# Find Xapian search engine library
+#
+#  XAPIAN_FOUND - system has Xapian
+#  XAPIAN_INCLUDE_DIR - the Xapian include directory
+#  XAPIAN_LIBRARIES - the libraries needed to use Xapian
+#
+# Copyright © 2010 Harald Sitter <apachelogger at ubuntu.com>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+if(XAPIAN_INCLUDE_DIR AND XAPIAN_LIBRARIES)
+    # Already in cache, be silent
+    set(Xapian_FIND_QUIETLY TRUE)
+endif(XAPIAN_INCLUDE_DIR AND XAPIAN_LIBRARIES)
+
+FIND_PATH(XAPIAN_INCLUDE_DIR xapian/version.h)
+
+FIND_LIBRARY(XAPIAN_LIBRARIES NAMES xapian)
+
+IF(XAPIAN_INCLUDE_DIR AND XAPIAN_LIBRARIES)
+   SET(XAPIAN_FOUND TRUE)
+ELSE(XAPIAN_INCLUDE_DIR AND XAPIAN_LIBRARIES)
+   SET(XAPIAN_FOUND FALSE)
+ENDIF(XAPIAN_INCLUDE_DIR AND XAPIAN_LIBRARIES)
+
+IF(XAPIAN_FOUND)
+   IF(NOT Xapian_FIND_QUIETLY)
+      MESSAGE(STATUS "Found Xapian: ${XAPIAN_LIBRARIES}")
+   ENDIF(NOT Xapian_FIND_QUIETLY)
+ELSE(XAPIAN_FOUND)
+   IF(Xapian_FIND_REQUIRED)
+      MESSAGE(FATAL_ERROR "Could not find Xapian")
+   ENDIF(Xapian_FIND_REQUIRED)
+   IF(NOT Xapian_FIND_QUIETLY)
+      MESSAGE(STATUS "Could not find Xapian")
+   ENDIF(NOT Xapian_FIND_QUIETLY)
+ENDIF(XAPIAN_FOUND)
+
+# show the XAPIAN_INCLUDE_DIR and XAPIAN_LIBRARIES variables only in the advanced view
+MARK_AS_ADVANCED(XAPIAN_INCLUDE_DIR XAPIAN_LIBRARIES)
+
diff --git a/cmake/lang_cfg.cmake b/cmake/lang_cfg.cmake
new file mode 100644
index 0000000..c57d3ed
--- /dev/null
+++ b/cmake/lang_cfg.cmake
@@ -0,0 +1,11 @@
+if(${CMAKE_ARGC} GREATER 1)
+	if ("${CMAKE_ARGV3}" STREQUAL "ENONLY")
+		message("#define ENGLISH_ONLY")
+	else()
+		math(EXPR UPTO ${CMAKE_ARGC}-1)
+		foreach(i RANGE 3 ${UPTO})
+			message("#define LANG_${CMAKE_ARGV${i}}")
+		endforeach()
+	endif()
+endif()
+
diff --git a/cmake/packaging.cmake b/cmake/packaging.cmake
new file mode 100644
index 0000000..0798b83
--- /dev/null
+++ b/cmake/packaging.cmake
@@ -0,0 +1,112 @@
+##### set CPack properties #####
+#
+# Good doc/tutorial/example:
+# - http://www.cmake.org/Wiki/CMake:CPackPackageGenerators
+# - http://www.cmake.org/cmake/help/v3.3/module/CPack.html
+# - http://sourceforge.net/p/klusters/klusters/ci/master/tree/CMakeLists.txt
+#
+# This cmake script should generate same packages (deb,rpm) as:
+# - http://mirror.debian.ikoula.com/debian/pool/main/d/doxygen
+# - http://archive.ubuntu.com/ubuntu/pool/main/d/doxygen (http://old-releases.ubuntu.com/ubuntu/pool/main/d/doxygen)
+# - http://rpmfind.net/linux/rpm2html/search.php?query=doxygen
+
+set(CPACK_STRIP_FILES      ON)
+set(CPACK_PACKAGE_NAME     ${PROJECT_NAME} )
+set(CPACK_PACKAGE_VERSION  ${VERSION})
+set(CPACK_PACKAGE_CONTACT  "Dimitri van Heesch")
+set(CPACK_PACKAGE_VENDOR   "Dimitri van Heesch")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Generate documentation from C, C++, Java, Python and other languages")
+set(CPACK_PACKAGE_DESCRIPTION "Doxygen is the de facto standard tool for generating documentation from annotated C++ sources.
+ But many other popular programming languages are supported:
+ C, Objective-C, C#, PHP, Java, Python, Fortran, VHDL, Tcl, D (some extent) and IDL (Corba, Microsoft, and UNO/OpenOffice flavors).
+ .
+ Three usages:
+ .
+    1. Generate documentation from annotated source files to various format:
+       - On-line documentation (HTML)
+       - Off-line reference manual (LaTeX, RTF, PostScript, hyperlinked PDF, compressed HTML, Unix man pages)
+ .
+    2. Extract the code structure from undocumented source files.
+       Also generate include dependency graphs, inheritance diagrams, and collaboration diagrams.
+       Useful to quickly understand code organization in large source distributions.
+ .
+    3. Create normal documentation (as the doxygen user manual and web-site http://doxygen.org/)
+ .
+ Install the doxygen-latex package to build LaTeX based documents.
+ Install the libclang1 package to use the 'clang assisted parsing'.")
+
+set(CPACK_RESOURCE_FILE_LICENSE     ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
+set(CPACK_RESOURCE_FILE_README      ${CMAKE_CURRENT_SOURCE_DIR}/README.md)
+
+# Variables specific to CPack RPM generator
+set(CPACK_RPM_PACKAGE_DESCRIPTION   ${CPACK_PACKAGE_DESCRIPTION})
+set(CPACK_RPM_PACKAGE_LICENSE       "GPLv2")
+set(CPACK_RPM_PACKAGE_GROUP         "Development/Tools")
+set(CPACK_RPM_PACKAGE_URL           "http://doxygen.org/")
+set(CPACK_RPM_PACKAGE_REQUIRES      "/sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96")
+set(CPACK_RPM_PACKAGE_SUGGESTS      "doxygen-latex, doxygen-doc, doxygen-gui, graphviz, libclang1")
+
+# Variables specific to CPack DEB generator
+set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
+set(CPACK_DEBIAN_PACKAGE_SECTION     "devel")
+set(CPACK_DEBIAN_PACKAGE_HOMEPAGE    "http://doxygen.org/")
+set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS   YES) #set(CPACK_DEBIAN_PACKAGE_DEPENDS    "libc6, libclang1-3.6, libgcc1, libsqlite3-0, libstdc++6, libxapian22")
+set(CPACK_DEBIAN_PACKAGE_SUGGESTS    "doxygen-latex, doxygen-doc, doxygen-gui, graphviz, libclang1")
+set(CPACK_DEBIAN_PACKAGE_CONFLICTS   "graphviz (<< 1.12)")
+set(CPACK_DEBIAN_PACKAGE_MAINTAINER  "Matthias Klose <doko at debian.org>")  # Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
+
+# Variables specific to CPack NSIS generator
+set(CPACK_NSIS_MUI_ICON         ${CMAKE_CURRENT_SOURCE_DIR}/addon/doxywizard/doxywizard.ico)
+set(CPACK_NSIS_URL_INFO_ABOUT   "http://doxygen.org/")
+set(CPACK_NSIS_PACKAGE_NAME     ${PROJECT_NAME})
+
+# Variables specific to CPack DragNDrop generator
+set(CPACK_DMG_FORMAT            "UDBZ")         # UDRO=UDIF-Read-Only, UDZO=zlib, UDBZ=bzip2 -- See hdiutil
+set(CPACK_DMG_VOLUME_NAME       ${PROJECT_NAME})
+set(CPACK_DMG_BACKGROUND_IMAGE  ${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen_logo.eps)
+
+if(WIN32)
+    set(CPACK_GENERATOR "ZIP;NSIS")
+
+elseif(APPLE)
+    set(CPACK_GENERATOR       "ZIP;DragNDrop;PackageMaker;Bundle" )
+    set(CPACK_SYSTEM_NAME     "OSX" )
+
+elseif(UNIX)
+    # Determine distribution and release
+    execute_process(COMMAND lsb_release -si OUTPUT_VARIABLE distribution                   OUTPUT_STRIP_TRAILING_WHITESPACE)
+    execute_process(COMMAND lsb_release -sc OUTPUT_VARIABLE release                        OUTPUT_STRIP_TRAILING_WHITESPACE)
+    #xecute_process(COMMAND uname -i        OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
+    execute_process(COMMAND uname -m        OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    if(distribution STREQUAL "Debian" OR distribution STREQUAL "Ubuntu")
+      set(CPACK_GENERATOR "DEB")
+      execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
+      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE})
+
+    elseif(distribution MATCHES "RedHat.*")
+      # extract the major version from RedHat full version (e.g. 6.7 --> 6)
+      execute_process(COMMAND lsb_release -sr COMMAND sed s/[.].*//  OUTPUT_VARIABLE redhat_version_major OUTPUT_STRIP_TRAILING_WHITESPACE)
+      set(CPACK_GENERATOR "RPM")
+      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.el${redhat_version_major}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
+
+    elseif(distribution MATCHES "openSUSE.*")
+      set(CPACK_GENERATOR "RPM")
+      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
+
+    elseif(distribution STREQUAL "Fedora")
+      set(CPACK_GENERATOR "RPM")
+      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.fc${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
+
+    elseif(distribution STREQUAL "Scientific")
+      set(CPACK_GENERATOR "RPM")
+      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
+
+    else()
+      set(CPACK_GENERATOR "RPM;TGZ;STGZ")
+      set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${release}.${CPACK_RPM_PACKAGE_ARCHITECTURE})
+    endif()
+
+else()
+    # other operating system (not Windows/Apple/Unix)
+endif()
diff --git a/cmake/version.cmake b/cmake/version.cmake
new file mode 100644
index 0000000..b59aa29
--- /dev/null
+++ b/cmake/version.cmake
@@ -0,0 +1,2 @@
+file (STRINGS "${TOP}/VERSION" VERSION)
+set(ENV{VERSION} "${VERSION}")
diff --git a/configure b/configure
deleted file mode 100755
index 544d06a..0000000
--- a/configure
+++ /dev/null
@@ -1,993 +0,0 @@
-#!/bin/sh
-#
-# $Id$
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-# 
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-# 
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-# 
-# shell script to configure doxygen
-
-doxygen_version_major=1
-doxygen_version_minor=8
-doxygen_version_revision=9.1
-
-#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
-doxygen_version_mmn=NO
-
-bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
-
-f_debug=NO
-f_shared=YES
-f_make=NO
-f_dot=NO
-f_perl=NO
-f_python=NO
-f_plf_auto=NO
-f_prefix=/usr/local
-f_insttool=NO
-f_english=NO
-f_wizard=NO
-f_app=NO
-f_doxmlparser=NO
-f_thread=NO
-f_flex=NO
-f_bison=NO
-f_search=NO
-f_sqlite3=NO
-f_sqlite3static=NO
-f_sqlite3_path=NO
-f_libclang=NO
-f_libclangstatic=NO
-
-#
-# first setup the list with availabe languages, so we cannot forget any
-# list will be in case as specified (f_langs) and in uppercase (f_ulangs) as used in the internal perl script
-#
-f_langs=`ls -1 src/translator_??.h | sed -e 's%src/translator_%%g' | sed -e 's/\.h//' | tr '\012' ','`
-
-while test -n "$1";  do
-  case $1 in
-    --prefix=*)
-       f_prefix=`echo $1 | sed 's/^--prefix=//'`
-       ;;
-    --prefix | -prefix)
-       shift; f_prefix=$1
-       ;;
-    --docdir=*)
-       f_docdir=`echo $1 | sed 's/^--docdir=//'`
-       ;;
-    --docdir | -docdir)
-       shift; f_docdir=$1
-       ;;
-    --shared | -shared)
-       f_shared=YES
-       ;;
-    --static | -static)
-       f_shared=NO
-       ;;
-    --release | -release)
-       f_debug=NO
-       ;;
-    --debug | -debug)
-       f_debug=YES
-       ;;
-    --english-only | -english-only)
-       f_english=YES
-       ;;
-    --enable-langs=*)
-       f_langs=`echo $1 | sed 's/^--enable-langs=//'`
-       ;;
-    --enable-langs | -enable-langs)
-       shift; f_langs=$1
-       ;;
-    --platform=*)
-       f_platform=`echo $1 | sed 's/^--platform=//'`
-       ;;
-    --platform | -platform)
-       shift; f_platform=$1
-       ;;
-    --make=*)
-       f_make=`echo $1 | sed 's/^--make=//'`
-       ;;
-    --make | -make)
-       shift; f_make=$1
-       ;;
-    --dot=*)
-       f_dot=`echo $1 | sed 's/^--dot=//'`
-       ;;
-    --dot | -dot)
-       shift; f_dot=$1
-       ;;
-    --python=*)
-       f_python=`echo $1 | sed 's/^--python=//'`
-       ;;
-    --python | -python)
-       shift; f_python=$1
-       ;;
-    --perl=*)
-       f_perl=`echo $1 | sed 's/^--perl=//'`
-       ;;
-    --perl | -perl)
-       shift; f_perl=$1
-       ;;
-    --flex=*)
-       f_flex=`echo $1 | sed 's/^--flex=//'`
-       ;;
-    --flex | -flex)
-       shift; f_flex=$1
-       ;;
-    --bison=*)
-       f_bison=`echo $1 | sed 's/^--bison=//'`
-       ;;
-    --bison | -bison)
-       shift; f_bison=$1
-       ;;
-    --install=*)
-       f_insttool=`echo $1 | sed 's/^--install=//'`
-       ;;
-    --install | -install)
-       shift; f_insttool=$1
-       ;;
-    --with-doxywizard | -with-doxywizard)
-       f_wizard=YES
-       ;;
-    --with-doxyapp | -with-doxyapp)
-       f_app=YES
-       ;;
-    --with-doxmlparser | -with-doxmlparser)
-       f_doxmlparser=YES
-       ;;
-    --with-doxysearch | -with-doxysearch)
-       f_search=YES
-       ;;
-    --with-sqlite3 | -with-sqlite3)
-       f_sqlite3=YES
-       ;;
-    --with-sqlite3-static | -with-sqlite3-static)
-       f_sqlite3=YES
-       f_sqlite3static=YES
-       ;;
-    --sqlite3-path=*)
-       f_sqlite3_path=`echo $1 | sed 's/^--sqlite3-path=//'`
-       ;;
-    --sqlite3-path | -sqlite3-path)
-       shift; f_sqlite3_path=$1
-       ;;
-    --with-libclang | -with-libclang)
-       f_libclang=YES
-       ;;
-    --with-libclang-static | -with-libclang-static)
-       f_libclang=YES
-       f_libclangstatic=YES
-       ;;
-    -h | -help | --help)
-       f_help=y
-       ;;
-    *)
-       echo $1: unknown argument
-       f_help=y
-       f_error=y
-       ;;
-  esac
-  shift
-done
-
-if test "$f_help" = y; then
-  cat <<EOF
-Usage: $0 [--help] [--shared] [--static] [--release] [--debug] [--python name]
-          [--perl name] [--flex name] [--bison name] [--make name] 
-          [--dot name] [--platform target] [--prefix dir] [--docdir dir] 
-          [--install name] [--english-only] [--enable-langs list] 
-          [--with-sqlite3] [--with-sqlite3-static] [--sqlite3-path]
-          [--with-libclang] [--with-libclang-static]
-          [--with-doxywizard] [--with-doxysearch] [--with-doxyapp]
-          [--with-doxxmlparser]
-
-Options: 
-
-  --help                Print this help
-  --shared | --static   Build using shared or static linking
-		        [default: shared]
-  --release | --debug   Build for release or debug 
-		        [default: release]
-  --python name         Use \`name' as the name of the python interpreter 
-		        [default: autodetect]
-  --perl name           Use \`name' as the name of the perl interpreter 
-		        [default: autodetect]
-  --flex name           Use \`name' as the name of the GNU lexical scanner 
-		        [default: autodetect]
-  --bison name          Use \`name' as the name of the GNU compiler generator 
-		        [default: autodetect]
-  --make name           Use \`name' as the name of the GNU make tool
-		        [default: autodetect]
-  --dot name            Use \`name' as the name of the dot tool that
-                        is part of the Graphviz package.
-                        [default: autodetect]
-  --platform target     Do not detect platform but use \`target' instead.
-                        See PLATFORMS for a list of possibilities
-  --prefix dir          Installation prefix directory (doxygen will be
-                        put in PREFIX/bin/doxygen)
-                        [default: $f_prefix]
-  --docdir dir          Documentation is installed in DOCDIR/
-                        [default: PREFIX/share/doc/packages/doxygen]
-  --install name        Use \`name' as the name of the GNU install tool
-                        [default: autodetect]
-  --english-only        Include support for English only.
-  --enable-langs list 	Include support for output languages listed in list.
-  			[default: $f_langs]
-  --with-sqlite3        Add support for sqlite3 output [experimental]
-  --with-libclang       Add support for libclang parsing
-  --with-doxywizard     Build the GUI frontend for doxygen. This
-                        requires Qt version 4.
-  --with-doxysearch     Build external search tools (doxysearch and doxyindexer)
-                        requires Xapian library version 1.2
-  --with-doxyapp        Example showing how to embed doxygen in an application.
-  --with-doxmlparser    Example showing how to parse doxygen's XML output.
-
-EOF
-  test "$f_error" = y && exit 1
-  exit 0;
-fi
-
-u_release=`(uname -r) 2>/dev/null` || u_release=unknown
-u_system=`(uname -s) 2>/dev/null` || u_system=unknown
-
-if test -z "$f_platform"; then
-  f_platforms="`cat PLATFORMS`"
-  
-  case "$u_system:$u_release" in
-    AIX*)
-      f_platform=aix-xlc
-      ;;
-    BeOS*)
-      f_platform=beos-g++
-      ;;
-    dgux:*)
-      f_platform=dgux-g++
-      ;;
-    Darwin:*)
-      f_platform=macosx-c++
-      if test "$f_insttool" = NO; then
-        f_insttool=/usr/bin/install
-      fi
-      ;;
-    FreeBSD:*)
-      f_platform=freebsd-g++
-      if test "$f_insttool" = NO; then
-        f_insttool=/usr/bin/install
-      fi
-      ;;
-    NetBSD:*)
-      f_platform=netbsd-g++
-      if test "$f_insttool" = NO; then
-        f_insttool=/usr/bin/install
-      fi
-      ;;
-    HP-UX:*)
-      f_platform=hpux-g++
-      if test "$f_insttool" = NO; then
-        f_insttool=/usr/bin/install
-      fi
-      ;;
-    IRIX64:*)
-      f_platform=irix-64
-      ;;
-    IRIX:*)
-      f_platform=irix-n32
-      ;;
-    Linux:*|GNU:*|GNU/*:*)
-      f_platform=linux-g++
-      ;;
-    NetBSD:*)
-      f_platform=netbsd-g++
-      ;;
-    OpenBSD:*)
-      f_platform=openbsd-g++
-      ;;
-    OSF1:*)
-      f_platform=osf1-g++
-      ;;
-    QNX:*)
-      f_platform=qnx-g++
-      ;;
-    *:3.2)
-      f_platform=sco-g++
-      ;;
-    SunOS:4*)
-      f_platform=sunos-g++
-      ;;
-    SunOS:5*)
-      f_platform=solaris-g++
-      if test "$f_insttool" = NO; then
-        f_insttool=/usr/bin/install
-      fi
-      ;;
-    ULTRIX:*)
-      f_platform=ultrix-g++
-      ;;
-    UNIX_SV:4.2*)
-      f_platform=unixware-g++
-      ;;
-    Cygwin:*|CYGWIN*)
-      f_platform=win32-g++
-      ;;
-    MINGW32_NT*)
-      f_platform=win32-mingw
-      ;;
-    *MiNT:*)
-      f_platform=m68k-atari-mint-g++
-      ;;
-    *)
-    echo
-    echo "Your platform was not recognised by this configure script"
-    echo "Please use the -platform option to specify one of platforms"
-    echo "in this list:"
-    echo
-    for p in $f_platforms
-    do
-      echo "    $0 $* -platform $p"
-    done
-    echo
-    exit 2
-  esac 
-  echo "  Autodetected platform $f_platform... "
-  f_plf_auto=YES
-fi
-
-if test -z "$f_docdir"; then
-  f_docdir='$(INSTALL)/share/doc/packages/doxygen'
-fi
-
-if test "$f_plf_auto" = NO; then
-  printf "  Checking for platform $f_platform... "
-  if test '!' -d tmake/lib/$f_platform; then
-    echo "not supported!" 
-    echo
-    exit 2
-  fi
-  echo "supported"
-fi
-
-#- check for qt --------------------------------------------------------------
- 
-if test "$f_wizard" = YES; then
-  if test -z "$QTDIR"; then
-    echo "  QTDIR environment variable not set!"
-    printf "  Checking for Qt..."
-    for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do
-      if test -x "$d/bin/qmake"; then
-        QTDIR=$d
-        break 2
-      fi
-    done
-  else
-    if test -e "$QTDIR/bin/qmake"; then
-      printf "  Detected Qt via the QTDIR environment variable..."
-    else
-      printf "ERROR Detected Qt via the QTDIR environment variable..."
-      echo ", but $QTDIR/bin/qmake does not exist."
-      echo "      Set the QTDIR environment variable such that \$QTDIR/bin/qmake exists."
-      exit 2
-    fi
-  fi
-  if test -z "$QTDIR"; then
-    echo "QTDIR not set and Qt not found at standard locations!"
-    echo
-    echo "Set the QTDIR environment variable such that \$QTDIR/bin/qmake exists."
-    echo "check the Qt installation instructions!"
-    exit 2
-  fi
-  echo using $QTDIR
-fi
-
-#- check for xapian -----------------------------------------------------------
-
-if test "$f_search" = YES; then
-  if test -z "$XAPIAN"; then
-    printf "  Checking for Xapian..."
-    for d in /usr /usr/local /opt/local; do
-      if test -e "$d/include/xapian.h"; then
-        XAPIAN=$d
-        break 2
-      fi
-    done
-  else
-    if test -e "$XAPIAN/include/xapian.h"; then
-      printf "  Detected Xapian via the XAPIAN environment variable..."
-    else
-      printf "ERROR Detected Xapian via the XAPIAN environment variable..."
-      echo ", but $XAPIAN/include/xapian.h does not exist."
-      echo "      Set the XAPIAN environment variable such that \$XAPIAN/include/xapian.h exists."
-      exit 2
-    fi
-  fi
-  if test -z "$XAPIAN"; then
-    echo "XAPIAN not set and xapian.h not found at standard locations!"
-    exit 2;
-  fi
-  echo using $XAPIAN
-fi
-   
-# - check for make ------------------------------------------------------------
-
-printf "  Checking for GNU make tool... "
-if test "$f_make" = NO; then
-  make_names="gmake make"
-  make_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin"
-  make_prog=NO
-  for i in $make_names; do
-    for j in $make_dirs; do
-      if test -x "$j/$i"; then
-        if test -n "`$j/$i --version 2>/dev/null | grep GNU`"; then
-          make_prog="$j/$i"
-          break 2
-        fi
-      fi
-    done
-  done
-  f_make="$make_prog" 
-fi
-
-if test "$f_make" = NO; then
-  echo "not found!";
-  echo
-  exit 2
-fi
-echo "using $f_make"
-
-# - check for install ------------------------------------------------------------
-
-printf "  Checking for GNU install tool... "
-if test "$f_insttool" = NO; then
-  install_names="ginstall install"
-  install_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin /usr/ucb"
-  install_prog=NO
-  install_found=NO
-  for i in $install_names; do
-    for j in $install_dirs; do
-      if test -x "$j/$i"; then
-        if test -n "`$j/$i --version 2>/dev/null | grep utils`"; then
-          install_found=YES
-          install_prog="$j/$i"
-          break 2
-        fi
-      fi
-    done
-  done
-  f_insttool="$install_prog" 
-fi
-
-if test "$f_insttool" = NO; then
-  if test "$install_found" = YES; then
-    echo;
-  else
-    echo "not found!";
-    echo
-  fi
-  echo "GNU version of install is required: this is part of the fileutils/coreutils package: "
-  echo "see http://www.gnu.org/software/fileutils/fileutils.html"
-  echo
-  exit 2
-fi
-echo "using $f_insttool";
-
-
-# - check for dot ------------------------------------------------------------
-
-printf "  Checking for dot (part of GraphViz)... "
-if test "$f_dot" = NO; then
-  dot_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin"
-  dot_prog=NO
-  for j in $dot_dirs; do
-    if test -x "$j/dot"; then
-      dot_prog="$j/dot"
-      break 2
-    fi
-  done
-  f_dot="$dot_prog" 
-fi
-
-if test "$f_dot" = NO; then
-  echo "not found!";
-else
-  echo "using $f_dot"
-fi
-
-# - check for sqlite3 ---------------------------------------------------------
-
-if test "$f_sqlite3" = YES; then
-  printf "  Checking for sqlite3 ... "
-  if test "$f_sqlite3_path" = NO; then
-    sqlite3_hdr_dir="/usr/include /usr/local/include /opt/local/include"
-    sqlite3_lib_dir="/usr/lib /usr/local/lib /opt/local/lib /usr/lib/x86_64-linux-gnu /usr/lib64"
-  else
-    sqlite3_hdr_dir="$f_sqlite3_path/include"
-    sqlite3_lib_dir="$f_sqlite3_path/lib"
-  fi
-  if test "$f_sqlite3static" = NO; then
-    sqlite3_lib_name="libsqlite3.so libsqlite3.dylib libsqlite3.a libsqlite3.dll.a"
-  else
-    sqlite3_lib_name="libsqlite3.a"
-  fi
-  sqlite3_hdr=NO
-  sqlite3_lib=NO
-  sqlite3_link=
-  for j in $sqlite3_hdr_dir; do
-    if test -f "$j/sqlite3.h"; then
-      sqlite3_hdr="$j/sqlite3.h"
-      break
-    fi
-  done
-  for i in $sqlite3_lib_dir; do
-    if test "$sqlite3_lib" = NO; then
-      for j in $sqlite3_lib_name; do
-        if test -e "$i/$j"; then
-          if test "$f_sqlite3static" = NO; then
-            sqlite3_lib="$i/$j"
-            sqlite3_link="-L$i -lsqlite3"
-          else
-            sqlite3_lib="$i/$j"
-            sqlite3_link="$i/$j -ldl"
-          fi
-          break
-        fi
-      done
-    fi
-  done
-  if test "$sqlite3_hdr" = NO -o "$sqlite3_lib" = NO; then
-    echo "not found!";
-    exit 1
-  else
-    echo "using header $sqlite3_hdr and library $sqlite3_lib...";
-  fi
-fi
-
-# - check for libclang ---------------------------------------------------------
-
-if test "$f_libclang" = YES; then
-  printf "  Checking for libclang ... "
-  if llvm-config --version > /dev/null 2>&1; then
-    libclang_hdr_dir=`llvm-config --includedir`
-    libclang_lib_dir=`llvm-config --libdir`
-  else
-    libclang_hdr_dir="/usr/include /usr/local/include /opt/local/include"
-    libclang_lib_dir="/usr/lib /usr/local/lib /opt/local/lib /usr/lib64/llvm /usr/lib/llvm"
-  fi
-  if test "$f_libclangstatic" = NO; then
-    libclang_lib_name="libclang.so libclang.dylib libclang.a libclang.dll.a"
-  else
-    libclang_lib_name="libclang.a"
-  fi
-  libclang_hdr=NO
-  libclang_lib=NO
-  libclang_link=
-  for j in $libclang_hdr_dir; do
-    if test -f "$j/clang-c/Index.h"; then
-      libclang_hdr="$j/clang-c/Index.h"
-      break
-    fi
-  done
-  for i in $libclang_lib_dir; do
-    if test "$libclang_lib" = NO; then
-      for j in $libclang_lib_name; do
-        if test -f "$i/$j"; then
-          libclang_lib="$i/$j"
-          if test "$f_libclangstatic" = NO; then
-            libclang_link="-L $i -lclang"
-          else
-            libclang_link="$i/libclang.a $i/libclangFrontend.a $i/libclangSerialization.a $i/libclangParse.a $i/libclangSema.a $i/libclangAnalysis.a $i/libclangStaticAnalyzerCore.a $i/libclangAST.a $i/libclangBasic.a $i/libclangDriver.a $i/libclangEdit.a $i/libclangLex.a $i/libclangRewriteCore.a $i/libLLVMBitReader.a $i/libLLVMMC.a $i/libLLVMMCParser.a $i/libLLVMSupport.a -ldl -lpthread"
-          fi
-          break
-        fi
-      done
-    fi
-  done
-  if test "$libclang_hdr" = NO -o "$libclang_lib" = NO; then
-    echo "not found!";
-  else
-    echo "using header $libclang_hdr and library $libclang_lib...";
-  fi
-fi
-
-# - check for python ----------------------------------------------------------
-
-python_version=0
-printf "  Checking for python... "
-if test "$f_python" = NO; then
-  python_names="python3 python2 python"
-  python_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin"
-  python_prog=NO
-  python_found=NO
-  for i in $python_names; do
-    for j in $python_dirs; do
-      if test -x "$j/$i"; then
-        python_found=YES
-        if test `$j/$i -c "import sys; print(sys.version_info[0])"` = 3; then
-          python_prog="$j/$i";
-          python_version=`$j/$i -c "import platform; print(platform.python_version())"`;
-          break 2
-        elif test `$j/$i -c "import sys; print(sys.version_info[0])"` = 2; then
-          if test `$j/$i -c "import sys; print(sys.version_info[1])"` -ge 6; then
-            python_prog="$j/$i";
-            python_version=`$j/$i -c "import platform; print(platform.python_version())"`;
-            break 2
-          fi
-        fi
-      fi
-    done
-  done
-  f_python="$python_prog"
-fi
-
-if test "$f_python" = NO; then
-  if test "$python_found" = YES; then
-    echo "version should be python 2.6 or higher."
-  else
-    echo "not found!";
-  fi
-  echo
-  exit 2
-fi
-echo "using $f_python (version $python_version)";
-
-# - check for perl ------------------------------------------------------------
-
-printf "  Checking for perl... "
-if test "$f_perl" = NO; then
-  perl_names="perl perl5"
-  perl_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin"
-  perl_prog=NO
-  perl_found=NO
-  for i in $perl_names; do
-    for j in $perl_dirs; do
-      if test -x "$j/$i"; then
-        perl_found=YES
-        if $j/$i -e 'require 5.000;' 2>/dev/null ; then
-          perl_prog="$j/$i"
-          break 2
-        fi
-      fi
-    done
-  done
-  f_perl="$perl_prog" 
-fi
-
-if test "$f_perl" = NO; then
-  if test "$perl_found" = YES; then
-    echo "version is too old (5.000 or higher is required)."
-  else
-    echo "not found!";
-  fi
-  echo
-  exit 2
-fi
-echo "using $f_perl";
-
-# - check for flex ------------------------------------------------------------
-
-printf "  Checking for flex... "
-if test "$f_flex" = NO; then
-  flex_dirs="$bin_dirs /usr/bin /usr/local/bin /bin"
-  flex_prog=NO
-  flex_found=NO
-  for j in $flex_dirs; do
-    if test -x "$j/flex"; then
-      flex_found=YES
-      flex_prog="$j/flex"
-      break
-    fi
-  done
-  f_flex="$flex_prog" 
-fi
-
-if test "$f_flex" = NO; then
-  echo "not found!";
-  exit 2
-else
-  echo "using $f_flex"
-fi
-
-# - check for bison ------------------------------------------------------------
-
-printf "  Checking for bison... "
-if test "$f_bison" = NO; then
-  bison_dirs="$bin_dirs /usr/bin /usr/local/bin /bin"
-  bison_prog=NO
-  bison_found=NO
-  for j in $bison_dirs; do
-    if test -x "$j/bison"; then
-      bison_found=YES
-      bison_prog="$j/bison"
-      break
-    fi
-  done
-  f_bison="$bison_prog" 
-fi
-
-if test "$f_bison" = NO; then
-  echo "not found!";
-  exit 2
-else
-  echo "using $f_bison"
-fi
-
-# -----------------------------------------------------------------------------
-
-if test '!' -d "generated_src/doxygen"; then
-  mkdir -p generated_src/doxygen
-fi
-if test "$f_wizard" = YES; then
-  if test '!' -d "generated_src/doxywizard"; then
-    mkdir -p generated_src/doxywizard
-  fi
-fi
-
-#
-# Make VERSION file
-#
-test -f "VERSION" && chmod u+w VERSION
-test -f "generated_src/doxygen/version.cpp" && chmod u+w generated_src/doxygen/version.cpp
-echo "  Generating generated_src/doxygen/version.cpp and VERSION..."
-cd src
-$f_python version.py ../generated_src/doxygen
-cd ..
-if test "$f_wizard" = YES; then
-  test -f "VERSION" && chmod u+w VERSION
-  test -f "generated_src/doxywizard/version.cpp" && chmod u+w generated_src/doxywizard/version.cpp
-  echo "  Generating generated_src/doxywizard/version.cpp and VERSION..."
-  cd src
-  $f_python version.py ../generated_src/doxywizard
-  cd ..
-
-fi
-
-test -f .makeconfig && rm .makeconfig
-test -f .tmakeconfig && rm .tmakeconfig
-
-configPWD=`pwd`
-
-cat > .makeconfig <<EOF
-DOXYGEN   = $configPWD
-TMAKEPATH = $configPWD/tmake/lib/$f_platform
-ENV       = env TMAKEPATH="\$(TMAKEPATH)"
-TMAKE     = $configPWD/tmake/bin/tmake
-MAKE      = $f_make
-PYTHON    = $f_python
-PERL      = $f_perl
-LEX       = $f_flex
-RM        = rm -f
-CP        = cp
-VERSION   = `cat VERSION`
-INSTALL   = $f_prefix
-INSTTOOL  = $f_insttool
-DOXYDOCS  = ..
-DOCDIR    = $f_docdir
-QTDIR     = $QTDIR
-EOF
-
-if test "$f_dot" != NO; then
-  cat >> .makeconfig <<EOF
-HAVE_DOT  = $f_dot
-EOF
-fi
-
-
-if test "$f_platform" = "m68k-atari-mint-g++"; then
-  cat >> .makeconfig <<EOF
-TMAKE += -unix
-EOF
-fi
-
-if test "$f_platform" = "macosx-c++"; then
-  cat >> .makeconfig <<EOF
-MKSPECS   = -spec macx-g++
-EOF
-fi
-if test "$f_platform" = "macosx-uni-c++"; then
-  cat >> .makeconfig <<EOF
-MKSPECS   = -spec macx-g++
-EOF
-fi
-
-# Make doxygen.spec...
-#
-echo "  Created doxygen.spec file, for rpm generation."
-
-echo "%define version $doxygen_version_major.$doxygen_version_minor.$doxygen_version_revision" > spec.tmp
-if test "$doxygen_version_mmn" = NO; then
-  echo "%define revision 1" >> spec.tmp
-  echo "%define mmn 1"      >> spec.tmp
-else
-  echo "%define revision $doxygen_version_mmn" >> spec.tmp
-  echo "%define mmn $doxygen_version_mmn"      >> spec.tmp
-fi
-
-mkdir -p packages
-mkdir -p packages/rpm
-
-cat spec.tmp ./packages/rpm/doxygen.spec.in > ./packages/rpm/doxygen.spec
-
-rm -f spec.tmp
-
-
-# make .tmakeconfig
-#
-touch .tmakeconfig
-if test "$f_shared" = NO; then
-  if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then
-  cat >> .tmakeconfig <<EOF
-    TMAKE_LFLAGS += -non_shared
-EOF
-  elif test "$f_platform" = "solaris-cc"; then
-  cat >> .tmakeconfig <<EOF
-    TMAKE_LFLAGS += -Bstatic
-EOF
-  elif test "$f_platform" = "hpux-cc"; then
-  cat >> .tmakeconfig <<EOF
-    TMAKE_LFLAGS += -noshared
-EOF
-  else
-  cat >> .tmakeconfig <<EOF
-    TMAKE_LFLAGS += -static
-EOF
-  fi
-fi
-if test "$f_platform" = "hpux-g++" -o "$f_platform" = "linux-g++"; then
-  cat >> .tmakeconfig <<EOF
-    TMAKE_CXXFLAGS += -D_LARGEFILE_SOURCE
-EOF
-fi
-if test "$f_platform" = "macosx-uni-c++"; then
-  if test -n "`ls /Developer/SDKs/MacOSX10.*.sdk 2>/dev/null`"; then
-    mac_sdk=MacOSX10.4u.sdk
-  fi
-  if test -n "`ls /Developer/SDKs/MacOSX10.5*.sdk 2>/dev/null`"; then
-    mac_sdk=MacOSX10.5.sdk
-  fi
-  if test -n $mac_sdk; then
-  cat >> .tmakeconfig <<EOF
-    TMAKE_CFLAGS   += -isysroot /Developer/SDKs/$mac_sdk
-    TMAKE_CXXFLAGS += -isysroot /Developer/SDKs/$mac_sdk
-    TMAKE_LFLAGS   += -Wl,-syslibroot,/Developer/SDKs/$mac_sdk
-EOF
-  fi
-fi
-if test "$f_wizard" = YES; then
-  cat >> .tmakeconfig <<EOF
-TMAKE_MOC = $QTDIR/bin/moc
-EOF
-fi
-
-if test "$f_search" = YES; then
-  cat >> .tmakeconfig <<EOF
-LIBS += -L$XAPIAN/lib
-INCLUDEPATH += $XAPIAN/include
-EOF
-fi
-
-f_inmakefiles="Makefile.in qtools/Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in addon/doxywizard/Makefile.in addon/doxmlparser/src/Makefile.in addon/doxmlparser/test/Makefile.in addon/doxmlparser/examples/metrics/Makefile.in libmd5/Makefile.in addon/doxyapp/Makefile.in addon/doxysearch/Makefile.in vhdlparser/Makefile.in"
-
-for i in $f_inmakefiles ; do
-     SRC=$i
-     DST=`echo $i|sed 's%\(.*\).in$%\1%'`
-     TIME=`date`
-     cat > $DST <<EOF
-#
-# This file was generated from `basename $i` on $TIME
-#
-
-EOF
-     cat .makeconfig >> $DST
-     if test $i = Makefile.in; then
-       echo "" >> $DST
-       EXTRADEPS=
-       if test $f_wizard = YES; then
-         EXTRADEPS=doxywizard
-       fi
-#       if test $f_search = YES; then
-#         EXTRADEPS="$EXTRADEPS doxysearch"
-#       fi
-       echo "all: generated_src/doxygen/version.cpp $EXTRADEPS" >> $DST
-       echo "	\$(MAKE) -C qtools" >> $DST
-       echo "	\$(MAKE) -C libmd5" >> $DST
-       echo "	\$(MAKE) -C vhdlparser" >> $DST
-       echo "	\$(MAKE) -C src" >> $DST
-
-       if test $f_wizard = YES; then
-         echo "	\$(MAKE) MAN1DIR=\$(MAN1DIR) -C addon/doxywizard" >> $DST
-       fi
-       if test $f_search = YES; then
-         echo "	\$(MAKE) -C addon/doxysearch" >> $DST
-       fi
-       if test $f_app = YES; then
-         echo "	\$(MAKE) -C addon/doxyapp" >> $DST
-       fi
-       if test $f_doxmlparser = YES; then
-         echo "	\$(MAKE) -C addon/doxmlparser/src" >> $DST
-         echo "	\$(MAKE) -C addon/doxmlparser/test" >> $DST
-         echo "	\$(MAKE) -C addon/doxmlparser/examples/metrics" >> $DST
-       fi
-       echo "" >> $DST
-       echo "doxywizard_install:" >> $DST
-       if test $f_wizard = YES; then
-         echo "	\$(MAKE) INSTALL=\$(DESTDIR)\$(INSTALL) MAN1DIR=\$(MAN1DIR) -C addon/doxywizard install" >> $DST
-       fi
-       echo "doxysearch_install:" >> $DST
-       if test $f_search = YES; then
-         echo "	\$(MAKE) INSTALL=\$(DESTDIR)\$(INSTALL) MAN1DIR=\$(MAN1DIR) -C addon/doxysearch install" >> $DST
-       fi
-       echo "" >> $DST
-     fi
-     if test $f_wizard = YES; then
-       sed -e "s/%%WITHDOXYWIZARD%% /--with doxywizard /g" $SRC >> $DST
-     else
-       sed -e "s/%%WITHDOXYWIZARD%% //g" $SRC >> $DST
-     fi
-     echo "  Created $DST from $SRC..."
-done
-
-cat src/libdoxycfg.t.in | sed -e "s|%%FLEX%%|$f_flex|g" -e "s|%%BISON%%|$f_bison|g" -e "s|%%PYTHON%%|$f_python|g" > src/libdoxycfg.t
-cat src/libdoxygen.t.in | sed -e "s|%%FLEX%%|$f_flex|g" -e "s|%%BISON%%|$f_bison|g" -e "s|%%PYTHON%%|$f_python|g" > src/libdoxygen.t
-
-f_inprofiles="qtools/qtools.pro.in src/libdoxygen.pro.in src/libdoxycfg.pro.in src/doxygen.pro.in addon/doxywizard/doxywizard.pro.in addon/doxmlparser/src/doxmlparser.pro.in addon/doxmlparser/test/xmlparse.pro.in addon/doxmlparser/examples/metrics/metrics.pro.in libmd5/libmd5.pro.in addon/doxyapp/doxyapp.pro.in addon/doxysearch/doxysearch.pro.in addon/doxysearch/doxyindexer.pro.in vhdlparser/vhdlparser.pro.in"
-
-for i in $f_inprofiles ; do
-     SRC=$i
-     DST=`echo $i|sed 's%\(.*\).in$%\1%'`
-     TIME=`date`
-     cat > $DST <<EOF
-#
-# This file was generated from `basename $i` on $TIME
-#
-
-EOF
-     if test "$f_debug" = NO; then
-       realopts="release"
-     else
-       realopts="debug"
-     fi
-     #if test "$f_thread" = YES; then
-     #  realopts="$realopts thread"
-     #fi
-     cat $SRC .tmakeconfig | sed -e "s/\$extraopts/$realopts/g" -e "s;%%SQLITE3_INC%%;$sqlite3_hdr_dir;g" -e "s;%%SQLITE3_LIBS%%;$sqlite3_link;g" -e "s;%%LIBCLANG_INC%%;$libclang_hdr_dir;g" -e "s;%%LIBCLANG_LIBS%%;$libclang_link;g" >> $DST
-     echo "  Created $DST from $SRC..."
-done
-
-# - generating generated_src/doxygen/doxygen/lang_cfg.h 
-# use consistent method on Linux and Windows
-
-if test -f "generated_src/doxygen/lang_cfg.h"; then
-    chmod u+w generated_src/doxygen/lang_cfg.h   # make sure file can be overwritten
-fi
-echo "  Generating generated_src/doxygen/lang_cfg.h..."
-if test "$f_english" = YES; then
-   $f_python src/lang_cfg.py ENONLY > generated_src/doxygen/lang_cfg.h
-else
-   f_ulangs=`echo $f_langs | tr '[a-z]' '[A-Z]' | tr ',' ' '`
-   $f_python src/lang_cfg.py $f_ulangs > generated_src/doxygen/lang_cfg.h
-fi
-
-if test -f "generated_src/doxygen/settings.h"; then
-    chmod u+w generated_src/doxygen/settings.h
-fi
-echo "  Generating generated_src/doxygen/settings.h..."
-$f_python src/settings.py $f_sqlite3 $f_libclang generated_src/doxygen
-
-if test "$f_wizard" = YES; then
-  if test -f "generated_src/doxywizard/settings.h"; then
-      chmod u+w generated_src/doxywizard/settings.h
-  fi
-  echo "  Generating generated_src/doxywizard/settings.h..."
-  $f_python src/settings.py $f_sqlite3 $f_libclang generated_src/doxywizard
-fi
-
-cd ..
-echo "  Finished"
diff --git a/doc/.gitignore b/doc/.gitignore
index a464770..751553b 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -1 +1 @@
-mailto.txt
\ No newline at end of file
+*.bak
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 0000000..345e898
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,185 @@
+# vim:ts=4:sw=4:expandtab:autoindent:
+#
+# Copyright (C) 1997-2015 by Dimitri van Heesch.
+#
+# Permission to use, copy, modify, and distribute this software and its
+# documentation under the terms of the GNU General Public License is hereby
+# granted. No representations are made about the suitability of this software
+# for any purpose. It is provided "as is" without express or implied warranty.
+# See the GNU General Public License for more details.
+#
+# Documents produced by Doxygen are derivative works derived from the
+# input used in their production; they are not affected by this license.
+
+if (build_doc)
+
+include (${TOP}/cmake/version.cmake)
+string(TIMESTAMP DATE "%d-%m-%Y")
+
+find_package(PythonInterp REQUIRED)
+find_program(EPSTOPDF NAMES epstopdf )
+find_program(PDFLATEX NAMES pdflatex )
+find_program(MAKEINDEX NAMES makeindex )
+
+if (doxygen_BINARY_DIR)
+    set(DOXYGEN_EXECUTABLE ${doxygen_BINARY_DIR}/bin/doxygen)
+else()
+    # when building only the doxygen_doc, from the doc/ directory, the
+    # doxygen project variables are unknown so look for doxygen in PATH
+    find_package(Doxygen)
+endif()
+
+set(DOC_INSTALL_DIR "share/doc/packages/doxygen" CACHE STRING "Relative path where to install the documentation")
+set(DOC_FILES
+        arch.doc
+        archoverview.eps
+        archoverview.gif
+        autolink.doc
+        changelog.doc
+        commands.doc
+        custcmd.doc
+        customize.doc
+        diagrams.doc
+        docblocks.doc
+        Doxyfile
+        doxygen_manual.css
+        doxygen_usage.doc
+        doxywizard_expert.png
+        doxywizard.gif
+        doxywizard_main.png
+        doxywizard_menu.png
+        doxywizard_page1.png
+        doxywizard_page2.png
+        doxywizard_page3.png
+        doxywizard_page4.png
+        doxywizard_usage.doc
+        external.doc
+        extsearch.doc
+        extsearch_flow.dot
+        extsearch_flow.eps
+        extsearch_flow.png
+        faq.doc
+        features.doc
+        formulas.doc
+        tables.doc
+        grouping.doc
+        htmlcmds.doc
+        index.doc
+        index.hhp.txt
+        infoflow.eps
+        infoflow.fig
+        infoflow.png
+        install.doc
+        install_prefix
+        lists.doc
+        markdown.doc
+        output.doc
+        perlmod.doc
+        perlmod_tree.doc
+        preprocessing.doc
+        searching.doc
+        starting.doc
+        trouble.doc
+        xmlcmds.doc
+        language.tpl
+        maintainers.txt
+        translator.py
+)
+file(GLOB LANG_FILES "${TOP}/src/translator_??.h")
+
+file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/man)
+file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/src)
+file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc)
+
+file(COPY ${TOP}/VERSION                  DESTINATION ${PROJECT_BINARY_DIR}/)
+file(COPY ${TOP}/src/translator.h         DESTINATION ${PROJECT_BINARY_DIR}/src/)
+file(COPY ${TOP}/src/translator_adapter.h DESTINATION ${PROJECT_BINARY_DIR}/src/)
+file(COPY ${LANG_FILES}                   DESTINATION ${PROJECT_BINARY_DIR}/src/)
+
+foreach (f  ${DOC_FILES})
+add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc/${f}
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/${f} ${PROJECT_BINARY_DIR}/doc/
+    DEPENDS ${CMAKE_SOURCE_DIR}/doc/${f}
+    )
+set_source_files_properties(${PROJECT_BINARY_DIR}/doc/${f} PROPERTIES GENERATED 1)
+list(APPEND OUT_DOC_FILES "${PROJECT_BINARY_DIR}/doc/${f}")
+endforeach()
+
+configure_file(${CMAKE_SOURCE_DIR}/doc/manual.sty         ${PROJECT_BINARY_DIR}/doc/manual.sty)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxygen_manual.tex ${PROJECT_BINARY_DIR}/doc/doxygen_manual.tex)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxygen.1          ${PROJECT_BINARY_DIR}/man/doxygen.1)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxywizard.1       ${PROJECT_BINARY_DIR}/man/doxywizard.1)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxysearch.1       ${PROJECT_BINARY_DIR}/man/doxysearch.1)
+configure_file(${CMAKE_SOURCE_DIR}/doc/doxyindexer.1      ${PROJECT_BINARY_DIR}/man/doxyindexer.1)
+
+# doc/language.doc (see tag Doxyfile:INPUT)
+add_custom_command(
+        COMMAND ${PYTHON_EXECUTABLE} translator.py
+        DEPENDS ${PROJECT_BINARY_DIR}/doc/maintainers.txt ${PROJECT_BINARY_DIR}/doc/language.tpl ${PROJECT_BINARY_DIR}/doc/translator.py
+        OUTPUT language.doc
+        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc
+)
+set_source_files_properties(language.doc PROPERTIES GENERATED 1)
+
+# doc/config.doc (see tag Doxyfile:INPUT)
+add_custom_command(
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/src/configgen.py -doc ${TOP}/src/config.xml > config.doc
+        DEPENDS ${TOP}/src/config.xml ${TOP}/src/configgen.py
+        OUTPUT config.doc
+        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc/
+)
+set_source_files_properties(config.doc PROPERTIES GENERATED 1)
+################################################################################
+add_custom_target(run_doxygen
+        COMMENT "Generating Latex and HTML documentation."
+        COMMAND ${DOXYGEN_EXECUTABLE}
+        DEPENDS ${PROJECT_BINARY_DIR}/doc/language.doc ${PROJECT_BINARY_DIR}/doc/config.doc
+        DEPENDS ${OUT_DOC_FILES}
+        DEPENDS examples
+        DEPENDS doxygen
+        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc/
+)
+
+add_custom_target(doxygen_pdf
+        COMMENT "Generating Doxygen Manual PDF."
+        COMMAND ${CMAKE_COMMAND} -E remove refman.tex
+        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc/doxygen_manual.tex  .
+        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc/manual.sty  .
+        COMMAND ${EPSTOPDF} ${CMAKE_SOURCE_DIR}/doc/doxygen_logo.eps --outfile=doxygen_logo.pdf
+        COMMAND ${PDFLATEX}  doxygen_manual.tex
+        COMMAND ${MAKEINDEX} doxygen_manual.idx
+        COMMAND ${PDFLATEX}  doxygen_manual.tex
+        DEPENDS run_doxygen
+        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/latex
+)
+add_custom_target(docs
+        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/doxygen_logo.gif      ${PROJECT_BINARY_DIR}/html/
+        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/doxygen_logo_low.gif  ${PROJECT_BINARY_DIR}/html/
+        DEPENDS ${PROJECT_BINARY_DIR}/man/doxygen.1
+                ${PROJECT_BINARY_DIR}/man/doxywizard.1
+                ${PROJECT_BINARY_DIR}/man/doxysearch.1
+                ${PROJECT_BINARY_DIR}/man/doxyindexer.1
+                doxygen_pdf
+        VERBATIM
+        )
+
+################################################################################
+install(FILES
+        "${PROJECT_BINARY_DIR}/man/doxygen.1"
+        "${PROJECT_BINARY_DIR}/man/doxywizard.1"
+        "${PROJECT_BINARY_DIR}/man/doxysearch.1"
+        "${PROJECT_BINARY_DIR}/man/doxyindexer.1"
+        DESTINATION share/man/man1
+)
+
+install(FILES
+        "${PROJECT_BINARY_DIR}/latex/doxygen_manual.pdf"
+        DESTINATION "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}"
+)
+
+install(DIRECTORY
+        "${PROJECT_BINARY_DIR}/html"
+        DESTINATION "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}"
+)
+
+endif(build_doc)
diff --git a/doc/Doxyfile b/doc/Doxyfile
index c57bbe9..ceb6385 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -16,7 +16,7 @@ PROJECT_NAME      = "Doxygen"
 OUTPUT_DIRECTORY  = ..
 HTML_HEADER       = 
 HTML_FOOTER       = 
-QUIET             = NO
+QUIET             = YES
 WARNINGS          = YES
 DISABLE_INDEX     = YES
 GENERATE_TREEVIEW = YES
@@ -34,7 +34,7 @@ ENABLE_PREPROCESSING = NO
 CASE_SENSE_NAMES  = NO
 IMAGE_PATH        = .
 INPUT             = index.doc install.doc starting.doc docblocks.doc markdown.doc \
-                    lists.doc grouping.doc formulas.doc diagrams.doc preprocessing.doc \
+                    lists.doc grouping.doc formulas.doc tables.doc diagrams.doc preprocessing.doc \
                     autolink.doc output.doc searching.doc extsearch.doc customize.doc custcmd.doc \
                     external.doc faq.doc trouble.doc features.doc \
 		    doxygen_usage.doc doxywizard_usage.doc \
@@ -53,3 +53,5 @@ STRIP_CODE_COMMENTS = NO
 HTML_STYLESHEET   = doxygen_manual.css
 ALIASES           = LaTeX="\f$\mbox{\LaTeX}\f$"
 ALIASES          += TeX="\f$\mbox{\TeX}\f$"
+LATEX_BATCHMODE   = YES
+LATEX_EXTRA_STYLESHEET = manual.sty
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644
index f0c3a03..0000000
--- a/doc/Makefile.in
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-
-all: language config.doc FORCE
-	DOXYGEN_DOCDIR=$(DOXYDOCS); \
-	export DOXYGEN_DOCDIR; \
-        VERSION=$(VERSION) ; \
-	export VERSION; \
-	"$(DOXYGEN)/bin/doxygen"
-	@rm -f ../latex/refman.tex
-	@cp doxygen_logo*.gif ../html
-	@cp Makefile.latex ../latex/Makefile
-	@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >../latex/doxygen_manual.tex
-	@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >../latex/doxygen.sty 
-	@epstopdf doxygen_logo.eps --outfile=../latex/doxygen_logo.pdf
-
-clean: 
-	rm -rf ../html ../latex *.bak 
-
-language: language.doc 
-
-language.doc: $(wildcard ../src/translator*.h) maintainers.txt language.tpl translator.py
-	$(PYTHON) translator.py
-
-config.doc:  ../src/config.xml ../src/configgen.py
-	$(PYTHON) ../src/configgen.py -doc ../src/config.xml > config.doc
-
-FORCE:
diff --git a/doc/Makefile.latex b/doc/Makefile.latex
index 803b75d..d4b48ff 100644
--- a/doc/Makefile.latex
+++ b/doc/Makefile.latex
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
+# Copyright (C) 1997-2015 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/Makefile.win_make.in b/doc/Makefile.win_make.in
deleted file mode 100644
index 1d22dbf..0000000
--- a/doc/Makefile.win_make.in
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-
-all: language config.doc FORCE
-	@xcopy /s /q /i ..\examples ..\html\examples
-	set DOXYGEN_DOCDIR=. & \
-	set VERSION=$(VERSION) & \
-	$(DOXYGEN)\bin\doxygen
-	@del ..\latex\refman.tex
-	@copy doxygen_logo*.gif ..\html
-	@copy Makefile.latex ..\latex\Makefile
-	@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex
-	@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty 
-	@epstopdf doxygen_logo.eps --outfile=..\latex\doxygen_logo.pdf
-
-clean: 
-	del /s /q ..\html ..\latex
-	del translator_report.txt *.bak
-
-language: language.doc
-
-language.doc: maintainers.txt language.tpl translator.py
-	set DOXYGEN_DOCDIR=. & set VERSION=$(VERSION) & python translator.py
-
-config.doc:  ..\src\config.xml ..\src\configgen.py
-	python ..\src\configgen.py -doc ..\src\config.xml > config.doc
-
-
-FORCE:
diff --git a/doc/Makefile.win_nmake.in b/doc/Makefile.win_nmake.in
deleted file mode 100644
index 99ac2f1..0000000
--- a/doc/Makefile.win_nmake.in
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-
-all: language config.doc FORCE
-	@xcopy /s /q /i ..\examples ..\html\examples
-	set DOXYGEN_DOCDIR=.
-	set VERSION=$(VERSION)
-	$(DOXYGEN)\bin\doxygen
-	@del ..\latex\refman.tex
-	@copy doxygen_logo*.gif ..\html
-	@copy Makefile.latex ..\latex\Makefile
-	@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex
-	@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty 
-	@epstopdf doxygen_logo.eps --outfile=..\latex\doxygen_logo.pdf
-
-clean: 
-	del /s /q ..\html ..\latex
-	del translator_report.txt *.bak
-
-language: language.doc 
-
-language.doc: maintainers.txt language.tpl translator.py
-	set DOXYGEN_DOCDIR=.
-	set VERSION=$(VERSION)
-	python translator.py
-
-config.doc:  ../src/config.xml ../src/configgen.py
-	python ../src/configgen.py -doc ../src/config.xml > config.doc
-
-FORCE:
diff --git a/doc/arch.doc b/doc/arch.doc
index fc80659..7876fb9 100644
--- a/doc/arch.doc
+++ b/doc/arch.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -203,49 +203,44 @@ from the correct line in the \c Makefile:
 
 $file = shift @ARGV;
 print "Toggle debugging mode for $file\n";
-
-# add or remove the -d flex flag in the makefile
-unless (rename "Makefile.libdoxygen","Makefile.libdoxygen.old") {
-  print STDERR "Error: cannot rename Makefile.libdoxygen!\n";
+if (!-e "../src/${file}.l")
+{
+  print STDERR "Error: file ../src/${file}.l does not exist!";
+  exit 1;
+}
+system("touch ../src/${file}.l");
+unless (rename "src/CMakeFiles/_doxygen.dir/build.make","src/CMakefiles/_doxygen.dir/build.make.old") {
+  print STDERR "Error: cannot rename src/CMakeFiles/_doxygen.dir/build.make!\n";
   exit 1;
 }
-if (open(F,"<Makefile.libdoxygen.old")) {
-  unless (open(G,">Makefile.libdoxygen")) {
-    print STDERR "Error: opening file Makefile.libdoxygen for writing\n";
-    exit 1; 
+if (open(F,"<src/CMakeFiles/_doxygen.dir/build.make.old")) {
+  unless (open(G,">src/CMakefiles/_doxygen.dir/build.make")) {
+    print STDERR "Error: opening file build.make for writing\n";
+    exit 1;
   }
-  print "Processing Makefile.libdoxygen...\n";
+  print "Processing build.make...\n";
   while (<F>) {
-    if ( s/\(LEX\) (-i )?-P([a-zA-Z]+)YY -t $file/(LEX) -d \1-P\2YY -t $file/g ) {
-      print "Enabling debug info for $file\n";
+    if ( s/flex \$\(LEX_FLAGS\) -P${file}YY/flex \$(LEX_FLAGS) -d -P${file}YY/ ) {
+      print "Enabling debug info for $file.l\n";
     }
-    elsif ( s/\(LEX\) -d (-i )?-P([a-zA-Z]+)YY -t $file/(LEX) \1-P\2YY -t $file/g ) {
+    elsif ( s/flex \$\(LEX_FLAGS\) -d -P${file}YY/flex \$(LEX_FLAGS) -P${file}YY/ ) {
       print "Disabling debug info for $file\n";
     }
     print G "$_";
   }
   close F;
-  unlink "Makefile.libdoxygen.old";
+  unlink "src/CMakeFiles/_doxygen.dir/build.make.old";
 }
 else {
-  print STDERR "Warning file Makefile.libdoxygen.old does not exist!\n"; 
+  print STDERR "Warning file src/CMakeFiles/_doxygen.dir/build.make does not exist!\n"; 
 }
 
 # touch the file
 $now = time;
 utime $now, $now, $file
-
-\endverbatim
-Another way to get rules matching / debugging information from the flex code is in the following way:
-\verbatim
-touch src/<flex code file>.l
-make LEX="flex -d"
-\endverbatim
-to remove the rules / debug information again:
-\verbatim
-touch src/<flex codefile>.l
-make
 \endverbatim
+Another way to get rules matching / debugging information
+from the flex code is setting LEX_FLAGS with cmake.
 
 Note that by running doxygen with `-d lex` you get information about which flex
 codefile is used.
diff --git a/doc/autolink.doc b/doc/autolink.doc
index b872f7d..b434dd2 100644
--- a/doc/autolink.doc
+++ b/doc/autolink.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -77,7 +77,7 @@
     'fun(const std::string&,bool)' or '()' to match any prototype.
   \par Note 2:
     Member function modifiers (like 'const' and 'volatile') 
-    are required to identify the target, i.e. 'func(int) const' and 'fun(int)'
+    are required to identify the target, i.e. 'func(int) const' and 'func(int)'
     target different member functions.
   \par Note 3: 
     For JavaDoc compatibility a \# may be used instead of a :: in 
@@ -110,11 +110,15 @@
   patterns 3 and 7 in this case.
 
   \par Example:
-  \verbinclude autolink.cpp
+  \include autolink.cpp
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/autolink/html/index.html">here</a> 
+  Click <a href="examples/autolink/html/index.html">here</a> 
   for the corresponding HTML documentation that is generated by Doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{autolink_example}{Autolink example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
   \section resolving typedefs
 
@@ -126,11 +130,15 @@ typedef struct StructName TypeName
   when either StructName itself or TypeName is encountered.
   
   \par Example:
-  \verbinclude restypedef.cpp
+  \include restypedef.cpp
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/restypedef/html/restypedef_8cpp.html">here</a> 
+  Click <a href="examples/restypedef/html/restypedef_8cpp.html">here</a> 
   for the corresponding HTML documentation that is generated by Doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{restypedef_8cpp}{Typedef example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
 \htmlonly
 Go to the <a href="output.html">next</a> section or return to the
diff --git a/doc/changelog.doc b/doc/changelog.doc
index 526e5fd..81efdfc 100644
--- a/doc/changelog.doc
+++ b/doc/changelog.doc
@@ -2,10 +2,322 @@
 \tableofcontents
 \section log_1_8 1.8 Series
 
-\subsection log_1_8_9.1 Release 1.8.9.1
+\subsection log_1_8_11 Release 1.8.11
+\htmlonly
+<b>(release date 30-12-2015)</b>
+<a name="1.8.11"></a>
+</p>
+<ul>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=149792">149792</a> - Mainpage title has wrong style in RTF [<a href="http://github.com/doxygen/doxygen/commit/021dfd44f2dbeeaac1b9aff95ddc2a3eae173eb4">view</a> and [<a href="http://github.com/doxygen/doxygen/commit/83f23a4f7f7d1351ef89a4e54db6628a9d582dc5">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=333106">333106</a> - $line param [<a href="http://github.com/doxygen/doxygen/commit/993972cd242527ddf929756141a68cccfc8ecef9">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=361814">361814</a> - python: tuple assignment not recognized as variable initialization [<a href="http://github.com/doxygen/doxygen/commit/015955e0badb6082a1e553392acaeb6890734c31">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=485701">485701</a> - Fixes angle brackets (< and >) not escaped in HTML formula alt text [<a href="http://github.com/doxygen/doxygen/commit/64adce8b82c332b3855cdfaaa71afc984ffc4ca9">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=578720">578720</a> - [Python] Add pyw as a valid extension [<a href="http://github.com/doxygen/doxygen/commit/5924acd279f82d8db7ddb33a6ec67937084d7c31">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593642">593642</a> - Python: STRIP_CODE_COMMENTS Doesn't work within the source code [<a href="http://github.com/doxygen/doxygen/commit/4cad0c9ac3492dd504104b15c9a03ef903950e15">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595186">595186</a> - Python ignores \private tag [<a href="http://github.com/doxygen/doxygen/commit/8782107300b24ac5501d8a5ada9be0859a0ee432">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606104">606104</a> - Deprecated list: Wrong prefix '<globalScope>::' for global functions [<a href="http://github.com/doxygen/doxygen/commit/a5288aca31ccecb78b561b4f382fe6c559bea9f9">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629249">629249</a> - Incorrect "References" and "Referenced by" [<a href="http://github.com/doxygen/doxygen/commit/43c415708be4c2d4065ecda9870d361b0beb0f09">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641036">641036</a> - python script with #!/usr/bin/python are not documented correctly [<a href="http://github.com/doxygen/doxygen/commit/322d09de48c07cf7258825e3e7733d5d994e70cf">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646002">646002</a> - htmlonly content appears in generated XML output [<a href="http://github.com/doxygen/doxygen/commit/02ce4f0b2b58ef32dd783b359daf7cc01079462a">view</a>] and [<a href="http://github.com/doxygen/doxygen/commit/6004d659c1ca280acc6588351176be63b55faf70">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=648865">648865</a> - PYTHON: stops processing the file after encountering \"""" [<a href="http://github.com/doxygen/doxygen/commit/59fdba0dd1e3765a2f53b222fdc9455114f720b1">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=661814">661814</a> - writeMemberNavIndex template calls static fixSpaces [<a href="http://github.com/doxygen/doxygen/commit/69d5ffaa68210a6e63a618ef304c63462f6e1fac">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682373">682373</a> - Math does not work in LaTeX with custom header and footer. [<a href="http://github.com/doxygen/doxygen/commit/c713984bf6a4c9e8c2ea393b304682ce4a56358f">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=731509">731509</a> - Markdown backticks not processed within Markdown links. [<a href="http://github.com/doxygen/doxygen/commit/205f7335bca570e87afc0df07bd355848c7af2e3">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=732356">732356</a> - doxygen's \param command is confused by some python default values [<a href="http://github.com/doxygen/doxygen/commit/6447c90acb51807d272ce2f24a94574a413d36e0">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=735152">735152</a> - Python: Allow undocumented "cls" parameter for class methods [<a href="http://github.com/doxygen/doxygen/commit/0a5dfb77a7d0dfaac2baf8f3e61014a29ba2883b">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742715">742715</a> - Unnamed structs gives: QGDict::hashAsciiKey: Invalid null key [<a href="http://github.com/doxygen/doxygen/commit/17b66265ace3418413b5cfab0335b4378e9c176b">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=744938">744938</a> - PATCH: add option to build latex without timestamps [<a href="http://github.com/doxygen/doxygen/commit/9ef2dc156c37da7fb736c39c3c3fa5074e4d1829">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=745659">745659</a> - The table in classes.html has no class attribute [<a href="http://github.com/doxygen/doxygen/commit/0b4b2d76e4cc8fcb85d9b3ad7252e676e5a1d784">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=746162">746162</a> - formulas creating invalid HTML code [<a href="http://github.com/doxygen/doxygen/commit/d5905871951cde51c6dcaa01d745de2f884ce9a9">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=746361">746361</a> - Doxygen thinks C++ class is Objective-C [<a href="http://github.com/doxygen/doxygen/commit/8da86f8adfb826f13321c7d163431f9671ba20b7">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=751300">751300</a> - Doxygen don't support longer key in bibtex [<a href="http://github.com/doxygen/doxygen/commit/b0fc11e4a891e51bb4d982730efecddac2ef807e">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=751321">751321</a> - \cite still rejects valid BibTeX keys [<a href="http://github.com/doxygen/doxygen/commit/b1601548308c8a6ec586a406155d24f80d75aafd">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=751755">751755</a> - using plantuml cause a popup "openwith" windows when calling java.exe [<a href="http://github.com/doxygen/doxygen/commit/51ee1b0633fbfa935da08c8a13f70da6fc1c074d">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=751984">751984</a> - PATCH: Honour SOURCE_DATE_EPOCH environment variable for reproducible output [<a href="http://github.com/doxygen/doxygen/commit/b31266c1076c6284116f17241d9e8aa048f88e60">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=752657">752657</a> - XML not documenting a class in python [<a href="http://github.com/doxygen/doxygen/commit/288afe7d4fe0953f5717b0ac85f805f78d96afa4">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=752658">752658</a> - XML empty <argsstring/> in python [<a href="http://github.com/doxygen/doxygen/commit/a1b3f7b1157b8e7b392bfcd6c6452c664bf5a7c2">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=752712">752712</a> - last entry missing in a @name group of typedefs [<a href="http://github.com/doxygen/doxygen/commit/21d14b3c7697f8807065070f5850259b1b6550e4">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=752845">752845</a> - Non-alphanumeric characters in Markdown links don't work properly [<a href="http://github.com/doxygen/doxygen/commit/e89eb77b14810649c679dc7d377ddb4e6a942d82">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=753500">753500</a> - $file when using @name is wrong [<a href="http://github.com/doxygen/doxygen/commit/790887ea3f63c051954a4cd49f044fa4f536867d">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=753909">753909</a> - Copy and paste of code fragment from CHM merges all pasted text into single line [<a href="http://github.com/doxygen/doxygen/commit/663544cc0caf9109ea10c33f38b1e07e7a01a575">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=754130">754130</a> - class="current" not applied to <li> for module tab within 'group__*.html' module html files [<a href="http://github.com/doxygen/doxygen/commit/0e2e8916f81892c891a33c5435024776ca0f570f">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=754184">754184</a> - \bug paragraph doesn't end with a new sectioning command [<a href="http://github.com/doxygen/doxygen/commit/13e2b18c93df1351c4e91d13a7fe224b4841fa73">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=754606">754606</a> - Double anchors when using groups [<a href="http://github.com/doxygen/doxygen/commit/e44780a7579ca865cc52801e920b1d20d2a3b438">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=755080">755080</a> - xrefitem link to list incorrect when using SHORT_NAMES [<a href="http://github.com/doxygen/doxygen/commit/af5c5b37c5464afb6a2df71edf6f9e82ece75187">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=755293">755293</a> - Tree view pane overlaps with content tabs [<a href="http://github.com/doxygen/doxygen/commit/8fc243491cbae2442c1e07faca99a8f6dc6f2e19">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=755783">755783</a> - RTF output has incomplete "References" and "Referenced by" sections [<a href="http://github.com/doxygen/doxygen/commit/6184c70c515941212380006a2e6c879e1663daec">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=755786">755786</a> - fatal: Cannot open 'graph_legend': No such file or directory [<a href="http://github.com/doxygen/doxygen/commit/08cf278fb80ffb7844b4339458cf4ad03453e827">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=755939">755939</a> - Warning refers to incorrect line for undocumented member function (C++) [<a href="http://github.com/doxygen/doxygen/commit/a112c70c7a5d590286e0fad1382b9bb3fd86118b">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=756241">756241</a> - Race condition in parallel DOT runs [<a href="http://github.com/doxygen/doxygen/commit/f196c9f1d69238a814ff3152103f3bd310efdf0d">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=756604">756604</a> - Unable to prevent a numbered list [<a href="http://github.com/doxygen/doxygen/commit/3fbb1b66bd5303fa789a36317694bd77eb22ee19">view</a>] and  [<a href="http://github.com/doxygen/doxygen/commit/5487f855ad12d0b7f3ba70aab72fd2debedae16d">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=756724">756724</a> - Inline markdown links don't support reference targets that contain ) [<a href="http://github.com/doxygen/doxygen/commit/59a42f974f15fa0154317900ffd9b82babd985ad">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=757300">757300</a> - Failed to document nested classes with "reference to array" parameters [<a href="http://github.com/doxygen/doxygen/commit/3bcef269a4fe5bfc1921d7ba934bc09c715eae9c">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=757621">757621</a> - unclosed tag, c# generics method with where [<a href="http://github.com/doxygen/doxygen/commit/1bb819f5b680d600f010761b21e44df2f5e35ccc">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=757812">757812</a> - Doxygen do not support comparison angle bracket in template [<a href="http://github.com/doxygen/doxygen/commit/f836266a4538153a1164642e168bb04c529a4d51">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=758132">758132</a> - Brief description of non documented functions [<a href="http://github.com/doxygen/doxygen/commit/7a2164d252a0cb5410ab13b0ca1611a8e94e3c99">view</a>] and [<a href="http://github.com/doxygen/doxygen/commit/1b402f49a0638dd0eec2a123462862c6d4c4084d">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=758495">758495</a> - Bug in VHDL parser + other fixes [<a href="http://github.com/doxygen/doxygen/commit/4bef27771fec1892331df637dd6184abac36fd8f">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=758900">758900</a> - C++ templated member-function appears both as public and private [<a href="http://github.com/doxygen/doxygen/commit/bb4e403968dc1ac4deb3b47c0b79b4304f1be288">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=759177">759177</a> - Markdown fenced code blocks not parsed properly in comment [<a href="http://github.com/doxygen/doxygen/commit/ae6311ea0855d576a7c4b589dd5f4b994a47fd6c">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=759247">759247</a> - C++11 unified initializer for array with templates treated as function [<a href="http://github.com/doxygen/doxygen/commit/692544fb47407a3f2c5a5a5e4b80185428adda25">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=759281">759281</a> - Doxygen parser confused by C++11 attributes [<a href="http://github.com/doxygen/doxygen/commit/6c005b1e9458430a77bfeba6d08deed4778ad71d">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=759381">759381</a> - unable to @ref or @link C++ templated operator overloads [<a href="http://github.com/doxygen/doxygen/commit/da09bff6dc9cad40c72b6a858728093cc41dff47">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=759622">759622</a> - problems with charset using plantuml [<a href="http://github.com/doxygen/doxygen/commit/165498dc9ea33bc9991c5ab5234b5e51d74569d0">view</a>]</li>
+<li>Actually using value of GROUP_NESTED_COMPOUNDS option [<a href="http://github.com/doxygen/doxygen/commit/3b314b5d856f6f7a25d512737e640a6b7b17c8d4">view</a>]</li>
+<li>Add RPM build for Red Hat [<a href="http://github.com/doxygen/doxygen/commit/7f8f31cb8318e663f2ec145b63fb31278bdd7a76">view</a>]</li>
+<li>Add WARN_AS_ERROR option to stop execution at first warning (equivalent of compilers' -Werror option) [<a href="http://github.com/doxygen/doxygen/commit/38277f1da56c212c9b33f774de412edef1156544">view</a>]</li>
+<li>Add examples to LaTeX / PDF doxygen manual [<a href="http://github.com/doxygen/doxygen/commit/3a236fd01dc23d2d979e06d848f61b002cb4e6ee">view</a> and [<a href="http://github.com/doxygen/doxygen/commit/5e11f885eea694c2ecfeae6ff5774b66eea312e4">view</a>]</li>
+<li>Add mathjax support to template & context. [<a href="http://github.com/doxygen/doxygen/commit/56987af3987f40ac77e70cd39ebbdac3702c1ce2">view</a>]</li>
+<li>Add support for "value" attribute in FORTRAN scanner [<a href="http://github.com/doxygen/doxygen/commit/6dacbd9b22bdd6cd1a8c3e9b5ec8c2f7d15977b8">view</a>]</li>
+<li>Added documentation for creating tables [<a href="http://github.com/doxygen/doxygen/commit/23faa449843eeb4c9e40e650df8844abec024bb7">view</a>]</li>
+<li>Added javascript search engine data to the template context [<a href="http://github.com/doxygen/doxygen/commit/6bb0d2908b4ca7908a8e655a5abcf7615a5f4c77">view</a>]</li>
+<li>Added missing html resources to the html template file [<a href="http://github.com/doxygen/doxygen/commit/43a0883022f64539498b84220d487b16ffd49a7e">view</a>]</li>
+<li>Added missing information to template version of the all members list [<a href="http://github.com/doxygen/doxygen/commit/f16c156065ac8bc6242870c2ae701252b5d4f9b2">view</a>]</li>
+<li>Added support for directory dependency graphs to template engine [<a href="http://github.com/doxygen/doxygen/commit/abe254fbe2235f5b913653acd076d2acd579d5e1">view</a>]</li>
+<li>Adding compilation options for flex/lex and  bison/yacc [<a href="http://github.com/doxygen/doxygen/commit/beb2ff6c39fefbd6aaeecd5de9827d1b1947740b">view</a>]</li>
+<li>Adjusted used option for CLANG usage with CMake in documentation [<a href="http://github.com/doxygen/doxygen/commit/82063c0601b9f7b11c1774a1a42e13295c486467">view</a>]</li>
+<li>Alignment in LaTeX parameter table [<a href="http://github.com/doxygen/doxygen/commit/a0880ff1c41a1c57bc92c1ccf99cf750064e2995">view</a>]</li>
+<li>Avoid using Resource::data as string, as it is not null terminated. [<a href="http://github.com/doxygen/doxygen/commit/15a87a623791bf407b3076960cdd1133c8973357">view</a>]</li>
+<li>Better handling of implicit statement in source code browser [<a href="http://github.com/doxygen/doxygen/commit/404468ac5484d54e47129ce2a00b3ad6e1c2c72a">view</a>]</li>
+<li>Bug 149792 - Mainpage title has wrong style in RTF [<a href="http://github.com/doxygen/doxygen/commit/077aeb768767e62407abb4759d44671619bc62fd">view</a>]</li>
+<li>Bump version so that the GIT repo represents the version for the "next" release [<a href="http://github.com/doxygen/doxygen/commit/42c376cdb41db392bd025611ccfcaddb49d05e92">view</a>]</li>
+<li>Cmake tries to remove directory refman.tex instead of file refman.tex [<a href="http://github.com/doxygen/doxygen/commit/63094c8bb34a2e02e8490860660303d849e4a984">view</a>]</li>
+<li>Copy user EXTRA_FILES at the end to overrule files generated by default by doxygen [<a href="http://github.com/doxygen/doxygen/commit/82f08138ad08fa5b8906c162283c4df0e9819d83">view</a>]</li>
+<li>Correct / set types for python variables [<a href="http://github.com/doxygen/doxygen/commit/c47920b217491fc861cdac73d44ab4f93d08423e">view</a>]</li>
+<li>Correcting print format error in config.l [<a href="http://github.com/doxygen/doxygen/commit/9947c11284542a74c56e52b55be032350c6bbc3e">view</a>]</li>
+<li>DO NOT hardcode x86-64 architecture. [<a href="http://github.com/doxygen/doxygen/commit/031780293d2838da2643b46878061598ebb56822">view</a>]</li>
+<li>Don't show a console when launching doxywizard on Windows. [<a href="http://github.com/doxygen/doxygen/commit/942efcb758977fe95fafc473813528085b56e4ee">view</a>]</li>
+<li>Fix computeCommonDirPrefix sometimes not finding the correct prefix [<a href="http://github.com/doxygen/doxygen/commit/c6bf96520bcff56d3fd67d4277c05b8db9ac2128">view</a>]</li>
+<li>Fix error documentation of in flex debug script [<a href="http://github.com/doxygen/doxygen/commit/09c4e990e4e214900e613343fb9bfbbb08f1bc53">view</a>]</li>
+<li>Fix for broken link in the manual [<a href="http://github.com/doxygen/doxygen/commit/355370151b61f79633b3867634d76eaf8bacce54">view</a>]</li>
+<li>Fix hexChar for inputs 0 <= i < 10 [<a href="http://github.com/doxygen/doxygen/commit/327422d131ed5e6ddf280043b5a56a6fb92d3bbc">view</a> and [<a href="http://github.com/doxygen/doxygen/commit/62da4521880a03b8a92887539eaf76ccad2ee770">view</a>]</li>
+<li>Fix spelling in doc/commands.doc (descriptionm) [<a href="http://github.com/doxygen/doxygen/commit/bd7da008fac074202e3265787907434fbfb40e71">view</a>]</li>
+<li>Fix typo in function name [<a href="http://github.com/doxygen/doxygen/commit/ace0af42e330a96ad691b2d9a08dd3ff4abb2629">view</a> and [<a href="http://github.com/doxygen/doxygen/commit/b890f40d195b9dc5db12aaa398707de138093c66">view</a>]</li>
+<li>Fixed a couple of small memory leaks [<a href="http://github.com/doxygen/doxygen/commit/85ddfc814f33943199928447b4627d05b0920b99">view</a>]</li>
+<li>Fixed a number of memory leaks in the template engine [<a href="http://github.com/doxygen/doxygen/commit/d14bcd1f8f5bd4a2034bae842000630f4e098eb6">view</a>]</li>
+<li>Fixed compiler warning for MacOSX [<a href="http://github.com/doxygen/doxygen/commit/0aa27346b8728f6698dd2b363959e89d02e03ff6">view</a>]</li>
+<li>Fixed link issue for MacOSX 10.11 [<a href="http://github.com/doxygen/doxygen/commit/0918a19225daedfbd5e23388124a5de3860d5420">view</a>]</li>
+<li>Fixed minor typos in comments [<a href="http://github.com/doxygen/doxygen/commit/29c500434d30cd4d9c20f6b295475ed42dba2930">view</a>]</li>
+<li>Fixed preprocessor macros for flex version check [<a href="http://github.com/doxygen/doxygen/commit/a8c73cdbe37cc53c398002d20e94037552a8fb55">view</a>]</li>
+<li>Fixed problem with latex and PDF bookmarks [<a href="http://github.com/doxygen/doxygen/commit/499ecaedf1ee1222535be27f77050ee633595685">view</a>]</li>
+<li>Fixed various issues found by PVS-Studio. [<a href="http://github.com/doxygen/doxygen/commit/48ced3ea8071b3141216482e2821e10250910947">view</a>]</li>
+<li>Fixes bug 485701: Angle brackets (< and >) not escaped in HTML formula alt text [<a href="http://github.com/doxygen/doxygen/commit/08aa01cb0ee9b2dd6403f753156d8b58d8e62145">view</a>]</li>
+<li>Fixes to support nested tables again [<a href="http://github.com/doxygen/doxygen/commit/883989fced827524354297009fde396ca6264a31">view</a>]</li>
+<li>Fortran module private variables and EXTRACT_PRIVATE = NO [<a href="http://github.com/doxygen/doxygen/commit/61820a08200ec62c754cacf8dd3a1121ce6dee69">view</a> and <a href="http://github.com/doxygen/doxygen/commit/8504fc3a06e3430242eab9ac1c1f20319112e6a9">view</a>]</li>
+<li>Improved handling of <caption> in tables for LaTeX output. [<a href="http://github.com/doxygen/doxygen/commit/fa6585b2fc6847c2b242b226b163810c7a6366de">view</a>]</li>
+<li>IncludeInfo class had uninitialized member variable [<a href="http://github.com/doxygen/doxygen/commit/76a9892b190efaeb3c764d824bd285ff3d2c57dc">view</a>]</li>
+<li>Made paragraph spacing more flexible in the LaTeX output to prevent page overflows [<a href="http://github.com/doxygen/doxygen/commit/17b3b41e12e890187f6b7dcc98ed9e2451b14018">view</a>]</li>
+<li>Made several improvements to the performance of template engine [<a href="http://github.com/doxygen/doxygen/commit/ded4e9a92670d0157cdcc5cbf7a4a1e3193e179a">view</a>]</li>
+<li>Make doxywizard compatible with Qt5 [<a href="http://github.com/doxygen/doxygen/commit/333c7c44f1aa3c62f9401b190e45eaff15056d5c">view</a>]</li>
+<li>Make list of default extensions consistent with language mapping list [<a href="http://github.com/doxygen/doxygen/commit/bf35f16863f067286260ad4b68ec4c0ae7febdf1">view</a>]</li>
+<li>Markdown with @cond and @endcond [<a href="http://github.com/doxygen/doxygen/commit/c5a7911741850777b699a63ae5b7702e379a5ada">view</a>]</li>
+<li>Markdown with @cond and @endcond [<a href="http://github.com/doxygen/doxygen/commit/dc26830396970d402ad42d20f1b99bd86f4a5961">view</a>]</li>
+<li>Merge remote-tracking branch 'upstream/master' [<a href="http://github.com/doxygen/doxygen/commit/6aba65a4dfaec1aa1131e160ed252d0713403760">view</a>]</li>
+<li>Minor change to pycode.l:codifyLines [<a href="http://github.com/doxygen/doxygen/commit/bbd71be14986e637af9958b2cc18d1d62743ba8e">view</a>]</li>
+<li>Moved creation of inline class documentation to separate template file [<a href="http://github.com/doxygen/doxygen/commit/4bd50c9f0dc1d7b1413a6bda587b8a5999cd7a19">view</a>]</li>
+<li>RTF improvement: Example section was merged with next function title [<a href="http://github.com/doxygen/doxygen/commit/ca617e1e1cd42ee0080c8c13ce3884c8671629dd">view</a>]</li>
+<li>Remove obsolete py files [<a href="http://github.com/doxygen/doxygen/commit/183f36fe97cb95636f1947c2c4be61f7b78f87e0">view</a>]</li>
+<li>Removed BOM marker from greek translator to avoid Visual C warnings [<a href="http://github.com/doxygen/doxygen/commit/9ee8f777f5a4b7a49e644c2da5247fa509038feb">view</a>]</li>
+<li>Repaired breaking @include for LaTeX output [<a href="http://github.com/doxygen/doxygen/commit/ab861c197c596f78c7aea4f45c0e1252de10fc1f">view</a>]</li>
+<li>Revert "Spelling correction for error message with USE_HTAGS usage" [<a href="http://github.com/doxygen/doxygen/commit/a888543ca5f3fd28121f7eea4dbd25898fa7be57">view</a>]</li>
+<li>Revert using container-based infra as sudo is needed :-( [<a href="http://github.com/doxygen/doxygen/commit/f089c3fa4f47dc8bedd25d9d857d004525ee82c0">view</a>]</li>
+<li>Reverted change that caused doxygen to return error code 2 when it produced a warning [<a href="http://github.com/doxygen/doxygen/commit/f9e6fe0bf3886be7e603083b3b200dbd60fbd529">view</a>]</li>
+<li>Rework the generation of packages DEB/RPM/... (CPack) [<a href="http://github.com/doxygen/doxygen/commit/8c0c80e44e1e9cb1ce4e88a3e1d01b65536dc60c">view</a>]</li>
+<li>Right alignment of  in page table of contents [<a href="http://github.com/doxygen/doxygen/commit/a653f7499929f3f0a5b68614dec91242fbc0edf5">view</a>]</li>
+<li>Small correction of errors in case of CSharp XML tags [<a href="http://github.com/doxygen/doxygen/commit/68dd27139e50e048f081549394e6fc6dc04fc699">view</a>]</li>
+<li>Small documentation corrections [<a href="http://github.com/doxygen/doxygen/commit/564c8cd257e0dd1797d94633a0e92ddc5a496540">view</a>]</li>
+<li>Spelling correction for error message with USE_HTAGS usage [<a href="http://github.com/doxygen/doxygen/commit/0d060c455207ab32092e5a7edcd5457bb00f4653">view</a>] and [<a href="http://github.com/doxygen/doxygen/commit/5cc45244002d1d7560233cfae01f9d5d735e1a3f">view</a>]</li>
+<li>Started with generating LaTeX output via the template engine [<a href="http://github.com/doxygen/doxygen/commit/02a0c353a8947290a3191aead59db08dc84766ce">view</a>]</li>
+<li>Stop when doxygen configuration file ("Doxyfile") cannot be read [<a href="http://github.com/doxygen/doxygen/commit/b8bd3d84590d9adee7084f066f0e3e8c75a99245">view</a>]</li>
+<li>Support flex-2.6.0 [<a href="http://github.com/doxygen/doxygen/commit/8c51120ad55b440b738ef0b96f8169d84a7ae88a">view</a>] and [<a href="http://github.com/doxygen/doxygen/commit/cf936efb8ae99dd297b6afb9c6a06beb81f5b0fb">view</a>]</li>
+<li>Support set in code highlighting [<a href="http://github.com/doxygen/doxygen/commit/1cbcce4ef3460f48ab9c8e9435eec21075dcc788">view</a>]</li>
+<li>Template enhancements and various other small fixes [<a href="http://github.com/doxygen/doxygen/commit/e58fb0a46f73f37d16859f43fda1eb5ba4a15c5d">view</a>]</li>
+<li>Title in case of USE_MDFILE_AS_MAINPAGE [<a href="http://github.com/doxygen/doxygen/commit/09251b805b3c9d96917fedebb3768945d7559b1e">view</a>]</li>
+<li>Tooltip can still contain < and > signs [<a href="http://github.com/doxygen/doxygen/commit/1df28fe4b9a0187f8fa6ed077e4a81002fa50fda">view</a>]</li>
+<li>Tweaked the htmlonly sections in the manual so it produces valid HTML output [<a href="http://github.com/doxygen/doxygen/commit/de03970396e6f7edec359e2b71f3d2aa9d6a6237">view</a>]</li>
+<li>Undo _doxygen to libdoxygen target change [<a href="http://github.com/doxygen/doxygen/commit/940048580f2d61a137e7abbb67b3aed567bfe865">view</a>]</li>
+<li>Updated instructions to toggle debugging flex code [<a href="http://github.com/doxygen/doxygen/commit/368f4f057be0ded4673be826c9a08cd771a023ce">view</a>]</li>
+<li>Updated italian translation and translator email address [<a href="http://github.com/doxygen/doxygen/commit/a9ad21b4e541d91c804ac39e393cc0c1db4f45f3">view</a>]</li>
+<li>Updated the Greek translation [<a href="http://github.com/doxygen/doxygen/commit/4e0b7f0b9a2a04d0bb5e66871da6d7ffa786836e">view</a>]</li>
+<li>Use CPack to generate rpm/deb packages [<a href="http://github.com/doxygen/doxygen/commit/ba6eb1478d24dc32d4e123951e2f62c75b4b88bd">view</a>]</li>
+<li>Use STATIC libraries to prevent them being shared [<a href="http://github.com/doxygen/doxygen/commit/37a148f6e35523fd2bbbdbc37e6ed838684c6d90">view</a>]</li>
+<li>Using tabu package for LaTeX tables [<a href="http://github.com/doxygen/doxygen/commit/647b6ac8669cd8ba1e8c60eeb3c2de961c7d6a1b">view</a>]</li>
+<li>[Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=755225">755225</a>] On Windows, generated layout is with UNIX EOL [<a href="http://github.com/doxygen/doxygen/commit/78a80001223af290c7c7321ad2d210fb3cd16f11">view</a>]</li>
+<li>[Doxygen-users] plugin / filter not behaving as expected [<a href="http://github.com/doxygen/doxygen/commit/0c7f182016c7c2604a484367738e76cb40c0541b">view</a>]</li>
+<li>add spaces like "Doyxgen"CN_SPC->"Doyxgen" CN_SPC [<a href="http://github.com/doxygen/doxygen/commit/35d1aa8bf9208302601fa96462e246c98aa0b0e5">view</a>]</li>
+<li>allow building with custom iconv on Windows [<a href="http://github.com/doxygen/doxygen/commit/3d684f6d123abdbf630bb19bc6095cc9d69efb68">view</a>]</li>
+<li>doc: generate Doxygen's documentation. [<a href="http://github.com/doxygen/doxygen/commit/3c4a1ea2ee56f2604c2277f13737d53b3a0b0353">view</a>]</li>
+<li>doc: put man pages under share/man/man1 [<a href="http://github.com/doxygen/doxygen/commit/95d28153779810dc95afafa38ed838f32516a1f4">view</a>]</li>
+<li>docparser: warn when finding a documented empty return type [<a href="http://github.com/doxygen/doxygen/commit/10989e2dade3bb35a421787c5315d2630d665842">view</a>]</li>
+<li>docs: add examples as a dependency of docs [<a href="http://github.com/doxygen/doxygen/commit/ec5fde6913935fbe2015220259b611a17a437de3">view</a>]</li>
+<li>doxyapp and CLANG linking [<a href="http://github.com/doxygen/doxygen/commit/a58a2cafbc136f7821b9313bd6c1413eaab3e868">view</a>]</li>
+<li>fixed for travis ci config file [<a href="http://github.com/doxygen/doxygen/commit/ecbb77b40892df8740476023545769ffbda6fd6f">view</a>]</li>
+<li>libpng warning: iCCP: known incorrect sRGB profile [<a href="http://github.com/doxygen/doxygen/commit/c82ac124812dd2f9a5e8b36fcdcf7daf20cfbdda">view</a>]</li>
+<li>rename build target _doxygen to libdoxygen [<a href="http://github.com/doxygen/doxygen/commit/4116648d3c62aee54c385644a4fe754ee7a4261d">view</a>]</li>
+<li>run_translator.cmake is no longer used [<a href="http://github.com/doxygen/doxygen/commit/45e153f2238d0fa031d147cfe207e52b913845eb">view</a>]</li>
+<li>runtests: Simplify dictionary usage [<a href="http://github.com/doxygen/doxygen/commit/95d99a4c857d7d5208d8faf974b01354a798eba4">view</a>]</li>
+</ul>
+<p>
+\endhtmlonly
+
+\subsection log_1_8_10 Release 1.8.10
+\htmlonly
+<b>(release date 27-06-2015)</b>
+<a name="1.8.10"></a>
+</p>
+<ul>
+<li>change the build system to use cmake [<a href="http://github.com/doxygen/doxygen/commit/2e099b1950eee2c3a0d5d8ae4b25575caeb938b1">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/ba9bb02abf6f6922a83beb2092e7bc270e6f25c1">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/635d8cf30e702bdf83fe5c96452f8f863d57bdee">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/51ee91560a9cbaac41cec536dcdeb3e4c32f139a">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/e775357ae71ecbf02dc93913a923567f31b03681">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/a0cd6a8e0c19a82e9662f96734c7ba21726794d0">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/0dc4eda500e803a65a10445719c97d7e523897da">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/22c0d75d45354979392db5db4e3195570c394e44">view</a>]</li>
+<li>Add support for basic XML syntax highlighting. [<a href="http://github.com/doxygen/doxygen/commit/a418518921ba7a99c7221ba7f40d2e791cb207c4">view</a>]</li>
+<li>Added documentation for ``` style fenced code block and more robust parsing [<a href="http://github.com/doxygen/doxygen/commit/39ba42c3b21d08ec606eee18ee8b64c67ec6a42a">view</a>]</li>
+<li>Added function arguments to the LaTeX toc [<a href="http://github.com/doxygen/doxygen/commit/f5e70723391bacc2d68c19d367ab414e70f786b4">view</a>]</li>
+<li>Added missing files and build instructions [<a href="http://github.com/doxygen/doxygen/commit/39228176c052fd293382dc9bc9b4b69b2a6af277">view</a>]</li>
+<li>Added missing libraries for building doxysearch on Windows [<a href="http://github.com/doxygen/doxygen/commit/84d94779e76681b63cdcbc362bbe0341cd39064d">view</a>]</li>
+<li>Added support for language codes [<a href="http://github.com/doxygen/doxygen/commit/eae07d978b524c787daeab911ca087b47a964577">view</a>]</li>
+<li>Added type constraint relations for Java generics to dot graphs and XML output [<a href="http://github.com/doxygen/doxygen/commit/080a465b1321ff93c05ce398cd18a577e0ebae4b">view</a>]</li>
+<li>Adding commands \hidecallgraph and \hidecallergraph [<a href="http://github.com/doxygen/doxygen/commit/073e9482a516c24a3d045da049941bfd432f3354">view</a>]</li>
+<li>Adjust test script for longer version number [<a href="http://github.com/doxygen/doxygen/commit/c7622971ee485279e8da7634207340ce18b69aaa">view</a>]</li>
+<li>Adjusted version in configure script [<a href="http://github.com/doxygen/doxygen/commit/cbd3fa183815191ac5f172a2bac62991642c0b5e">view</a>]</li>
+<li>Alignment of project name [<a href="http://github.com/doxygen/doxygen/commit/e7b356d2cb9320a363ac024d39b468e98b223b90">view</a>]</li>
+<li>Allow selection of specific translators to compile in at build time [<a href="http://github.com/doxygen/doxygen/commit/faef77a87cecd703e3629a35d2e22efb07e682a0">view</a>]</li>
+<li>Based on the report of Peter D. Barnes in the doxygen forum (http://doxygen.10944.n7.nabble.com/doxygen-1-8-9-1-upgrade-errors-td6990.html) [<a href="http://github.com/doxygen/doxygen/commit/9771b807cd776b37f6538dec085442218a5b6a09">view</a>]</li>
+<li>Better error message in case of IDL inconsistency [<a href="http://github.com/doxygen/doxygen/commit/a7eef85a89d8772b7ab97a4ba378cc7e78c988cc">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=659590">659590</a> - EXTRA_PACKAGES can't handle package options [<a href="http://github.com/doxygen/doxygen/commit/1c47dd436358ffc7bc76901cddc559b2d8ce233d">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/ad53cbab6474e11692f2ca1018a821d042df28e6">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=739680">739680</a> - Using HTML entities in PROJECT_NAME [<a href="http://github.com/doxygen/doxygen/commit/8e44571521391403e8d85f893acb926e021e926b">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742095">742095</a> - Missing documentation after nested C++11 unified initializer [<a href="http://github.com/doxygen/doxygen/commit/c1789f2e5d8421d6028c836ab66afecacff284ef">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742151">742151</a> - Bogus warning: citelist: Unexpected new line character [<a href="http://github.com/doxygen/doxygen/commit/5c321cbb6359bc1bb875729c08beba2edc084500">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742230">742230</a> - @todo paragraphs incorrectly placed in rtf output [<a href="http://github.com/doxygen/doxygen/commit/600d5859d7bcb94b08ef656fd427914766ae9afe">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742235">742235</a> - Bogus message with addtogroup [<a href="http://github.com/doxygen/doxygen/commit/b75af9180ae53f7c7abb94ccf906333169247785">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742408">742408</a> - Configuring doxyfile to only output docbook produces erroneous warning [<a href="http://github.com/doxygen/doxygen/commit/05fcf8decc25bd2f1a2e7867ee8e5d9da1f08933">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742427">742427</a> - latex compilation: \backmatter incompatible with COMPACT_LATEX=YES [<a href="http://github.com/doxygen/doxygen/commit/c9067c5bb9a1868e0963dc210cf3b7152c4aa79a">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742445">742445</a> - Wrong icons in TOC of CHM help [<a href="http://github.com/doxygen/doxygen/commit/8c97e0cd63bcf942ee5b43c9471055a4ea27551c">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=742899">742899</a> - <CAPTION> inside <TABLE> no longer works for LaTex output [<a href="http://github.com/doxygen/doxygen/commit/0599f92d06ff433446f34136ffe2f3d65d6bd109">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=743604">743604</a> - Duplicate anchors from tagfiles [<a href="http://github.com/doxygen/doxygen/commit/1f21c23c57c91ba6901c0de38bb236f7246e88c9">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=743605">743605</a> - Tagfile anchors not generated for enumeration values [<a href="http://github.com/doxygen/doxygen/commit/1d4f37cb13a75ca8bdc49be3558438104e7eef19">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=743675">743675</a> - Non-ascii characters are not emphasised [<a href="http://github.com/doxygen/doxygen/commit/8f67d4f63efd45b0d38502bdf68987d7fc1e92e9">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=744762">744762</a> - Using TAGFILES prevents symbol extraction [<a href="http://github.com/doxygen/doxygen/commit/a735498be5a572236755cc3da65bf4774cbac25c">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=745439">745439</a> - PATCH: please consider making doxygen output byte for byte identical between individual runs by default [<a href="http://github.com/doxygen/doxygen/commit/3f2e8a3067712b025623e4420e6eb161febfd42b">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=745481">745481</a> - Doxygen generates bad "More..." file links for functions within a namespace [<a href="http://github.com/doxygen/doxygen/commit/ea202be55d68af33917658e3fec169da3a7fa7a8">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=745870">745870</a> - [PATCH] QT4's qmake is titled differently on Fedora 21 [<a href="http://github.com/doxygen/doxygen/commit/3bd3ad9f8f4d010e42f0ba8eeab229f44b1ecb1c">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/a883f65ab94973d4c7948623186159f978517851">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=746226">746226</a> - last enum member not documented [<a href="http://github.com/doxygen/doxygen/commit/50a329c056a2676608f30321a3207ff17ab20abb">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=746417">746417</a> - Nested list in C# XML comments closes outer list prematurely [<a href="http://github.com/doxygen/doxygen/commit/2c679e7d39144dadef2e9fd25772f0e41586e18b">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/7a0522fafde300f36c3d5264f46c1f70cf35b7b9">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=746614">746614</a> - Bogus warning regarding nested comments [<a href="http://github.com/doxygen/doxygen/commit/e4c0036962d8fa0ea9c1e38dbdb5e91168201f22">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=746619">746619</a> - Bogus warnings in case of anonymous namespace and @todo [<a href="http://github.com/doxygen/doxygen/commit/298ab30b2a2aa0936f4683c9366afd44c00adc60">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=746734">746734</a> - Don't warn about missing documentation for deleted functions. [<a href="http://github.com/doxygen/doxygen/commit/796d6585be58d1c9112422a919f49d1998dc672c">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/ac576bd974ac27bc1f395e8ae6c77b19f800b6db">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=747111">747111</a> - Table of content incorrect with escaped symbols [<a href="http://github.com/doxygen/doxygen/commit/5cdf62661c88b5f0c135337da4d6e58581aad037">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=747780">747780</a> - man output should escape minus signs [<a href="http://github.com/doxygen/doxygen/commit/3608a668b3892eaa4f7b2e4b29b833ede24ceee7">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=748208">748208</a> - Bug #313527 regression - Enum in bitfield is not parsed properly. [<a href="http://github.com/doxygen/doxygen/commit/528bb8054ca362843630ec261ca6e6990a206081">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/7b2d77abb73288bdd48ca04720fd6779e0bf94c2">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=750016">750016</a> - FILE_PATTERNS ignores arbitrary extensions [<a href="http://github.com/doxygen/doxygen/commit/52cb086da66533332962f2bf9cb35772e980c092">view</a>]</li>
+<li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=751455">751455</a> - class scoped enum documentation appearing at group level instead of class level [<a href="http://github.com/doxygen/doxygen/commit/e4a9d06d7871f24dd6e37ecac6addae729e6d721">view</a>]</li>
+<li>Build fixes for windows build [<a href="http://github.com/doxygen/doxygen/commit/5446770855a8286092abdd91d9069cb3191c209d">view</a>]</li>
+<li>Bump copyright year [<a href="http://github.com/doxygen/doxygen/commit/e11b48785323017bf1d81e91e8133d7f3ba1f243">view</a>]</li>
+<li>Bump version in configure script [<a href="http://github.com/doxygen/doxygen/commit/97342f92e111d7aa3e423a128379a6018820ce6c">view</a>]</li>
+<li>Cleanup & adapt travis config [<a href="http://github.com/doxygen/doxygen/commit/5f67c67323bff27751ba07c417ba99180fa0d762">view</a>]</li>
+<li>Consistency in handling HTML and LaTeX in respect to header and footer [<a href="http://github.com/doxygen/doxygen/commit/be5cc75ffc2e0a95ecbf0ce8d918b070c276d3e5">view</a>]</li>
+<li>Correct string buffer sizes for RTF output, such that the string is always correctly sized. [<a href="http://github.com/doxygen/doxygen/commit/bc8e705cf90cecdff8a247264c249ffed1d2af4a">view</a>]</li>
+<li>Crash in case of non generic interface in Fortran [<a href="http://github.com/doxygen/doxygen/commit/7d3a2abf0137c5257eeb0a8e0f76381b79f1e7bb">view</a>]</li>
+<li>Documentation HTML Header, Footer, and Stylesheet changes [<a href="http://github.com/doxygen/doxygen/commit/1dded5c92a13f9db60fc630cbe5f2cc5ad9bede0">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/478207365d7f09f0e676a76f654502c084806e4e">view</a>]</li>
+<li>Documenting RESULT variable of Fortran FUNCTION [<a href="http://github.com/doxygen/doxygen/commit/21f9e87db8085fb1b5e0a9a9a25dee159b3fd324">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/4d52beec3760244d959ab4d5528aea1acba505e7">view</a>]</li>
+<li>Doxygen LaTeX / PDF links point to page 1 [<a href="http://github.com/doxygen/doxygen/commit/e34913dcbe0bee2c3e21d6e21b2bcc6970003a5c">view</a>]</li>
+<li>Enable relative paths referenced source files [<a href="http://github.com/doxygen/doxygen/commit/ed178335e8c123b58c4fee24766bceae0fc80aa2">view</a>]</li>
+<li>Escape "@" in names as it is not allowed in XML / Docbook names (comming from anon namespaces) [<a href="http://github.com/doxygen/doxygen/commit/65c35c435ae93d5f39c3ddec93008b2f544544ca">view</a>]</li>
+<li>Fix for bug 746673. [<a href="http://github.com/doxygen/doxygen/commit/effbbcc72295f5843377ddce2794bcf6e7000322">view</a>]</li>
+<li>Fix for building diagram example conditionally [<a href="http://github.com/doxygen/doxygen/commit/f415b624a6cf6b9e577ec6131a23cb4a0e830aaf">view</a>]</li>
+<li>Fix for issue 744670 [<a href="http://github.com/doxygen/doxygen/commit/0d684381ac40574f6a948c56eb2da0445c3ee3bf">view</a>]</li>
+<li>Fix for issue 744671 [<a href="http://github.com/doxygen/doxygen/commit/192f9e8bf78e10c9d97e08264b1c76c8aa4edf2b">view</a>]</li>
+<li>Fix for rendering the template parameters of members of variadic template classes. [<a href="http://github.com/doxygen/doxygen/commit/32093bcca82c7d3a4df4670f52340033e9f16b62">view</a>]</li>
+<li>Fix missing brief documentation for overload and specialization functions [<a href="http://github.com/doxygen/doxygen/commit/c604aef8a6465f38f8f04276194a66a4e044dc84">view</a>]</li>
+<li>Fix nesting of XML tag "literallayout" for docbook output of enums. [<a href="http://github.com/doxygen/doxygen/commit/3abac31c525e6cf6898a1e8deb5c73f2a2ff5a8a">view</a>]</li>
+<li>Fix parsing of ODL-style properties [<a href="http://github.com/doxygen/doxygen/commit/6a8bef8852eb22558b3559ebe96d9e06e6cadfa7">view</a>]</li>
+<li>Fix potential null pointer dereference in src/classdef.cpp [<a href="http://github.com/doxygen/doxygen/commit/5743848928ffaeccaaef24dac051aaa9acf2c4b7">view</a>]</li>
+<li>Fix potential null pointer dereference in src/context.cpp [<a href="http://github.com/doxygen/doxygen/commit/2690774f87b9fcb12b35153de82cde22248b3949">view</a>]</li>
+<li>Fixed a couple of cases where sharing string data could lead to corruption [<a href="http://github.com/doxygen/doxygen/commit/312bef563a5be72f6423377247db1b80044bf711">view</a>]</li>
+<li>Fixed code reachability bug found by coverity in translator_fi.h [<a href="http://github.com/doxygen/doxygen/commit/80d09775da9a99a3bc58704ffd055547c6b03043">view</a>]</li>
+<li>Fixed compilation issue on Windows [<a href="http://github.com/doxygen/doxygen/commit/d75455eef7c91f11c2b9061d9a086ce93c4231b2">view</a>]</li>
+<li>Fixed issue accessing uninitialized buffer under certain conditions. [<a href="http://github.com/doxygen/doxygen/commit/49f6c63aba4d77cd14fa205bee4bf427cefdaa44">view</a>]</li>
+<li>Fixed potential crash while generating dot graphs [<a href="http://github.com/doxygen/doxygen/commit/50f82c94b9bf1ff982f9ddd8b9a88fb91d9e0bec">view</a>]</li>
+<li>Fixed potential string buffer issue for dot graphs [<a href="http://github.com/doxygen/doxygen/commit/6b24aba8fce772d9e46e3174a655281eeb44ad84">view</a>]</li>
+<li>Fixed regression due to buffer resizing while generating RTF. [<a href="http://github.com/doxygen/doxygen/commit/a1f2872ef098cfcc526002b9c9d533da6f2775b5">view</a>]</li>
+<li>Fixed regression in argument processing [<a href="http://github.com/doxygen/doxygen/commit/ae8f618d140b4368045d286a682df3f6de7b2960">view</a>]</li>
+<li>Fixed type in printdocvisitor.h [<a href="http://github.com/doxygen/doxygen/commit/c9465bd210d8250a5439f22bf564c187cd45e968">view</a>]</li>
+<li>Fixed typos in comments. [<a href="http://github.com/doxygen/doxygen/commit/b82320a6f57519443c46e5e3044fef97b1f8f618">view</a>]</li>
+<li>Fixes for showing type constraint relations [<a href="http://github.com/doxygen/doxygen/commit/95375152974fa7e0e4d4cec7007d942dd5e9615e">view</a>]</li>
+<li>Fortran FUNCTION source code [<a href="http://github.com/doxygen/doxygen/commit/25a90990662449808c5ba58c243a7835d13ba750">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/e7a6a682137a82dbdf847b1879f320ece4f3642f">view</a>]</li>
+<li>Fortran: code color GOTO as flow keyword. [<a href="http://github.com/doxygen/doxygen/commit/8090675790ad9265bcffdf07ab4d48fc8c037276">view</a>]</li>
+<li>Fortran: fixed format position 73 and further is comment [<a href="http://github.com/doxygen/doxygen/commit/557ad21ce28d093044101eb8bee2c4df1621da7a">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/eb92c064b33bf9f303233210b9693215b0fb7f9d">view</a>]</li>
+<li>Fortran: warning message about not documented module member [<a href="http://github.com/doxygen/doxygen/commit/dcdd35ce2a0cda024525298a9a20d6c746539e6d">view</a>]</li>
+<li>Guarded debug prints against printing a NULL pointer. [<a href="http://github.com/doxygen/doxygen/commit/0831c71c05c9204839e187759f13303e64783730">view</a>]</li>
+<li>HTML entity &deg; gives problems in LaTeX [<a href="http://github.com/doxygen/doxygen/commit/072383ed1c6fcfff7a7619d92ce3a8cb0b91fff9">view</a>]</li>
+<li>Help message regarding layout file [<a href="http://github.com/doxygen/doxygen/commit/7569f42d95332a5948e9d35e94e88d56d11634a9">view</a>],[<a href="http://github.com/doxygen/doxygen/commit/ad0e5fe14dce093e3b00ca677849cacbc2d657b7">view</a>]</li>
+<li>Internal debug option -d lex is not described [<a href="http://github.com/doxygen/doxygen/commit/00a91ae9fabe7783260c7c3fcdfec5b1ead49350">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/ebe3e8ec4a09edbb8a5b2dde88b6c479b03c0be9">view</a>]</li>
+<li>Internal doxygen docs gives: warning: Unsupported xml/html tag <...> found [<a href="http://github.com/doxygen/doxygen/commit/e366acaf0c27ce43ec80a70c0667c27cd5ef9d29">view</a>]</li>
+<li>Missing cross reference link [<a href="http://github.com/doxygen/doxygen/commit/213e680537303959f29b2424d40d74ecf66cb3f6">view</a>]</li>
+<li>Patch fixing a typo in Pull Request 307 [<a href="http://github.com/doxygen/doxygen/commit/6913c67ff1f9f20a71333f78cacd87a9e0c7756f">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/eac0fd660bffe62ae29a190308bf21b21d49647b">view</a>]</li>
+<li>Prevent example.tag from being regenerated [<a href="http://github.com/doxygen/doxygen/commit/d49604f814ceb22f81571d8ca99540e62cfa979a">view</a>]</li>
+<li>Problem running tests under Windows [<a href="http://github.com/doxygen/doxygen/commit/9bd54df7ba7dd15783f5a9180c85a7137dcdbc08">view</a>]</li>
+<li>Remove the new line after @startuml in generated pu file [<a href="http://github.com/doxygen/doxygen/commit/edf8dbbbc17e65e2eb97b5c9b4763a04969017fe">view</a>]</li>
+<li>Remove unreachable code [<a href="http://github.com/doxygen/doxygen/commit/d3e7b06f3a82780083e27bb83360ed9496df9f8d">view</a>]</li>
+<li>Remove unused local and static global variables [<a href="http://github.com/doxygen/doxygen/commit/d03e4c2ae1864c6f27a4341449ce97133aeb6847">view</a>]</li>
+<li>Remove wrong </File> [<a href="http://github.com/doxygen/doxygen/commit/e8cef724a1f40896f9c6294d6f410e240b6365ee">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/efd55ae1787f8f7ec35761849dc7cfd3175f8b33">view</a>]</li>
+<li>Removed OS version check for MACOSX (was not used anywhere) [<a href="http://github.com/doxygen/doxygen/commit/1e3e9f03e746d4ac46c9c7b1b80e7e3100ee42f0">view</a>]</li>
+<li>Removed dbus XML parser, various refinements [<a href="http://github.com/doxygen/doxygen/commit/551012f2647c53d8532d638361011d003d5b81f3">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/bf4aee305879406d9057864ab7f8938e01ca8bd0">view</a>]</li>
+<li>Removed old build files, added install targets and other options [<a href="http://github.com/doxygen/doxygen/commit/7bcf8e9a379ec0599160e5562f07b93f8fb9557a">view</a>]</li>
+<li>Repair Doxygen generate invalid styleSheetFile and extensionsFile of RTF [<a href="http://github.com/doxygen/doxygen/commit/0d208bc1c9a32718a93eb9911220ba72ad27fb9a">view</a>]</li>
+<li>Replace to_c_cmd by resource compiler [<a href="http://github.com/doxygen/doxygen/commit/2e39e5c7c1427ac6b24c64b7ef01be8d5a20092b">view</a>]</li>
+<li>Restore deleted file [<a href="http://github.com/doxygen/doxygen/commit/dfe93f9fde39167eae2aeeab929641a9c56cc916">view</a>]</li>
+<li>Showing grey/gray in documentation [<a href="http://github.com/doxygen/doxygen/commit/320ebb35dd4a615a7a692d71de4587be9ce8b99b">view</a>]</li>
+<li>Suggestion to use stripPrefix has been implemented for RESULT. For consistency also implemented for arguments. [<a href="http://github.com/doxygen/doxygen/commit/610bdb67c4db775debf26d85091383938d946f3d">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/6720a714461b9454c7cdbae7ceff7eb735feeb3b">view</a>]</li>
+<li>Support diff that returns "No differences encountered" when comparing test results [<a href="http://github.com/doxygen/doxygen/commit/4716f426332d02eb6841c509658b8a709cce9318">view</a>]</li>
+<li>Support generating index-color PNG files [<a href="http://github.com/doxygen/doxygen/commit/a09ffed2f603699955c18c19e0d3e782fb61d93f">view</a>]</li>
+<li>Switched back to version 6.2 of JavaCC for VHDL parser generation. [<a href="http://github.com/doxygen/doxygen/commit/088896f27f460b6ac03c2d64df148e3617c1e519">view</a>]</li>
+<li>Tcl: fix for extra line breaks in source browser introduced by commit 312bef5 [<a href="http://github.com/doxygen/doxygen/commit/3cc116ba2250e6946773ec22c6c7c6557773d28e">view</a>]</li>
+<li>TranslatorSwedish updated [<a href="http://github.com/doxygen/doxygen/commit/eaa19e3a439a4652023b47b0cf47c7303484ef5d">view</a>]</li>
+<li>Update of search from "endless search to 'Character search: criterion. [<a href="http://github.com/doxygen/doxygen/commit/a0820f29e60be1555b5b0c92a975bf334b6f5258">view</a>]</li>
+<li>Update translator_cn.h [<a href="http://github.com/doxygen/doxygen/commit/a88d3549373990bfac09f936748577fc5c59d240">view</a>]</li>
+<li>Updated changelog for 1.8.9.1 [<a href="http://github.com/doxygen/doxygen/commit/f8671a4520350fe38f986fdd199c2344452e7a01">view</a>]</li>
+<li>Updated installation section of the manual [<a href="http://github.com/doxygen/doxygen/commit/db6a3ab2761a328e74fdccf243ff148af7623062">view</a>]</li>
+<li>Various VHDL related fixes [<a href="http://github.com/doxygen/doxygen/commit/34b00c442308efe169cc89fad62588fdce1d84e8">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/3eed7a5c5b330736b508c722c9614c774a678ef1">view</a>],
+[<a href="http://github.com/doxygen/doxygen/commit/530647f76a7660a406d102269dc041b00b0e3d4e">view</a>]</li>
+<li>Various minor changes [<a href="http://github.com/doxygen/doxygen/commit/f63d9ed958d2c06717434e1a90e6417cf2d60f6b">view</a>]</li>
+<li>Warning message multiple mainpages [<a href="http://github.com/doxygen/doxygen/commit/17fdd71a0f7a02e8b72eaf86d67bc142210a7059">view</a>]</li>
+<li>Warnings without filename [<a href="http://github.com/doxygen/doxygen/commit/da3faf6b93fd3eb4e751d2c0cbd4ed9ceae7922b">view</a>]</li>
+<li>add support for github flavored fenced code blocks [<a href="http://github.com/doxygen/doxygen/commit/288ea42fc27389160c20912003a7972e21195265">view</a>]</li>
+<li>added HHC.exe own output to the debug output when extcmd flag enabled [<a href="http://github.com/doxygen/doxygen/commit/4438e24b478de1fd97ccc81a3a9f7651124e1c63">view</a>]</li>
+<li>doc/translator.py -- minor updates [<a href="http://github.com/doxygen/doxygen/commit/1ccc93fd699b34b7a89acecf9e59a526a5972bb8">view</a>]</li>
+<li>drop #include <unistd.h> [<a href="http://github.com/doxygen/doxygen/commit/1dd0cf03f5bf173fa4ac3bb8279d12fff1b98eb7">view</a>]</li>
+<li>fix *.l for three backticks [<a href="http://github.com/doxygen/doxygen/commit/bb93db0d60fd4cd123dfc886ecd20167068db6ba">view</a>]</li>
+<li>fix enum brief description in RTF output [<a href="http://github.com/doxygen/doxygen/commit/87429a2609b822d2b08ec17fb2a20464a5043c9e">view</a>]</li>
+<li>fix for CHM TOC "Classes" entry to point to annotated file [<a href="http://github.com/doxygen/doxygen/commit/700a9ac3c177fdef25b9b00ed6bb5e0ea963d236">view</a>]</li>
+<li>fix for src/translator_tw.h by Gary Lee (translation cleaned) [<a href="http://github.com/doxygen/doxygen/commit/d101790db5e64a64f4db0e46391bbb1b0dadc8b1">view</a>]</li>
+<li>increase the size of l when result is modified [<a href="http://github.com/doxygen/doxygen/commit/dd0d738683029f80a42b6673e0b1b1228bebfce3">view</a>]</li>
+<li>move layout_default.xml to templates/html/ [<a href="http://github.com/doxygen/doxygen/commit/45ebb6ff4846255ad7209e3bec7cd4fe0544ffd5">view</a>]</li>
+<li>runtests.pl: mmn version has dash as separator [<a href="http://github.com/doxygen/doxygen/commit/f5efa2f383fe89b53bd8fc27b2116e8636417ebf">view</a>]</li>
+<li>specify that doxygen searches files in INPUT tag [<a href="http://github.com/doxygen/doxygen/commit/0971dc7771be1b386a204c3d11515f7d0f5af427">view</a>]</li>
+<li>sqlite3: add regexp searches to search.py [<a href="http://github.com/doxygen/doxygen/commit/13dd6d635e7ba2beb26a0d2ee8542ac63d1c7973">view</a>]</li>
+<li>sqlite3: add schema comments [<a href="http://github.com/doxygen/doxygen/commit/ef5d48d93f5565ebca9aae4ba9d6633c32719ecc">view</a>]</li>
+<li>sqlite3: fix constness [<a href="http://github.com/doxygen/doxygen/commit/90d89d8a2a2be931742c7291cd70e4a980035ae1">view</a>]</li>
+<li>version.py pass configure file path as parameter [<a href="http://github.com/doxygen/doxygen/commit/75e8f4c80ab5c06a33eaaf7ec587ee35ed9c1b1a">view</a>]</li>
+<li>xml: use STRIP_FROM_PATH on @file attributes. [<a href="http://github.com/doxygen/doxygen/commit/29ae707794042a97412eaa137fa7b30f2367294d">view</a>], [<a href="http://github.com/doxygen/doxygen/commit/5a0379944f8bdf883fdb25e94e0cdb1e5d2f4366">view</a>]</li>
+</ul>
+<p>
+\endhtmlonly
+
+\subsection log_1_8_9_1 Release 1.8.9.1
 \htmlonly
 <b>(release date 04-01-2015)</b>
-<a name="1.8.9"></a>
+<a name="1.8.9.1"></a>
+</p>
 <ul>
 <li>Fixed a couple of cases where sharing string data could lead to corruption [<a href="http://github.com/doxygen/doxygen/commit/312bef563a5be72f6423377247db1b80044bf711">view</a>]</li>
 <li>Various VHDL related fixes [<a href="http://github.com/doxygen/doxygen/commit/34b00c442308efe169cc89fad62588fdce1d84e8">view</a>]</li>
@@ -23,12 +335,14 @@
 <li>Suggestion to use stripPrefix has been implemented for RESULT. For consistency also implemented for arguments. [<a href="http://github.com/doxygen/doxygen/commit/6720a714461b9454c7cdbae7ceff7eb735feeb3b">view</a>]</li>
 <li>Switched back to version 6.2 of JavaCC for VHDL parser generation. [<a href="http://github.com/doxygen/doxygen/commit/088896f27f460b6ac03c2d64df148e3617c1e519">view</a>]</li>
 </ul>
+<p>
 \endhtmlonly
 
 \subsection log_1_8_9 Release 1.8.9
 \htmlonly
 <b>(release date 25-12-2014)</b>
 <a name="1.8.9"></a>
+</p>
 <ul>
 <li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634763">634763</a> - Fortran: external subroutine as dummy argument not recognized [<a href="http://github.com/doxygen/doxygen/commit/8f78eff7e8b2650f9a8364ff5c5b6925279e6b5a">view</a>]</li>
 <li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634763">634763</a> - Fortran: external subroutine as dummy argument not recognized [<a href="http://github.com/doxygen/doxygen/commit/fabd1194a2e3c2536dddc19945c568a690b17031">view</a>]</li>
@@ -111,13 +425,13 @@
 <li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=741417">741417</a> - Crash when building gtkmm documentation [<a href="http://github.com/doxygen/doxygen/commit/050fce2b73d6e4455808ab86da2fddcf2f26e9b5">view</a>]</li>
 <li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=741778">741778</a> - \cite confused by labels ending with a dot (improved warning message) [<a href="http://github.com/doxygen/doxygen/commit/78fd02dc41384d81baddf17ff0bb3431267452fc">view</a>]</li>
 <li>fix docbook output [<a href="http://github.com/doxygen/doxygen/commit/1a403d80160458091bab7c442e54f836c0b90bca">view</a>]
-    <ol><li>support other than english
-        <li>fix broken example link id
-        <li>fix incomplete TOC : no Classe etc.
-        <li>add brief description for Functions etc.
-        <li>Comply with REPEAT_BRIEF 
-        <li>Do not output duplicated contents when detailed descripton is missing.
-        <li>set table colwidth for Param/RetVal 
+    <ol><li>support other than english</li>
+        <li>fix broken example link id</li>
+        <li>fix incomplete TOC : no Classe etc.</li>
+        <li>add brief description for Functions etc.</li>
+        <li>Comply with REPEAT_BRIEF </li>
+        <li>Do not output duplicated contents when detailed descripton is missing.</li>
+        <li>set table colwidth for Param/RetVal</li>
     </ol>
 </li>
 <li>Add missing escape in doxysearch.cpp when result contained a double quote [<a href="http://github.com/doxygen/doxygen/commit/08c9689157d7edc5d8e3369ef96f2ccd4b01c10c">view</a>]</li>
@@ -202,11 +516,13 @@
 <li>various fixes and restructuring [<a href="http://github.com/doxygen/doxygen/commit/223e7de6478019c8eebcfd87085fe22d3bfeec0e">view</a>]</li>
 <li>Various latex problems [<a href="http://github.com/doxygen/doxygen/commit/fb4dad1e1d9774e92d1509d1c2d3f8cb341826a1">view</a>]</li>
 </ul>
+<p>
 \endhtmlonly
 \subsection log_1_8_8 Release 1.8.8
 \htmlonly
 <b>(release date 21-08-2014)</b>
 <a name="1.8.8"></a>
+</p>
 <h3>New features</h3>
 <ul>
 <li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=731947">731947</a> - Support for PlantUML [<a href="http://github.com/doxygen/doxygen/commit/7506404e646f1fcc5a26ca6fca91a7f65154f05a">view</a>]</li>
@@ -336,12 +652,14 @@
 <li>resolves the error of unbalanced tags opened/closed in docbook output: parser error : Opening and ending tag mismatch: para line 358 and tbody [<a href="http://github.com/doxygen/doxygen/commit/d7b0858e079419bb7ea862e16946218a9352d5b5">view</a>]</li>
 <li>winbuild/pack_the_distribution_for_windows.py minor updates [<a href="http://github.com/doxygen/doxygen/commit/6d969cab51f4c32784966a28b8b9d5fe2d5b2089">view</a>]</li>
 </ul>
+<p>
 \endhtmlonly
 
 \subsection log_1_8_7 Release 1.8.7
 \htmlonly
 <b>(release date 21-04-2014)</b>
 <a name="1.8.7"></a>
+</p>
 <ul>
 <li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=436885">436885</a> - c-source and h-source missing for latex [<a href="http://github.com/doxygen/doxygen/commit/d5d34325fb9bed776cf2b4facc0c341f701e780b">view</a>]</li>
 <li>Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625601">625601</a> - FORTRAN: recognition free versus fixed formatted code [<a href="http://github.com/doxygen/doxygen/commit/2dec1060623165057628ee678eb3580351922408">view</a>]</li>
@@ -507,257 +825,263 @@
 <li>util/patternMatch: break when pattern is found [<a href="http://github.com/doxygen/doxygen/commit/6d8c3184fadb1834223236b13471797089e4a004">view</a>]</li>
 <li>util/patternMatch: don't extract a QCString(QFileInfo) each time we QRegExp.match [<a href="http://github.com/doxygen/doxygen/commit/8991d11cc824f40c11a28ccc38c09e9b10f722c3">view</a>]</li>
 </ul>
+<p>
 \endhtmlonly
 
 \subsection log_1_8_6 Release 1.8.6
 \htmlonly
 <b>(release date 24-12-2013)</b>
 <a name="1.8.6"></a>
+</p>
 <h3>Bug fixes</h3>
 <ul>
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=154880">154880</a> - if "using namespace" used, call of a static member function in C++ is not recognized or recognized wrong
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=647517">647517</a>  - make install prepends a slash to the installation path Removed superfluous /
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668424">668424</a> - HTML links in RTF output are broken
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=683897">683897</a> - class list not sorted?
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692004">692004</a> - show includes for free functions
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=693537">693537</a> - Create possibility to keep user comments in Doxyfile
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701949">701949</a> - Latex: Hyperlinks for \secreflist / \refitem
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702265">702265</a> - Generated Doxyfile differs from result of doxygen -u (partial fix)
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705910">705910</a> - Indexing and searching cannot treat non ASCII identifiers
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706520">706520</a> - Fortran: in body documentation lands on wrong place In some cases, in propriety code, with in body Fortran documentation doxygen crashed. I REOPENED Bug_706520 for this
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706804">706804</a> - Fortran: Doxygen mixes up function-attributes with the return type test string should not be equal to "function" but should contain "function"
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706813">706813</a> - RPM build via spec file fails
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706874">706874</a> - Doxygen crash if missing new-line in a snippet
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706916">706916</a> - C++ exception specifications are no longer parsed correctly
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707102">707102</a> - update the Japanese translation
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707353">707353</a> - Accept IDs using unicode(non ASCII) characters in python codes
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707389">707389</a> - GENERATE_TREEVIEW=YES disables touch scrolling with Android 3.x
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707431">707431</a> - Cannot @ref or @link C++ operator overloads
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707483">707483</a> - Wrong page number and header in pdf output
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707554">707554</a> - When I use @INCLUDE DoxyWizard is closed Current directory was not changed at the right time so the include files could not be found in the "current" directory (i.e. the directory where the Doxyfile resides too, as this directory is shown as the current directory in the doxywizard). This is also important when the doxywizard is started from a shortcut.
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707567">707567</a> - Asterisks in comment wrongly displayed for @code
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707641">707641</a> - `FILTER_SOURCE_FILES=YES` required to build CALL_GRAPHS https://bugzilla.gnome.org/show_bug.cgi?id=707641
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707685">707685</a> - Fortran: error message when missing last EOL In case the original buffer in either fixed or free format code does not contain an EOL as last character, add it.
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707713">707713</a> - Add support for dia diagrams
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707825">707825</a> - Const treatment
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707925">707925</a> - False warning for Java "warning: missing ( in exception list on member"
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707985">707985</a> - Strange output when : appended to an parameter description
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707995">707995</a> - @copydoc not working for const member overloads
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=708446">708446</a> - Deprecated list breaks HTML tree with xhtml extension
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=708455">708455</a> - Enabling INLINE_SIMPLE_STRUCTS messes up Data Structures in tree
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=708806">708806</a> - Wrong path to graph_legend figure in graph_legend.html when CREATE_SUBDIRS = YES
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709052">709052</a> - Templated and non-templated method mixup documentation
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709226">709226</a> - Struct member fields not documented with INLINE_SIMPLE_STRUCTS
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709526">709526</a> - C++ parsing problem with operators <<, <, >, >> inside templates
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709706">709706</a> - Terminating C comments within markdown files breaks aliases
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709780">709780</a> - Copying of files via \image tag can get confused by symlinks at the destination
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709803">709803</a> - Generated hhc file contains an error for a section of a mainpage
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709845">709845</a> - Fortran: problem with types with name starting with is
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709870">709870</a> - Broken links on members HTML page when using BUILTIN_STL_SUPPORT
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709921">709921</a> - position of linebreak in template argument list affects inheritance relation
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=710917">710917</a> - Segfault while parsing a C file
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=710998">710998</a> - latex_count=5 is not enough
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711004">711004</a> - Vertical bars cannot be sent straight to makeindex
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711097">711097</a> - Compiler warnings because char is unsigned on ARM/PPC: "comparison is always false"
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711378">711378</a> - Nested Aliases fail when the nested alias has two or more arguments.
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711639">711639</a> - [PATCH] #include does not work with absolute paths
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711723">711723</a> - Comment /**/ confuses doxygen
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711787">711787</a> - Long initialization line in C stops doxygen An extra "breakpoint" in the input string has been created in the form of a , (comma), so for initialization lines the line will be shorter and the , (comma) will be copied later on.
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=712795">712795</a> - segmentation fault in memberdef.cpp
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=712819">712819</a> - Some external namespaces appear in list despite having ALLEXTERNALS = NO
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=715172">715172</a> - Consistently document Fortran's equivalent function bodies
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719389">719389</a> - HTML escaping incorrectly applied in source tooltips
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719422">719422</a> - private java class is mentioned in inherited by list of super class
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719463">719463</a> - Invalid null key and segmentation fault
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719489">719489</a> - Label "abstract" instead of "pure virtual" for Java language
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719525">719525</a> - Can't build because the definitions of ***YY_flex_debug are missing.
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719591">719591</a> - expand_as_defined macro does not properly work
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719639">719639</a> - @xrefitem with empty heading string
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=720046">720046</a> - Document inline objective-C blocks
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=720092">720092</a> - USE_MDFILE_AS_MAINPAGE doesn't work if full path is specified.
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=720580">720580</a> - inline source browser shows wrong code with muilti-line c++11's raw strings
-<li> Add support for honoring svg image format preference in msc
-<li> Added @parblock and @endparblock commands
-<li> Added compile support for Mavericks
-<li> Added fix to avoid errors with older compilers.
-<li> Added generated files to gitignore
-<li> Added missing docs tag
-<li> Added missing pthread lib to doxyapp
-<li> Added missing space after @parblock
-<li> Added rudimentary support for Django like template system for output creation.
-<li> Added the possibility to specify the -d option in the Visual studio GUI on windows for the lex rules
-<li> Adjust internationalization part to current situation
-<li> Alignment of @code and @verbatim section When having a code and a verbatim section the boxes are not alligned, this patch fixes this. Example code, aa.c; standard Doxyfile: /** \file
-<li> Allow @ref to unlabeled markdown page by name, i.e. @ref mypage.md
-<li> Allow links to other markdown pages of the form [link text](page.md)
-<li> Avoid accessing uninitialized memory in fileToString
-<li> Build problem with unistd.h and Cygwin The standard g++ compiler under windows (win32-g++) has unistd.gh file; Microsoft windows does not have it, therfore it is better to use the winbuild directory in case of windows adn no dependency otherwise
-<li> Consistency in language part of the documentation Made documentation more inline with other parts of the documentation (regarding the way e.g. filenames are presented) Corrected some spelling errors Corrected the warning in the language.doc by placing ta reference to the files from which language.doc is generated Corrected the color for the languages that are still v1.4.6 (language name now also red  in stead of a pink background, was confusing with languages that were 1.5 / 1.6 com [...]
-<li> Corrected some inconsistencies in the comments
-<li> Debug output for lexical analyzer
-<li> Deleted generated files from source repository
-<li> Doxygen didn't allow @ref to parameters of type reference to an array.
-<li> Doxysearch under Cygwin should not have extension cgi.exe but just .cgi
-<li> Esperanto not supported by htmlhelp compiler reverting for esperanto to default language (US English)
-<li> Fixed a number of compiler warnings reported by newer clang compiler
-<li> Fixed compilation issues in doxyapp
-<li> Fixed compile warning
-<li> Fixed compiler warning related to implicit size_t to int conversion
-<li> Fixed constness warning
-<li> Fixed invalid if statement found by cppcheck
-<li> Fixed issue with Romanian translator preventing treeview from working
-<li> Fixed regression autolinking C# template such as MyGenericClass<T>.g()
-<li> Fixed regression in argument matching for the template example
-<li> Fortran added keyword IMPURE
-<li> French translator up-to-date.
-<li> Internal documentation for debug possibilities Documentation regarding usage of -d option with [f]lex Initial documentation regarding the -d options with doxygen
-<li> LaTeX: Fix ToC entries of index/bibliography
-<li> Made lexer rule explicit
-<li> Make Python detection in configure work with version older than 2.7
-<li> Minor layout tweaks and extra guard
-<li> More fixes for the Windows build
-<li> Patch regarding generating the rules file for the windows build regarding languages, some inconsistencies in the (windows) build system, corrections to some spelling.
-<li> Regenerated language.doc
-<li> Removed japanese characters in maintainers.txt as they break the build
-<li> Removed redundant backslashes in regexp pattern
-<li> Report details about fork() failure in logs.
-<li> Russian translator updated, new Russian maintainer added.
-<li> Small spelling correction to generate an rtf extensions file -> to generate a rtf extensions file
-<li> Some texts can be independent of \htmlonly / \latexonly
-<li> Space missing in error message. the word 'in' and the vale of filesOption were concatenated
-<li> This patch contains changes regarding the build system so that the *nix and Windows systems use the same information (consistency). Some use names routine names have been changed (from .l files with -P option) to reflect the file name that generated the routines, this makes it easier to create a general procedure. A number of include / header files are files are generated from different file types (html, xml, js), due some limitations of the windows build system the generated file n [...]
-<li> Updated Visual Studio project files to include new source files
-<li> Usage of the -d opion corrected Giving an error when a wrong -d option is given. Made some error mesages more consistent. Corrected usage of the exit call, in case of an error: exit(1) otherwise exit(0). A closer look should be made on exitDoxygen as it does not contain any exit statements and it is unclear (to me) when it is used.
-<li> VHDL-2008 and arrays on unconstrained elements
-<li> consider currentFile when searching for global symbols
-<li> doc/language.doc generated from the updated sources (bgcolored)
-<li> doc/language.tpl -- UTF-8 reflected in the langhowto template
-<li> doc/language.tpl -- trailing spaces removed
-<li> doc/translator.py -- coloured status in HTML
-<li> doxygen /** style creates spurious code blocks with markdown enabled
-<li> doxygen version 1.8.5 throws many "Internal Inconsistency" errors when parsing .idl files
-<li> doxygen.sty.h was not ignored and not included/generated properly
-<li> testing dir was missing from 'make archive'
-<li> usage: make -d print dev doxygen options
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=154880">154880</a> - if "using namespace" used, call of a static member function in C++ is not recognized or recognized wrong</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=647517">647517</a>  - make install prepends a slash to the installation path Removed superfluous /</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668424">668424</a> - HTML links in RTF output are broken</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=683897">683897</a> - class list not sorted?</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692004">692004</a> - show includes for free functions</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=693537">693537</a> - Create possibility to keep user comments in Doxyfile</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701949">701949</a> - Latex: Hyperlinks for \secreflist / \refitem</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702265">702265</a> - Generated Doxyfile differs from result of doxygen -u (partial fix)</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705910">705910</a> - Indexing and searching cannot treat non ASCII identifiers</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706520">706520</a> - Fortran: in body documentation lands on wrong place In some cases, in propriety code, with in body Fortran documentation doxygen crashed. I REOPENED Bug_706520 for this</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706804">706804</a> - Fortran: Doxygen mixes up function-attributes with the return type test string should not be equal to "function" but should contain "function"</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706813">706813</a> - RPM build via spec file fails</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706874">706874</a> - Doxygen crash if missing new-line in a snippet</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706916">706916</a> - C++ exception specifications are no longer parsed correctly</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707102">707102</a> - update the Japanese translation</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707353">707353</a> - Accept IDs using unicode(non ASCII) characters in python codes</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707389">707389</a> - GENERATE_TREEVIEW=YES disables touch scrolling with Android 3.x</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707431">707431</a> - Cannot @ref or @link C++ operator overloads</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707483">707483</a> - Wrong page number and header in pdf output</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707554">707554</a> - When I use @INCLUDE DoxyWizard is closed Current directory was not changed at the right time so the include files could not be found in the "current" directory (i.e. the directory where the Doxyfile resides too, as this directory is shown as the current directory in the doxywizard). This is also important when the doxywizard is started from a shortcut.</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707567">707567</a> - Asterisks in comment wrongly displayed for @code</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707641">707641</a> - `FILTER_SOURCE_FILES=YES` required to build CALL_GRAPHS https://bugzilla.gnome.org/show_bug.cgi?id=707641</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707685">707685</a> - Fortran: error message when missing last EOL In case the original buffer in either fixed or free format code does not contain an EOL as last character, add it.</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707713">707713</a> - Add support for dia diagrams</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707825">707825</a> - Const treatment</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707925">707925</a> - False warning for Java "warning: missing ( in exception list on member"</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707985">707985</a> - Strange output when : appended to an parameter description</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=707995">707995</a> - @copydoc not working for const member overloads</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=708446">708446</a> - Deprecated list breaks HTML tree with xhtml extension</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=708455">708455</a> - Enabling INLINE_SIMPLE_STRUCTS messes up Data Structures in tree</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=708806">708806</a> - Wrong path to graph_legend figure in graph_legend.html when CREATE_SUBDIRS = YES</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709052">709052</a> - Templated and non-templated method mixup documentation</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709226">709226</a> - Struct member fields not documented with INLINE_SIMPLE_STRUCTS</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709526">709526</a> - C++ parsing problem with operators <<, <, >, >> inside templates</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709706">709706</a> - Terminating C comments within markdown files breaks aliases</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709780">709780</a> - Copying of files via \image tag can get confused by symlinks at the destination</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709803">709803</a> - Generated hhc file contains an error for a section of a mainpage</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709845">709845</a> - Fortran: problem with types with name starting with is</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709870">709870</a> - Broken links on members HTML page when using BUILTIN_STL_SUPPORT</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=709921">709921</a> - position of linebreak in template argument list affects inheritance relation</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=710917">710917</a> - Segfault while parsing a C file</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=710998">710998</a> - latex_count=5 is not enough</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711004">711004</a> - Vertical bars cannot be sent straight to makeindex</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711097">711097</a> - Compiler warnings because char is unsigned on ARM/PPC: "comparison is always false"</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711378">711378</a> - Nested Aliases fail when the nested alias has two or more arguments.</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711639">711639</a> - [PATCH] #include does not work with absolute paths</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711723">711723</a> - Comment /**/ confuses doxygen</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=711787">711787</a> - Long initialization line in C stops doxygen An extra "breakpoint" in the input string has been created in the form of a , (comma), so for initialization lines the line will be shorter and the , (comma) will be copied later on.</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=712795">712795</a> - segmentation fault in memberdef.cpp</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=712819">712819</a> - Some external namespaces appear in list despite having ALLEXTERNALS = NO</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=715172">715172</a> - Consistently document Fortran's equivalent function bodies</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719389">719389</a> - HTML escaping incorrectly applied in source tooltips</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719422">719422</a> - private java class is mentioned in inherited by list of super class</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719463">719463</a> - Invalid null key and segmentation fault</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719489">719489</a> - Label "abstract" instead of "pure virtual" for Java language</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719525">719525</a> - Can't build because the definitions of ***YY_flex_debug are missing.</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719591">719591</a> - expand_as_defined macro does not properly work</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=719639">719639</a> - @xrefitem with empty heading string</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=720046">720046</a> - Document inline objective-C blocks</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=720092">720092</a> - USE_MDFILE_AS_MAINPAGE doesn't work if full path is specified.</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=720580">720580</a> - inline source browser shows wrong code with muilti-line c++11's raw strings</li>
+<li> Add support for honoring svg image format preference in msc</li>
+<li> Added @parblock and @endparblock commands</li>
+<li> Added compile support for Mavericks</li>
+<li> Added fix to avoid errors with older compilers.</li>
+<li> Added generated files to gitignore</li>
+<li> Added missing docs tag</li>
+<li> Added missing pthread lib to doxyapp</li>
+<li> Added missing space after @parblock</li>
+<li> Added rudimentary support for Django like template system for output creation.</li>
+<li> Added the possibility to specify the -d option in the Visual studio GUI on windows for the lex rules</li>
+<li> Adjust internationalization part to current situation</li>
+<li> Alignment of @code and @verbatim section When having a code and a verbatim section the boxes are not alligned, this patch fixes this. Example code, aa.c; standard Doxyfile: /** \file</li>
+<li> Allow @ref to unlabeled markdown page by name, i.e. @ref mypage.md</li>
+<li> Allow links to other markdown pages of the form [link text](page.md)</li>
+<li> Avoid accessing uninitialized memory in fileToString</li>
+<li> Build problem with unistd.h and Cygwin The standard g++ compiler under windows (win32-g++) has unistd.gh file; Microsoft windows does not have it, therfore it is better to use the winbuild directory in case of windows adn no dependency otherwise</li>
+<li> Consistency in language part of the documentation Made documentation more inline with other parts of the documentation (regarding the way e.g. filenames are presented) Corrected some spelling errors Corrected the warning in the language.doc by placing ta reference to the files from which language.doc is generated Corrected the color for the languages that are still v1.4.6 (language name now also red  in stead of a pink background, was confusing with languages that were 1.5 / 1.6 com [...]
+<li> Corrected some inconsistencies in the comments</li>
+<li> Debug output for lexical analyzer</li>
+<li> Deleted generated files from source repository</li>
+<li> Doxygen didn't allow @ref to parameters of type reference to an array.</li>
+<li> Doxysearch under Cygwin should not have extension cgi.exe but just .cgi</li>
+<li> Esperanto not supported by htmlhelp compiler reverting for esperanto to default language (US English)</li>
+<li> Fixed a number of compiler warnings reported by newer clang compiler</li>
+<li> Fixed compilation issues in doxyapp</li>
+<li> Fixed compile warning</li>
+<li> Fixed compiler warning related to implicit size_t to int conversion</li>
+<li> Fixed constness warning</li>
+<li> Fixed invalid if statement found by cppcheck</li>
+<li> Fixed issue with Romanian translator preventing treeview from working</li>
+<li> Fixed regression autolinking C# template such as MyGenericClass<T>.g()</li>
+<li> Fixed regression in argument matching for the template example</li>
+<li> Fortran added keyword IMPURE</li>
+<li> French translator up-to-date.</li>
+<li> Internal documentation for debug possibilities Documentation regarding usage of -d option with [f]lex Initial documentation regarding the -d options with doxygen</li>
+<li> LaTeX: Fix ToC entries of index/bibliography</li>
+<li> Made lexer rule explicit</li>
+<li> Make Python detection in configure work with version older than 2.7</li>
+<li> Minor layout tweaks and extra guard</li>
+<li> More fixes for the Windows build</li>
+<li> Patch regarding generating the rules file for the windows build regarding languages, some inconsistencies in the (windows) build system, corrections to some spelling.</li>
+<li> Regenerated language.doc</li>
+<li> Removed japanese characters in maintainers.txt as they break the build</li>
+<li> Removed redundant backslashes in regexp pattern</li>
+<li> Report details about fork() failure in logs.</li>
+<li> Russian translator updated, new Russian maintainer added.</li>
+<li> Small spelling correction to generate an rtf extensions file -> to generate a rtf extensions file</li>
+<li> Some texts can be independent of \htmlonly / \latexonly</li>
+<li> Space missing in error message. the word 'in' and the vale of filesOption were concatenated</li>
+<li> This patch contains changes regarding the build system so that the *nix and Windows systems use the same information (consistency). Some use names routine names have been changed (from .l files with -P option) to reflect the file name that generated the routines, this makes it easier to create a general procedure. A number of include / header files are files are generated from different file types (html, xml, js), due some limitations of the windows build system the generated file n [...]
+<li> Updated Visual Studio project files to include new source files</li>
+<li> Usage of the -d opion corrected Giving an error when a wrong -d option is given. Made some error mesages more consistent. Corrected usage of the exit call, in case of an error: exit(1) otherwise exit(0). A closer look should be made on exitDoxygen as it does not contain any exit statements and it is unclear (to me) when it is used.</li>
+<li> VHDL-2008 and arrays on unconstrained elements</li>
+<li> consider currentFile when searching for global symbols</li>
+<li> doc/language.doc generated from the updated sources (bgcolored)</li>
+<li> doc/language.tpl -- UTF-8 reflected in the langhowto template</li>
+<li> doc/language.tpl -- trailing spaces removed</li>
+<li> doc/translator.py -- coloured status in HTML</li>
+<li> doxygen /** style creates spurious code blocks with markdown enabled</li>
+<li> doxygen version 1.8.5 throws many "Internal Inconsistency" errors when parsing .idl files</li>
+<li> doxygen.sty.h was not ignored and not included/generated properly</li>
+<li> testing dir was missing from 'make archive'</li>
+<li> usage: make -d print dev doxygen options</li>
 </ul>
+<p>
 \endhtmlonly
 
 \subsection log_1_8_5 Release 1.8.5
 \htmlonly
 <b>(release date 23-08-2013)</b>
 <a name="1.8.5"></a>
+</p>
 <h3>Changes</h3>
 <ul>
 <li>Doxygen's source code is now managed using git and GitHub. Automatic builds
-    and regression tests are scheduled via Travis CI.
+    and regression tests are scheduled via Travis CI.</li>
 <li>Configuration data for the config file, the documentation, and the wizard
-    are now produced from a single source (thanks to Albert)
-<li>All translation files have been migrated to UTF-8 (thanks to Petr Prikryl)
-<li>Added black box testing framework and a set of tests.
+    are now produced from a single source (thanks to Albert)</li>
+<li>All translation files have been migrated to UTF-8 (thanks to Petr Prikryl)</li>
+<li>Added black box testing framework and a set of tests.</li>
 </ul>
 <h3>New features</h3>
 <ul>
-<li>Added SOURCE_TOOLTIPS option for advanced tooltip support while source browsing.
+<li>Added SOURCE_TOOLTIPS option for advanced tooltip support while source browsing.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668007">668007</a> - HTML commands - documentation of </dd> tag missing
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676879">676879</a> - parameter on doxywizard manual Added sentenc in respect to possible argument for doxywizard Added images to the LaTex / pdf version of the manual
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=684324">684324</a> - Strange behavior when placing cite within brief. 
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688858">688858</a> - SHORT_NAMES break references to \page in PDF output
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691315">691315</a> - Line breaks are not copied/displayed properly when using @copydoc. 
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691830">691830</a> - Logical confusion with DISABLE_INDEX and GENERATE_TREEVIEW
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694147">694147</a> - #undef is ignored by doxygen
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=698998">698998</a> - vhdldocgen fails to generate proper latex for VHDL record type
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700385">700385</a> - Incorrectly parsed Q_PROPERTY with 'unsigned int' type
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700646">700646</a> - XML output does not handle HTML entities in titles
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700693">700693</a> - Duplicate entry for class template member function with no parameter
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700696">700696</a> - Template static member functions duplicated as non-static public
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700709">700709</a> - typedef warning when "using" some operator functions
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700710">700710</a> - Docbook output produces invalid XML for <programlisting> elements
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700740">700740</a> - Doxygen does not create links on C++ 11 style enum classes
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700788">700788</a> - support @cite within brief description.
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700908">700908</a> - code after \@cond is removed
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701295">701295</a> - Doxygen 1.8.4 goes into an endless loop
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701314">701314</a> - URLs are not created on C# classes in some cases
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701550">701550</a> - Error List window in Visual Studio no longer recognizes doxygen warnings
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701771">701771</a> - EXPAND_AS_DEFINED not working with some project structures
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701919">701919</a> - VHDL cross-references fail when unpaired apostrophe present
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702066">702066</a> - VHDL: Bad HTML formatting when using inline sources
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702170">702170</a> - Missing space before optional option in method argument list
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702189">702189</a> - Markdown and @image
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702491">702491</a> - UTF-16LE BOM not handled by source browser and \snippet
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702590">702590</a> - Crash with TAB_SIZE=-1
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702676">702676</a> - Closing ) of function in function documentation is in wrong color
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703574">703574</a> - Add configure options to enable static SQLite and non-standard SQLite
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703112">703112</a> - Backward documentation comments are not allowed in Fortran type-bound procedures
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703133">703133</a> - "operator--()" transformed to "operator&ndash;()" in @copydoc
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703170">703170</a> - Segmentation fault parsing a fortran file
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703213">703213</a> - Can't use @ref instead of \ref with msc
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703301">703301</a> - Misleading warning about DOT font
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703791">703791</a> - Out-of-line docs for class template specialisations failing
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704079">704079</a> - Generated XML is malformed
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704172">704172</a> - Nested Aliases fail when the nested alias has two or more arguments.
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704412">704412</a> - doxygen don't hide private Inherited Members
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704971">704971</a> - Can't build with MinGW
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704973">704973</a> - Doxywizard can't show file names using non-ASCII(Unicode)
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705190">705190</a> - Incorrectly parsed Q_PROPERTY with 'long long' or 'long int' type
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705217">705217</a> - Can't use unicode characters to execute external commands
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705218">705218</a> - QRegExp doesn't work with 80-FF
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705219">705219</a> - Accept IDs using unicode for C/C++ preprocessor
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705586">705586</a> - @code tag as the last line of a comment block causes the parser to hang
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705702">705702</a> - Post-comment blocks on C++11 using definitions attach to following entity
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706236">706236</a> - Confusing use of GENERATE_TAGFILE
-<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706520">706520</a> - Fortran: in body documentation lands on wrong place
-<li> Small typo correceted in doxywizard_usage.doc Generated config.doc file in git is not identical to the generated one
-<li> Various improvements to the (still experimental) sqlite3 support (thanks to Adrian Negreanu)
-<li> jquery: use the env MINIFIER if specified
-<li> Some words now in code style __attribute__ was seen (markdown) as the bold word attribute Reformulation of a sentence due to a not nice split of word (__declspec was split directly after __ in pdf)
-<li> Extended list with supported options for automatic link generation
-<li> Added -v option (analogous to --version). In case option started with -- and is not a known valuue (help or version) and error is given instead of starting Doxygen
-<li> Fixed regression when nested class were processed before their parent
-<li> Minor changes to the way the code for config options is generated (thanks to Albert for the patch)
-<li> Brief description did not appear in the page index, when a page did not have any details.
-<li> Using & in the project name caused invalid HTML and LaTeX output
-<li> Fixed regression caused by the patch for bug 705219
-<li> Fixed issue running dot on files with non-ascii characters
-<li> Delayed expanding the HTML navigation tree until after the page has loaded
-<li> Made some fixed to the configure script for Cygwin (thanks to David Stacey)
-<li> config.xml is now used to generate configoptions.cpp and config.doc
-<li> Fixed whitespace issue when using \overload without arguments
-<li> Avoid space in the output after \n command following by a newline.
-<li> Fixed problem handling C comments inside a \code block.
-<li> Improved handling of \internal and \endinternal
-<li> Removed extra newline when reading in an input file
-<li> Make XML output adhere to MAX_INITIALIZER_LINES
-<li> Fixed issue handling \elseif after \ifnot
-<li> Fixed regression that could cause double nested classes
-<li> Fixed issue handling \docbookonly..\enddocbookonly section
-<li> The language specifier in e.g. \code{.py} was ignored for the XML output
-<li> Fix reference to scoped enum imported via a tag file.
-<li> Replaced utf8 character that broke latex compilation of the manual
-<li> Fixed unused parameter warnings
-<li> Add support for writing and importing C++11 style enums to and from tag files
-<li> Fixed regression introduced by fixed bug Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700740">700740</a>
-<li> Fixed type in function name
-<li> Remove some unneeded and still enabled debug info
-<li> Included fix for "Constant Groups" regression on file pages (thanks to Michael Stahl) 
-<li> Add scopes to Fortran prototype name parsing (thanks to Oleg Batrashev).
-<li> Prototype scan for function, does not yet catch parameter types (thanks to Oleg Batrashev).
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668007">668007</a> - HTML commands - documentation of </dd> tag missing</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676879">676879</a> - parameter on doxywizard manual Added sentenc in respect to possible argument for doxywizard Added images to the LaTex / pdf version of the manual</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=684324">684324</a> - Strange behavior when placing cite within brief. </li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688858">688858</a> - SHORT_NAMES break references to \page in PDF output</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691315">691315</a> - Line breaks are not copied/displayed properly when using @copydoc. </li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691830">691830</a> - Logical confusion with DISABLE_INDEX and GENERATE_TREEVIEW</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694147">694147</a> - #undef is ignored by doxygen</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=698998">698998</a> - vhdldocgen fails to generate proper latex for VHDL record type</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700385">700385</a> - Incorrectly parsed Q_PROPERTY with 'unsigned int' type</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700646">700646</a> - XML output does not handle HTML entities in titles</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700693">700693</a> - Duplicate entry for class template member function with no parameter</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700696">700696</a> - Template static member functions duplicated as non-static public</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700709">700709</a> - typedef warning when "using" some operator functions</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700710">700710</a> - Docbook output produces invalid XML for <programlisting> elements</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700740">700740</a> - Doxygen does not create links on C++ 11 style enum classes</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700788">700788</a> - support @cite within brief description.</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700908">700908</a> - code after \@cond is removed</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701295">701295</a> - Doxygen 1.8.4 goes into an endless loop</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701314">701314</a> - URLs are not created on C# classes in some cases</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701550">701550</a> - Error List window in Visual Studio no longer recognizes doxygen warnings</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701771">701771</a> - EXPAND_AS_DEFINED not working with some project structures</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701919">701919</a> - VHDL cross-references fail when unpaired apostrophe present</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702066">702066</a> - VHDL: Bad HTML formatting when using inline sources</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702170">702170</a> - Missing space before optional option in method argument list</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702189">702189</a> - Markdown and @image</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702491">702491</a> - UTF-16LE BOM not handled by source browser and \snippet</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702590">702590</a> - Crash with TAB_SIZE=-1</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=702676">702676</a> - Closing ) of function in function documentation is in wrong color</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703574">703574</a> - Add configure options to enable static SQLite and non-standard SQLite</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703112">703112</a> - Backward documentation comments are not allowed in Fortran type-bound procedures</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703133">703133</a> - "operator--()" transformed to "operator&ndash;()" in @copydoc</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703170">703170</a> - Segmentation fault parsing a fortran file</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703213">703213</a> - Can't use @ref instead of \ref with msc</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703301">703301</a> - Misleading warning about DOT font</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=703791">703791</a> - Out-of-line docs for class template specialisations failing</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704079">704079</a> - Generated XML is malformed</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704172">704172</a> - Nested Aliases fail when the nested alias has two or more arguments.</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704412">704412</a> - doxygen don't hide private Inherited Members</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704971">704971</a> - Can't build with MinGW</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=704973">704973</a> - Doxywizard can't show file names using non-ASCII(Unicode)</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705190">705190</a> - Incorrectly parsed Q_PROPERTY with 'long long' or 'long int' type</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705217">705217</a> - Can't use unicode characters to execute external commands</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705218">705218</a> - QRegExp doesn't work with 80-FF</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705219">705219</a> - Accept IDs using unicode for C/C++ preprocessor</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705586">705586</a> - @code tag as the last line of a comment block causes the parser to hang</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=705702">705702</a> - Post-comment blocks on C++11 using definitions attach to following entity</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706236">706236</a> - Confusing use of GENERATE_TAGFILE</li>
+<li> Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=706520">706520</a> - Fortran: in body documentation lands on wrong place</li>
+<li> Small typo correceted in doxywizard_usage.doc Generated config.doc file in git is not identical to the generated one</li>
+<li> Various improvements to the (still experimental) sqlite3 support (thanks to Adrian Negreanu)</li>
+<li> jquery: use the env MINIFIER if specified</li>
+<li> Some words now in code style __attribute__ was seen (markdown) as the bold word attribute Reformulation of a sentence due to a not nice split of word (__declspec was split directly after __ in pdf)</li>
+<li> Extended list with supported options for automatic link generation</li>
+<li> Added -v option (analogous to --version). In case option started with -- and is not a known valuue (help or version) and error is given instead of starting Doxygen</li>
+<li> Fixed regression when nested class were processed before their parent</li>
+<li> Minor changes to the way the code for config options is generated (thanks to Albert for the patch)</li>
+<li> Brief description did not appear in the page index, when a page did not have any details.</li>
+<li> Using & in the project name caused invalid HTML and LaTeX output</li>
+<li> Fixed regression caused by the patch for bug 705219</li>
+<li> Fixed issue running dot on files with non-ascii characters</li>
+<li> Delayed expanding the HTML navigation tree until after the page has loaded</li>
+<li> Made some fixed to the configure script for Cygwin (thanks to David Stacey)</li>
+<li> config.xml is now used to generate configoptions.cpp and config.doc</li>
+<li> Fixed whitespace issue when using \overload without arguments</li>
+<li> Avoid space in the output after \n command following by a newline.</li>
+<li> Fixed problem handling C comments inside a \code block.</li>
+<li> Improved handling of \internal and \endinternal</li>
+<li> Removed extra newline when reading in an input file</li>
+<li> Make XML output adhere to MAX_INITIALIZER_LINES</li>
+<li> Fixed issue handling \elseif after \ifnot</li>
+<li> Fixed regression that could cause double nested classes</li>
+<li> Fixed issue handling \docbookonly..\enddocbookonly section</li>
+<li> The language specifier in e.g. \code{.py} was ignored for the XML output</li>
+<li> Fix reference to scoped enum imported via a tag file.</li>
+<li> Replaced utf8 character that broke latex compilation of the manual</li>
+<li> Fixed unused parameter warnings</li>
+<li> Add support for writing and importing C++11 style enums to and from tag files</li>
+<li> Fixed regression introduced by fixed bug Bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700740">700740</a></li>
+<li> Fixed type in function name</li>
+<li> Remove some unneeded and still enabled debug info</li>
+<li> Included fix for "Constant Groups" regression on file pages (thanks to Michael Stahl) </li>
+<li> Add scopes to Fortran prototype name parsing (thanks to Oleg Batrashev).</li>
+<li> Prototype scan for function, does not yet catch parameter types (thanks to Oleg Batrashev).</li>
 </ul>
+<p>
 \endhtmlonly
 
 \subsection log_1_8_4 Release 1.8.4
 \htmlonly
 <b>(release date 19-05-2013)</b>
 <a name="1.8.4"></a>
+</p>
 <h3>Changes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686384">686384</a>: When INLINE_SIMPLE_STRUCTS is enabled, also structs with
-       simple typedefs will be inlined.
+       simple typedefs will be inlined.</li>
 <li>   Doxywizard: scrolling with mouse wheel no longer affects the values in
-       the expert view.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681733">681733</a>: More consistent warnings and errors.
+       the expert view.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681733">681733</a>: More consistent warnings and errors.</li>
 </ul>
 <h3>New features</h3>
 <ul>
@@ -769,218 +1093,222 @@
        option. Then you get two new configuration options: CLANG_ASSISTED_PARSING 
        to enable or disable parsing via clang and CLANG_OPTIONS to pass additional 
        compiler options needed to compile the files. Note that enabling this feature 
-       has a significant performance penality.
+       has a significant performance penality.</li>
 <li>   Included patch donated by Intel which adds Docbook support.
        This can be enabled via GENERATE_DOCBOOK and the output location can
        be controlled using DOCBOOK_OUTPUT. Docbook specific sections can be
-       added using \docbookonly ... \enddocbookonly
+       added using \docbookonly ... \enddocbookonly</li>
 <li>   Added support for UNO IDL (interace language used in Open/Libre Office), thanks to
-       Michael Stahl for the patch.
+       Michael Stahl for the patch.</li>
 <li>   Included patch by Adrian Negreanu which stores data gathered by 
        doxygen in a sqlite3 database. Currently still work in progress and
-       can only be enabled using --with-sqlite3 during ./configure.
+       can only be enabled using --with-sqlite3 during ./configure.</li>
 <li>   For interactive SVG graphs, edges are now highlighted when hovered by
-       the mouse.
+       the mouse.</li>
 <li>   Include patch by Adrian Negreanu to show duration statistics after a run.
-       You can enable this by running doxygen with the "-d Time" option.
+       You can enable this by running doxygen with the "-d Time" option.</li>
 <li>   Included patch by Markus Geimer which adds a new option 
        LATEX_EXTRA_FILES which works similarily to HTML_EXTRA_FILES in that
-       it copied specified files to the LaTeX output directory.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=698223">698223</a>: Added support for C++11 keyword alignas
+       it copied specified files to the LaTeX output directory.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=698223">698223</a>: Added support for C++11 keyword alignas</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=693178">693178</a>: Added support for processing DocSets with Dash (thanks to
-       Bogdan Popescu for the patch 
+       Bogdan Popescu for the patch </li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=684782">684782</a>: Added option EXTERNAL_PAGES which can be used to determine
        whether or not pages importated via tags will appear under related 
-       pages (similar to EXTERNAL_GROUPS).
+       pages (similar to EXTERNAL_GROUPS).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692227">692227</a>: Added new MathJax command MATHJAX_CODEFILE which supports
        including a file with MathJax related scripting to be inserted before
-       the MathJax script is loaded. Thanks to Albert for the patch.
+       the MathJax script is loaded. Thanks to Albert for the patch.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=693537">693537</a>: Comments in the config file starting with ## will now be 
        kept when upgrading the file with doxygen -u (and doxygen -s -u).
-       Thanks to Albert for the patch.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=693422">693422</a>: Adds support for Latvian (thanks to a patch by Lauris).
-<li>   Included language updates for Ukrainian, Romanian, and Korean
+       Thanks to Albert for the patch.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=693422">693422</a>: Adds support for Latvian (thanks to a patch by Lauris).</li>
+<li>   Included language updates for Ukrainian, Romanian, and Korean</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=145294">145294</a>: Fixed parse issue when using less than inside a template
-       argument.
+       argument.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=325266">325266</a> man page output was missing a linebreak before .SH when
-       definition a group with a section.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=338205">338205</a>: @anchor were wrong when CREATE_SUBDIRS was enabled.
+       definition a group with a section.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=338205">338205</a>: @anchor were wrong when CREATE_SUBDIRS was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=427012">427012</a>: Putting a @todo in front of an anonoymous namespace caused
-       bogus entry in the todo list.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=564462">564462</a>: Fixed alignment issue with tabs and multibyte characters.
+       bogus entry in the todo list.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=564462">564462</a>: Fixed alignment issue with tabs and multibyte characters.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=567542">567542</a>: Character entities in titles were not rendered correctly 
-       in the HTML navigation tree.
+       in the HTML navigation tree.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=571561">571561</a>: No space between * and tag (e.g. \endcode) made parser
-       misbehave
+       misbehave</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=583233">583233</a>: Included patch to limit generated Doxyfile comments to 80
-       columns
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592626">592626</a>: Fixed off-by-one with MAX_DOT_GRAPH_DEPTH.
+       columns</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592626">592626</a>: Fixed off-by-one with MAX_DOT_GRAPH_DEPTH.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=619790">619790</a>: Improved linking to template specializations.
-       Thanks to David Haney for the patch.
+       Thanks to David Haney for the patch.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=627712">627712</a>: Doxygen Header in C Files makes empty Lines in HTML Source
-       Code when starts in Line 1
+       Code when starts in Line 1</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=639954">639954</a>: Fortran: array constructors with brackets were not correctly
-       recognized.
+       recognized.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646428">646428</a>: The generated man pages had a .PP just before the subject 
-       description
+       description</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646431">646431</a>: On generated manpages the return section is incorrectly 
-       indented
+       indented</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=650004">650004</a>: use \page now generates a man page were the . is not 
-       replaced by _8.
+       replaced by _8.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=657704">657704</a>: Fixed issue with PROJECT_LOGO when using backslashes in
-       the path.
+       the path.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666008">666008</a>: Fortran: Using @var at module levele didn't work.
-       expect a file/path name.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673218">673218</a>: Replaced "echo -n" with "printf" in the configure script.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674856">674856</a>: Removed warning when using \endinternal
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=675607">675607</a>: Added &, @, and # as allowed characters for commands that
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679626">679626</a>: Included patch by Abert to correctly link pages in the manual
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681874">681874</a>: Added support for single column Markdown tables.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682369">682369</a>: Incomplete documentation on doxygen -w latex
+       expect a file/path name.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673218">673218</a>: Replaced "echo -n" with "printf" in the configure script.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674856">674856</a>: Removed warning when using \endinternal</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=675607">675607</a>: Added &, @, and # as allowed characters for commands that</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679626">679626</a>: Included patch by Abert to correctly link pages in the manual</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681874">681874</a>: Added support for single column Markdown tables.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682369">682369</a>: Incomplete documentation on doxygen -w latex</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=683516">683516</a>: Doxygen crashed when structural commands (like \var) appeared 
-       in .md files.
+       in .md files.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686259">686259</a>: Fixed character encoding problem when multibytes characters
-       were used in anchors.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691071">691071</a>: Documentation before an anonymous member did not appear.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692162">692162</a>: Fixed Markdown related indentation problem.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692320">692320</a>: Regression: Text after @copydoc was not visible anymore.
+       were used in anchors.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691071">691071</a>: Documentation before an anonymous member did not appear.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692162">692162</a>: Fixed Markdown related indentation problem.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692320">692320</a>: Regression: Text after @copydoc was not visible anymore.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692537">692537</a>: Linked to external pages was done using the page label 
-       rather than the file name.
+       rather than the file name.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=693331">693331</a>: build using ./configure ; make did not work if the path
-       contained a space.
+       contained a space.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=693406">693406</a>: Tag files are now identfied by the full path instead of
-       only the name of the tag file.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694376">694376</a>: In some cases members were missing from the tag file.
+       only the name of the tag file.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694376">694376</a>: In some cases members were missing from the tag file.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694027">694027</a>: Fortran: derive intent from documentation in case no 
-       intent is specified
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694610">694610</a>: Warning was not reported at the correct line in two cases.
+       intent is specified</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694610">694610</a>: Warning was not reported at the correct line in two cases.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694631">694631</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694632">694632</a>: @cond.. at endcond did not work properly for removing
-       macro definitions.
+       macro definitions.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694685">694685</a>: Fixed crash when adding two different functions with the
-       same name to the same group.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694726">694726</a>: VHDL: fixed issue generating LaTeX output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=695277">695277</a>: Fortran: improved handling of protected statement
+       same name to the same group.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=694726">694726</a>: VHDL: fixed issue generating LaTeX output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=695277">695277</a>: Fortran: improved handling of protected statement</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=695974">695974</a>: Fortran: Fixed issue resulting in 
-       "Stack buffers nested too deeply" error.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=696708">696708</a>: @cond was not handled properly by the preprocessor.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=697233">697233</a>: @copyright command did not end a brief description.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=697249">697249</a>: Markdown tables caused errors reported at wrong line number.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=697494">697494</a>: Removed double entry from the messages produced by doxygen.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=698818">698818</a>: Fixed problem handling @cond for #define's
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=698007">698007</a>: Fixed potential crash when searching files.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=696925">696925</a>: #include's inside namespace could result in duplicate entries.
+       "Stack buffers nested too deeply" error.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=696708">696708</a>: @cond was not handled properly by the preprocessor.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=697233">697233</a>: @copyright command did not end a brief description.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=697249">697249</a>: Markdown tables caused errors reported at wrong line number.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=697494">697494</a>: Removed double entry from the messages produced by doxygen.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=698818">698818</a>: Fixed problem handling @cond for #define's</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=698007">698007</a>: Fixed potential crash when searching files.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=696925">696925</a>: #include's inside namespace could result in duplicate entries.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=696954">696954</a>: Doxywizard: Labels of items are now also grayed out 
-       when an item is disabled (thanks to Albert for the patch).
+       when an item is disabled (thanks to Albert for the patch).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699195">699195</a>: Changed Markdown page label to support multiple .md files
-       with the same name.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699218">699218</a>: Fixed issue with margin computation in resize.js.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699381">699381</a>: Lonely h4,h5,h6 end tag caused assert.
+       with the same name.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699218">699218</a>: Fixed issue with margin computation in resize.js.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699381">699381</a>: Lonely h4,h5,h6 end tag caused assert.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699437">699437</a>: Trailing comments were not always rendered properly if
-       MARKDOWN_SUPPORT was enabled.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699460">699460</a>: Updated doxygen man page (thanks to Manuel for the patch).
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699464">699464</a>: Added reference to \xmlonly and \docbookonly in \htmlonly
+       MARKDOWN_SUPPORT was enabled.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699460">699460</a>: Updated doxygen man page (thanks to Manuel for the patch).</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699464">699464</a>: Added reference to \xmlonly and \docbookonly in \htmlonly</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699731">699731</a>: LaTeX: switch to using the xtabular package instead of
-       longtable to prevent overfull vbox errors.
+       longtable to prevent overfull vbox errors.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=699732">699732</a>: Template parameters and Exceptions were rendered differently
-       than Parameters and Return Values in the LaTeX output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700153">700153</a>: Tcl: Fixed crash when parsing certain Tcl code.
+       than Parameters and Return Values in the LaTeX output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700153">700153</a>: Tcl: Fixed crash when parsing certain Tcl code.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700345">700345</a>: Comment blocking ending with ///// made slashes appear in 
-       the output.
+       the output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700456">700456</a>: Added support for separating auto list items with an
-       empty paragraph.
-<li>   Included a couple of VHDL fixes (thanks to Martin Kreis for the patch)
-<li>   \include and \includelineno both showed line numbers.
+       empty paragraph.</li>
+<li>   Included a couple of VHDL fixes (thanks to Martin Kreis for the patch)</li>
+<li>   \include and \includelineno both showed line numbers.</li>
 <li>   Putting '// @endverbatim' inside a C comment block was not handled
-       properly by the preprocessor.
+       properly by the preprocessor.</li>
 <li>   Fixed various typo's in the manual and improved cross referencing
-       (thanks to Albert and Guillem Jover for their help)
-<li>   Added a couple of missing configuration dependencies.
+       (thanks to Albert and Guillem Jover for their help)</li>
+<li>   Added a couple of missing configuration dependencies.</li>
 </ul>
+<p>
 \endhtmlonly
 
 \subsection log_1_8_3_1 Release 1.8.3.1
 \htmlonly
 <b>(release date 20-01-2013)</b>
 <a name="1.8.3.1"></a>
+</p>
 <h3>Changes</h3>
 <ul>
 <li>   Changed to way the search results for multiple projects can be linked 
        together. A project is now no longer identified by the tag files name but
-       via new option EXTERNAL_SEARCH_ID giving a bit more flexibility.
+       via new option EXTERNAL_SEARCH_ID giving a bit more flexibility.</li>
 <li>   Disabled the disk cache for member data. Allows removing quite some complexity
        in doxygen and is not really needed now that 64bit systems with >4GB RAM 
-       are becoming more common. Let me know if you think you benefit from this caching.
+       are becoming more common. Let me know if you think you benefit from this caching.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691607">691607</a>: Using $relpath$ in a custom footer could lead to ambiguities
        when followed by a name that could also be a marker, like 'search'.
        Now $relpath^ should be used instead. $relpath$ is still supported for
-       backward compatibility.
+       backward compatibility.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   You can now use EXTENSION_MAPPING on files without any extension using
-       no_extension as placeholder (thanks to Jason Majors for the patch).
+       no_extension as placeholder (thanks to Jason Majors for the patch).</li>
 <li>   To make navindex section inside a layout file that links to 
-       a specific URL you can use usergroup with the url attribute.
+       a specific URL you can use usergroup with the url attribute.</li>
 <li>   To make navindex section without any link inside a layout file you 
-       can use usergroup with special title [none].
+       can use usergroup with special title [none].</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=644350">644350</a>: Fortran: Included patch to improve parsing line continuation 
-       characters.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=645423">645423</a>: Fortran: added support for protected attribute
+       characters.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=645423">645423</a>: Fortran: added support for protected attribute</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682550">682550</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691315">691315</a>: When using @copydoc, paragraphs breaks did not appear 
-       in the copied documentation.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686581">686581</a>: Fortran: handle single quotes in normal Fortran comment.
+       in the copied documentation.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686581">686581</a>: Fortran: handle single quotes in normal Fortran comment.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686689">686689</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691335">691335</a>: Scope of forwardly declared template class was lost 
-       in the output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689713">689713</a>: Tcl: Inline source code was not rendered correctly.
+       in the output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689713">689713</a>: Tcl: Inline source code was not rendered correctly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690787">690787</a>: Fixed case were a cyclic inheritance relation could crash 
-       doxygen.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690831">690831</a>: Using @subpage in a -# style list was not handled properly.
+       doxygen.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690831">690831</a>: Using @subpage in a -# style list was not handled properly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691000">691000</a>: For a mainpage without title the project name is now shown as
-       the title in the XML output.
+       the title in the XML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691277">691277</a>: The generated list of citations is now no longer included in 
-       the tag file.
+       the tag file.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691073">691073</a>: Documenting strongly typed enum values outside of the enum 
-       did not work.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691310">691310</a>: Python: = was missing in the output for variable assignment.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691323">691323</a>: Doxygen could crash when creating inline msc graphs.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691340">691340</a>: Members didn't have a More.. link to jump to detailed docs.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691602">691602</a>: Doxygen did not probably distinguish between two template
+       did not work.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691310">691310</a>: Python: = was missing in the output for variable assignment.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691323">691323</a>: Doxygen could crash when creating inline msc graphs.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691340">691340</a>: Members didn't have a More.. link to jump to detailed docs.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691602">691602</a>: Doxygen did not probably distinguish between two template</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=691798">691798</a>: regression: C++ style comments that started with a line of 
-       slashes did not get processed correctly anymore. 
+       slashes did not get processed correctly anymore. </li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=692031">692031</a>: Fixed parse error when left shift operator occurred as a 
        default parameter.
-       members or functions that only differ in the return type.
+       members or functions that only differ in the return type.</li>
 <li>   Setting SEARCH_INCLUDES to NO resulted in no include graphs and no
-       include files being listed in the output.
-<li>   Improved support for MinGW (thanks to a patch by Brecht Sanders).
+       include files being listed in the output.</li>
+<li>   Improved support for MinGW (thanks to a patch by Brecht Sanders).</li>
 <li>   Removed the Graphviz/dot dependency when building the doxygen 
-       documentation.
-<li>   Anchors to sub pages were wrong in the XML output.
+       documentation.</li>
+<li>   Anchors to sub pages were wrong in the XML output.</li>
 <li>   Included VHDL patch by Martin Kreis that improves the flow chart 
-       generation.
+       generation.</li>
 <li>   corrected several code pages and fontsets for proper RTF output for
-       a number of languages such as Greek.
+       a number of languages such as Greek.</li>
 </ul>
+<p>
 \endhtmlonly
 \subsection log_1_8_3 Release 1.8.3
 \htmlonly
 <a name="1.8.3"></a>
 <b>(release date 26-12-2012)</b>
+</p>
 <h3>Changes</h3>
 <ul>
 <li>   Expanding the tree in an index page of the HTML output, will now 
        expand only one level instead of the whole sub-tree (thanks to
-       Pez Cuckow for the patch).
+       Pez Cuckow for the patch).</li>
 <li>   A blockquote in Markdown does no longer require a whitespace
-       after the last '>' if the '>' is followed by a newline.
+       after the last '>' if the '>' is followed by a newline.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682718">682718</a>: Included patch to add version info to all generated 
-       template files (headers, footers, stylesheets, layout files, etc).
+       template files (headers, footers, stylesheets, layout files, etc).</li>
 </ul>
 <h3>New features</h3>
 <ul>
@@ -992,343 +1320,351 @@
        feature), SEARCHENGINE_URL (to specify the URL of the search engine),
        SEARCHDATA_FILE (to specify the name of the raw search data to index),
        EXTRA_SEARCH_MAPPINGS (for search through multiple projects).
-       See the <a href="extsearch.html">manual</a> for details.
+       See the <a href="extsearch.html">manual</a> for details.</li>
 <li>   Added USE_MDFILE_AS_MAINPAGE config option to select a markdown page to
-       be used as the main page.
+       be used as the main page.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=630645">630645</a>: This patch (contributed by Albert) adds support for 
        simple logic expressions for \cond, \if, and friends, i.e. you can do
-       \if (SOME_SECTION_NAME && (!THIS_ALTERNATIVE || THAT_ALTERNATIVE))
+       \if (SOME_SECTION_NAME && (!THIS_ALTERNATIVE || THAT_ALTERNATIVE))</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=684152">684152</a>: Patch (contributed by Albert) adds a new configuration 
        option MATHJAX_FORMAT to select the MathJax output format. Options are
-       HTML-CSS, NativeMML, or SVG.
+       HTML-CSS, NativeMML, or SVG.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=670853">670853</a>: Fixed compile issues with 0 to QCString cast for 
-       old compilers.
+       old compilers.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678139">678139</a>: A class A deriving from another class B inside a namespace
-       not known to doxygen, caused class B to appear in the global scope.
+       not known to doxygen, caused class B to appear in the global scope.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681209">681209</a>: Fixed problem processing .bib files when they were located
-       in a path containing spaces.
+       in a path containing spaces.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681830">681830</a>: Using \addindex in a page will now produce a link to the
-       word, instead of the start of the page.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681831">681831</a>: The TREEVIEW_WIDTH option did not have any effect.
+       word, instead of the start of the page.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681831">681831</a>: The TREEVIEW_WIDTH option did not have any effect.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681898">681898</a>: Jumping from a level 3 section to a level 1 section did
-       not appear correctly in the page TOC.
+       not appear correctly in the page TOC.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681976">681976</a>: C++11: Improved handling of noexcept expressions, e.g.:
-       <code>Test() noexcept ( noexcept(T::T()) ) = default;</code>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682048">682048</a>: Improved SIGINT handling when running multiple dot instances.
+       <code>Test() noexcept ( noexcept(T::T()) ) = default;</code></li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682048">682048</a>: Improved SIGINT handling when running multiple dot instances.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682602">682602</a>: Fixed problem processing .bib files when using a non default
-       output directory.
+       output directory.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682713">682713</a>: Comment for IDL_PROPERTY_SUPPORT in the config file template 
-       did not have line wrapping.
+       did not have line wrapping.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682728">682728</a>: Setting SHOW_FILES to NO prevented call graphs from being
-       generated.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682740">682740</a>: Fortran: In initialization statement the "=" was missing
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=683284">683284</a>: Fortran: ALIASes where not replaced in !! and !< comments.
+       generated.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=682740">682740</a>: Fortran: In initialization statement the "=" was missing</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=683284">683284</a>: Fortran: ALIASes where not replaced in !! and !< comments.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=683976">683976</a>: Added meta tag "generator" to HTML output (thanks to
-       Albert for the patch).
+       Albert for the patch).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=684781">684781</a>: Sections of the main page did not appear in the 
        navigation tree until the main page had sub pages.
        Also fixed bug in treeview that caused mainpage with title and
-       sections to appear at the same level as the sections.
+       sections to appear at the same level as the sections.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=685125">685125</a>: Doxygen could select the wrong overloaded method when 
        the only difference in parameter types was the template type of 
-       a typedef.
+       a typedef.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=685181">685181</a>: Inheriting member documentation did not work in combination
-       with Java interfaces.
+       with Java interfaces.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=685623">685623</a>: Enum values did not appear in the detailed documentation 
-       when using C++11 style enums.
+       when using C++11 style enums.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=685879">685879</a>: Even though HIDE_UNDOC_MEMBERS was enabled, the navigation
-       still showed undocumented members.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=685940">685940</a>: Fixed back button behaviour when using the navigation tree.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686284">686284</a>: Added anchors to refs in the index.qhp TOC.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686826">686826</a>: Added XML declaration to index.qhp TOC.
+       still showed undocumented members.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=685940">685940</a>: Fixed back button behaviour when using the navigation tree.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686284">686284</a>: Added anchors to refs in the index.qhp TOC.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686826">686826</a>: Added XML declaration to index.qhp TOC.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686956">686956</a>: When a class and its base class has the same nested class,
-       the collaboration diagram could point to the wrong class.
+       the collaboration diagram could point to the wrong class.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=686983">686983</a>: Comments inside a function macro parameter appeared before 
-       the expanded macro, instead of being treated as part of the parameter.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=687301">687301</a>: Allow minus in the name of a HTML attribute.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=687572">687572</a>: Code fragments were wrapped too early in the latex output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688226">688226</a>: Fixed Qt version number in ./configure --help text.
+       the expanded macro, instead of being treated as part of the parameter.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=687301">687301</a>: Allow minus in the name of a HTML attribute.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=687572">687572</a>: Code fragments were wrapped too early in the latex output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688226">688226</a>: Fixed Qt version number in ./configure --help text.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688463">688463</a>: Included patch to prevent processing identifiers starting
-       with _ or __ as markdown.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688531">688531</a>: Horizontal ruler inside paragraph caused missing </p>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688542">688542</a>: Using "usergroup" in the layout.xml caused missing <div>
+       with _ or __ as markdown.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688531">688531</a>: Horizontal ruler inside paragraph caused missing </p></li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688542">688542</a>: Using "usergroup" in the layout.xml caused missing <div></li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688739">688739</a>: Fixed problem with user defined entries in the eclipse help
-       index (thanks to Rene Papenhoven for the fix).
+       index (thanks to Rene Papenhoven for the fix).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688647">688647</a>: Fixed problem parsing initializer list with C++11 style
-       uniform types.
+       uniform types.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689341">689341</a>: \if around list item preceded by whitespace caused wrong
-       list in the output. 
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689461">689461</a>: Correct link in documentation of SIP_SUPPORT option.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689720">689720</a>: Fixed bug that could prevent refman.tex from being generated.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689833">689833</a>: Fixed missing space in Chinese translation.
+       list in the output. </li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689461">689461</a>: Correct link in documentation of SIP_SUPPORT option.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689720">689720</a>: Fixed bug that could prevent refman.tex from being generated.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=689833">689833</a>: Fixed missing space in Chinese translation.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690093">690093</a>: Files added via HTML_EXTRA_STYLESHEET did not correct refer 
-       to files that where placed in a subdirectory.
+       to files that where placed in a subdirectory.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690190">690190</a>: Searching for multibyte characters did not work with the 
-       server based search engine.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690250">690250</a>: Fixed case where line numbers got out of sync with the code.
+       server based search engine.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690250">690250</a>: Fixed case where line numbers got out of sync with the code.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690341">690341</a>: First member of an anonymous C++11 style enum was not shown
-       properly.
+       properly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690385">690385</a>: Fixed case where _'s where falsely converted to Markdown 
-       emphasis.
+       emphasis.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690403">690403</a>: Title not used when \ref'ing to a \section imported via 
-       a tag file.
+       a tag file.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690418">690418</a>: Behavior of @cond was accidentally reversed by new expression
-       parser.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690602">690602</a>: Fixed problems handling @cond inside /// comments.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690629">690629</a>: Fixed case where doxygen would during preprocessing.
+       parser.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690602">690602</a>: Fixed problems handling @cond inside /// comments.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690629">690629</a>: Fixed case where doxygen would during preprocessing.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=690685">690685</a>: A file specified using HTML_EXTRA_STYLEHSHEET did not end
-       up in the Qt Help index.
-<li>   Improved the way enum's are rendered in the HTML output.
+       up in the Qt Help index.</li>
+<li>   Improved the way enum's are rendered in the HTML output.</li>
 <li>   When inlining structs (INLINE_SIMPLE_STRUCTS=YES) a <p> was missing
-       for members with a detailed description, causing invalid XHTML.
+       for members with a detailed description, causing invalid XHTML.</li>
 <li>   Fixed problem loading the navigation tree when using .xhtml as the
-       file extension.
+       file extension.</li>
 <li>   The navigation tree was not always correctly positioned upon initial
-       load when using Chrome.
+       load when using Chrome.</li>
 <li>   HTML Navigation tree showed static members even when EXTRACT_STATIC was
-       set to NO.
+       set to NO.</li>
 <li>   Same word could appear multiple times in the match list for an entry 
-       in the search results when using server based search.
+       in the search results when using server based search.</li>
 </ul>
+<p>
 \endhtmlonly
 \subsection log_1_8_2 Release 1.8.2
 \htmlonly
 <a name="1.8.2"></a>
 <b>(release date 11-08-2012)</b>
+</p>
 <h3>Changes</h3>
 <ul>
 <li>   Using a fenched block (~~~~) in Markdown without explicit extension will 
        now be interpreted as a @code.. at endcode block instead 
-       of @verbatim.. at endverbatim.
+       of @verbatim.. at endverbatim.</li>
 <li>   Classes inheriting from an class that is outside the scope of doxygen
-       are still shown in diagrams. This does not hold for usage relations.
+       are still shown in diagrams. This does not hold for usage relations.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   Added support for C++11:
        <ul>
        <li> strongly typed enums, e.g.:
-            <pre>enum class E</pre>
+            <pre>enum class E</pre></li>
        <li> enums with explicit type, e.g.: 
-            <pre>enum E : unsigned int { ... }</pre>
-       <li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678097">678097</a>: added support for final keyword on classes and methods.
-       <li> support for override keyword for methods.
-       <li> <code>nullptr</code> is new a type keyword in code fragments.
+            <pre>enum E : unsigned int { ... }</pre></li>
+       <li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678097">678097</a>: added support for final keyword on classes and methods.</li>
+       <li> support for override keyword for methods.</li>
+       <li> <code>nullptr</code> is new a type keyword in code fragments.</li>
        <li> support for variables with initializer lists, 
-         e.g.: <pre>const int var {10};</pre>
+         e.g.: <pre>const int var {10};</pre></li>
        <li> support for trailing return types, 
-         e.g.: <pre>auto foo() -> Bar;</pre>
+         e.g.: <pre>auto foo() -> Bar;</pre></li>
        <li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672372">672372</a>: added support for template aliases, 
-         e.g.: <pre>template<typename T> using A = B<T>;</pre>
+         e.g.: <pre>template<typename T> using A = B<T>;</pre></li>
        <li> support for C++11 variadic templates, 
-         e.g.: <pre>template<typename... Values> class C;</pre>
-       <li> support for documenting template class declarations.
-       <li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680098">680098</a>: <code>static_assert(...);</code> inside a class is now ignored.
+         e.g.: <pre>template<typename... Values> class C;</pre></li>
+       <li> support for documenting template class declarations.</li>
+       <li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680098">680098</a>: <code>static_assert(...);</code> inside a class is now ignored.</li>
        <li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679740">679740</a>: Add support parameters with default lambda functions, 
-         e.g.:  <pre>int foo(int i, std::function<int(int)> f = [](int x) -> int { return x / 2; })</pre>
+         e.g.:  <pre>int foo(int i, std::function<int(int)> f = [](int x) -> int { return x / 2; })</pre></li>
        <li> default initializers for non-static data members, 
-         e.g.:  <pre>class C { public: int x = 4; int y {6}; int z = y*func(); };</pre>
+         e.g.:  <pre>class C { public: int x = 4; int y {6}; int z = y*func(); };</pre></li>
        <li> support for decltype as a way selecting a type for a variable, 
-         e.g.: <pre>int x; decltype(x) y;</pre>
+         e.g.: <pre>int x; decltype(x) y;</pre></li>
        <li> support for new string literals, 
-         e.g.  <pre>u8"utf8", u"utf-16", U"utf-32", L"wchar"</pre>
+         e.g.  <pre>u8"utf8", u"utf-16", U"utf-32", L"wchar"</pre></li>
        <li> support for raw string literals (with and without user defined 
          delimiter), 
-         e.g.  <pre>R"(some"thing)", u8R"raw(some)"thing)raw"</pre>
+         e.g.  <pre>R"(some"thing)", u8R"raw(some)"thing)raw"</pre></li>
        <li> support for explictly deleted and defaulted special members 
-         (<code>=default</code> and <code>=delete</code>).
-       </ul>
+         (<code>=default</code> and <code>=delete</code>).</li>
+       </ul></li>
 <li>   Made several improvements to the way Objective-C categories and protocols 
        are handled:
        <ul>
        <li> Class extensions are now treated as part of the class, whereas 
-         categories are listed separately.
-       <li> Fixed parse problem where category had a { } section.
-       <li> Fixed parse problem for categories that implemented protocols.
-       <li> Fixed render bug for protocols in class diagrams.
-       <li> Attributes with the same name as a method are now no longer matched.
-       <li> Internal properties are now also marked with [implementation]
+         categories are listed separately.</li>
+       <li> Fixed parse problem where category had a { } section.</li>
+       <li> Fixed parse problem for categories that implemented protocols.</li>
+       <li> Fixed render bug for protocols in class diagrams.</li>
+       <li> Attributes with the same name as a method are now no longer matched.</li>
+       <li> Internal properties are now also marked with [implementation]</li>
        <li> Members of categories are shown in the class they extend as well, and 
-         cross reference links are made between these members.
+         cross reference links are made between these members.</li>
        <li> Class extension implementing protocols are now shown as protocols
-         inherited by the class itself, including the "Implemented by" relation.
-       </ul>
+         inherited by the class itself, including the "Implemented by" relation.</li>
+       </ul></li>
 <li>   Added option HTML_EXTRA_STYLESHEET which allows adding an additional
-       stylesheet without completely replacing doxygen.css.
+       stylesheet without completely replacing doxygen.css.</li>
 <li>   Added option AUTOLINK_SUPPORT which can be used to enable/disable
-       autolinking globally.
+       autolinking globally.</li>
 <li>   Included language updates for Czech, Spanish, Greek, Slovak, and 
-       Esparanto.
+       Esparanto.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   Fixed render glitch where template member of a base class was not
-       properly hidden in the derived class.
+       properly hidden in the derived class.</li>
 <li>   Privately nested classes no longer appear in the declaration section 
-       of their parent if EXTRACT_PRIVATE is disabled.
+       of their parent if EXTRACT_PRIVATE is disabled.</li>
 <li>   In the declaration section the separator line was in between the
-       member and its brief description.
-<li>   Fixed a couple of compiler warning with the new XCode 4.4 compiler.
-<li>   Added compilation support for Mountain Lion (Mac OS X 10.8).
+       member and its brief description.</li>
+<li>   Fixed a couple of compiler warning with the new XCode 4.4 compiler.</li>
+<li>   Added compilation support for Mountain Lion (Mac OS X 10.8).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679631">679631</a>: Nested namespaces did not appear in the namespace list if the 
-       parent namespace was undocumented.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680227">680227</a>: Fixed some spelling errors in the code comments.
+       parent namespace was undocumented.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680227">680227</a>: Fixed some spelling errors in the code comments.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680398">680398</a>: Fortran:  comma at begin of argument list description in 
-       case of implicit type
+       case of implicit type</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680405">680405</a>: Fortran: Entities on line with USE, ONLY were not hyperlinked 
-       in code.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680408">680408</a>: Fortran: handle carriage return in non terminated strings.
+       in code.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680408">680408</a>: Fortran: handle carriage return in non terminated strings.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680492">680492</a>: Using Markdown formatting in @todo/@bug/.. like descriptions
-       did not work.
+       did not work.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680575">680575</a>: Fixed potential crash when <code> appeared inside <summary>
-       for C# code.
+       for C# code.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680697">680697</a>: \xrefitems of the same type are not grouped together under
-       the same heading (just like \todo and friends). 
+       the same heading (just like \todo and friends). </li>
 <li>   Fixed case where full directory path was shown even though
-       FULL_PATH_NAMES was set to NO.
+       FULL_PATH_NAMES was set to NO.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680709">680709</a>: HTML output of template-derived classes contained unescaped 
-       characters.
+       characters.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679963">679963</a>: "Class Index" appeared twice in the PDF TOC, Index at the 
-       end did not appear at all.
+       end did not appear at all.</li>
 <li>   In a declaration no link was created when referring to a class inside 
-       an undocumented namespace imported via a tag file.
+       an undocumented namespace imported via a tag file.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681281">681281</a>: Make default for TAB_SIZE 4 and added remark in Markdown
        section of the manual about the effect of TAB_SIZE on code block 
-       processing when using tabs in the comment block.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681023">681023</a>: Project logo was not included in the Qt help output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680992">680992</a>: Fixed a couple of typos in the comments.
+       processing when using tabs in the comment block.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681023">681023</a>: Project logo was not included in the Qt help output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=680992">680992</a>: Fixed a couple of typos in the comments.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681350">681350</a>: Fixed a problem with Markdown processing of a @code block
-       inside an indented /// style comment.
+       inside an indented /// style comment.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679928">679928</a>: Disabled section level correction for Markdown pages as
-       is was confusing.
+       it was confusing.</li>
 </ul>
+<p>
 \endhtmlonly
 \subsection log_1_8_1_2 Release 1.8.1.2
 \htmlonly
 <a name="1.8.1.2"></a>
 <b>(release date 12-07-2012)</b>
+</p>
 <h3>Changes</h3>
 <ul>
 <li>   doxygen now strips the leading indentation shared by the lines in a 
-       @code.. at endcode block.
+       @code.. at endcode block.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678218">678218</a>: Changed title of the SVG graphs from 'G' to the root node
-       of the graph.
+       of the graph.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   Added button in the navigation tree to allow enabling/disabling 
-       syncing the navigation tree with the content.
+       syncing the navigation tree with the content.</li>
 <li>   Extended the number of HTML entities with Greek letters and other 
-       symbols (thanks to Charles Karney for the patch).
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=663645">663645</a>: Added support for C++11 strongly typed enums 
-       (enum class E { ... }).
+       symbols (thanks to Charles Karney for the patch).</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=663645">663645</a>: Added support for C++11 strongly typed enums
+       (enum class E { ... }).</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=590518">590518</a>: Added missing class member initialization to a
-       class in doxmlparser and made the library compile again.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=667678">667678</a>: Added support for Obj-C property attribute "unsafe_retained".
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674842">674842</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676984">676984</a>: Unmatched quote in a comment prevented alias expansion.
+       class in doxmlparser and made the library compile again.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=667678">667678</a>: Added support for Obj-C property attribute "unsafe_retained".</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674842">674842</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676984">676984</a>: Unmatched quote in a comment prevented alias expansion.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676019">676019</a>: Fixed another case where local include path did not appear
-       correctly in the class documentation.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676966">676966</a>: Fortran: Some keyword were not colored in the source view.
+       correctly in the class documentation.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676966">676966</a>: Fortran: Some keyword were not colored in the source view.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676981">676981</a>: Fortran: Argument type was wrong type of in case of out of 
-       place !> comment
+       place !> comment</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677935">677935</a>: Included patch to fix problem compiling for x86 release on
-       Windows.
+       Windows.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677992">677992</a>: Section without title could result in an invalid Qt Help
-       index.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678022">678022</a>: Anonymous enum could result in an invalid Qt Help index.
+       index.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678022">678022</a>: Anonymous enum could result in an invalid Qt Help index.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678102">678102</a>: Superfluous trailing comma in javascript 
-       prevented navigation tree to load in IE7.
+       prevented navigation tree to load in IE7.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678177">678177</a>: a + at the start of a line inside a <pre> block, 
        triggered the start of a list. Also -- and --- where not kept untouched 
-       inside a <pre> block.
+       inside a <pre> block.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678180">678180</a>: ndash (--) appearing in a brief description could lead 
-       to invalid SVG images.
+       to invalid SVG images.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=678288">678288</a>: -- and --- inside a Markdown code block were not handled
-       properly.
+       properly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679331">679331</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=675766">675766</a>: In body documentation with a different indentation then the
-       main documentation was not rendered correctly (MARKDOWN=YES).
+       main documentation was not rendered correctly (MARKDOWN=YES).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679436">679436</a>: Using an escaped pipe symbol in a Markdown table did not get 
-       unescaped in the output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679533">679533</a>: Code fragments did not appear properly in the doxygen manual.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679615">679615</a>: Added missing delete call in a piece of debugging code.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679626">679626</a>: Fixed some navigation issues in the manual
+       unescaped in the output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679533">679533</a>: Code fragments did not appear properly in the doxygen manual.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679615">679615</a>: Added missing delete call in a piece of debugging code.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=679626">679626</a>: Fixed some navigation issues in the manual</li>
 <li>   Not all inherited members appeared in the "Additional inherited members"
-       list.
+       list.</li>
 <li>   Link to call after "Inherited members" was not correct when
-       CREATE_SUBDIRS was enabled.
-<li>   New VHDL diagram was not generated if the path contained spaces.
-<li>   Fixed a couple of problems handling Objective-C categories.
+       CREATE_SUBDIRS was enabled.</li>
+<li>   New VHDL diagram was not generated if the path contained spaces.</li>
+<li>   Fixed a couple of problems handling Objective-C categories.</li>
 </ul>
+<p>
 \endhtmlonly
 \subsection log_1_8_1_1 Release 1.8.1.1
 \htmlonly
 <a name="1.8.1.1"></a>
 <b>(release date 10-06-2012)</b>
+</p>
 <h3>Changes</h3>
 <ul>
-<li>   Integrated the root navigation tree in navtree.js for faster loading.
+<li>   Integrated the root navigation tree in navtree.js for faster loading.</li>
 <li>   When the navigation tree is enabled, clicking jump to a line in 
-       the source code view will now highlight the line.
+       the source code view will now highlight the line.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   VHDL code now has a new Design Overview page (thanks for Martin Kreis
-       for the patch). Requires HAVE_DOT=YES, and DOT_IMAGE_FORMAT=svg.
+       for the patch). Requires HAVE_DOT=YES, and DOT_IMAGE_FORMAT=svg.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677678">677678</a>: Added support for strong and weak attributes in Objective-C
-       properties.
+       properties.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=618462">618462</a>: Fortran: Appearance of comments in the HTML output 
-       are now customizable via CSS again.
+       are now customizable via CSS again.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673660">673660</a>: <code> inside a <summary> or <remarks> section is now treated
-       as @code (was already the code for C#).
+       as @code (was already the code for C#).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673921">673921</a>: When a comment started at indent >= 4 after a /** and 
        continued at the same indent without leading * after a blank line, 
-       the continued part appeared at as a code block when Markdown was enabled.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=675036">675036</a>: If a file was not indexed, the navigation tree became empty.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676019">676019</a>: Include path using quotes did not work as documented.
+       the continued part appeared at as a code block when Markdown was enabled.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=675036">675036</a>: If a file was not indexed, the navigation tree became empty.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676019">676019</a>: Include path using quotes did not work as documented.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676877">676877</a>: @warning did not end at blank line when followed by
-       a numbered list.
+       a numbered list.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676902">676902</a>: An anonymous namespace could introduce an invalid entry in
-       the navigation list.
+       the navigation list.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676948">676948</a>: Breadcrumb navigation path had wrong links when 
-       CREATE_SUBDIRS was enabled.
+       CREATE_SUBDIRS was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677315">677315</a>: Fixed case where function was incorrectly detected as a 
-       variable.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677589">677589</a>: Fixed typo in the documentation of the LAYOUT_FILE option.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677771">677771</a>: Fixed visual misalignment for first argument.
+       variable.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677589">677589</a>: Fixed typo in the documentation of the LAYOUT_FILE option.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677771">677771</a>: Fixed visual misalignment for first argument.</li>
 <li>   The "arrow out" button in interactive SVG did not work when 
-       served from a web server, due to the use of an absolute path.
+       served from a web server, due to the use of an absolute path.</li>
 <li>   If a declation was too wide for a page, the content in HTML spilled 
-       over the boundary of its box, which looked ugly.
-<li>   Empty lines in a code fragment were collapsed.
+       over the boundary of its box, which looked ugly.</li>
+<li>   Empty lines in a code fragment were collapsed.</li>
 <li>   Navigation tree entries of the hierarchy appeared under class index as
-       well.
-<li>   Grouped globals and enum values were not added to the navigation index.
-<li>   Inlined class were not properly shows in the navigation index.
+       well.</li>
+<li>   Grouped globals and enum values were not added to the navigation index.</li>
+<li>   Inlined class were not properly shows in the navigation index.</li>
 <li>   Documented class in undocumented namespace did not show up in 
-       class list and navigation tree.
-<li>   ALLEXTERNALS=YES did not show all external classes in the class list.
+       class list and navigation tree.</li>
+<li>   ALLEXTERNALS=YES did not show all external classes in the class list.</li>
 <li>   External reference via URL did not work for new
-       "Additional Inherited Members" section + inherited from class link.
+       "Additional Inherited Members" section + inherited from class link.</li>
 <li>   Objective-C protocols and C# generics were not index and listed 
-       properly in the navigation tree and indices.
-<li>   Undocumented files could produce a broken link in the navigation tree.
+       properly in the navigation tree and indices.</li>
+<li>   Undocumented files could produce a broken link in the navigation tree.</li>
 <li>   Additional Inherited Members could turn up empty of all members of
-       the inherited class were grouped and SUBGROUPING was set to NO.
+       the inherited class were grouped and SUBGROUPING was set to NO.</li>
 </ul>
+<p>
 \endhtmlonly
 \subsection log_1_8_1 Release 1.8.1
 \htmlonly
 <a name="1.8.1"></a>
 <b>(release date 19-05-2012)</b>
+</p>
 <h3>Changes</h3>
 <ul>
 <li>   Changed the way indexes (Class,File,Namespace,Groups) are rendered:
@@ -1336,159 +1672,162 @@
        There are now shown in a uniform way in the HTML output as a tree.
        Trees can be expanded and collapsed interactively 
        (this makes USE_INLINE_TREES obsolete). 
-       <p>
+       </p><p>
        The class list now also shows namespaces and nested classes. 
        The file list now also shows directories (this makes SHOW_DIRECTORIES 
        obsolete). 
-       <p>
+       </p><p>
        Member sections are now each rendered in a separate table.
        This makes the HTML_ALIGN_MEMBERS option obsolete.
-       <p>
+       </p><p>
 <b>Note:</b> If you use a custom header for the HTML output (HTML_HEADER) 
 make sure you add the following:
+       </p>
        <pre>
 <script type="text/javascript" src="$relpath$jquery.js"></script>
-<script type="text/javascript" src="$relpath$dynsections.js"></script></pre>
+<script type="text/javascript" src="$relpath$dynsections.js"></script></pre><p>
        Otherwise the interactivity of the trees does not work.
-       <p>
-
-<li>   Included a couple of performance improvements (thanks to Dirk Reiners)
+       </p>
+</li>
+<li>   Included a couple of performance improvements (thanks to Dirk Reiners)</li>
 <li>   Changed the way member attributes (like protected, virtual, and static)
-       are rendered in the HTML output.
-<li>   Changed the look of the source code output.
+       are rendered in the HTML output.</li>
+<li>   Changed the look of the source code output.</li>
 <li>   Included language updates for Chinese, Czech, German, Esperanto, 
-       Italian, Slovak, Spanish, Hungarian, and Polish.
+       Italian, Slovak, Spanish, Hungarian, and Polish.</li>
 <li>   Syntax highlighing in source code fragments is no longer dependent
-       on LATEX_SOURCE_CODE being set to YES.
+       on LATEX_SOURCE_CODE being set to YES.</li>
 <li>   Added natural scrolling for tablet devices (like the iPad) 
-       when using the treeview.
+       when using the treeview.</li>
 <li>   For interactive SVGs the print button has been replaced by a 
        "arrow out" button that opens the original non-interactive SVG in a 
-       new window for easy printing or saving. 
+       new window for easy printing or saving. </li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=661499">661499</a>: Long names are now wrapped in the dot nodes to avoid
-       very wide graphs.
+       very wide graphs.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666527">666527</a>: Added support for <inheritdoc/> C# XML command
-       (thanks to John Werner for the patch).
+       (thanks to John Werner for the patch).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=670965">670965</a>, Added support for resolving environment variables of the
-       form $(PROGRAMFILES(X86)) inside the config file
+       form $(PROGRAMFILES(X86)) inside the config file</li>
 <li>   Doxygen now shows Objective-C properties in collaboration diagrams
-       (thanks to Sven Weidauer for the patch).
-<li>   Added ability to search for group or page titles.
+       (thanks to Sven Weidauer for the patch).</li>
+<li>   Added ability to search for group or page titles.</li>
 <li>   Inherited class members are now shown as expandable sections in the
        member overview (default is collapsed). Each section is rendered as
-       a table. 
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674349">674349</a>: Included build support for NetBSD.
+       a table. </li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674349">674349</a>: Included build support for NetBSD.</li>
 <li>   A -- will now be rendered as an 'en dash', similarly, --- will produce an
-       mdash.
+       mdash.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=523156">523156</a>: Fortran: Prefix of routines got stripped.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666088">666088</a>: Include VHDL patch (thanks to Martin Kreis).
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=523156">523156</a>: Fortran: Prefix of routines got stripped.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666088">666088</a>: Include VHDL patch (thanks to Martin Kreis).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=670235">670235</a>: Fixed include guard detection problem when using
-       #pragma once
+       #pragma once</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=670805">670805</a>: A numbered list (1. 2. 3.) where each list item ended with 
        an empty line is no longer treated as a set of separate lists (all 
-       starting with 1.).
+       starting with 1.).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=670889">670889</a>: Java: last enum value did not appear in the output unless it was
-       followed by a comma.
+       followed by a comma.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671023">671023</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671312">671312</a>: Regression: Autolist items starting on a new paragraph 
-       at indent level larger than 0 were not processed correctly. 
+       at indent level larger than 0 were not processed correctly. </li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671076">671076</a>: Sections could be missing from the navigation tree in 
-       some situations.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671158">671158</a>: @tableofcontents did not work for the main page (@mainpage)
+       some situations.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671158">671158</a>: @tableofcontents did not work for the main page (@mainpage)</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671159">671159</a>: Sections in a separate markdown page did not appear in the 
-       table of contents.
+       table of contents.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671166">671166</a>: Fortran: Fixed problem causing call/caller graphs not to be
-       generated.
+       generated.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671171">671171</a>: RPM spec file was updated to make it work with RHEL 6.2
-       (thanks to Peter Klotz for the patch)
+       (thanks to Peter Klotz for the patch)</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671240">671240</a>: Corrected line number of error message reported for
-       pages.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671291">671291</a>: C# regression: enum values where not shown in the docs.
+       pages.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671291">671291</a>: C# regression: enum values where not shown in the docs.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671395">671395</a>: When #some_member appeared at the start of a line it was
        seen as a level one header instead of a link to a member when
        Markdown processing was enable. Now at least one space is required
-       after the # to make it a header.
+       after the # to make it a header.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671426">671426</a>: Fixed case where doxygen could crash when a section and
-       subsection had the same label.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671591">671591</a>: docset creating could fail due to invalid Nodes.xml
+       subsection had the same label.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671591">671591</a>: docset creating could fail due to invalid Nodes.xml</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671702">671702</a>: Using \internal in a group or member did not hide it
-       from the navigation tree if there was no documentation.
+       from the navigation tree if there was no documentation.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=671709">671709</a>: Backticks in C# comments did not appear as inline 
-       fragments, like was the case for other languages.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672119">672119</a>: PHP: defines are now shown as constants rather than enums.
+       fragments, like was the case for other languages.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672119">672119</a>: PHP: defines are now shown as constants rather than enums.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672662">672662</a>: File with .md or .markdown extension were not included
-       with the default setting of FILE_PATTERNS.
+       with the default setting of FILE_PATTERNS.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672366">672366</a>: mailto style URLs did not work correctly in combination with
-       CREATE_SUBDIRS = YES.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672472">672472</a>: Removed bogus </b> when using @par.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672475">672475</a>: Added "warning:" prefix to "missing \endcode" message.
+       CREATE_SUBDIRS = YES.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672472">672472</a>: Removed bogus </b> when using @par.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672475">672475</a>: Added "warning:" prefix to "missing \endcode" message.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672479">672479</a>: Doxygen comments after a macro definition were not
-       removed in the source browser view.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672526">672526</a>: Removed black line in front of custom paragraphs.
+       removed in the source browser view.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672526">672526</a>: Removed black line in front of custom paragraphs.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672536">672536</a>: PHP: use keyword was not handled correctly when importing
-       classes from another namespace.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672620">672620</a>: Switched to using "Macro" in the output instead of "Define".
+       classes from another namespace.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672620">672620</a>: Switched to using "Macro" in the output instead of "Define".</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=672656">672656</a>: Using ![caption](filename.png) did not work correctly for 
-       local images pointed to with IMAGE_PATH.
+       local images pointed to with IMAGE_PATH.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673045">673045</a>: A block of ///'s inside a verbatim block inside a .md 
-       file was replaced by /** ..  */
+       file was replaced by /** ..  */</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673066">673066</a>: Doxygen now skips scanning files in directories starting with
-       a dot (e.g. .svn).
+       a dot (e.g. .svn).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673219">673219</a>: Included patch by Ryan Schmidt to make the Mac versions
-       in qglobal.h match that of Apple header files.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673870">673870</a>: Added C++11 classes when BUILTIN_STL_SUPPORT is enabled.
+       in qglobal.h match that of Apple header files.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673870">673870</a>: Added C++11 classes when BUILTIN_STL_SUPPORT is enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=673983">673983</a>: Using a backslash in a section cause 026E30F to appear in the
-       latex TOC.
+       latex TOC.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674563">674563</a>: Fortran: case sensitiveness for routines and functions 
-       did not work
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674583">674583</a>: Fortran: continuation by ampersand not placed in code output.
+       did not work</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=674583">674583</a>: Fortran: continuation by ampersand not placed in code output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=675757">675757</a>: Fixed indenting issue after the end of a markdown code block
-       inside a list.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676116">676116</a>: Use new index style for page index.
+       inside a list.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676116">676116</a>: Use new index style for page index.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=676294">676294</a>: Fixed LaTeX error when backslash appeared in a hyperlinked
-       code fragment.
-<li>   Tag files had wrong character encoding set in the header.
-<li>   C# in/out did not appear in generics using covariance or contravariance.
+       code fragment.</li>
+<li>   Tag files had wrong character encoding set in the header.</li>
+<li>   C# in/out did not appear in generics using covariance or contravariance.</li>
 <li>   When marker of an alias appeared at the end of the alias text it was
-       not expanded.
-<li>   Aliases did not work in Markdown files.
-<li>   Fixed some problems with the navigation tree for IE9 and Opera.
+       not expanded.</li>
+<li>   Aliases did not work in Markdown files.</li>
+<li>   Fixed some problems with the navigation tree for IE9 and Opera.</li>
 <li>   Included patch by Jake Colman to make the configgen.py work with older
-       Python version such as 2.4.3.
-<li>   Fixed problem parsing \code{.py}...\endcode 
-<li>   UML_LIMIT_NUM_FIELDS did not work correctly in all cases.
+       Python version such as 2.4.3.</li>
+<li>   Fixed problem parsing \code{.py}...\endcode </li>
+<li>   UML_LIMIT_NUM_FIELDS did not work correctly in all cases.</li>
 <li>   Setting SORT_GROUP_NAMES to YES, had no effect on child groups within
-       a group.
+       a group.</li>
 </ul>
+<p>
 \endhtmlonly
 \subsection log_1_8_0 Release 1.8.0
 \htmlonly
 <a name="1.8.0"></a>
 <b>(release date 25-02-2012)</b>
+</p>
 <h3>Changes</h3>
 <ul>
 <li>   Auto list items can now consist of multiple paragraphs.
        The indentation of the (first line) of a new paragraph detemines
        to which list item the paragraph belongs or if it marks the end of the
-       list. 
+       list. </li>
 <li>   When UML_LOOK is enabled, relations shown on the edge of a graph
-       are not shown as attributes (conform to the UML notation)
-<li>   Updated the manual and improved the look.
+       are not shown as attributes (conform to the UML notation)</li>
+<li>   Updated the manual and improved the look.</li>
 <li>   Made the contents in the navigation tree more consistent for
-       groups, pages with subpages, and grouped subpages.
+       groups, pages with subpages, and grouped subpages.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669079">669079</a>: Latex: made the margins of latex page layout smaller using 
-       the geometry package.
+       the geometry package.</li>
 <li>   The tool doxytag has been declared obsolete and is removed
        (it wasn't working properly anyway). Same goes for the installdox 
-       script.
-<li>   Updated the copyright in source code and doxywizard "about" to 2012.
+       script.</li>
+<li>   Updated the copyright in source code and doxywizard "about" to 2012.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668008">668008</a>: HTML version of the manual now has the treeview enabled
-       for easier navigation.
+       for easier navigation.</li>
 </ul>
 <h3>New features</h3>
 <ul>
@@ -1499,132 +1838,134 @@ make sure you add the following:
        setting MARKDOWN_SUPPORT to NO. When enabled the following is 
        processed differently:
        <ul>
-       <li> tabs are converted to spaces according to TAB_SIZE.
+       <li> tabs are converted to spaces according to TAB_SIZE.</li>
        <li> blockquotes are created for lines that start with one or more >'s
-            (amount of >'s detemine the indentation level).
+            (amount of >'s detemine the indentation level).</li>
        <li> emphasis using *emphasize this* or _emphasis this_ or
             strong emphasis using **emphasis this**. Unlike classic
-            Markdown 'some_great_indentifier' is not touched.
-       <li> code spans can be created using back-ticks, i.e. `here's an example`
+            Markdown 'some_great_indentifier' is not touched.</li>
+       <li> code spans can be created using back-ticks, i.e. `here's an example`</li>
        <li> Using three or more -'s or *'s alone on a line with only spaces
-            will produce a horizontal ruler.
+            will produce a horizontal ruler.</li>
        <li> A header can be created by putting a ===== (for h1) or ----- (for h2)
             on the next line or by using 1 to 6 #'s at the start of a line
-            for h1-h6.
-       <li> auto lists item can also start with + or * instead of only -
-       <li> ordered lists can be made using 1. 2. ... labels.
+            for h1-h6.</li>
+       <li> auto lists item can also start with + or * instead of only -</li>
+       <li> ordered lists can be made using 1. 2. ... labels.</li>
        <li> verbatim blocks can be produced by indenting 4 additional spaces.
             Note that doxygen uses a relative indent of 4 spaces, not an
-            absolute indent like Markdown does. 
-       <li> Markdown style hyperlinks and hyperlink references.
-       <li> Simple tables can be created using the <a href="http://michelf.com/projects/php-markdown/extra/#table">Markdown Extra format</a>.
-       <li> <a href="http://freewisdom.org/projects/python-markdown/Fenced_Code_Blocks">Fenced code blocks</a> are also supported, include language selection.
-       <li> files with extension .md or .markdown are converted to related pages.
+            absolute indent like Markdown does. </li>
+       <li> Markdown style hyperlinks and hyperlink references.</li>
+       <li> Simple tables can be created using the <a href="http://michelf.com/projects/php-markdown/extra/#table">Markdown Extra format</a>.</li>
+       <li> <a href="http://freewisdom.org/projects/python-markdown/Fenced_Code_Blocks">Fenced code blocks</a> are also supported, include language selection.</li>
+       <li> files with extension .md or .markdown are converted to related pages.</li>
        </ul>
-       See the section about Markdown support in the manual for details.
+       See the section about Markdown support in the manual for details.</li>
 <li>   It is now possible to add user defined tabs or groups of tabs to
        the navigation menu using the layout file (see the section of the manual
-       about customizing the output for details).
+       about customizing the output for details).</li>
 <li>   Added new command \tableofcontents (or [TOC] if you prefer Markdown)
        which can be used in a related page with sections to produce a 
        table of contents at the top of the HTML page (for other formats the
-       command has no effect).
+       command has no effect).</li>
 <li>   When using SVG images and INTERACTIVE_SVG is enabled, a print icon
        will be visible along with the navigation controls to facilitate 
-       printing of the part of the graph that is visible on screen.
+       printing of the part of the graph that is visible on screen.</li>
 <li>   Added obfuscation of email addresses for the HTML output to make
-       email harvesting more difficult.
+       email harvesting more difficult.</li>
 <li>   Added build targets for 64 bit Windows (thanks to Vladimir Simonov).
        The installer script is also updated to install a 64 bit version of
-       doxygen on 64 bit systems and the 32 bit version on 32 bit systems.
-<li>   Added support for using the HTML tag <blockquote> in comments.
+       doxygen on 64 bit systems and the 32 bit version on 32 bit systems.</li>
+<li>   Added support for using the HTML tag <blockquote> in comments.</li>
 <li>   Included patch by Gauthier Haderer that fixes some issues with the
-       dbus XML parser.
-<li>   Added support for Markdown style fenced code blocks.
+       dbus XML parser.</li>
+<li>   Added support for Markdown style fenced code blocks.</li>
 <li>   Added option to @code command to force parsing and syntax highlighting
-       according to a particular language.
-<li>   Section of pages are now added to the navigation index.
+       according to a particular language.</li>
+<li>   Section of pages are now added to the navigation index.</li>
 <li>   Added support for cell alignment and table header shading in
-       LaTeX and RTF output. 
+       LaTeX and RTF output. </li>
 <li>   Added -d filteroutput option to show the output of an input filter
-       (thanks to Albert for the patch).
+       (thanks to Albert for the patch).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668010">668010</a>: Latex: for Windows doxygen new generates a makepdf.bat
-       file in the latex output dir to create the latex documentation.
+       file in the latex output dir to create the latex documentation.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=498703">498703</a>: Fixed encoding issue in CHM index file for group titles.
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=498703">498703</a>: Fixed encoding issue in CHM index file for group titles.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=510975">510975</a>: FORTRAN: Keywords like .GT. recognized as symbols for 
-       cross ref.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=511906">511906</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=581303">581303</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622749">622749</a>: \copydoc did copy the brief description 
+       cross ref.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=511906">511906</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=581303">581303</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622749">622749</a>: \copydoc did copy the brief description
        into the detailed section, causing a difference between the original  
-       and the copy.
+       and the copy.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=555327">555327</a>: Using @ref for an example file, caused it to appear as
-       file::ext.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=567494">567494</a>: Fortran: Included patch for blockdata sub-programs.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=628417">628417</a>: Fortran: doxygen filter, preparsing fixed form of null
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=662286">662286</a>: TCL: Inlcuded patch to fixed UTF-8 support.
+       file::ext.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=567494">567494</a>: Fortran: Included patch for blockdata sub-programs.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=628417">628417</a>: Fortran: doxygen filter, preparsing fixed form of null</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=662286">662286</a>: TCL: Inlcuded patch to fixed UTF-8 support.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=662289">662289</a>: TCL: Included patch to prevent ##### from appearing in the
-       output.
+       output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646319">646319</a>: Using a file name with path for HTML_STYLESHEET caused the
-       path to appear in the HTML output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=664826">664826</a>: Fixed one more problem with include guard detection.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665629">665629</a>: Fixed parse problem when a #define appeared inside an enum.
+       path to appear in the HTML output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=664826">664826</a>: Fixed one more problem with include guard detection.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665629">665629</a>: Fixed parse problem when a #define appeared inside an enum.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665855">665855</a>: Fixed problem parsing C++ template specialization of the
-       form A<func(T*)> such as used in boost::signal2 types.
+       form A<func(T*)> such as used in boost::signal2 types.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666047">666047</a>: A </p> followed by an htmlonly..endhtmlonly section
-       caused invalid XHTML output.
+       caused invalid XHTML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666085">666085</a>: Fixed include handling in case the include guard was 
-       documented.
+       documented.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666124">666124</a>: Fixed problem loading the navigation tree in IE8 when
-       serving pages via a web server.
+       serving pages via a web server.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666337">666337</a>: Included patch to avoid hypenation hints in front of the 
-       first captial in a word.
+       first captial in a word.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666568">666568</a>: When SHOW_FILES was NO, a grouped function did not appear
-       in the javascript based search index.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666909">666909</a>: \copybrief introduced extra spacing in the HTML output.
+       in the javascript based search index.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666909">666909</a>: \copybrief introduced extra spacing in the HTML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666986">666986</a>: Fixed case where search engine specific code appeared
-       twice in the HTML output.
+       twice in the HTML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=666993">666993</a>: Fixed bug in the generated makefile causing index not
-       to be generated when using pdflatex.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=667020">667020</a>: HTML output for example pages was not well-formed.
+       to be generated when using pdflatex.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=667020">667020</a>: HTML output for example pages was not well-formed.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=667192">667192</a>: Include statements in latex output where placed all on 
-       one line in the LaTeX output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=667835">667835</a>: PHP: Fixed problem handling heredoc blocks
+       one line in the LaTeX output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=667835">667835</a>: PHP: Fixed problem handling heredoc blocks</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=667844">667844</a>: For aliases with a single argument it is no longer required 
-       to escape commas that appear inside the argument text.
+       to escape commas that appear inside the argument text.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668037">668037</a>: Latex: tables can now span multiple pages by using the xtab
-       package.
+       package.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668218">668218</a>: Doxygen will ignore the common prefix shared by all
        directories when computing a names for the directory's output files.
-       This will make the names of the output more stable.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668519">668519</a>: Added missing newline in man page output.
+       This will make the names of the output more stable.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=668519">668519</a>: Added missing newline in man page output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669071">669071</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669072">669072</a>: Fixed parse problem for Q_PROPERTY when a template
-       with a namespaced type was used.
+       with a namespaced type was used.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669078">669078</a>: Included patch which changes MATHJAX_RELPATH to use the
-       content delivery network by default.
+       content delivery network by default.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669138">669138</a>: Fortran: Fixed problem handling multiple definition 
-       statements on one line.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669406">669406</a>: Using -d Preprocessor now also works when QUIET is YES.
+       statements on one line.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669406">669406</a>: Using -d Preprocessor now also works when QUIET is YES.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669434">669434</a>: Latex: citations where only generated properly if the
-       bib files specified via CITE_BIB_FILES did not have a path.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669758">669758</a>: Tcl: Same function in multiple Tcl namespaces not added.
+       bib files specified via CITE_BIB_FILES did not have a path.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=669758">669758</a>: Tcl: Same function in multiple Tcl namespaces not added.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=670289">670289</a>: Fixed case where doxygen would not correctly detect
-       >> as a termination of a nested template.
+       >> as a termination of a nested template.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=670571">670571</a>: subpages generate empty pages in latex/rtf output and
-       broken links when SHORT_NAME was set to YES.
-<li>   Included VHDL fixes provided by Martin Kreis.
+       broken links when SHORT_NAME was set to YES.</li>
+<li>   Included VHDL fixes provided by Martin Kreis.</li>
 <li>   The word "dummy" wrongly appeared before the first parameter type in 
-       the LaTeX output for an Objective-C method.
-<li>   Fixed several small glitches in the tree view javascript code.
+       the LaTeX output for an Objective-C method.</li>
+<li>   Fixed several small glitches in the tree view javascript code.</li>
 <li>   Included a patch by Vladimir Simonov to make it possible to compile
-       doxygen with Visual Studio 2005.
-<li>   Fixed some typos in the manual (thanks Albert).
+       doxygen with Visual Studio 2005.</li>
+<li>   Fixed some typos in the manual (thanks Albert).</li>
 </ul>
+<p>
 \endhtmlonly
 \section log_1_7 1.7 Series
 \htmlonly
 <a name="1.7.6.1"></a>
+</p>
 <h1>Doxygen Release 1.7.6.1</h1>
 <h2>(release date 10-12-2011)</h2>
 <h3>Changes</h3>
@@ -1632,26 +1973,26 @@ make sure you add the following:
 <li>   Doxygen now reports its cache usage (for the symbol and the 
        lookup cache) at the end of a run (if QUIET=NO), and recommends 
        settings for SYMBOL_CACHE_SIZE and LOOKUP_CACHE_SIZE for your 
-       project if either cache is too small.
+       project if either cache is too small.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   Added new option LOOKUP_CACHE_SIZE to control the internal cache
-       doxygen uses to find symbols given their name and a context.
-<li>   Python: added support for @staticmethod
+       doxygen uses to find symbols given their name and a context.</li>
+<li>   Python: added support for @staticmethod</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   Python: scopes are now shown with . instead of ::
+<li>   Python: scopes are now shown with . instead of ::</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665313">665313</a>: Space before @if was not preserved, causing problems
-       with inline @if .. @endif constructs.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665583">665583</a>: Fixed XHTML validity problem when using mscgen graphs.
+       with inline @if .. @endif constructs.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665583">665583</a>: Fixed XHTML validity problem when using mscgen graphs.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665641">665641</a>: Fixed XHTML validity problem when GENERATE_TREEVIEW was
-       disabled.
+       disabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665720">665720</a>: Included patch to fix hang issue when non-empty 
-       INCLUDE_PATH was used.
+       INCLUDE_PATH was used.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665778">665778</a>: Fixed parse issue when a comma appeared as part of an 
-       enum's value.
+       enum's value.</li>
 </ul>
 <a name="1.7.6"></a>
 <h1>Doxygen Release 1.7.6</h1>
@@ -1660,105 +2001,105 @@ make sure you add the following:
 <ul>
 <li>   To improve the performance of loading the navigation tree,
        the data is now split into multiple javascript files which
-       are loaded dynamically.
+       are loaded dynamically.</li>
 <li>   The selected member is now briefly highlighted in the HTML output
-       (when GENERATE_TREEVIEW is enabled).
+       (when GENERATE_TREEVIEW is enabled).</li>
 <li>   The navigation tree (GENERATE_TREEVIEW) now shows the same information
-       as the index.
+       as the index.</li>
 <li>   The navindex section of layout now also controls what is shown in
-       the navigation tree.
-<li>   Improved HTML output support for IE9.
-<li>   Included redesigned VHDL parser (thanks to Martin Kreis for the patch)
+       the navigation tree.</li>
+<li>   Improved HTML output support for IE9.</li>
+<li>   Included redesigned VHDL parser (thanks to Martin Kreis for the patch)</li>
 <li>   When a class/structs has many (>15) members of the same type, only 
-       the first 10 are shown in the UML diagram.  
-<li>   Made the output of the javascript based search engine more compact.
+       the first 10 are shown in the UML diagram.  </li>
+<li>   Made the output of the javascript based search engine more compact.</li>
 </ul>
 <h3>New features</h3>
 <ul>
-<li>   Update of the French translation.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607305">607305</a>: Added support for PHP heredoc and nowdoc constructs.
+<li>   Update of the French translation.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607305">607305</a>: Added support for PHP heredoc and nowdoc constructs.</li>
 <li>   Added support for cross-referencing in case of operator-> overloading.
        This includes support for std::auto_ptr,std::smart_ptr,std::unique_ptr 
-       and std::weak_ptr when BUILTIN_STL_SUPPORT is enabled.
+       and std::weak_ptr when BUILTIN_STL_SUPPORT is enabled.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   Regression: some information was no longer available for a class, 
-       due to accidental deletion of a code block.
-<li>   Regression: fixed matching problem in the code parser.
+       due to accidental deletion of a code block.</li>
+<li>   Regression: fixed matching problem in the code parser.</li>
 <li>   Included fixes for TCL to support commands with \ and command 
-       definitions preceded by whitespace (thanks to Rene Zaumseil)
+       definitions preceded by whitespace (thanks to Rene Zaumseil)</li>
 <li>   When using "static int a,b" variable "b" incorrectly appeared in the 
-       output even though EXTRACT_STATIC was set to NO.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521717">521717</a>: .spec file was only updated after running ./configure
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656642">656642</a>: Fixed potential crash when using doxygen for large projects.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656878">656878</a>: Fixed problem running bibtex with \cite command on Windows.
+       output even though EXTRACT_STATIC was set to NO.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521717">521717</a>: .spec file was only updated after running ./configure</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656642">656642</a>: Fixed potential crash when using doxygen for large projects.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656878">656878</a>: Fixed problem running bibtex with \cite command on Windows.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=657152">657152</a>: Fixed constant expression evaluation error in the 
-       preprocessor.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652277">652277</a>: Removed bogus ' from the man page output.
+       preprocessor.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652277">652277</a>: Removed bogus ' from the man page output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=659244">659244</a>: Quotes in the brief description could appear unescaped in 
-       the tooltip.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641336">641336</a>: #includes with ../ were not always processed correctly.
+       the tooltip.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641336">641336</a>: #includes with ../ were not always processed correctly.</li>
 <li>   Fixed potential crash when INLINE_GROUPED_CLASSES and INLINE_SIMPLE_STRUCTS 
-       are set to YES.
+       are set to YES.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=658896">658896</a>: Fixed preprocessor problem handling #defines whose value was
-       a constant string containing ///.
+       a constant string containing ///.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=660332">660332</a>: Using a \ at the end of a comment line could cause 
-       parsing problems for C# as the \ was treated as a line continuation.
+       parsing problems for C# as the \ was treated as a line continuation.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=658033">658033</a>: Fixed parser problem when using multiple member groups 
-       inside a macro definition.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=503239">503239</a>: Fixed several issues related to \cite handling.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=658587">658587</a>: Improved the way macro definitions are collected.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=660501">660501</a>: Fixed LaTeX error when using \name with a description.
+       inside a macro definition.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=503239">503239</a>: Fixed several issues related to \cite handling.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=658587">658587</a>: Improved the way macro definitions are collected.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=660501">660501</a>: Fixed LaTeX error when using \name with a description.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=661292">661292</a>: The documentation for \mainpage incorrectly mentioned that
        one has to use \ref main in case GENERATE_TREEVIEW was set to YES, which
-       is no longer the case.
+       is no longer the case.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=659096">659096</a>: Nested aliases definitions where not always expanded properly
-       (regression w.r.t version 1.7.4)
+       (regression w.r.t version 1.7.4)</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=658038">658038</a>: Fixed preprocessor problem where the @ character inside a
-       macro definition could appear as @@.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=658646">658646</a>: Fixed problem running mscgen for LaTeX and RTF output.
+       macro definition could appear as @@.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=658646">658646</a>: Fixed problem running mscgen for LaTeX and RTF output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=661723">661723</a>: Using ClassName%'s did not work anymore, and also
-       ClassName's wasn't autolinked.
+       ClassName's wasn't autolinked.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=662044">662044</a>: Fixed potential printing of null pointer when using
-       a version filter that returned blanks.
+       a version filter that returned blanks.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625518">625518</a>: Fortran: first problem where subroutine using results 
-       variable appeared as a function.
+       variable appeared as a function.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=654153">654153</a>: If an URL appeared at the end of a sentence, the period
-       was included in the URL.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656560">656560</a>: Fortran: Added support for the Double Complex type.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=663640">663640</a>: Included workaround for Solaris CC issue in index.cpp
+       was included in the URL.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656560">656560</a>: Fortran: Added support for the Double Complex type.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=663640">663640</a>: Included workaround for Solaris CC issue in index.cpp</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=662190">662190</a>: Included patch to fix some TCL issues and add the TCL_SUBST 
-       configuration option.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=661672">661672</a>: Fortran: Added support for ALIAS expansion in comment blocks.
+       configuration option.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=661672">661672</a>: Fortran: Added support for ALIAS expansion in comment blocks.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=663101">663101</a>: Fixed case where a macro was not corrected found in the header
-       file when it could only be found via INCLUDE_PATH.
+       file when it could only be found via INCLUDE_PATH.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=664718">664718</a>: using multiple <para>'s inside a <summary> block caused 
-       text to be joined without spacing.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656556">656556</a>: Java enums are now parsed as classes. 
+       text to be joined without spacing.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656556">656556</a>: Java enums are now parsed as classes. </li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=664826">664826</a>: Fixed problem in the preprocessor regarding the handling 
-       of include guards.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=664893">664893</a>: Fixed typo in the docs for EXCLUDE_SYMLINKS.
+       of include guards.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=664893">664893</a>: Fixed typo in the docs for EXCLUDE_SYMLINKS.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665466">665466</a>: Using a relative URL with <a href> did not work when
-       CREATE_SUBDIRS was enabled.
+       CREATE_SUBDIRS was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=665464">665464</a>: Using an absolute URL with <img> did not work when
-       CREATE_SUBDIRS was enabled.
+       CREATE_SUBDIRS was enabled.</li>
 </ul>
 <a name="1.7.5.1"></a>
 <h1>Doxygen Release 1.7.5.1</h1>
 <h2>(release date 21-08-2011)</h2>
 <h3>New features</h3>
 <ul>
-<li>Update of the French translation.
+<li>Update of the French translation.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521717">521717</a>: .spec file was only updated after running ./configure
-<li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656642">656642</a>: Fixed potential crash when using doxygen for large projects.
-<li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656878">656878</a>: Fixed problem running bibtex with \cite command on Windows.
+<li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521717">521717</a>: .spec file was only updated after running ./configure</li>
+<li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656642">656642</a>: Fixed potential crash when using doxygen for large projects.</li>
+<li> id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656878">656878</a>: Fixed problem running bibtex with \cite command on Windows.</li>
 <li>Regression: some information was no longer available for a class, 
-    due to accidental deletion of a code block.
-<li>Regression: fixed matching problem in the code parser.
+    due to accidental deletion of a code block.</li>
+<li>Regression: fixed matching problem in the code parser.</li>
 </ul>
 <a name="1.7.5"></a>
 <h1>Doxygen Release 1.7.5</h1>
@@ -1766,142 +2107,142 @@ make sure you add the following:
 <h3>Changes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641904">641904</a>: Function in the call graphs are now shown based on first 
-       appearance rather then alphabetical order.
+       appearance rather then alphabetical order.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=616213">616213</a>: When customizing the HTML header $title now only generates
        the title excluding the project name (which can still be added using
-       $projectname)
-<li>   Improved the look of the class index: all items now have equal spacing.
+       $projectname)</li>
+<li>   Improved the look of the class index: all items now have equal spacing.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   New option INTERACTIVE_SVG which when set to YES in combination
        with DOT_IMAGE_FORMAT=svg will make doxygen
        generate interactive SVG diagrams that support zooming and 
-       panning via the mouse (only for large graphs). 
+       panning via the mouse (only for large graphs). </li>
 <li>   Added support for the Tcl programming language 
-       (thanks to Rene Zaumseil and Samuel Bentley for the patch).
-<li>   Added @copyright command.
+       (thanks to Rene Zaumseil and Samuel Bentley for the patch).</li>
+<li>   Added @copyright command.</li>
 <li>   added option MATHJAX_EXTENSIONS to provide additional extensions for
-       MathJax (thanks to David Munger for the patch).
+       MathJax (thanks to David Munger for the patch).</li>
 <li>   added option INLINE_SIMPLE_STRUCTS which when enabled shows the fields
        of simple classes and structs (with only public data fields) as a table
        and inline in context (file/group/namespace/class) provided this context 
-       is documented.
+       is documented.</li>
 <li>   When using the server based search engine (SEARCHENGINE=YES and
        SERVER_BASED_SEARCH=YES) doxygen now advertises a opensearch provider
        for your project, that allows integrating the search directly in
-       the search field of the browser (thanks to Phil Lello for the patch).
+       the search field of the browser (thanks to Phil Lello for the patch).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=503239">503239</a>: Added new option CITE_BIB_FILES and LATEX_BIB_STYLE and a new 
        command \cite, allowing you to make references to literature (as defined 
        in one or more .bib files). This also works for output formats other 
        than LaTeX. The tool bibtex is required for this to work though. Thanks
-       to David Munger for the initial patch upon which this feature is based.
-<li>   PHP namespaces are now shown as A\B in the output.
+       to David Munger for the initial patch upon which this feature is based.</li>
+<li>   PHP namespaces are now shown as A\B in the output.</li>
 <li>   Added new \snippet command that can be used to include marked 
        sections from a source file. See 
-       http://www.doxygen.org/commands.html#cmdsnippet for more info.
+       http://www.doxygen.org/commands.html#cmdsnippet for more info.</li>
 <li>   Added translation support for Armenian, thank to Armen Tangamyan.
-       and included translation updates for a number of languages.
+       and included translation updates for a number of languages.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   Fixed a couple of potential race conditions found by Helgrind while 
-       running dot from multiple threads.
+       running dot from multiple threads.</li>
 <li>   Graphs did not appear when enabling both INTERACTIVE_SVG and 
-       HTML_DYNAMIC_SECTIONS.
+       HTML_DYNAMIC_SECTIONS.</li>
 <li>   PDFs generated by newer versions of dot (i.e. 2.28) did not appear 
-       in the output, because doxygen failed to extract the bounding box.
-<li>   Improved call graph and cross-reference support for Python.
+       in the output, because doxygen failed to extract the bounding box.</li>
+<li>   Improved call graph and cross-reference support for Python.</li>
 <li>   INTERACTIVE_SVG now also works with IE9 if the html file extension is
-       set to xhtml.
+       set to xhtml.</li>
 <li>   Fixed several cases where the LaTeX output could produce too long
-       lines.
+       lines.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=318061">318061</a>: Putting two functions in the same group that only
-       different in the number of template arguments did not work.
+       different in the number of template arguments did not work.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=437346">437346</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=564614">564614</a>: Fixed proper encoding of multibyte output in RTF
-       depending on the code page (thanks to Hirao for the patch).
+       depending on the code page (thanks to Hirao for the patch).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521717">521717</a>: The .spec file in the source distribution did not get
-       updated to the latest version.
+       updated to the latest version.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521861">521861</a>: Fortran: Continuation character was not recognised in 
-       fixed format code.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=522496">522496</a>: Fortran: @param checking was not case insensitive.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=560105">560105</a>: Fixed problem combining @cond with preprocessor directives.
+       fixed format code.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=522496">522496</a>: Fortran: @param checking was not case insensitive.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=560105">560105</a>: Fixed problem combining @cond with preprocessor directives.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=577359">577359</a>: Using "struct A : C, D {};" showed a private inheritance
-       relation for D.
+       relation for D.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=584194">584194</a>: Some links to typedef where pointing to the typedef'ed
-       class instead. 
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=619560">619560</a>: Anonymous enums caused an invalid entry in the LaTeX TOC.
+       class instead. </li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=619560">619560</a>: Anonymous enums caused an invalid entry in the LaTeX TOC.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622935">622935</a>: Deriving from an unknown template class could cause the
-       class to appear with a -g postfix in C# 
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625731">625731</a>: Fortran: Fixed issue handling private subroutines.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=632946">632946</a>: LaTeX now starts a new page when starting a new module.
+       class to appear with a -g postfix in C# </li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625731">625731</a>: Fortran: Fixed issue handling private subroutines.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=632946">632946</a>: LaTeX now starts a new page when starting a new module.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634837">634837</a>: Fortran: Prefix of function was overwritten and the word 
-       'function' not specified.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=637099">637099</a>: Fortran: Included fix for using collaboration diagrams.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=642468">642468</a>: Added PHP support for namespace with curly braces.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643219">643219</a>: Fortran: Improved handling of semicolons.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643617">643617</a>: Fortran: Added support for "type is".
+       'function' not specified.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=637099">637099</a>: Fortran: Included fix for using collaboration diagrams.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=642468">642468</a>: Added PHP support for namespace with curly braces.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643219">643219</a>: Fortran: Improved handling of semicolons.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643617">643617</a>: Fortran: Added support for "type is".</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643944">643944</a>: A macro added to a group appeared twice in the group 
-       documentation if was also made related to a class using \relates.
+       documentation if was also made related to a class using \relates.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646321">646321</a>: Fixed problem were the search box was missing when using
-       a custom HTML header.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646447">646447</a>: Fixed unterminated img tab in the XHTML output.
+       a custom HTML header.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646447">646447</a>: Fixed unterminated img tab in the XHTML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646463">646463</a>: Fixed problem handling MSCFILE_DIRS option with multiple
-       paths.
+       paths.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646533">646533</a>: Included patch to sort overloaded members by appearance in
-       the code.
+       the code.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646747">646747</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646879">646879</a>: Putting an autolist inside a @todo, @bug or similar
-       section did not work anymore.
+       section did not work anymore.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=646922">646922</a>: Referring to a logo with a relative path, caused 
-       a broken image target when using a custom HTML header.
+       a broken image target when using a custom HTML header.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=647499">647499</a>: Fixed HTML rendering problem on older browsers when 
-       GENERATE_TREEVIEW was enabled.
+       GENERATE_TREEVIEW was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=647768">647768</a>: Linking to a section on the main page could result in a
-       broken link when GENERATE_TREEVIEW was enabled.
+       broken link when GENERATE_TREEVIEW was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=647889">647889</a>: Fixed invalid warning when using @deparated method with
-       default values for parameters.
+       default values for parameters.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=648302">648302</a>: A function made related using @relates could end up in
        the wrong class if there was already a method with a matching
-       argument list in that other class.
+       argument list in that other class.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=649103">649103</a>: Return types containing multiple *'s ended up in the
-       output with only one * in some cases.
+       output with only one * in some cases.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=650397">650397</a>: Fixed problem with alias substitution if the alias had
-       more then 9 parameters.
+       more then 9 parameters.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=650430">650430</a>: For nested anonymous structs @xx markers could appear in
-       the output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=650463">650463</a>: Added compilation support for MacOSX 10.7 (aka Lion).
+       the output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=650463">650463</a>: Added compilation support for MacOSX 10.7 (aka Lion).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=650958">650958</a>: Fixed issue printing HTML pages when the
-       GENERATE_TREEVIEW option is set to YES.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=651611">651611</a>: Fixed broken link to an undocumented namespace.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652138">652138</a>: Fixed potential crash while parsing Fortran code.
+       GENERATE_TREEVIEW option is set to YES.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=651611">651611</a>: Fixed broken link to an undocumented namespace.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652138">652138</a>: Fixed potential crash while parsing Fortran code.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652188">652188</a>: Fixed problem parsing comment which included 
-       an unterminated alias within quotes (i.e. "\word{")
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652277">652277</a>: Lines starting with . did not appear in the man page output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652389">652389</a>: Fortran: Fixed text is detailed function section.
+       an unterminated alias within quotes (i.e. "\word{")</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652277">652277</a>: Lines starting with . did not appear in the man page output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652389">652389</a>: Fortran: Fixed text is detailed function section.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652396">652396</a>: When enabling INTERACTIVE_SVG wide graphs are now also
-       fit to the screen width.
+       fit to the screen width.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652695">652695</a>: Added missing space between parameter type and name in 
-       the RTF output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652741">652741</a>: Use background-color instead of background in doxygen.css.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=653344">653344</a>: Fixed potential segfault while creating man pages.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=653666">653666</a>: Fortran: add a space to "type" in argument list.
+       the RTF output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652741">652741</a>: Use background-color instead of background in doxygen.css.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=653344">653344</a>: Fixed potential segfault while creating man pages.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=653666">653666</a>: Fortran: add a space to "type" in argument list.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=653801">653801</a>: Fixed problem handling include guard when multiple 
-       blocks guarded by the same guard were used in a header file. 
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=653963">653963</a>: Fortran: Unified handling of @params at various places.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=654108">654108</a>: make clean failed on a system without qmake.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=654244">654244</a>: Fixed compile issue for HP Itanium.
+       blocks guarded by the same guard were used in a header file. </li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=653963">653963</a>: Fortran: Unified handling of @params at various places.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=654108">654108</a>: make clean failed on a system without qmake.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=654244">654244</a>: Fixed compile issue for HP Itanium.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=654779">654779</a>: Fortran: Interface was seen as a class with constructor / 
-       destructor.
+       destructor.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=654869">654869</a>: Using the word "property" as a type in C caused wrong 
-       results.
+       results.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=654866">654866</a>: Fortran: fixed issue parsing function type that looked like
-       C function pointers.
+       C function pointers.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=655178">655178</a>: Fortran: Fixed parse issue when using variable name 
-                  starting with the word interface.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=655591">655591</a>: Improved error handling for empty html style list.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=655935">655935</a>: Fixed case where %s could end up in a warning messge.
+                  starting with the word interface.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=655591">655591</a>: Improved error handling for empty html style list.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=655935">655935</a>: Fixed case where %s could end up in a warning messge.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=656005">656005</a>: Methods of Objective-C categories defined in an .m file are
-       now marked as private.
+       now marked as private.</li>
 </ul>
 <a name="1.7.4"></a>
 <h1>Doxygen Release 1.7.4</h1>
@@ -1909,86 +2250,86 @@ make sure you add the following:
 <h3>Changes</h3>
 <ul>
 <li>   doxygen -w html now reads the default Doxyfile even if not specified
-       explicitly
+       explicitly</li>
 <li>   doxygen -w html now produces a template header and footer that can
-       be used independent of the configuration options used.
+       be used independent of the configuration options used.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   New option INLINE_GROUPED_CLASSES that when enabled shows grouped
-       classes inside the group documentation, instead of on a separate page.
-<li>   Included updates for the Italian and Russian translation.
+       classes inside the group documentation, instead of on a separate page.</li>
+<li>   Included updates for the Italian and Russian translation.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640875">640875</a>: Added option HTML_EXTRA_FILES which makes it easier to copy
-       additional files to the HTML output and also add them to the index files.
+       additional files to the HTML output and also add them to the index files.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=642579">642579</a>: Included patch that adds new LATEX_FOOTER option to 
-       customize the end of refman.tex in the LaTeX output.
+       customize the end of refman.tex in the LaTeX output.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=140259">140259</a>: Jumping to a @section did not work in the RTF output.
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=140259">140259</a>: Jumping to a @section did not work in the RTF output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521854">521854</a>: Fortran: included patch for supporting multiple argument 
-                  declarations on one line.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521861">521861</a>: Fixed problem with line continuation in Fortran.
+                  declarations on one line.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=521861">521861</a>: Fixed problem with line continuation in Fortran.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=566921">566921</a>: %A::B now prevents a link for A::B, instead of only for A
-                  and generating a warning that ::B cannot be linked.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=598481">598481</a>: Fortran: Added support for extends keyword.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=618374">618374</a>: Added support for inlining code in the VHDL output.
+                  and generating a warning that ::B cannot be linked.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=598481">598481</a>: Fortran: Added support for extends keyword.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=618374">618374</a>: Added support for inlining code in the VHDL output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625519">625519</a>: Fortran: argument name starting with a reserved word was
-                  not handled properly.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634415">634415</a>: Fixed problem parsing an array of character literals.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=635537">635537</a>: Links to file members were not made when found in tag files.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638637">638637</a>: The Doxyfile documentation contained some very long lines.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638655">638655</a>: Double quote in page or group title broke treeview.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638733">638733</a>: Improved documentation for DOT_IMAGE_FORMAT option.
+                  not handled properly.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634415">634415</a>: Fixed problem parsing an array of character literals.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=635537">635537</a>: Links to file members were not made when found in tag files.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638637">638637</a>: The Doxyfile documentation contained some very long lines.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638655">638655</a>: Double quote in page or group title broke treeview.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638733">638733</a>: Improved documentation for DOT_IMAGE_FORMAT option.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638829">638829</a>: Added documentation to warn for consequences of using
-                  HTML_HEADER.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638856">638856</a>: Fixed problem autolinking to struct field using #S::a
+                  HTML_HEADER.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=638856">638856</a>: Fixed problem autolinking to struct field using #S::a</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=639272">639272</a>: using @dot... at endot produced an image referenced with
-                  absolute path.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=639521">639521</a>: \mscfile did not work properly for LaTeX output.
+                  absolute path.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=639521">639521</a>: \mscfile did not work properly for LaTeX output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=639716">639716</a>: Fixed problem where #include's could cause phantom __pad__
-                  members to appear in the output (appeared on Windows only).
+                  members to appear in the output (appeared on Windows only).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640259">640259</a>: Options PROJECT_LOGO and PROJECT_BRIEF were missing
-                  from the manual.
+                  from the manual.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640463">640463</a>: Fixed problem parsing PHP "use" statement when the argument
-                  did not have a namespace scope.
+                  did not have a namespace scope.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640588">640588</a>: Included fix for proper splitting of multiple arguments
-                  given to the QHP_CUST_FILTER_ATTRS option.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640646">640646</a>: Long error messages could cause memory corruption.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640742">640742</a>: XML: switched indent option to no in the combine.xslt script.
+                  given to the QHP_CUST_FILTER_ATTRS option.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640646">640646</a>: Long error messages could cause memory corruption.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640742">640742</a>: XML: switched indent option to no in the combine.xslt script.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640754">640754</a>: Comment with XML style list of type table was not rendered 
-                  properly.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640822">640822</a>: Added support for overloading of C# indexer operators.
+                  properly.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640822">640822</a>: Added support for overloading of C# indexer operators.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640828">640828</a>: Internal section marked with @internal was not shown as
-                  such anymore in the XML output.
+                  such anymore in the XML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640847">640847</a>: PHP: Fixed parse problem referring to class in global  
-                  namespace.
+                  namespace.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640924">640924</a>: Included patch by Haffmans to make the custom header and
-                  footer independent of the chosen config options.
+                  footer independent of the chosen config options.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=640927">640927</a>: Included fix to prevent a warning in the server side PHP
-                  search script.
+                  search script.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641026">641026</a>: Included patch to fix broken hyperlink to page entry 
-                  in xreflists.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641188">641188</a>: Header of \page was wrong in Man page output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641336">641336</a>: #include's to other directories were not always linked.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641673">641673</a>: Using "use Foo\Foo;" in PHP could cause doxygen to hang.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641814">641814</a>: In some cases the HTML output could contain an extra </p>.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=642030">642030</a>: Tooltips with HTML entities could be wrongly truncated.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=642475">642475</a>: Include graphs could be incomplete.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643056">643056</a>: Fixed problem with macro expansion.
+                  in xreflists.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641188">641188</a>: Header of \page was wrong in Man page output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641336">641336</a>: #include's to other directories were not always linked.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641673">641673</a>: Using "use Foo\Foo;" in PHP could cause doxygen to hang.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641814">641814</a>: In some cases the HTML output could contain an extra </p>.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=642030">642030</a>: Tooltips with HTML entities could be wrongly truncated.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=642475">642475</a>: Include graphs could be incomplete.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643056">643056</a>: Fixed problem with macro expansion.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643279">643279</a>: Fixed potential crash when generating a warning for
-                  void f(int %x) style parameter, which is valid in C++/CLI.
+                  void f(int %x) style parameter, which is valid in C++/CLI.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643280">643280</a>: Included patch to enabled LargeAddressAware for Windows 
-                  builds.
+                  builds.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643276">643276</a>: Fixed cases where FILE_VERSION_FILTER was called for 
-                  dummy files with name "generated".
+                  dummy files with name "generated".</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=643655">643655</a>: Fixed argument matching issue when one of match candidates
-                  was a typedef of a method pointer.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=645754">645754</a>: mscfile tag was closed with dotfile in the XML output.
+                  was a typedef of a method pointer.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=645754">645754</a>: mscfile tag was closed with dotfile in the XML output.</li>
 <li>   doxygen -w html now ignores the values for HTML_HEADER and HTML_FOOTER
-       found in the config file.
+       found in the config file.</li>
 <li>   Importing a group via a tag file could overrule a local group with 
-       the same name even when EXTERNAL_GROUPS was disabled.
+       the same name even when EXTERNAL_GROUPS was disabled.</li>
 </ul>
 <a name="1.7.3"></a>
 <h1>Doxygen Release 1.7.3</h1>
@@ -2000,81 +2341,81 @@ make sure you add the following:
        Disabling the index (with DISABLE_INDEX) still shows the new header
        (you can still customize this using HTML_HEADER). This now works
        nicely in combination with GENERATE_TREEVIEW = YES and/or
-       SEARCH_ENGINE = YES.
+       SEARCH_ENGINE = YES.</li>
 <li>   Redesigned the treeview feature. Instead of using frames, the
        navigation tree is now loaded on each page dynamically. This allows
        bookmarking a page and always keeps the top menu visible. Also the
        current item is automatically highlighted in the tree.
        Also updated the icons in the treeview to match the overall look'n'feel.
        Note: if you now use a custom HTML header, please update it using
-       doxygen with the -w and the edit the default header.
+       doxygen with the -w and the edit the default header.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=499544">499544</a>: Added SVG support to doxygen's dot output 
-       (setting DOT_IMAGE_FORMAT to svg now works as expected)
+       (setting DOT_IMAGE_FORMAT to svg now works as expected)</li>
 <li>   Added control to the wizard to configure the color of the output
-       visually.
+       visually.</li>
 <li>   Added options to specify project synopsis and select a 
-       project logo to the wizard.
+       project logo to the wizard.</li>
 <li>   Added option PROJECT_LOGO which can be used to specify an image
        which will be shown in the header of each HTML page along with
-       the project name (PROJECT_NAME option).
+       the project name (PROJECT_NAME option).</li>
 <li>   Added option PROJECT_BRIEF which can be used to specify a brief
        description which will be shown in the header of each HTML page
-       just below the project name.
+       just below the project name.</li>
 <li>   Added new option FILTER_SOURCE_PATTERNS which can be used 
        in combination with FILTER_SOURCE_FILES to filter files used for 
        the source browser based on file extension, which can overwrite 
-       the filter set by FILTER_PATTERNS and/or INPUT_FILTER.
+       the filter set by FILTER_PATTERNS and/or INPUT_FILTER.</li>
 <li>   Added new option STRICT_PROTO_MATCHING which is disabled by default,
        and makes the parameter matching to be less strict, resulting in 
-       fewer "No matching class member found" warnings.
+       fewer "No matching class member found" warnings.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=306076">306076</a>: code blocks with using directives did not get hyperlinked.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=313527">313527</a>: enum values with bitfields did not get parsed correctly.
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=306076">306076</a>: code blocks with using directives did not get hyperlinked.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=313527">313527</a>: enum values with bitfields did not get parsed correctly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=565715">565715</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=630582">630582</a>: Included a patch that fixes a couple of Fortran issues
-       (thanks to Albert).
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615507">615507</a>: Fixed problem handling @cond.. at endcond in Fortran code.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=619040">619040</a>: Scope was missing in Tokens.xml when using docsets.
+       (thanks to Albert).</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615507">615507</a>: Fixed problem handling @cond.. at endcond in Fortran code.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=619040">619040</a>: Scope was missing in Tokens.xml when using docsets.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625517">625517</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=523156">523156</a>: Applied patch tp avoid stripping prefixes for Fortran 
-       subroutines.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626476">626476</a>: allow label before end statement in Fortran
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=630901">630901</a>: </see> was not handled properly in comment block.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=632311">632311</a>: Fixed potential crash for empty verbatim section.
+       subroutines.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626476">626476</a>: allow label before end statement in Fortran</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=630901">630901</a>: </see> was not handled properly in comment block.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=632311">632311</a>: Fixed potential crash for empty verbatim section.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=632426">632426</a>: closing brace of a function with one parameter has wrong
-       color in HTML.
+       color in HTML.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=632543">632543</a>: Added support for Fortan TYPEs with languge bindings.
-       (thanks to a patch by Daniel Franke)
+       (thanks to a patch by Daniel Franke)</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=632879">632879</a>: An explicit link request such as #blah did not longer produce
-       a warning if no symbol named blah was found.
+       a warning if no symbol named blah was found.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=633891">633891</a>: warnings in "inbody" documentation were shown with "unknown"
-       file name.
+       file name.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634116">634116</a>: Titles customized via the layout file did not appear in
-       the title page and navigation tree, only in the top menu.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634600">634600</a>: Fixed problem resolving typedef.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634775">634775</a>: Fixed a problem were // inside a code block got removed.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634857">634857</a>: Added support for escaping :: by using \:: (or @::)
+       the title page and navigation tree, only in the top menu.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634600">634600</a>: Fixed problem resolving typedef.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634775">634775</a>: Fixed a problem were // inside a code block got removed.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634857">634857</a>: Added support for escaping :: by using \:: (or @::)</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634962">634962</a>: #include with relative path to parent dir did not get
-       hyperlinked.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634986">634986</a>: Removed double definition of docParamName in compound.xsd.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=635198">635198</a>: C++/CLI Finalizer methods were not parsed properly.
+       hyperlinked.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=634986">634986</a>: Removed double definition of docParamName in compound.xsd.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=635198">635198</a>: C++/CLI Finalizer methods were not parsed properly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=636475">636475</a>: Objective-C method names can now be used as the 
-       the first argument of \ref.
+       the first argument of \ref.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=636588">636588</a>: Fixed a couple of problems in the compound.xsd schema used
-       for XML output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=636598">636598</a>: DISTRIBUTE_GROUP_DOC now works again for enum values.
+       for XML output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=636598">636598</a>: DISTRIBUTE_GROUP_DOC now works again for enum values.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=636947">636947</a>: Improved matching of typedef'ed array parameter and non 
-       typedef'ed array parameter.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=637610">637610</a>: Added a number of fixed for Fortran interfaces.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=637712">637712</a>: Handle files with the .for extension as Fortran.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=637987">637987</a>: Fixed error in the grouping documentation.
+       typedef'ed array parameter.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=637610">637610</a>: Added a number of fixed for Fortran interfaces.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=637712">637712</a>: Handle files with the .for extension as Fortran.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=637987">637987</a>: Fixed error in the grouping documentation.</li>
 <li>   Fixed line number sync problem when using Objective-C #import 
-       statements.
-<li>   Fixed problem handling /** @cond */ in the preprocessor.
-<li>   Member groups could get reordered in the output.
+       statements.</li>
+<li>   Fixed problem handling /** @cond */ in the preprocessor.</li>
+<li>   Member groups could get reordered in the output.</li>
 </ul>
 <a name="1.7.2"></a>
 <h1>Doxygen Release 1.7.2</h1>
@@ -2082,106 +2423,106 @@ make sure you add the following:
 
 <h3>Changes</h3>
 <ul>
-<li>   Changed the default font of the LaTeX output to helvetica.
+<li>   Changed the default font of the LaTeX output to helvetica.</li>
 <li>   Changed the way parameters and return values are represented in the
-       LaTeX and RTF output. They are now listed using tables.
+       LaTeX and RTF output. They are now listed using tables.</li>
 </ul>
 <h3>New features</h3>
 <ul>
-<li>   added support for Apple's block object extension for C/Obj-C/C++.
-<li>   added support for detecting Python constructors and destructors.
+<li>   added support for Apple's block object extension for C/Obj-C/C++.</li>
+<li>   added support for detecting Python constructors and destructors.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624575">624575</a>: Added \endinternal command that can be used to force
-       the end of a section started with \internal.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=552605">552605</a>: Added parsing support for PHP 5.3+ style namespaces.
+       the end of a section started with \internal.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=552605">552605</a>: Added parsing support for PHP 5.3+ style namespaces.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=582532">582532</a>: added \mscfile command which can be used to insert a 
        message sequence chart given a .msc file. 
        Also added a new config option MSCFILE_DIRS to provide directories
-       were msc files are searched (Thanks to Adrien for the patch).
+       were msc files are searched (Thanks to Adrien for the patch).</li>
 <li>   Added support for type specifiers for documenting PHP parameters,
-       format: "@param type $paramname docs"
+       format: "@param type $paramname docs"</li>
 <li>   Added support for rendering formulas in the HTML output 
        using MathJax instead of using prerendered bitmaps. 
        For this purpose the options USE_MATHJAX and MATHJAX_RELPATH were
-       added.
+       added.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=306076">306076</a>: Fixed case where using of a namespace did not work inside
-       an example.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=336053">336053</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=487871">487871</a>: /// were not stripped from formulas and \dot..\enddot
+       an example.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=336053">336053</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=487871">487871</a>: /// were not stripped from formulas and \dot..\enddot</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=563698">563698</a>: dropped support for a4wide paper format for LaTeX, since
-       it is on the LaTeX taboo list.
+       it is on the LaTeX taboo list.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=571014">571014</a>: Behaviour of CLASS_DIAGRAM=NO in combination with
-       HAVE_DOT=YES, was not propely documented.
+       HAVE_DOT=YES, was not propely documented.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=576291">576291</a>: Python comments for next class or method could end up in
-       code of a method/class when enabling INLINE_SOURCES.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=611174">611174</a>: Fixed problem handling nestes classes in Python.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621733">621733</a>: removed unexpected warnings about undocumented return types
+       code of a method/class when enabling INLINE_SOURCES.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=611174">611174</a>: Fixed problem handling nestes classes in Python.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621733">621733</a>: removed unexpected warnings about undocumented return types</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622737">622737</a>: Undefined function macros could cause constant expression
-       errors.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622780">622780</a>: updated copyright statement in PDF docs.
+       errors.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622780">622780</a>: updated copyright statement in PDF docs.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622935">622935</a>: C# generics appeared with -g extension in the output in 
-       some situations.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623023">623023</a>: Fixed parsing problem for "int &foo1(),&foo2();"
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623052">623052</a>: Link to destructor was wrong in the member index.
+       some situations.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623023">623023</a>: Fixed parsing problem for "int &foo1(),&foo2();"</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623052">623052</a>: Link to destructor was wrong in the member index.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623424">623424</a>: Fixed problem where struct description gets added to variable
-       of struct type.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623673">623673</a>: Anchors were missing in the Qhp index for members.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623733">623733</a>: Fixed potential crash due to uninitialized line number.
+       of struct type.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623673">623673</a>: Anchors were missing in the Qhp index for members.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623733">623733</a>: Fixed potential crash due to uninitialized line number.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=623765">623765</a>: closed.png was wrongly linked when GENERATE_SUBDIRS and
-       HTML_DYNAMIC_SECTIONS were enabled.
+       HTML_DYNAMIC_SECTIONS were enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624014">624014</a>: Function macro was not handled properly when there was
-       a line continuation directly after the name.
+       a line continuation directly after the name.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624095">624095</a>: Linking to a class via a tag file did not work if the class
-       was in an undocumented namespace.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624104">624104</a>: Fixed a couple of typos in lodepng.h
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624323">624323</a>: Graph legend image was missing form the index files.
+       was in an undocumented namespace.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624104">624104</a>: Fixed a couple of typos in lodepng.h</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624323">624323</a>: Graph legend image was missing form the index files.</li>
 <li>   Fixed a number of typos in the config file documentation 
-       (thanks to Jens Schweikhardt)
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624514">624514</a>: Some enums were not cross-referenced.
+       (thanks to Jens Schweikhardt)</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624514">624514</a>: Some enums were not cross-referenced.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=624829">624829</a>: Missing \endcond could cause preprocessor issues in 
-       next file(s) to be parsed.
+       next file(s) to be parsed.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625070">625070</a>: a function definition in a namespace, documented in the
-       header did not always get cross-referenced.
+       header did not always get cross-referenced.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625296">625296</a>: Removed superfluous <td></td> from parameter list in
-       HTML output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625317">625317</a>: Unterminated comment could crash doxygen.
+       HTML output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625317">625317</a>: Unterminated comment could crash doxygen.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625531">625531</a>: Inherited documentation was only included for the
-       last derived class in case of multiple inheritance.
+       last derived class in case of multiple inheritance.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625578">625578</a>: In the HTML output </div> was missing for built-in
-       class diagrams.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625555">625555</a>: References in example files with underscores were wrong.
+       class diagrams.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625555">625555</a>: References in example files with underscores were wrong.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625982">625982</a>: When using japanese characters mixed with ascii characters
-       doxygen incorrected ended the brief description with a dot.
+       doxygen incorrected ended the brief description with a dot.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=625952">625952</a>: setting MULTILINE_CPP_IS_BRIEF to YES, cause /// to appear
-       in the output.
+       in the output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626033">626033</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=567774">567774</a>: EXTENSION_MAPPING did not work if a the mapped 
        language was handled by the same parser as used for the original  
-       extension.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626175">626175</a>: Fixed bracket bug in LaTeX fancy headers.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626508">626508</a>: Allow hyphen in key argument of \xrefitem.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626647">626647</a>: \copydoc did not work for array type arguments (e.g. int[]).
+       extension.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626175">626175</a>: Fixed bracket bug in LaTeX fancy headers.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626508">626508</a>: Allow hyphen in key argument of \xrefitem.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=626647">626647</a>: \copydoc did not work for array type arguments (e.g. int[]).</li>
 <li>   Use \dotfile did not produce the correct map file, so URLs in dot
-       files did not work.
+       files did not work.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=627371">627371</a>: #define's in files only found via INCLUDE_PATH were not
-       correctly handled.
+       correctly handled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=628065">628065</a>: auto brief description ending with .) cause the ) to
-       end up in the detailed part.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=628242">628242</a>: Fixed encoding issue for the Spanish translation.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=628678">628678</a>: Fixed segmentation fault in case of very long errors.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629040">629040</a>: Fixed type in search page of the documentation.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629182">629182</a>: Fixed problem detecting include guard.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629270">629270</a>: Made file extension to parser mapping case insensitive.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629485">629485</a>: Latex makefile clean target used rm command also for Windows.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629942">629942</a>: the EXCLUDE_SYMBOLS option was missing form the online docs.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=631094">631094</a>: \htmlinclude and \verbinclude ended the brief description.
+       end up in the detailed part.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=628242">628242</a>: Fixed encoding issue for the Spanish translation.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=628678">628678</a>: Fixed segmentation fault in case of very long errors.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629040">629040</a>: Fixed type in search page of the documentation.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629182">629182</a>: Fixed problem detecting include guard.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629270">629270</a>: Made file extension to parser mapping case insensitive.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629485">629485</a>: Latex makefile clean target used rm command also for Windows.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=629942">629942</a>: the EXCLUDE_SYMBOLS option was missing form the online docs.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=631094">631094</a>: \htmlinclude and \verbinclude ended the brief description.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=631380">631380</a>: Inconsistent behaviour when a brief description was given 
-       following by a detailed comment block with JAVADOC_AUTOBRIEF enabled.
+       following by a detailed comment block with JAVADOC_AUTOBRIEF enabled.</li>
 <li>   Fixed a number of typos in the documentation 
-       (thanks to Albert van der Meer)
+       (thanks to Albert van der Meer)</li>
 <li>   Fixed potential hangup when scanning directories defined as 
-       symlinks to absolute paths.
-<li>   HTML attributes other than src were not copied for the <img> tag.
+       symlinks to absolute paths.</li>
+<li>   HTML attributes other than src were not copied for the <img> tag.</li>
 </ul>
 <a name="1.7.1"></a>
 <h1>Doxygen Release 1.7.1</h1>
@@ -2190,49 +2531,49 @@ make sure you add the following:
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621695">621695</a>: Made warning and error messages appear with lower case 
        "warning:" and "error:" prefix to make it easier to use the messages 
-       from Visual Studio.
+       from Visual Studio.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621908">621908</a>: Added new config option FORMULA_TRANSPARENT which allows
        selecting between transparent (YES) or non-transparent (NO) PNGs for
-       formulas in the HTML output.
-<li>   Update for Turkish translation.
+       formulas in the HTML output.</li>
+<li>   Update for Turkish translation.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=533821">533821</a>: Inheritance relation for a C# class deriving from
-       a generic class was not handled correctly.
+       a generic class was not handled correctly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=554638">554638</a>: Changing DOT_IMAGE_FORMAT did not cause the graphs to be
-       regenerated.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=576533">576533</a>: A field of the form "enum E *p" was ignore.
+       regenerated.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=576533">576533</a>: A field of the form "enum E *p" was ignore.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597016">597016</a>: Hide scope name was not working properly for todo items
-       inside class members, where the class was inside a namespace.
+       inside class members, where the class was inside a namespace.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=617761">617761</a>: In dot graphs now also @ref worked (previously only \ref was
-       supported).
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621653">621653</a>: Fixed error when compiling doxygen for Solaris 8.
+       supported).</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621653">621653</a>: Fixed error when compiling doxygen for Solaris 8.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621733">621733</a>: Removed bogus warning about undocument return type for 
-       define when WARN_NO_PARAMDOC was enabled.
+       define when WARN_NO_PARAMDOC was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621780">621780</a>: Fixed parsing support for a function that returns a 
-       struct definition.
+       struct definition.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621785">621785</a>: Doxygen could hang when using \copydoc in a function with
-       \param.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621805">621805</a>: Using //!< after a #define no longer worked.
+       \param.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621805">621805</a>: Using //!< after a #define no longer worked.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621854">621854</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622219">622219</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622593">622593</a>: html help compiler (and also the Qt 
-       help compiler) was called before all dot images were generated.
+       help compiler) was called before all dot images were generated.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=621984">621984</a>: Using a auto-list in combination with \subpage cause the
-       items to be inlined.
+       items to be inlined.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622018">622018</a>: Fixed problem parsing a @param command where the
-       text part started with a formula.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622019">622019</a>: Added some instructions how to document Fortran code.
+       text part started with a formula.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622019">622019</a>: Added some instructions how to document Fortran code.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622041">622041</a>: Using \var multiple times in a comment block did not
-       work properly.
+       work properly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622413">622413</a>: Tooltips could get wrongly truncated when multi-byte
-       UTF-8 characters were used.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622471">622471</a>: Argument matching failed for typedef in another namespace.
-<li>   Fixed crash situation while handling commands inside a @ref section.
+       UTF-8 characters were used.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=622471">622471</a>: Argument matching failed for typedef in another namespace.</li>
+<li>   Fixed crash situation while handling commands inside a @ref section.</li>
 <li>   Treeview icons were missing in the HTML output when setting
-       GENERATE_TREEVIEW to NO and USE_INLINE_TREES to YES.
+       GENERATE_TREEVIEW to NO and USE_INLINE_TREES to YES.</li>
 </ul>
 
 <a name="1.7.0"></a>
@@ -2240,192 +2581,194 @@ make sure you add the following:
 <h2>(release date 15-06-2010)</h2>
 <h3>Changes</h3>
 <ul>
-<li>   Changed the look of the HTML output.
+<li>   Changed the look of the HTML output.</li>
 <li>   Made several internal changes that should have a positive effect on the 
-       overall performance.
+       overall performance.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   The color of the HTML output can now easily be adjusted using three new 
        options: HTML_COLORSTYLE_HUE, HTML_COLORSTYLE_SAT, 
        and HTML_COLORSTYLE_GAMMA, which control respectively the hue, 
-       saturation, and gamma of all elements in the HTML output.
+       saturation, and gamma of all elements in the HTML output.</li>
 <li>   Moved dot invocations to the end of a doxygen run. Doxygen will now
        run multiple instances of dot in parallel (for better CPU utilisation
        on multi-core systems). The new config option DOT_NUM_THREADS 
-       determines the number of threads used (were 0 is auto-detect).
+       determines the number of threads used (were 0 is auto-detect).</li>
 <li>   Added option EXT_LINKS_IN_WINDOW which controls whether or not
-       links to symbols imported via tag files will be opened in a new window.
-<li>   Included various language updates (thanks to Petr for coordinating).
+       links to symbols imported via tag files will be opened in a new window.</li>
+<li>   Included various language updates (thanks to Petr for coordinating).</li>
 <li>   Included patch by Stefan Oberhumer that allows customizing the
-       way parameter lists are shown in the LaTeX output.
+       way parameter lists are shown in the LaTeX output.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=306076">306076</a>: source browser could miss links for used namespaces.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=361476">361476</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=620924">620924</a>: \if and \endif did not work properly inside auto lists.
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=306076">306076</a>: source browser could miss links for used namespaces.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=361476">361476</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=620924">620924</a>: \if and \endif did not work properly inside auto lists.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=557164">557164</a>: No warning for missing return type documentation even though
-       WARN_NO_PARAMDOC was set to YES.
+       WARN_NO_PARAMDOC was set to YES.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=577005">577005</a>: Handling of nesting \defgroup's was not always working
-       properly.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=578739">578739</a>: ø was not translated correctly in the LaTeX output.
+       properly.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=578739">578739</a>: ø was not translated correctly in the LaTeX output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=583526">583526</a>: Use relative paths for mscgen diagrams to avoid errors in the
-       LaTeX output.
+       LaTeX output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592991">592991</a>: The "Use current settings at startup" feature of Doxywizard
-       was broken.
+       was broken.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593679">593679</a>: Links in the search results were broken if they pointed to
-       symbols imported via tag files using an absolute path or URL.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593760">593760</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615682">615682</a>: Fixed man page output problem when using @par.
+       symbols imported via tag files using an absolute path or URL.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593760">593760</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615682">615682</a>: Fixed man page output problem when using @par.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=594021">594021</a>: A C comment before a #endif caused the preprocessor 
-       statement to be ignored.
+       statement to be ignored.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597013">597013</a>: When HIDE_SCOPE_NAMES was enabled also the scope for
        nested classes was stripped. Now only the namespace scope will be 
-       stripped as before.
+       stripped as before.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=600829">600829</a>: Autolinks to namespace members did not work if
-       an explicit # or :: was used.
+       an explicit # or :: was used.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=602732">602732</a>: Slashes inside strings in java annotations were not handled
-       properly.
+       properly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606335">606335</a>: Fixed the "show html output" button in doxywizard 
-       for Windows when IE was set as the default browser.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608292">608292</a>: Formatting was lost for section copied with \copydoc.
+       for Windows when IE was set as the default browser.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608292">608292</a>: Formatting was lost for section copied with \copydoc.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608359">608359</a>: Fixed C++ parse issue for "class : public base {} var;" 
-       construct.
+       construct.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=611056">611056</a>: Generated HTML footer file did not have UTF-8 encoding and
-       the relative path marker needed when using CREATE_SUBDIRS = YES.
+       the relative path marker needed when using CREATE_SUBDIRS = YES.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=611193">611193</a>: Fixed parsing problem with try-functions having multiple
-       catch handlers.
+       catch handlers.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=611642">611642</a>: Specialized private template member function appeared as 
-       public.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=611888">611888</a>: Include dependency graphs were sometimes wrong.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612170">612170</a>: Some lines in the generated Doxyfile where too long.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612275">612275</a>: Fixed auto-link problem for certain URLs.
+       public.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=611888">611888</a>: Include dependency graphs were sometimes wrong.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612170">612170</a>: Some lines in the generated Doxyfile where too long.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612275">612275</a>: Fixed auto-link problem for certain URLs.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612292">612292</a>: Improved handling of ellipsis inside brief description when
-       JAVADOC_AUTOBRIEF is enabled.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612364">612364</a>: Accessibility of macros was not handled properly in all cases.
+       JAVADOC_AUTOBRIEF is enabled.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612364">612364</a>: Accessibility of macros was not handled properly in all cases.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612310">612310</a>: Enabling REFERENCED_BY_RELATION without SOURCE_BROWSER could
-       result in broken links.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612458">612458</a>: Fixed problem handling @copydoc for function operators.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612609">612609</a>: A raw C# string constant could end up in the next string.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612969">612969</a>: subpages were not part of the XML output.
+       result in broken links.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612458">612458</a>: Fixed problem handling @copydoc for function operators.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612609">612609</a>: A raw C# string constant could end up in the next string.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612969">612969</a>: subpages were not part of the XML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=613024">613024</a>: First list item in the paragraph after a @todo
-       item was not parsed properly.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=614204">614204</a>: Generated man page links were having a heading underscore.
+       item was not parsed properly.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=614204">614204</a>: Generated man page links were having a heading underscore.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=614443">614443</a>: Made include guard detect a bit more strict to avoid false
-       positives.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=614447">614447</a>: The labels of CVS tags were missing a colon.
+       positives.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=614447">614447</a>: The labels of CVS tags were missing a colon.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=614438">614438</a>: Fixed problem parsing Q_PROPERTY with template type and
-       spaces.
+       spaces.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615165">615165</a>: Made the date string in the HTML footer translatable, 
-       along with some other sentences on the directory pages.
+       along with some other sentences on the directory pages.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=612858">612858</a>: Inline attribute was shown also for non-inline template 
-       members.
+       members.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615583">615583</a>: Fixed problem handling @copy for operators with 
-       const qualifier.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615755">615755</a>: Fixed problem handling '"' inside comments.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615957">615957</a>: Made the LaTeX output a bit less spatious using \input.
+       const qualifier.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615755">615755</a>: Fixed problem handling '"' inside comments.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615957">615957</a>: Made the LaTeX output a bit less spatious using \input.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615695">615695</a>: Fixed preprocessor issue where a macro that was redefined
-       was not resolved.
-<li>   Fixed character encoding issue on the search results page.
+       was not resolved.</li>
+<li>   Fixed character encoding issue on the search results page.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=615670">615670</a>: C# namespaces are now extracted also without comment block
-       (the language spec does not allow XML documentation).
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=616209">616209</a>: included patch that fixes some typos in the code.
+       (the language spec does not allow XML documentation).</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=616209">616209</a>: included patch that fixes some typos in the code.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=616344">616344</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=610604">610604</a>: Pages with an underscore in the label generated a 
-       file name containing two underscores.
+       file name containing two underscores.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=616387">616387</a>: text of the form something.symbol got autolinked when
-       symbol had a global scope.
+       symbol had a global scope.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=616761">616761</a>: Call graph could be wrong when local variable has the same
-       name as a global function.
+       name as a global function.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=616947">616947</a>: Added documentation patch on how to create URL links with 
-       custom text.
+       custom text.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=616988">616988</a>: Doxywizard now removes non-existant files from the 
-       recent list and has an option to clear the list completely.
+       recent list and has an option to clear the list completely.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=617051">617051</a>: A macro defined via PREDEFINED did not always overrule a
-       macro definition in the code.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=617278">617278</a>: Enabling call graphs produced invalid XHTML output.
+       macro definition in the code.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=617278">617278</a>: Enabling call graphs produced invalid XHTML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=617871">617871</a>: Non ascii characters in file or directory names 
-       caused problems on Windows.
+       caused problems on Windows.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=618079">618079</a>: An ALIAS with parameters spanning multiple lines
-       caused problems with /// style comments. 
+       caused problems with /// style comments. </li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=618632">618632</a>: Included patch to prevent image overflowing the page in 
-       the LaTeX output.
+       the LaTeX output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=619728">619728</a>: Fixed problem using EXTENSION_MAPPING for C# (thanks to
-       Vsevolod Kukol for the patch).
+       Vsevolod Kukol for the patch).</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=619978">619978</a>: Links to external files could be wrong when CREATE_SUBDIR
-       was enabled.
+       was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=620229">620229</a>: /* characters in a print broke parsing within an conditional
-       section.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=620926">620926</a>: \if and \endif did not work properly inside HTML tables.
+       section.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=620926">620926</a>: \if and \endif did not work properly inside HTML tables.</li>
 <li>   Using @include in combination with LATEX_SOURCE_CODE caused wrong
-       output.
+       output.</li>
 <li>   Included a patch by Guido Tack which adds two new options
        for docsets (DOCSET_PUBLISHER_ID and DOCSET_PUBLISHER_NAME) and 
-       fixes an issue with linking to docset members.
+       fixes an issue with linking to docset members.</li>
 <li>   Included patch by Stefan Oberhumer to support escaped {}'s in alias
-       definition and parameters.
+       definition and parameters.</li>
 
 </ul>
+<p>
 \endhtmlonly
 \section log_1_6 1.6 Series
 \htmlonly
 <a name="1.6.3"></a>
+</p>
 <h1>Doxygen Release 1.6.3</h1>
 <h2>(release date 21-02-2010)</h2>
 <h3>New features</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608480">608480</a>: Using \dir without argument will create directory 
                   documentation for the directory in which the \dir command 
-                  was found.
+                  was found.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=590161">590161</a>: perlmod output was wrong when using paragraph commands.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=600525">600525</a>: Included patch for VHDL.
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=590161">590161</a>: perlmod output was wrong when using paragraph commands.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=600525">600525</a>: Included patch for VHDL.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=605698">605698</a>: Replaced size attribute of hr tag by class attribute in the
-                  HTML output.
+                  HTML output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606030">606030</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606192">606192</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607563">607563</a>: 
                   Using \dot produced "Error opening map file" or 
-                  could even crash doxygen.
+                  could even crash doxygen.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606084">606084</a>: Loading a new config file in doxywizard did not reset all
-                  values of a previously loaded config file.
+                  values of a previously loaded config file.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606104">606104</a>: Grouped members with todo-like items were shown with 
-                  "GlobalScope" prefix.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606156">606156</a>: Fixed RTF rendering problem with group index.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606206">606206</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=610133">610133</a>: Added missing line break in LaTeX output.
+                  "GlobalScope" prefix.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606156">606156</a>: Fixed RTF rendering problem with group index.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606206">606206</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=610133">610133</a>: Added missing line break in LaTeX output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606330">606330</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608056">608056</a>: The title of pages whose label had an underscore
-                  was not shown
+                  was not shown</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606717">606717</a>: Include guard not starting with #ifndef SOME_GUARD_H were not
-                  recognised as such.
+                  recognised as such.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606718">606718</a>: Setting SEARCHENGINE to YES and GENERATE_HTML to NO caused
-                  error that search results directory could not be created.
+                  error that search results directory could not be created.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=606772">606772</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608493">608493</a>: typedef'ed enums or struct with the same as the 
-                  typedef did no longer show up.
+                  typedef did no longer show up.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607088">607088</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607946">607946</a>: Related pages (manual and automatic like the todo page) 
-                  caused broken links when SHORT_NAMES was enabled.
+                  caused broken links when SHORT_NAMES was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607432">607432</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608002">608002</a>: Automatically generated related pages (like the 
-                  todo page) caused broken links when CREATE_SUBDIR was enabled.
+                  todo page) caused broken links when CREATE_SUBDIR was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607736">607736</a>: comments after #if could cause next function call not to be
-                  cross-referenced.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607743">607743</a>: \internal inside a conditional section caused warning.
+                  cross-referenced.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=607743">607743</a>: \internal inside a conditional section caused warning.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608016">608016</a>: Using \internal inside a \section did not end at the
-       next \section as documented.
+       next \section as documented.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608018">608018</a>: \internal command produced message with .: in 
-       the LaTeX output.
+       the LaTeX output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608072">608072</a>: HTML Tables with custom attributes were not rendered 
-                  properly.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608227">608227</a>: Man pages with underscore got double underscore in the name.
+                  properly.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608227">608227</a>: Man pages with underscore got double underscore in the name.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608590">608590</a>: Buffer overflow when using non-ascii characters as class
-                  name.
+                  name.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=608921">608921</a>: Macro definition had effect even if the definition was not
-                  actually included.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=609504">609504</a>: config.h and config.l where missing from the SVN repository.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=609624">609624</a>: Todo items were merged for overloaded functions.
+                  actually included.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=609504">609504</a>: config.h and config.l where missing from the SVN repository.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=609624">609624</a>: Todo items were merged for overloaded functions.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=609709">609709</a>: C# enum values with @todo items were missing from the todo
-                  list.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=610437">610437</a>: Removed bogus warning when using <br/> tag.
+                  list.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=610437">610437</a>: Removed bogus warning when using <br/> tag.</li>
 <li>   Fixed parsing problem for function pointer type starting with
-       "typedef enum".
+       "typedef enum".</li>
 <li>   Preprocessor did not take EXCLUDE_PATTERNS into account, which 
-       could cause parse issues when importing a .tlb file.
+       could cause parse issues when importing a .tlb file.</li>
 </ul>
 
 
@@ -2435,104 +2778,104 @@ make sure you add the following:
 <h3>Changes</h3>
 <ul>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=594787">594787</a>: Autolinking to all-lower case words has been disabled,
-                  in accordance with the documentation.
+                  in accordance with the documentation.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=604543">604543</a>: Doxygen now allows any extension supported by dot via the
-       DOT_IMAGE_FORMAT option.
+       DOT_IMAGE_FORMAT option.</li>
 <li>   Switched back to using PNGs for built-in diagrams and formulas using
-       the Lode Vandevenne's PNG encoder.
+       the Lode Vandevenne's PNG encoder.</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   Added new option SERVER_BASED_SEARCH to re-enable searching via a
        PHP enabled web browser instead of only using javascript locally.
        This method better scales to larger projects and allows full text
-       search.
+       search.</li>
 <li>   Added new options GENERATE_ECLIPSEHELP and ECLIPSE_DOC_ID
        to generate an index file that can be used to embed doxygen's HTML 
        output into Eclipse as a help plugin 
-       (thanks to a patch by Ondrej Starek).
+       (thanks to a patch by Ondrej Starek).</li>
 <li>   Wrote new <a href="http://www.doxygen.org/searching.html">documentation</a> 
-       regarding the methods of searching in the HTML output.
+       regarding the methods of searching in the HTML output.</li>
 <li>   Included patch by Ed Rosten to render formulas with 
-       proper anti-aliasing on non-white backgrounds using transparency.
+       proper anti-aliasing on non-white backgrounds using transparency.</li>
 <li>   Add new option FORCE_LOCAL_INCLUDES to make the default #include
-       appearance in class documentation with "" i.s.o sharp brackets.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=558457">558457</a>: Make \addindex put keywords into the .qhp file.
+       appearance in class documentation with "" i.s.o sharp brackets.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=558457">558457</a>: Make \addindex put keywords into the .qhp file.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595214">595214</a>: #cmakedefine is now treated the same was as #define
-                  (for users of the CMake build system).
-<li>   Added compilation support for OSX 10.6 (aka Snow Leopard)
-<li>   Included language update for Brazilian.
+                  (for users of the CMake build system).</li>
+<li>   Added compilation support for OSX 10.6 (aka Snow Leopard)</li>
+<li>   Included language update for Brazilian.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   Doxywizard did not warn when it failed to save its config file.
+<li>   Doxywizard did not warn when it failed to save its config file.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=557035">557035</a>: Empty class definitions were not included in Tokens file
-                  for docsets.
+                  for docsets.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=563233">563233</a>: GENERATE_QHP details was considered even though it is
-                  not defined.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=567346">567346</a>: Comment parser could get stuck in certain cases.
+                  not defined.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=567346">567346</a>: Comment parser could get stuck in certain cases.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=570369">570369</a>: GENERATE_QHP should generate keywords for classes in
-                  generated *.qhc.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=571964">571964</a>: Fixed two issues in the compound.xsd schema definition.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592991">592991</a>: Fixed wrong default destination directory.
+                  generated *.qhc.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=571964">571964</a>: Fixed two issues in the compound.xsd schema definition.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592991">592991</a>: Fixed wrong default destination directory.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593040">593040</a>: Fixed problem with distributing member group documentation
-                  for anonymous member groups.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593273">593273</a>: GENERATE_TODOLIST=NO and friends not longer worked.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593928">593928</a>: Added support for UCS-2 encoded input files.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=594391">594391</a>: Fixed problem parsing fully-qualified java annotations.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=594592">594592</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596815">596815</a>: Fixed problem handling quotes.
+                  for anonymous member groups.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593273">593273</a>: GENERATE_TODOLIST=NO and friends not longer worked.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593928">593928</a>: Added support for UCS-2 encoded input files.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=594391">594391</a>: Fixed problem parsing fully-qualified java annotations.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=594592">594592</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596815">596815</a>: Fixed problem handling quotes.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595191">595191</a>: Not all configuration options appeared in the index of
-                  the documentation and some were not sorted correctly.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595253">595253</a>: formulas had the .png extension while they were gifs.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595833">595833</a>: Fixed recursive lockup while resolving template relations.
+                  the documentation and some were not sorted correctly.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595253">595253</a>: formulas had the .png extension while they were gifs.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595833">595833</a>: Fixed recursive lockup while resolving template relations.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595935">595935</a>: Doxygen's preprocessor got confused when /**/ appeared as
-                  part of a macro definition.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596085">596085</a>: Removed obsolete option USE_WINDOWS_ENCODING from the docs.
+                  part of a macro definition.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596085">596085</a>: Removed obsolete option USE_WINDOWS_ENCODING from the docs.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596233">596233</a>: RTF output was missing a new paragraph for brief 
-                  member descriptions.
+                  member descriptions.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596807">596807</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596819">596819</a>: Code reformatting done for the LaTeX output could 
-                  break multibyte UTF-8 characters causing invalid output.
+                  break multibyte UTF-8 characters causing invalid output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596809">596809</a>: Using multibyte characters in a page label caused invalid
-                  output.
+                  output.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596816">596816</a>: Documented the interaction between LATEX_CMD_NAME and 
-                  USE_PDFLATEX.
+                  USE_PDFLATEX.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597015">597015</a>: Todo items for two inner classes with the same name where
                   collapsed together in the todo list when HIDE_SCOPE_NAMES 
-                  was enabled.
+                  was enabled.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597016">597016</a>: Scope was not hidden for members in the todo list even
-                  though HIDE_SCOPE_NAMES was set to YES.
+                  though HIDE_SCOPE_NAMES was set to YES.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=598497">598497</a>: Struct variable with explicit struct keyword got labelled 
-                  with [read] attribute.
+                  with [read] attribute.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596902">596902</a>: PHP was not parsed properly when it appeared in a
-                  <script language="php"> section.
+                  <script language="php"> section.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597415">597415</a>: Fixed problem matching base class member against the
-                  member in the derived class.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597518">597518</a>: Makefile for Docsets now honors DESTDIR.
+                  member in the derived class.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597518">597518</a>: Makefile for Docsets now honors DESTDIR.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=598298">598298</a>: Made browsing for HHC_LOCATION via the wizard 
-                  yield an absolute path.
+                  yield an absolute path.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=599128">599128</a>: Changed default for CHM_INDEX_ENCODING to CP1250 to avoid
-                  issues in a Solaris environment.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595931">595931</a>: Removed unnecessary paragraphs from HTML table cells.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597541">597541</a>: referring to page labels of the form a-1 did not work.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=599224">599224</a>: Code generators could produce extra </span> tags.
+                  issues in a Solaris environment.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=595931">595931</a>: Removed unnecessary paragraphs from HTML table cells.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597541">597541</a>: referring to page labels of the form a-1 did not work.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=599224">599224</a>: Code generators could produce extra </span> tags.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=599974">599974</a>: Included the PHP search engine again (with new config 
-                  option SERVER_BASED_SEARCH to enable it)
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=600544">600544</a>: Doxygen produced invalid Latex output for RCS tags.
+                  option SERVER_BASED_SEARCH to enable it)</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=600544">600544</a>: Doxygen produced invalid Latex output for RCS tags.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=600563">600563</a>: Fixed issue with include dependency tracking that could 
-                  cause macro expansion not to work properly.
+                  cause macro expansion not to work properly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=600940">600940</a>: Fixed issue with VHDL call graph (thank to Martin Kreis
-                  for the fix).
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601138">601138</a>: Fixed problem parsing C++ function-try-blocks.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601222">601222</a>: #include inside a class could cause line numbers to be off.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601223">601223</a>: Fixed parsing problem skipping over /**/ comment.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601694">601694</a>: Fixed problem handling Javadoc style {@code ... } blocks.
+                  for the fix).</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601138">601138</a>: Fixed problem parsing C++ function-try-blocks.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601222">601222</a>: #include inside a class could cause line numbers to be off.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601223">601223</a>: Fixed parsing problem skipping over /**/ comment.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601694">601694</a>: Fixed problem handling Javadoc style {@code ... } blocks.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=601771">601771</a>: Special commands did not work in the title of 
-                  the @mainpage.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=602818">602818</a>: Fixed problem parsing files that start with UTF-8 BOM.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=603001">603001</a>: Fixed problem parsing friend function with explicit scope.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=603238">603238</a>: Fixed perlmod generation issue.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=604948">604948</a>: Project number was not centered anymore in the HTML output.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=604503">604503</a>: Using %word in a page title incorrectly did show the %.
+                  the @mainpage.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=602818">602818</a>: Fixed problem parsing files that start with UTF-8 BOM.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=603001">603001</a>: Fixed problem parsing friend function with explicit scope.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=603238">603238</a>: Fixed perlmod generation issue.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=604948">604948</a>: Project number was not centered anymore in the HTML output.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=604503">604503</a>: Using %word in a page title incorrectly did show the %.</li>
 </ul>
 
 <a name="1.6.1"></a>
@@ -2542,16 +2885,16 @@ make sure you add the following:
 <ul>
 <li>   Fixed file handle leak when parsing include files. Also fixed
        the logic that determines whether or not an include file need to be
-       parsed.
-<li>   Search result pages were not using UTF-8 character encoding.
-<li>   Search results pointing to external references were not linked correctly.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=133418">133418</a>: Multiline second argument of \ref caused unexpected " warning.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592454">592454</a>: Feeding invalid XML could crash doxygen's DBus XML parser.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592485">592485</a>: Include patch to fix problem with building rpms.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592511">592511</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592625">592625</a>: Doxywizard problem with GENERATE_TREEVIEW.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592650">592650</a>: SHOW_USED_FILES now works again.
+       parsed.</li>
+<li>   Search result pages were not using UTF-8 character encoding.</li>
+<li>   Search results pointing to external references were not linked correctly.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=133418">133418</a>: Multiline second argument of \ref caused unexpected " warning.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592454">592454</a>: Feeding invalid XML could crash doxygen's DBus XML parser.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592485">592485</a>: Include patch to fix problem with building rpms.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592511">592511</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592625">592625</a>: Doxywizard problem with GENERATE_TREEVIEW.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592650">592650</a>: SHOW_USED_FILES now works again.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=592808">592808</a>: xrefitems (like @todo) did not appear in the list when
-       found in comments marked with @enum or @name.
+       found in comments marked with @enum or @name.</li>
 </ul>
 <h1>Doxygen Release 1.6.0</h1>
 <h2>(release date 20-08-2009)</h2>
@@ -2561,83 +2904,81 @@ make sure you add the following:
        Javascript/DHTML based one.
        As a result the search feature no longer requires a HTTP server
        with PHP enabled to be usable. Searching is limited to symbols
-       though, but it is now possible to filter on symbol type.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=519886">519886</a>: Make the HTML output XHTML 1.0 compliant.
+       though, but it is now possible to filter on symbol type.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=519886">519886</a>: Make the HTML output XHTML 1.0 compliant.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=579950">579950</a>: Objective-C categories are now merged with their base 
-       class, unless there is no base class.
+       class, unless there is no base class.</li>
 <li>   Member groups with the same header within the same scope are now
-       merged. This also works for Objective-C categories.
+       merged. This also works for Objective-C categories.</li>
 <li>   Changed the LaTeX style sheet such that more of the markup is 
-       configurable. Please update your style sheet if you use a custom one.
+       configurable. Please update your style sheet if you use a custom one.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=584844">584844</a>: Treat \details inside a brief description as a new paragraph
-       command.
+       command.</li>
 <li>   Split GENERATE_TREEVIEW into two separate options:
-       GENERATE_TREEVIEW and USE_INLINE_TREES.
+       GENERATE_TREEVIEW and USE_INLINE_TREES.</li>
 <li>   Removed the dependencies on libpng and libz, doxygen now generates
-       gifs again for internal class diagrams (like it did 7 years ago ;-)
+       gifs again for internal class diagrams (like it did 7 years ago ;-)</li>
 </ul>
 <h3>New features</h3>
 <ul>
 <li>   Added option SORT_MEMBERS_CTORS_1ST, which when enabled places the
-       constructors and destructors first in an otherwise sorted list.
+       constructors and destructors first in an otherwise sorted list.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=581518">581518</a>: Applied patch by Tobias Hunger that adds support for
-       documenting DBus XML interface descriptions. 
+       documenting DBus XML interface descriptions. </li>
 <li>   Included QtHelp patch by Karsten Heimrich which adds missing 
-       reference and keyword for methods.
-<li>   Included updates for the Korean and Polish translation.
+       reference and keyword for methods.</li>
+<li>   Included updates for the Korean and Polish translation.</li>
 </ul>
 <h3>Bug fixes</h3>
 <ul>
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=131989">131989</a>: Fixed preprocessor handling for C# code.  
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=133418">133418</a>: -- was not rendered correctly for LaTeX output
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=157485">157485</a>: Missing link in todo page.
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=131989">131989</a>: Fixed preprocessor handling for C# code.  </li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=133418">133418</a>: -- was not rendered correctly for LaTeX output</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=157485">157485</a>: Missing link in todo page.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=318061">318061</a>: Two template functions that only differed in the number
-       of template arguments were seen as the same function.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=443939">443939</a>: HIDE_UNDOC_CLASSES did not work properly.
+       of template arguments were seen as the same function.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=443939">443939</a>: HIDE_UNDOC_CLASSES did not work properly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=509348">509348</a>: Fixed problem with syncing the information of 
        declaration and definition in the presence of an extra forward 
-       declaration in the source code.
+       declaration in the source code.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=522193">522193</a>: For C# enum values were merged together if the same enum 
-       name was used in different scopes.
+       name was used in different scopes.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=523167">523167</a>: Included patch to handle PROGRAM statement in Fortran as
-       subroutines/functions.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=554636">554636</a>: Remove spacing around brackets for Obj-C protocols.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=557026">557026</a>: Included patch for fixing wrongly labeled items in docsets.
+       subroutines/functions.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=554636">554636</a>: Remove spacing around brackets for Obj-C protocols.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=557026">557026</a>: Included patch for fixing wrongly labeled items in docsets.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=560512">560512</a>: Improved parser to better disambiguate
-       nested templates ending with >> from the bitshift right operator.
+       nested templates ending with >> from the bitshift right operator.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=570238">570238</a>: Fixed matching problem for method in nested class, where
-       the outer class is a template.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=581746">581746</a>: Segfault/realloc error when a very long path was used.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=582469">582469</a>: documented #define with guard caused wrong documentation.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=582276">582276</a>: Doxywizard could crash on exit in some cases.
+       the outer class is a template.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=581746">581746</a>: Segfault/realloc error when a very long path was used.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=582469">582469</a>: documented #define with guard caused wrong documentation.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=582276">582276</a>: Doxywizard could crash on exit in some cases.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=582676">582676</a>: Regression: a struct ivar in ObjC class screws up method 
-                  identification.
+                  identification.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=583213">583213</a>: Included patch that avoids trailing spaces in the
-       generated Doxyfile template.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=584192">584192</a>: Included VHDL patch by Martin Klein
+       generated Doxyfile template.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=584192">584192</a>: Included VHDL patch by Martin Klein</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=585543">585543</a>: Fixed case where matching declaration and definition did
-       not work correctly.
+       not work correctly.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=585260">585260</a>: The "more..." link for files was broken, since the anchor
-       was not generated.
+       was not generated.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=586925">586925</a>: Fixed parsing problem when an unpaired apostrophe 
-       appeared in a Python comment.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=588291">588291</a>: Included fix for doxywizard makefile. 
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=588587">588587</a>: Added missing virtual destructor to CompAccept base class.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=588968">588968</a>: Fixed segmentation fault for specific case in PHP code.
-<li>   Fixed some issues building for Windows.
-<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=589514">589514</a>: Fixed problem handling strings like a"\b" within a comment.
+       appeared in a Python comment.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=588291">588291</a>: Included fix for doxywizard makefile. </li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=588587">588587</a>: Added missing virtual destructor to CompAccept base class.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=588968">588968</a>: Fixed segmentation fault for specific case in PHP code.</li>
+<li>   Fixed some issues building for Windows.</li>
+<li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=589514">589514</a>: Fixed problem handling strings like a"\b" within a comment.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=589616">589616</a>: Fixed problem matching explicitly scoped parameter in a 
-       template class.
+       template class.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=590712">590712</a>: A namespaced with name "internal" (C++/CLI keyword)
-       could confuse doxygen's C++ parser.
+       could confuse doxygen's C++ parser.</li>
 <li>   id <a href="https://bugzilla.gnome.org/show_bug.cgi?id=591749">591749</a>: @optional/@required attributes for Objective-C were missing
-       from the XML output.
+       from the XML output.</li>
 </ul>
 <h1><a href="http://www.doxygen.org/changelog_1.5.html">Doxygen Release 1.5 and earlier</a></h1>
-<p>
-<hr>
-<p>
+<hr/>
 Go <a href="index.html">back</a> to the main page.
-
+<p>
 \endhtmlonly
 */
diff --git a/doc/commands.doc b/doc/commands.doc
index 12fe9a6..313e518 100644
--- a/doc/commands.doc
+++ b/doc/commands.doc
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -49,8 +49,8 @@ documentation:
 \refitem cmdbrief \\brief
 \refitem cmdbug \\bug
 \refitem cmdc \\c
-\refitem cmdcallgraph \\callgraph
 \refitem cmdcallergraph \\callergraph
+\refitem cmdcallgraph \\callgraph
 \refitem cmdcategory \\category
 \refitem cmdcite \\cite
 \refitem cmdclass \\class
@@ -104,6 +104,8 @@ documentation:
 \refitem cmdfile \\file
 \refitem cmdfn \\fn
 \refitem cmdheaderfile \\headerfile
+\refitem cmdhidecallergraph \\hidecallergraph
+\refitem cmdhidecallgraph \\hidecallgraph
 \refitem cmdhideinitializer \\hideinitializer
 \refitem cmdhtmlinclude \\htmlinclude
 \refitem cmdhtmlonly \\htmlonly
@@ -219,13 +221,13 @@ The following subsections provide a list of all commands that are recognized by
 doxygen. Unrecognized commands are treated as normal text.
 
 
-\htmlonly <center> \endhtmlonly
+\htmlonly</p><center><p>\endhtmlonly
 <h2>
 \htmlonly --- \endhtmlonly
 Structural indicators
 \htmlonly --- \endhtmlonly
 </h2>
-\htmlonly </center> \endhtmlonly
+\htmlonly</p></center><p>\endhtmlonly
 
 \section cmdaddtogroup \\addtogroup <name> [(title)]
   \addindex \\addtogroup
@@ -273,7 +275,26 @@ Structural indicators
   \note The completeness (and correctness) of the call graph depends on the
   doxygen code parser which is not perfect.
 
-  \sa section \ref cmdcallergraph "\\callergraph".
+  \sa section \ref cmdcallergraph "\\callergraph",
+      section \ref cmdhidecallgraph "\\hidecallgraph",
+      section \ref cmdhidecallergraph "\\hidecallergraph" and
+      option \ref cfg_call_graph "CALL_GRAPH"
+
+<hr>
+\section cmdhidecallgraph \\hidecallgraph
+
+  \addindex \\hidecallgraph
+  When this command is put in a comment block of a function or method
+  and then doxygen will not generate a call graph for that function. The
+  call graph will not be generated regardless of the value of
+  \ref cfg_call_graph "CALL_GRAPH".
+  \note The completeness (and correctness) of the call graph depends on the
+  doxygen code parser which is not perfect.
+
+  \sa section \ref cmdcallergraph "\\callergraph",
+      section \ref cmdcallgraph "\\callgraph",
+      section \ref cmdhidecallergraph "\\hidecallergraph" and
+      option \ref cfg_call_graph "CALL_GRAPH"
 
 <hr>
 \section cmdcallergraph \\callergraph
@@ -287,7 +308,26 @@ Structural indicators
   \note The completeness (and correctness) of the caller graph depends on the
   doxygen code parser which is not perfect.
 
-  \sa section \ref cmdcallgraph "\\callgraph".
+  \sa section \ref cmdcallgraph "\\callgraph",
+      section \ref cmdhidecallgraph "\\hidecallgraph",
+      section \ref cmdhidecallergraph "\\hidecallergraph" and
+      option \ref cfg_caller_graph "CALLER_GRAPH"
+
+<hr>
+\section cmdhidecallergraph \\hidecallergraph
+
+  \addindex \\hidecallergraph
+  When this command is put in a comment block of a function or method
+  and then doxygen will not generate a caller graph for that function. The
+  caller graph will not be generated regardless of the value of
+  \ref cfg_caller_graph "CALLER_GRAPH".
+  \note The completeness (and correctness) of the caller graph depends on the
+  doxygen code parser which is not perfect.
+
+  \sa section \ref cmdcallergraph "\\callergraph",
+      section \ref cmdcallgraph "\\callgraph",
+      section \ref cmdhidecallgraph "\\hidecallgraph" and
+      option \ref cfg_caller_graph "CALLER_GRAPH"
 
 <hr>
 \section cmdcategory \\category <name> [<header-file>] [<header-name>]
@@ -318,13 +358,17 @@ Structural indicators
   the \ref cmdheaderfile "\\headerfile" command.
 
   \par Example:
-  \verbinclude class.h
+  \include class.h
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/class/html/index.html">here</a>
+  Click <a href="examples/class/html/index.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{class_example}{Class example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
-<hr>
+</p><hr>
 \section cmddef \\def <name>
 
   \addindex \\def
@@ -332,13 +376,17 @@ Structural indicators
   \c \#define macro.
 
   \par Example:
-  \verbinclude define.h
+  \include define.h
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/define/html/define_8h.html">here</a>
+  Click <a href="examples/define/html/define_8h.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{define_8h}{Define example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
-<hr>
+</p><hr>
 \section cmddefgroup \\defgroup <name> (group title)
 
   \addindex \\defgroup
@@ -380,13 +428,17 @@ Structural indicators
   of an anonymous enum can.
 
   \par Example:
-  \verbinclude enum.h
+  \include enum.h
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/enum/html/class_test.html">here</a>
+  Click <a href="examples/enum/html/class_test.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{class_enum___test}{Enum example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
-<hr>
+</p><hr>
 \section cmdexample \\example <file-name>
 
   \addindex \\example
@@ -409,17 +461,21 @@ Structural indicators
   the \ref cmdinclude "\\include" command can be used.
 
   \par Example:
-  \verbinclude example.cpp
+  \include example.cpp
   Where the example file \c example_test.cpp looks as follows:
-  \verbinclude example_test.cpp
+  \include example_test.cpp
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/example/html/examples.html">here</a>
+  Click <a href="examples/example/html/examples.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{example_test_8cpp-example}{Example example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
   \sa section \ref cmdinclude "\\include".
 
-<hr>
+</p><hr>
 \section cmdendinternal \\endinternal
 
   \addindex \\endinternal
@@ -439,9 +495,14 @@ Structural indicators
   The file \c manual.c in the example directory shows how to use this command.
 
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/manual/html/index.html">here</a>
+  Click <a href="examples/manual/html/index.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
+  </p>
   \endhtmlonly
+  \latexonly
+  See \hyperlink{extends_example}{Extends example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
   \sa section \ref cmdimplements "\\implements" and section
       \ref cmdmemberof "\\memberof"
@@ -461,16 +522,20 @@ Structural indicators
   only be included in the output if the file they are in is documented as well.
 
   \par Example:
-  \verbinclude file.h
+  \include file.h
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/file/html/file_8h.html">here</a>
+  Click <a href="examples/file/html/file_8h.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{file_example}{File example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
   \note In the above example \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF"
   has been set to \c YES in the configuration file.
 
-<hr>
+</p><hr>
 \section cmdfn \\fn (function declaration)
 
   \addindex \\fn
@@ -495,17 +560,20 @@ Structural indicators
   information and thus to errors.
 
   \par Example:
-  \verbinclude func.h
+  \include func.h
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/func/html/class_test.html">here</a>
+  Click <a href="examples/func/html/class_test.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
-
+  \latexonly
+  See \hyperlink{class_fn___test}{Fn example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
   \sa sections \ref cmdvar "\\var", \ref cmdproperty "\\property", and
                \ref cmdtypedef "\\typedef".
 
-<hr>
+</p><hr>
 \section cmdheaderfile \\headerfile <header-file> [<header-name>]
 
   \addindex \\headerfile
@@ -579,9 +647,14 @@ Structural indicators
   The file \c manual.c in the example directory shows how to use this command.
 
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/manual/html/index.html">here</a>
+  Click <a href="examples/manual/html/index.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
+  </p>
   \endhtmlonly
+  \latexonly
+  See \hyperlink{extends_example}{Implements example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
   \sa section \ref cmdextends "\\extends" and section
       \ref cmdmemberof "\\memberof"
@@ -679,7 +752,7 @@ Structural indicators
   The file \c manual.c in the example directory shows how to use this command.
 
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/manual/html/index.html">here</a>
+  Click <a href="examples/manual/html/index.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
 
@@ -687,7 +760,7 @@ Structural indicators
       \ref cmdpublic "\\public", \ref cmdprotected "\\protected" and
       \ref cmdprivate "\\private".
 
-<hr>
+</p><hr>
 \section cmdname \\name [(header)]
 
   \addindex \\name
@@ -745,13 +818,17 @@ Structural indicators
   \par Note 2:
     The \c \\overload command does not work inside a one-line comment.
   \par Example:
-  \verbinclude examples/overload.cpp
+  \include overload.cpp
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/overload/html/class_test.html">here</a>
+  Click <a href="examples/overload/html/class_test.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{class_overload___test}{Overload example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
-<hr>
+</p><hr>
 \section cmdpackage \\package <name>
 
   \addindex \\package
@@ -769,11 +846,15 @@ Structural indicators
   starts a new section in the chapter 'Page documentation'.
 
   \par Example:
-  \verbinclude page.doc
+  \include page.doc
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/page/html/pages.html">here</a>
+  Click <a href="examples/page/html/pages.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{page_example}{Page example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
   \par Note:
      The \<name\> argument consists of a combination of letters and number
@@ -788,7 +869,7 @@ Structural indicators
               \ref cmdsubsection "\\subsection", and section
               \ref cmdref "\\ref".
 
-<hr>
+</p><hr>
 \section cmdprivate \\private
 
   \addindex \\private
@@ -925,13 +1006,17 @@ Structural indicators
   only works for functions.
 
   \par Example:
-  \verbinclude relates.cpp
+  \include relates.cpp
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/relates/html/class_string.html">here</a>
+  Click <a href="examples/relates/html/class_string.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{class_string}{Relates example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
-<hr>
+</p><hr>
 \section cmdrelated \\related <name>
 
   \addindex \\related
@@ -1042,13 +1127,13 @@ Structural indicators
 
 <hr>
 
-\htmlonly <center> \endhtmlonly
+\htmlonly</p><center><p>\endhtmlonly
 <h2>
 \htmlonly --- \endhtmlonly
 Section indicators
 \htmlonly --- \endhtmlonly
 </h2>
-\htmlonly </center>\endhtmlonly
+\htmlonly</p></center><p>\endhtmlonly
 
 <hr>
 \section cmdattention \\attention { attention text }
@@ -1076,13 +1161,17 @@ Section indicators
   sectioning command is encountered.
 
   \par Example:
-  \verbinclude author.cpp
+  \include author.cpp
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/author/html/class_some_nice_class.html">here</a>
+  Click <a href="examples/author/html/class_some_nice_class.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{class_some_nice_class}{Author example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
-<hr>
+</p><hr>
 \section cmdauthors \\authors { list of authors }
 
   \addindex \\authors
@@ -1419,13 +1508,17 @@ ALIASES  = "english=\if english" \
   sectioning command is encountered.
 
   \par Example:
-  \verbinclude par.cpp
+  \include par.cpp
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/par/html/class_test.html">here</a>
+  Click <a href="examples/par/html/class_test.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{class_par___test}{Par example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
-<hr>
+</p><hr>
 \section cmdparam \\param [(dir)] <parameter-name> { parameter description }
 
   \addindex \\param
@@ -1767,13 +1860,13 @@ void setPosition(double x,double y,double z,double t)
 
 <hr>
 
-\htmlonly <center> \endhtmlonly
+\htmlonly</p><center><p>\endhtmlonly
 <h2>
 \htmlonly --- \endhtmlonly
 Commands to create links
 \htmlonly --- \endhtmlonly
 </h2>
-\htmlonly </center>\endhtmlonly
+\htmlonly</p></center><p>\endhtmlonly
 
 <hr>
 \section cmdaddindex \\addindex (text)
@@ -1992,13 +2085,13 @@ Make sure you have first read \ref intro "the introduction".
 
 <hr>
 
-\htmlonly <center> \endhtmlonly
+\htmlonly</p><center><p>\endhtmlonly
 <h2>
 \htmlonly --- \endhtmlonly
 Commands for displaying examples
 \htmlonly --- \endhtmlonly
 </h2>
-\htmlonly </center>\endhtmlonly
+\htmlonly</p></center><p>\endhtmlonly
 
 <hr>
 \section cmddontinclude \\dontinclude <file-name>
@@ -2023,13 +2116,17 @@ Commands for displaying examples
   \c \\dontinclude command sets the pointer to the first line of the example.
 
   \par Example:
-  \verbinclude include.cpp
+  \include include.cpp
   Where the example file \c example_test.cpp looks as follows:
-  \verbinclude example_test.cpp
+  \include example_test.cpp
   \htmlonly
-  Click <a href="$(DOXYGEN_DOCDIR)/examples/include/html/example.html">here</a>
+  Click <a href="examples/include/html/example.html">here</a>
   for the corresponding HTML documentation that is generated by doxygen.
   \endhtmlonly
+  \latexonly
+  See \hyperlink{include_example}{Include example}
+  for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+  \endlatexonly
 
   Alternatively, the \ref cmdsnippet "\\snippet" command can be used to
   include only a fragment of a source file. For this to work the
@@ -2039,7 +2136,7 @@ Commands for displaying examples
                \ref cmdskipline "\\skipline", \ref cmduntil "\\until", and
                \ref cmdinclude "\\include".
 
-<hr>
+</p><hr>
 \section cmdinclude \\include <file-name>
 
   \addindex \\include
@@ -2243,13 +2340,13 @@ Commands for displaying examples
 
 <hr>
 
-\htmlonly <center> \endhtmlonly
+\htmlonly</p><center><p>\endhtmlonly
 <h2>
 \htmlonly --- \endhtmlonly
 Commands for visual enhancements
 \htmlonly --- \endhtmlonly
 </h2>
-\htmlonly </center>\endhtmlonly
+\htmlonly</p></center><p>\endhtmlonly
 
 \section cmda \\a <word>
 
@@ -2466,7 +2563,7 @@ only copy the detailed documentation, not the brief description.
 
   The second argument is also optional and can be used to specify the
   width or height of the image.
-  For a descriptionm of the possibilities see the paragraph
+  For a description of the possibilities see the paragraph
   \ref image_sizeindicator "Size indication" with the
   \ref cmdimage "\\image" command.
 
@@ -2511,7 +2608,7 @@ class C {};
 
   The second argument is also optional and can be used to specify the
   width or height of the image. 
-  For a descriptionm of the possibilities see the paragraph
+  For a description of the possibilities see the paragraph
   \ref image_sizeindicator "Size indication" with the
   \ref cmdimage "\\image" command.
 
@@ -2586,7 +2683,7 @@ class Receiver
 
   The third argument is also optional and can be used to specify the
   width or height of the image.
-  For a descriptionm of the possibilities see the paragraph
+  For a description of the possibilities see the paragraph
   \ref image_sizeindicator "Size indication" with the
   \ref cmdimage "\\image" command.
 
@@ -2641,7 +2738,7 @@ class Receiver
 
   The third argument is also optional and can be used to specify the
   width or height of the image.
-  For a descriptionm of the possibilities see the paragraph
+  For a description of the possibilities see the paragraph
   \ref image_sizeindicator "Size indication" with the
   \ref cmdimage "\\image" command.
 
@@ -2668,7 +2765,7 @@ class Receiver
 
   The third argument is also optional and can be used to specify the
   width or height of the image.
-  For a descriptionm of the possibilities see the paragraph
+  For a description of the possibilities see the paragraph
   \ref image_sizeindicator "Size indication" with the
   \ref cmdimage "\\image" command.
 
@@ -2694,7 +2791,7 @@ class Receiver
 
   The third argument is also optional and can be used to specify the
   width or height of the image.
-  For a descriptionm of the possibilities see the paragraph
+  For a description of the possibilities see the paragraph
   \ref image_sizeindicator "Size indication" with the
   \ref cmdimage "\\image" command.
 
@@ -3190,7 +3287,7 @@ class Receiver
 
   \addindex \\\.
   This command writes a dot (`.`) to the output. This can be useful to 
-  prevent ending a brief description when JAVADOC_AUTOBRIEF is enabled
+  prevent ending a brief description when \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" is enabled
   or to prevent starting a numbered list when the dot follows a number at
   the start of a line.
 
@@ -3225,13 +3322,13 @@ class Receiver
   writing three consecutuve dashes to the output instead of one m-dash character (---).
 
 <hr>
-\htmlonly <center> \endhtmlonly
+\htmlonly</p><center><p>\endhtmlonly
 <h2>
 \htmlonly --- \endhtmlonly
 Commands included for Qt compatibility
 \htmlonly --- \endhtmlonly
 </h2>
-\htmlonly </center>\endhtmlonly
+\htmlonly</p></center><p>\endhtmlonly
 
 The following commands are supported to remain compatible to the Qt class
 browser generator. Do \e not use these commands in your own documentation.
@@ -3250,8 +3347,10 @@ browser generator. Do \e not use these commands in your own documentation.
 
 
 \htmlonly
+</p>
 Go to the <a href="htmlcmds.html">next</a> section or return to the
  <a href="index.html">index</a>.
+<p>
 \endhtmlonly
 
 */
diff --git a/doc/config.doc b/doc/config.doc
deleted file mode 100644
index 2720b9a..0000000
--- a/doc/config.doc
+++ /dev/null
@@ -1,3903 +0,0 @@
-/* WARNING: This file is generated!
- * Do not edit this file, but edit config.xml instead and run
- * python configgen.py -doc config.xml to regenerate this file!
- */
-/*
- *
- * 
- *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby 
- * granted. No representations are made about the suitability of this software 
- * for any purpose. It is provided "as is" without express or implied warranty.
- * See the GNU General Public License for more details.
- *
- * Documents produced by Doxygen are derivative works derived from the
- * input used in their production; they are not affected by this license.
- *
- */
-/*! \page config Configuration
-
-\tableofcontents
-\section config_format Format
-
-A configuration file is a free-form ASCII text file with a structure
-that is similar to that of a \c Makefile, with the default name \c Doxyfile. It is
-parsed by \c doxygen. The file may contain tabs and newlines for
-formatting purposes. The statements in the file are case-sensitive.
-Comments may be placed anywhere within the file (except within quotes).
-Comments beginning with two hash characters (\c \#\#) are kept when updating
-the configuration file and are placed in front of the TAG are in front of.
-Comments beginning with two hash characters (\c \#\#) at the end of the
-configuration file are also kept and placed at the end of the file.
-Comments begin with the hash character (\c \#) and ends at the end of the line.
-
-The file essentially consists of a list of assignment statements.
-Each statement consists of a \c TAG_NAME written in capitals,
-followed by the equal sign (<code>=</code>) and one or more values. If the same tag
-is assigned more than once, the last assignment overwrites any earlier
-assignment. For tags that take a list as their argument,
-the <code>+=</code> operator can be used instead of <code>=</code> to append 
-new values to the list. Values are sequences of non-blanks. If the value should 
-contain one or more blanks it must be surrounded by quotes (<code>"..."</code>).
-Multiple lines can be concatenated by inserting a backslash (\c \\)
-as the last character of a line. Environment variables can be expanded 
-using the pattern <code>\$(ENV_VARIABLE_NAME)</code>.
-
-You can also include part of a configuration file from another configuration
-file using a <code>\@INCLUDE</code> tag as follows:
-\verbatim
- at INCLUDE = config_file_name
-\endverbatim 
-The include file is searched in the current working directory. You can 
-also specify a list of directories that should be searched before looking
-in the current working directory. Do this by putting a <code>\@INCLUDE_PATH</code> tag 
-with these paths before the <code>\@INCLUDE</code> tag, e.g.:
-\verbatim
- at INCLUDE_PATH = my_config_dir
-\endverbatim
-
-The configuration options can be divided into several categories.
-Below is an alphabetical index of the tags that are recognized 
-followed by the descriptions of the tags grouped by category.
-\secreflist
-\refitem cfg_abbreviate_brief ABBREVIATE_BRIEF
-\refitem cfg_aliases ALIASES
-\refitem cfg_allexternals ALLEXTERNALS
-\refitem cfg_allow_unicode_names ALLOW_UNICODE_NAMES
-\refitem cfg_alphabetical_index ALPHABETICAL_INDEX
-\refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC
-\refitem cfg_autolink_support AUTOLINK_SUPPORT
-\refitem cfg_binary_toc BINARY_TOC
-\refitem cfg_brief_member_desc BRIEF_MEMBER_DESC
-\refitem cfg_builtin_stl_support BUILTIN_STL_SUPPORT
-\refitem cfg_caller_graph CALLER_GRAPH
-\refitem cfg_call_graph CALL_GRAPH
-\refitem cfg_case_sense_names CASE_SENSE_NAMES
-\refitem cfg_chm_file CHM_FILE
-\refitem cfg_chm_index_encoding CHM_INDEX_ENCODING
-\refitem cfg_cite_bib_files CITE_BIB_FILES
-\refitem cfg_clang_assisted_parsing CLANG_ASSISTED_PARSING
-\refitem cfg_clang_options CLANG_OPTIONS
-\refitem cfg_class_diagrams CLASS_DIAGRAMS
-\refitem cfg_class_graph CLASS_GRAPH
-\refitem cfg_collaboration_graph COLLABORATION_GRAPH
-\refitem cfg_cols_in_alpha_index COLS_IN_ALPHA_INDEX
-\refitem cfg_compact_latex COMPACT_LATEX
-\refitem cfg_compact_rtf COMPACT_RTF
-\refitem cfg_cpp_cli_support CPP_CLI_SUPPORT
-\refitem cfg_create_subdirs CREATE_SUBDIRS
-\refitem cfg_diafile_dirs DIAFILE_DIRS
-\refitem cfg_dia_path DIA_PATH
-\refitem cfg_directory_graph DIRECTORY_GRAPH
-\refitem cfg_disable_index DISABLE_INDEX
-\refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC
-\refitem cfg_docbook_output DOCBOOK_OUTPUT
-\refitem cfg_docbook_programlisting DOCBOOK_PROGRAMLISTING
-\refitem cfg_docset_bundle_id DOCSET_BUNDLE_ID
-\refitem cfg_docset_feedname DOCSET_FEEDNAME
-\refitem cfg_docset_publisher_id DOCSET_PUBLISHER_ID
-\refitem cfg_docset_publisher_name DOCSET_PUBLISHER_NAME
-\refitem cfg_dotfile_dirs DOTFILE_DIRS
-\refitem cfg_dot_cleanup DOT_CLEANUP
-\refitem cfg_dot_fontname DOT_FONTNAME
-\refitem cfg_dot_fontpath DOT_FONTPATH
-\refitem cfg_dot_fontsize DOT_FONTSIZE
-\refitem cfg_dot_graph_max_nodes DOT_GRAPH_MAX_NODES
-\refitem cfg_dot_image_format DOT_IMAGE_FORMAT
-\refitem cfg_dot_multi_targets DOT_MULTI_TARGETS
-\refitem cfg_dot_num_threads DOT_NUM_THREADS
-\refitem cfg_dot_path DOT_PATH
-\refitem cfg_dot_transparent DOT_TRANSPARENT
-\refitem cfg_doxyfile_encoding DOXYFILE_ENCODING
-\refitem cfg_eclipse_doc_id ECLIPSE_DOC_ID
-\refitem cfg_enabled_sections ENABLED_SECTIONS
-\refitem cfg_enable_preprocessing ENABLE_PREPROCESSING
-\refitem cfg_enum_values_per_line ENUM_VALUES_PER_LINE
-\refitem cfg_example_path EXAMPLE_PATH
-\refitem cfg_example_patterns EXAMPLE_PATTERNS
-\refitem cfg_example_recursive EXAMPLE_RECURSIVE
-\refitem cfg_exclude EXCLUDE
-\refitem cfg_exclude_patterns EXCLUDE_PATTERNS
-\refitem cfg_exclude_symbols EXCLUDE_SYMBOLS
-\refitem cfg_exclude_symlinks EXCLUDE_SYMLINKS
-\refitem cfg_expand_as_defined EXPAND_AS_DEFINED
-\refitem cfg_expand_only_predef EXPAND_ONLY_PREDEF
-\refitem cfg_extension_mapping EXTENSION_MAPPING
-\refitem cfg_external_groups EXTERNAL_GROUPS
-\refitem cfg_external_pages EXTERNAL_PAGES
-\refitem cfg_external_search EXTERNAL_SEARCH
-\refitem cfg_external_search_id EXTERNAL_SEARCH_ID
-\refitem cfg_extract_all EXTRACT_ALL
-\refitem cfg_extract_anon_nspaces EXTRACT_ANON_NSPACES
-\refitem cfg_extract_local_classes EXTRACT_LOCAL_CLASSES
-\refitem cfg_extract_local_methods EXTRACT_LOCAL_METHODS
-\refitem cfg_extract_package EXTRACT_PACKAGE
-\refitem cfg_extract_private EXTRACT_PRIVATE
-\refitem cfg_extract_static EXTRACT_STATIC
-\refitem cfg_extra_packages EXTRA_PACKAGES
-\refitem cfg_extra_search_mappings EXTRA_SEARCH_MAPPINGS
-\refitem cfg_ext_links_in_window EXT_LINKS_IN_WINDOW
-\refitem cfg_file_patterns FILE_PATTERNS
-\refitem cfg_file_version_filter FILE_VERSION_FILTER
-\refitem cfg_filter_patterns FILTER_PATTERNS
-\refitem cfg_filter_source_files FILTER_SOURCE_FILES
-\refitem cfg_filter_source_patterns FILTER_SOURCE_PATTERNS
-\refitem cfg_force_local_includes FORCE_LOCAL_INCLUDES
-\refitem cfg_formula_fontsize FORMULA_FONTSIZE
-\refitem cfg_formula_transparent FORMULA_TRANSPARENT
-\refitem cfg_full_path_names FULL_PATH_NAMES
-\refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF
-\refitem cfg_generate_buglist GENERATE_BUGLIST
-\refitem cfg_generate_chi GENERATE_CHI
-\refitem cfg_generate_deprecatedlist GENERATE_DEPRECATEDLIST
-\refitem cfg_generate_docbook GENERATE_DOCBOOK
-\refitem cfg_generate_docset GENERATE_DOCSET
-\refitem cfg_generate_eclipsehelp GENERATE_ECLIPSEHELP
-\refitem cfg_generate_html GENERATE_HTML
-\refitem cfg_generate_htmlhelp GENERATE_HTMLHELP
-\refitem cfg_generate_latex GENERATE_LATEX
-\refitem cfg_generate_legend GENERATE_LEGEND
-\refitem cfg_generate_man GENERATE_MAN
-\refitem cfg_generate_perlmod GENERATE_PERLMOD
-\refitem cfg_generate_qhp GENERATE_QHP
-\refitem cfg_generate_rtf GENERATE_RTF
-\refitem cfg_generate_tagfile GENERATE_TAGFILE
-\refitem cfg_generate_testlist GENERATE_TESTLIST
-\refitem cfg_generate_todolist GENERATE_TODOLIST
-\refitem cfg_generate_treeview GENERATE_TREEVIEW
-\refitem cfg_generate_xml GENERATE_XML
-\refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY
-\refitem cfg_group_graphs GROUP_GRAPHS
-\refitem cfg_have_dot HAVE_DOT
-\refitem cfg_hhc_location HHC_LOCATION
-\refitem cfg_hide_compound_reference HIDE_COMPOUND_REFERENCE
-\refitem cfg_hide_friend_compounds HIDE_FRIEND_COMPOUNDS
-\refitem cfg_hide_in_body_docs HIDE_IN_BODY_DOCS
-\refitem cfg_hide_scope_names HIDE_SCOPE_NAMES
-\refitem cfg_hide_undoc_classes HIDE_UNDOC_CLASSES
-\refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS
-\refitem cfg_hide_undoc_relations HIDE_UNDOC_RELATIONS
-\refitem cfg_html_colorstyle_gamma HTML_COLORSTYLE_GAMMA
-\refitem cfg_html_colorstyle_hue HTML_COLORSTYLE_HUE
-\refitem cfg_html_colorstyle_sat HTML_COLORSTYLE_SAT
-\refitem cfg_html_dynamic_sections HTML_DYNAMIC_SECTIONS
-\refitem cfg_html_extra_files HTML_EXTRA_FILES
-\refitem cfg_html_extra_stylesheet HTML_EXTRA_STYLESHEET
-\refitem cfg_html_file_extension HTML_FILE_EXTENSION
-\refitem cfg_html_footer HTML_FOOTER
-\refitem cfg_html_header HTML_HEADER
-\refitem cfg_html_index_num_entries HTML_INDEX_NUM_ENTRIES
-\refitem cfg_html_output HTML_OUTPUT
-\refitem cfg_html_stylesheet HTML_STYLESHEET
-\refitem cfg_html_timestamp HTML_TIMESTAMP
-\refitem cfg_idl_property_support IDL_PROPERTY_SUPPORT
-\refitem cfg_ignore_prefix IGNORE_PREFIX
-\refitem cfg_image_path IMAGE_PATH
-\refitem cfg_included_by_graph INCLUDED_BY_GRAPH
-\refitem cfg_include_file_patterns INCLUDE_FILE_PATTERNS
-\refitem cfg_include_graph INCLUDE_GRAPH
-\refitem cfg_include_path INCLUDE_PATH
-\refitem cfg_inherit_docs INHERIT_DOCS
-\refitem cfg_inline_grouped_classes INLINE_GROUPED_CLASSES
-\refitem cfg_inline_info INLINE_INFO
-\refitem cfg_inline_inherited_memb INLINE_INHERITED_MEMB
-\refitem cfg_inline_simple_structs INLINE_SIMPLE_STRUCTS
-\refitem cfg_inline_sources INLINE_SOURCES
-\refitem cfg_input INPUT
-\refitem cfg_input_encoding INPUT_ENCODING
-\refitem cfg_input_filter INPUT_FILTER
-\refitem cfg_interactive_svg INTERACTIVE_SVG
-\refitem cfg_internal_docs INTERNAL_DOCS
-\refitem cfg_javadoc_autobrief JAVADOC_AUTOBRIEF
-\refitem cfg_latex_batchmode LATEX_BATCHMODE
-\refitem cfg_latex_bib_style LATEX_BIB_STYLE
-\refitem cfg_latex_cmd_name LATEX_CMD_NAME
-\refitem cfg_latex_extra_files LATEX_EXTRA_FILES
-\refitem cfg_latex_extra_stylesheet LATEX_EXTRA_STYLESHEET
-\refitem cfg_latex_footer LATEX_FOOTER
-\refitem cfg_latex_header LATEX_HEADER
-\refitem cfg_latex_hide_indices LATEX_HIDE_INDICES
-\refitem cfg_latex_output LATEX_OUTPUT
-\refitem cfg_latex_source_code LATEX_SOURCE_CODE
-\refitem cfg_layout_file LAYOUT_FILE
-\refitem cfg_lookup_cache_size LOOKUP_CACHE_SIZE
-\refitem cfg_macro_expansion MACRO_EXPANSION
-\refitem cfg_makeindex_cmd_name MAKEINDEX_CMD_NAME
-\refitem cfg_man_extension MAN_EXTENSION
-\refitem cfg_man_links MAN_LINKS
-\refitem cfg_man_output MAN_OUTPUT
-\refitem cfg_man_subdir MAN_SUBDIR
-\refitem cfg_markdown_support MARKDOWN_SUPPORT
-\refitem cfg_mathjax_codefile MATHJAX_CODEFILE
-\refitem cfg_mathjax_extensions MATHJAX_EXTENSIONS
-\refitem cfg_mathjax_format MATHJAX_FORMAT
-\refitem cfg_mathjax_relpath MATHJAX_RELPATH
-\refitem cfg_max_dot_graph_depth MAX_DOT_GRAPH_DEPTH
-\refitem cfg_max_initializer_lines MAX_INITIALIZER_LINES
-\refitem cfg_mscfile_dirs MSCFILE_DIRS
-\refitem cfg_mscgen_path MSCGEN_PATH
-\refitem cfg_multiline_cpp_is_brief MULTILINE_CPP_IS_BRIEF
-\refitem cfg_optimize_for_fortran OPTIMIZE_FOR_FORTRAN
-\refitem cfg_optimize_output_for_c OPTIMIZE_OUTPUT_FOR_C
-\refitem cfg_optimize_output_java OPTIMIZE_OUTPUT_JAVA
-\refitem cfg_optimize_output_vhdl OPTIMIZE_OUTPUT_VHDL
-\refitem cfg_output_directory OUTPUT_DIRECTORY
-\refitem cfg_output_language OUTPUT_LANGUAGE
-\refitem cfg_paper_type PAPER_TYPE
-\refitem cfg_pdf_hyperlinks PDF_HYPERLINKS
-\refitem cfg_perlmod_latex PERLMOD_LATEX
-\refitem cfg_perlmod_makevar_prefix PERLMOD_MAKEVAR_PREFIX
-\refitem cfg_perlmod_pretty PERLMOD_PRETTY
-\refitem cfg_perl_path PERL_PATH
-\refitem cfg_plantuml_include_path PLANTUML_INCLUDE_PATH
-\refitem cfg_plantuml_jar_path PLANTUML_JAR_PATH
-\refitem cfg_predefined PREDEFINED
-\refitem cfg_project_brief PROJECT_BRIEF
-\refitem cfg_project_logo PROJECT_LOGO
-\refitem cfg_project_name PROJECT_NAME
-\refitem cfg_project_number PROJECT_NUMBER
-\refitem cfg_qch_file QCH_FILE
-\refitem cfg_qhg_location QHG_LOCATION
-\refitem cfg_qhp_cust_filter_attrs QHP_CUST_FILTER_ATTRS
-\refitem cfg_qhp_cust_filter_name QHP_CUST_FILTER_NAME
-\refitem cfg_qhp_namespace QHP_NAMESPACE
-\refitem cfg_qhp_sect_filter_attrs QHP_SECT_FILTER_ATTRS
-\refitem cfg_qhp_virtual_folder QHP_VIRTUAL_FOLDER
-\refitem cfg_qt_autobrief QT_AUTOBRIEF
-\refitem cfg_quiet QUIET
-\refitem cfg_recursive RECURSIVE
-\refitem cfg_referenced_by_relation REFERENCED_BY_RELATION
-\refitem cfg_references_link_source REFERENCES_LINK_SOURCE
-\refitem cfg_references_relation REFERENCES_RELATION
-\refitem cfg_repeat_brief REPEAT_BRIEF
-\refitem cfg_rtf_extensions_file RTF_EXTENSIONS_FILE
-\refitem cfg_rtf_hyperlinks RTF_HYPERLINKS
-\refitem cfg_rtf_output RTF_OUTPUT
-\refitem cfg_rtf_source_code RTF_SOURCE_CODE
-\refitem cfg_rtf_stylesheet_file RTF_STYLESHEET_FILE
-\refitem cfg_searchdata_file SEARCHDATA_FILE
-\refitem cfg_searchengine SEARCHENGINE
-\refitem cfg_searchengine_url SEARCHENGINE_URL
-\refitem cfg_search_includes SEARCH_INCLUDES
-\refitem cfg_separate_member_pages SEPARATE_MEMBER_PAGES
-\refitem cfg_server_based_search SERVER_BASED_SEARCH
-\refitem cfg_short_names SHORT_NAMES
-\refitem cfg_show_files SHOW_FILES
-\refitem cfg_show_grouped_memb_inc SHOW_GROUPED_MEMB_INC
-\refitem cfg_show_include_files SHOW_INCLUDE_FILES
-\refitem cfg_show_namespaces SHOW_NAMESPACES
-\refitem cfg_show_used_files SHOW_USED_FILES
-\refitem cfg_sip_support SIP_SUPPORT
-\refitem cfg_skip_function_macros SKIP_FUNCTION_MACROS
-\refitem cfg_sort_brief_docs SORT_BRIEF_DOCS
-\refitem cfg_sort_by_scope_name SORT_BY_SCOPE_NAME
-\refitem cfg_sort_group_names SORT_GROUP_NAMES
-\refitem cfg_sort_members_ctors_1st SORT_MEMBERS_CTORS_1ST
-\refitem cfg_sort_member_docs SORT_MEMBER_DOCS
-\refitem cfg_source_browser SOURCE_BROWSER
-\refitem cfg_source_tooltips SOURCE_TOOLTIPS
-\refitem cfg_strict_proto_matching STRICT_PROTO_MATCHING
-\refitem cfg_strip_code_comments STRIP_CODE_COMMENTS
-\refitem cfg_strip_from_inc_path STRIP_FROM_INC_PATH
-\refitem cfg_strip_from_path STRIP_FROM_PATH
-\refitem cfg_subgrouping SUBGROUPING
-\refitem cfg_tab_size TAB_SIZE
-\refitem cfg_tagfiles TAGFILES
-\refitem cfg_tcl_subst TCL_SUBST
-\refitem cfg_template_relations TEMPLATE_RELATIONS
-\refitem cfg_toc_expand TOC_EXPAND
-\refitem cfg_treeview_width TREEVIEW_WIDTH
-\refitem cfg_typedef_hides_struct TYPEDEF_HIDES_STRUCT
-\refitem cfg_uml_limit_num_fields UML_LIMIT_NUM_FIELDS
-\refitem cfg_uml_look UML_LOOK
-\refitem cfg_use_htags USE_HTAGS
-\refitem cfg_use_mathjax USE_MATHJAX
-\refitem cfg_use_mdfile_as_mainpage USE_MDFILE_AS_MAINPAGE
-\refitem cfg_use_pdflatex USE_PDFLATEX
-\refitem cfg_verbatim_headers VERBATIM_HEADERS
-\refitem cfg_warnings WARNINGS
-\refitem cfg_warn_format WARN_FORMAT
-\refitem cfg_warn_if_doc_error WARN_IF_DOC_ERROR
-\refitem cfg_warn_if_undocumented WARN_IF_UNDOCUMENTED
-\refitem cfg_warn_logfile WARN_LOGFILE
-\refitem cfg_warn_no_paramdoc WARN_NO_PARAMDOC
-\refitem cfg_xml_output XML_OUTPUT
-\refitem cfg_xml_programlisting XML_PROGRAMLISTING
-\endsecreflist
-\section config_project Project related configuration options
- \anchor cfg_doxyfile_encoding
-<dl>
-
-<dt>\c DOXYFILE_ENCODING <dd>
- \addindex DOXYFILE_ENCODING
- This tag specifies the encoding used for all characters in the config file that 
- follow. The default is UTF-8 which is also the encoding used for all text before
- the first occurrence of this tag. Doxygen uses \c libiconv (or the iconv built into
- \c libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
- possible encodings.
-
-The default value is: <code>UTF-8</code>.
-
- \anchor cfg_project_name
-<dt>\c PROJECT_NAME <dd>
- \addindex PROJECT_NAME
- The \c PROJECT_NAME tag is a single word (or a sequence of words
- surrounded by double-quotes, unless you are using Doxywizard) that should identify the project for which the 
- documentation is generated. This name is used in the title of most 
- generated pages and in a few other places.
-
-The default value is: <code>My Project</code>.
-
- \anchor cfg_project_number
-<dt>\c PROJECT_NUMBER <dd>
- \addindex PROJECT_NUMBER
- The \c PROJECT_NUMBER tag can be used to enter a project or revision number.
- This could be handy for archiving the generated documentation or
- if some version control system is used.
-
- \anchor cfg_project_brief
-<dt>\c PROJECT_BRIEF <dd>
- \addindex PROJECT_BRIEF
- Using the \c PROJECT_BRIEF tag one can provide an optional one line description 
- for a project that appears at the top of each page and should give viewer 
- a quick idea about the purpose of the project. Keep the description short.
-
- \anchor cfg_project_logo
-<dt>\c PROJECT_LOGO <dd>
- \addindex PROJECT_LOGO
- With the \c PROJECT_LOGO tag one can specify a logo or an icon that is 
- included in the documentation. The maximum height of the logo should not 
- exceed 55 pixels and the maximum width should not exceed 200 pixels. 
- Doxygen will copy the logo to the output directory.
-
- \anchor cfg_output_directory
-<dt>\c OUTPUT_DIRECTORY <dd>
- \addindex OUTPUT_DIRECTORY
- The \c OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
- path into which the generated documentation will be written. 
- If a relative path is entered, it will be relative to the location 
- where doxygen was started. If left blank the current directory will be used.
-
- \anchor cfg_create_subdirs
-<dt>\c CREATE_SUBDIRS <dd>
- \addindex CREATE_SUBDIRS
- If the \c CREATE_SUBDIRS tag is set to \c YES then doxygen will create
- 4096 sub-directories (in 2 levels) under the output directory of each output 
- format and will distribute the generated files over these directories. 
- Enabling this option can be useful when feeding doxygen a huge amount of source
- files, where putting all generated files in the same directory would otherwise
- causes performance problems for the file system.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_allow_unicode_names
-<dt>\c ALLOW_UNICODE_NAMES <dd>
- \addindex ALLOW_UNICODE_NAMES
- If the \c ALLOW_UNICODE_NAMES tag is set to \c YES,
- doxygen will allow non-ASCII characters to appear in the names of generated files. 
- If set to \c NO, non-ASCII characters will be escaped, for example _xE3_x81_x84 
- will be used for Unicode U+3044.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_output_language
-<dt>\c OUTPUT_LANGUAGE <dd>
- \addindex OUTPUT_LANGUAGE
- The \c OUTPUT_LANGUAGE tag is used to specify the language in which all
- documentation generated by doxygen is written. Doxygen will use this
- information to generate all constant output in the proper language.
-
-Possible values are: 
-<code>Afrikaans</code>, 
-<code>Arabic</code>, 
-<code>Armenian</code>, 
-<code>Brazilian</code>, 
-<code>Catalan</code>, 
-<code>Chinese</code>, 
-<code>Chinese-Traditional</code>, 
-<code>Croatian</code>, 
-<code>Czech</code>, 
-<code>Danish</code>, 
-<code>Dutch</code>, 
-<code>English</code> (United States), 
-<code>Esperanto</code>, 
-<code>Farsi</code> (Persian), 
-<code>Finnish</code>, 
-<code>French</code>, 
-<code>German</code>, 
-<code>Greek</code>, 
-<code>Hungarian</code>, 
-<code>Indonesian</code>, 
-<code>Italian</code>, 
-<code>Japanese</code>, 
-<code>Japanese-en</code> (Japanese with English messages), 
-<code>Korean</code>, 
-<code>Korean-en</code> (Korean with English messages), 
-<code>Latvian</code>, 
-<code>Lithuanian</code>, 
-<code>Macedonian</code>, 
-<code>Norwegian</code>, 
-<code>Persian</code> (Farsi), 
-<code>Polish</code>, 
-<code>Portuguese</code>, 
-<code>Romanian</code>, 
-<code>Russian</code>, 
-<code>Serbian</code>, 
-<code>Serbian-Cyrillic</code>, 
-<code>Slovak</code>, 
-<code>Slovene</code>, 
-<code>Spanish</code>, 
-<code>Swedish</code>, 
-<code>Turkish</code>, 
-<code>Ukrainian</code> and 
-<code>Vietnamese</code>.
-
-
-The default value is: <code>English</code>.
-
- \anchor cfg_brief_member_desc
-<dt>\c BRIEF_MEMBER_DESC <dd>
- \addindex BRIEF_MEMBER_DESC
- If the \c BRIEF_MEMBER_DESC tag is set to \c YES, doxygen will
- include brief member descriptions after the members that are listed in
- the file and class documentation (similar to \c Javadoc).
- Set to \c NO to disable this.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_repeat_brief
-<dt>\c REPEAT_BRIEF <dd>
- \addindex REPEAT_BRIEF
- If the \c REPEAT_BRIEF tag is set to \c YES, doxygen will 
- prepend the brief description of a member or function before the detailed 
- description 
- <br>Note: 
- If both \ref cfg_hide_undoc_members "HIDE_UNDOC_MEMBERS" and
- \ref cfg_brief_member_desc "BRIEF_MEMBER_DESC" are set to \c NO, the 
- brief descriptions will be completely suppressed.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_abbreviate_brief
-<dt>\c ABBREVIATE_BRIEF <dd>
- \addindex ABBREVIATE_BRIEF
- This tag implements a quasi-intelligent brief description abbreviator
- that is used to form the text in various listings. Each string
- in this list, if found as the leading text of the brief description, will be
- stripped from the text and the result, after processing the whole list, is used
- as the annotated text. Otherwise, the brief description is used as-is. If left
- blank, the following values are used (`$name` is automatically replaced with the
- name of the entity):
-<code>The $name class</code>, 
-<code>The $name widget</code>, 
-<code>The $name file</code>, 
-<code>is</code>, 
-<code>provides</code>, 
-<code>specifies</code>, 
-<code>contains</code>, 
-<code>represents</code>, 
-<code>a</code>, 
-<code>an</code> and 
-<code>the</code>.
-
- \anchor cfg_always_detailed_sec
-<dt>\c ALWAYS_DETAILED_SEC <dd>
- \addindex ALWAYS_DETAILED_SEC
- If the \c ALWAYS_DETAILED_SEC and \ref cfg_repeat_brief "REPEAT_BRIEF" tags 
- are both set to \c YES then
- doxygen will generate a detailed section even if there is only a brief
- description.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_inline_inherited_memb
-<dt>\c INLINE_INHERITED_MEMB <dd>
- \addindex INLINE_INHERITED_MEMB
- If the \c INLINE_INHERITED_MEMB tag is set to \c YES, doxygen will show all inherited
- members of a class in the documentation of that class as if those members were
- ordinary class members. Constructors, destructors and assignment operators of
- the base classes will not be shown.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_full_path_names
-<dt>\c FULL_PATH_NAMES <dd>
- \addindex FULL_PATH_NAMES
- If the \c FULL_PATH_NAMES tag is set to \c YES, doxygen will prepend the full
- path before files name in the file list and in the header files. If set
- to \c NO the shortest path that makes the file name unique will be used
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_strip_from_path
-<dt>\c STRIP_FROM_PATH <dd>
- \addindex STRIP_FROM_PATH
- The \c STRIP_FROM_PATH tag
- can be used to strip a user-defined part of the path. Stripping is
- only done if one of the specified strings matches the left-hand part of the 
- path. The tag can be used to show relative paths in the file list.
- If left blank the directory from which doxygen is run is used as the
- path to strip.
- <br>Note that you can specify absolute paths here, but also 
- relative paths, which will be relative from the directory where doxygen is 
- started.
-
-
-This tag requires that the tag \ref cfg_full_path_names "FULL_PATH_NAMES" is set to \c YES.
- \anchor cfg_strip_from_inc_path
-<dt>\c STRIP_FROM_INC_PATH <dd>
- \addindex STRIP_FROM_INC_PATH
- The \c STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
- the path mentioned in the documentation of a class, which tells
- the reader which header file to include in order to use a class. 
- If left blank only the name of the header file containing the class
- definition is used. Otherwise one should specify the list of include paths that 
- are normally passed to the compiler using the `-I` flag.
-
- \anchor cfg_short_names
-<dt>\c SHORT_NAMES <dd>
- \addindex SHORT_NAMES
- If the \c SHORT_NAMES tag is set to \c YES, doxygen will generate much shorter
- (but less readable) file names. This can be useful is your file systems
- doesn't support long names like on DOS, Mac, or CD-ROM.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_javadoc_autobrief
-<dt>\c JAVADOC_AUTOBRIEF <dd>
- \addindex JAVADOC_AUTOBRIEF
-  If the \c JAVADOC_AUTOBRIEF tag is set to \c YES then doxygen
-  will interpret the first line (until the first dot) of a Javadoc-style
-  comment as the brief description. If set to \c NO, the 
-  Javadoc-style will behave just like regular Qt-style comments
-  (thus requiring an explicit \ref cmdbrief "\@brief" command for a brief description.)
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_qt_autobrief
-<dt>\c QT_AUTOBRIEF <dd>
- \addindex QT_AUTOBRIEF
-  If the \c QT_AUTOBRIEF tag is set to \c YES then doxygen
-  will interpret the first line (until the first dot) of a Qt-style
-  comment as the brief description. If set to \c NO, the
-  Qt-style will behave just like regular Qt-style comments (thus
-  requiring an explicit \ref cmdbrief "\\brief" command for a brief description.)
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_multiline_cpp_is_brief
-<dt>\c MULTILINE_CPP_IS_BRIEF <dd>
- \addindex MULTILINE_CPP_IS_BRIEF
-  The \c MULTILINE_CPP_IS_BRIEF tag can be set to \c YES to make doxygen
-  treat a multi-line C++ special comment block (i.e. a block of \c //! or \c ///
-  comments) as a brief description. This used to be the default behavior.
-  The new default is to treat a multi-line C++ comment block as a detailed
-  description. Set this tag to \c YES if you prefer the old behavior instead.
-  <br>Note that setting this tag to \c YES also means that rational rose comments
-  are not recognized any more.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_inherit_docs
-<dt>\c INHERIT_DOCS <dd>
- \addindex INHERIT_DOCS
- If the \c INHERIT_DOCS tag is set to \c YES then an undocumented
- member inherits the documentation from any documented member that it
- re-implements.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_separate_member_pages
-<dt>\c SEPARATE_MEMBER_PAGES <dd>
- \addindex SEPARATE_MEMBER_PAGES
- If the \c SEPARATE_MEMBER_PAGES tag is set to \c YES then doxygen will produce
- a new page for each member. If set to \c NO, the documentation of a member will
- be part of the file/class/namespace that contains it.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_tab_size
-<dt>\c TAB_SIZE <dd>
- \addindex TAB_SIZE
- The \c TAB_SIZE tag can be used to set the number of spaces in a tab.
- Doxygen uses this value to replace tabs by spaces in code fragments.
-
-
- Minimum value: <code>1</code>, maximum value: <code>16</code>, default value: <code>4</code>.
-
- \anchor cfg_aliases
-<dt>\c ALIASES <dd>
- \addindex ALIASES
- This tag can be used to specify a number of aliases that act
- as commands in the documentation. An alias has the form: 
-\verbatim
- name=value
-\endverbatim
- For example adding 
-\verbatim
- "sideeffect=@par Side Effects:\n" 
-\endverbatim
- will allow you to
- put the command \c \\sideeffect (or \c \@sideeffect) in the documentation, which 
- will result in a user-defined paragraph with heading "Side Effects:".
- You can put \ref cmdn "\\n"'s in the value part of an alias to insert newlines.
-
- \anchor cfg_tcl_subst
-<dt>\c TCL_SUBST <dd>
- \addindex TCL_SUBST
- This tag can be used to specify a number of word-keyword mappings (TCL only). 
- A mapping has the form <code>"name=value"</code>. For example adding 
- <code>"class=itcl::class"</code> will allow you to use the command class in the 
- <code>itcl::class</code> meaning.
-
- \anchor cfg_optimize_output_for_c
-<dt>\c OPTIMIZE_OUTPUT_FOR_C <dd>
- \addindex OPTIMIZE_OUTPUT_FOR_C
- Set the \c OPTIMIZE_OUTPUT_FOR_C tag to \c YES if your project consists 
- of C sources only. Doxygen will then generate output that is more tailored 
- for C. For instance, some of the names that are used will be different. 
- The list of all members will be omitted, etc.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_optimize_output_java
-<dt>\c OPTIMIZE_OUTPUT_JAVA <dd>
- \addindex OPTIMIZE_OUTPUT_JAVA
- Set the \c OPTIMIZE_OUTPUT_JAVA tag to \c YES if your project consists of Java or
- Python sources only. Doxygen will then generate output that is more tailored 
- for that language. For instance, namespaces will be presented as packages, 
- qualified scopes will look different, etc.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_optimize_for_fortran
-<dt>\c OPTIMIZE_FOR_FORTRAN <dd>
- \addindex OPTIMIZE_FOR_FORTRAN
- Set the \c OPTIMIZE_FOR_FORTRAN tag to \c YES if your project consists of Fortran 
- sources. Doxygen will then generate output that is tailored for Fortran.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_optimize_output_vhdl
-<dt>\c OPTIMIZE_OUTPUT_VHDL <dd>
- \addindex OPTIMIZE_OUTPUT_VHDL
- Set the \c OPTIMIZE_OUTPUT_VHDL tag to \c YES if your project consists of VHDL 
- sources. Doxygen will then generate output that is tailored for VHDL.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_extension_mapping
-<dt>\c EXTENSION_MAPPING <dd>
- \addindex EXTENSION_MAPPING
- Doxygen selects the parser to use depending on the extension of the files it parses.
- With this tag you can assign which parser to use for a given extension.
- Doxygen has a built-in mapping, but you can override or extend it using this tag.
- The format is <code>ext=language</code>, where \c ext is a file extension, and language is one of
- the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
- Objective-C, Python, Fortran (fixed format Fortran: FortranFixed,
- free formatted Fortran: FortranFree, unknown formatted Fortran: Fortran. In
- the later case the parser tries to guess whether the code is fixed or free
- formatted code, this is the default for Fortran type files), VHDL. 
-
- For instance to make doxygen treat
- <code>.inc</code> files as Fortran files (default is PHP), and <code>.f</code> files as C (default is Fortran),
- use: `inc=Fortran f=C`.
-
- <br>Note: For files without extension you can use `no_extension` as a placeholder.
- <br>Note that for custom extensions you also need to set \ref cfg_file_patterns "FILE_PATTERNS" otherwise the 
- files are not read by doxygen.
-
- \anchor cfg_markdown_support
-<dt>\c MARKDOWN_SUPPORT <dd>
- \addindex MARKDOWN_SUPPORT
- If the \c MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all 
- comments according to the Markdown format, which allows for more readable 
- documentation. See http://daringfireball.net/projects/markdown/ for details. 
- The output of markdown processing is further processed by doxygen, so you 
- can mix doxygen, HTML, and XML commands with Markdown formatting. 
- Disable only in case of backward compatibilities issues.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_autolink_support
-<dt>\c AUTOLINK_SUPPORT <dd>
- \addindex AUTOLINK_SUPPORT
- When enabled doxygen tries to link words that correspond to documented classes, 
- or namespaces to their corresponding documentation. Such a link can be 
- prevented in individual cases by putting a \c % sign in front of the word or 
- globally by setting \c AUTOLINK_SUPPORT to \c NO.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_builtin_stl_support
-<dt>\c BUILTIN_STL_SUPPORT <dd>
- \addindex BUILTIN_STL_SUPPORT
- If you use STL classes (i.e. `std::string`, `std::vector`, etc.) but do not want to
- include (a tag file for) the STL sources as input, then you should
- set this tag to \c YES in order to let doxygen match functions declarations and
- definitions whose arguments contain STL classes (e.g. `func(std::string`); versus
- `func(std::string) {}`). This also make the inheritance and collaboration
- diagrams that involve STL classes more complete and accurate.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_cpp_cli_support
-<dt>\c CPP_CLI_SUPPORT <dd>
- \addindex CPP_CLI_SUPPORT
- If you use Microsoft's C++/CLI language, you should set this option to \c YES to
- enable parsing support.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_sip_support
-<dt>\c SIP_SUPPORT <dd>
- \addindex SIP_SUPPORT
- Set the \c SIP_SUPPORT tag to \c YES if your project consists 
- of <a href="http://www.riverbankcomputing.co.uk/software/sip/intro">sip</a> sources only. 
- Doxygen will parse them like normal C++ but will assume all classes use public 
- instead of private inheritance when no explicit protection keyword is present.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_idl_property_support
-<dt>\c IDL_PROPERTY_SUPPORT <dd>
- \addindex IDL_PROPERTY_SUPPORT
- For Microsoft's IDL there are \c propget and \c propput attributes to indicate getter
- and setter methods for a property. Setting this option to \c YES
- will make doxygen to replace the get and set methods by a property in the
- documentation. This will only work if the methods are indeed getting or 
- setting a simple type. If this is not the case, or you want to show the 
- methods anyway, you should set this option to \c NO.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_distribute_group_doc
-<dt>\c DISTRIBUTE_GROUP_DOC <dd>
- \addindex DISTRIBUTE_GROUP_DOC
- If member grouping is used in the documentation and the \c DISTRIBUTE_GROUP_DOC
- tag is set to \c YES then doxygen will reuse the documentation of the first
- member in the group (if any) for the other members of the group. By default
- all members of a group must be documented explicitly.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_subgrouping
-<dt>\c SUBGROUPING <dd>
- \addindex SUBGROUPING
- Set the \c SUBGROUPING tag to \c YES to allow class member groups of
- the same type (for instance a group of public functions) to be put as a
- subgroup of that type (e.g. under the Public Functions section). Set it to
- \c NO to prevent subgrouping. Alternatively, this can be done per class using
- the \ref cmdnosubgrouping "\\nosubgrouping" command.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_inline_grouped_classes
-<dt>\c INLINE_GROUPED_CLASSES <dd>
- \addindex INLINE_GROUPED_CLASSES
- When the \c INLINE_GROUPED_CLASSES tag is set to \c YES, classes, structs and 
- unions are shown inside the group in which they are included 
- (e.g. using \ref cmdingroup "\\ingroup") instead of on a separate page (for HTML and Man pages) 
- or section (for \f$\mbox{\LaTeX}\f$ and RTF).
- <br>Note that this feature does not work in
- combination with \ref cfg_separate_member_pages "SEPARATE_MEMBER_PAGES".
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_inline_simple_structs
-<dt>\c INLINE_SIMPLE_STRUCTS <dd>
- \addindex INLINE_SIMPLE_STRUCTS
- When the \c INLINE_SIMPLE_STRUCTS tag is set to \c YES, structs, classes, and 
- unions with only public data fields or simple typedef fields will be shown 
- inline in the documentation of the scope in which they are defined (i.e. file, 
- namespace, or group documentation), provided this scope is documented. If set 
- to \c NO, structs, classes, and unions are shown on a separate 
- page (for HTML and Man pages) or section (for \f$\mbox{\LaTeX}\f$ and RTF).
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_typedef_hides_struct
-<dt>\c TYPEDEF_HIDES_STRUCT <dd>
- \addindex TYPEDEF_HIDES_STRUCT
- When \c TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or enum
- is documented as struct, union, or enum with the name of the typedef. So 
- <code>typedef struct TypeS {} TypeT</code>, will appear in the documentation as a struct 
- with name \c TypeT. When disabled the typedef will appear as a member of a file, 
- namespace, or class. And the struct will be named \c TypeS. This can typically 
- be useful for C code in case the coding convention dictates that all compound 
- types are typedef'ed and only the typedef is referenced, never the tag name.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_lookup_cache_size
-<dt>\c LOOKUP_CACHE_SIZE <dd>
- \addindex LOOKUP_CACHE_SIZE
- The size of the symbol lookup cache can be 
- set using \c LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given 
- their name and scope. Since this can be an expensive process and often the 
- same symbol appears multiple times in the code, doxygen keeps a cache of 
- pre-resolved symbols. If the cache is too small doxygen will become slower. 
- If the cache is too large, memory is wasted. The cache size is given by this 
- formula: \f$2^{(16+\mbox{LOOKUP\_CACHE\_SIZE})}\f$. The valid range is 0..9, the default is 0, 
- corresponding to a cache size of \f$2^{16} = 65536\f$ symbols. 
- At the end of a run doxygen will report the cache usage and suggest the
- optimal cache size from a speed point of view.
-
-
- Minimum value: <code>0</code>, maximum value: <code>9</code>, default value: <code>0</code>.
-
-</dl>
-\section config_build Build related configuration options
- \anchor cfg_extract_all
-<dl>
-
-<dt>\c EXTRACT_ALL <dd>
- \addindex EXTRACT_ALL
- If the \c EXTRACT_ALL tag is set to \c YES, doxygen will assume all 
- entities in documentation are documented, even if no documentation was 
- available. Private class members and static file members will be hidden 
- unless the \ref cfg_extract_private "EXTRACT_PRIVATE" respectively 
- \ref cfg_extract_static "EXTRACT_STATIC" tags are set to \c YES.
-
- \note This will also disable the warnings about undocumented members 
- that are normally produced when \ref cfg_warnings "WARNINGS" is 
- set to \c YES.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_extract_private
-<dt>\c EXTRACT_PRIVATE <dd>
- \addindex EXTRACT_PRIVATE
- If the \c EXTRACT_PRIVATE tag is set to \c YES, all private members of a 
- class will be included in the documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_extract_package
-<dt>\c EXTRACT_PACKAGE <dd>
- \addindex EXTRACT_PACKAGE
- If the \c EXTRACT_PACKAGE tag is set to \c YES, all members with package 
- or internal scope will be included in the documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_extract_static
-<dt>\c EXTRACT_STATIC <dd>
- \addindex EXTRACT_STATIC
- If the \c EXTRACT_STATIC tag is set to \c YES, all static members of a file
- will be included in the documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_extract_local_classes
-<dt>\c EXTRACT_LOCAL_CLASSES <dd>
- \addindex EXTRACT_LOCAL_CLASSES
- If the \c EXTRACT_LOCAL_CLASSES tag is set to \c YES, classes (and structs) 
- defined locally in source files will be included in the documentation. 
- If set to \c NO, only classes defined in header files are included. Does not
- have any effect for Java sources.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_extract_local_methods
-<dt>\c EXTRACT_LOCAL_METHODS <dd>
- \addindex EXTRACT_LOCAL_METHODS
- This flag is only useful for Objective-C code. If set to \c YES, local 
- methods, which are defined in the implementation section but not in
- the interface are included in the documentation.
- If set to \c NO, only methods in the interface are included.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_extract_anon_nspaces
-<dt>\c EXTRACT_ANON_NSPACES <dd>
- \addindex EXTRACT_ANON_NSPACES
- If this flag is set to \c YES, the members of anonymous namespaces will be extracted
- and appear in the documentation as a namespace called 'anonymous_namespace{file}',
- where file will be replaced with the base name of the file that contains the anonymous
- namespace. By default anonymous namespace are hidden.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_hide_undoc_members
-<dt>\c HIDE_UNDOC_MEMBERS <dd>
- \addindex HIDE_UNDOC_MEMBERS
- If the \c HIDE_UNDOC_MEMBERS tag is set to \c YES, doxygen will hide all
- undocumented members inside documented classes or files. 
- If set to \c NO these members will be included in the
- various overviews, but no documentation section is generated.
- This option has no effect if \ref cfg_extract_all "EXTRACT_ALL" is enabled.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_hide_undoc_classes
-<dt>\c HIDE_UNDOC_CLASSES <dd>
- \addindex HIDE_UNDOC_CLASSES
- If the \c HIDE_UNDOC_CLASSES tag is set to \c YES, doxygen will hide all
- undocumented classes that are normally visible in the class hierarchy. 
- If set to \c NO, these classes will be included in the
- various overviews.
- This option has no effect if \ref cfg_extract_all "EXTRACT_ALL" is enabled.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_hide_friend_compounds
-<dt>\c HIDE_FRIEND_COMPOUNDS <dd>
- \addindex HIDE_FRIEND_COMPOUNDS
- If the \c HIDE_FRIEND_COMPOUNDS tag is set to \c YES, doxygen will hide all
- friend (class|struct|union) declarations.
- If set to \c NO, these declarations will be included in the
- documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_hide_in_body_docs
-<dt>\c HIDE_IN_BODY_DOCS <dd>
- \addindex HIDE_IN_BODY_DOCS
- If the \c HIDE_IN_BODY_DOCS tag is set to \c YES, doxygen will hide any 
- documentation blocks found inside the body of a function.
- If set to \c NO, these blocks will be appended to the 
- function's detailed documentation block.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_internal_docs
-<dt>\c INTERNAL_DOCS <dd>
- \addindex INTERNAL_DOCS
- The \c INTERNAL_DOCS tag determines if documentation
- that is typed after a \ref cmdinternal "\\internal" command is included. If the tag is set
- to \c NO then the documentation will be excluded.
- Set it to \c YES to include the internal documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_case_sense_names
-<dt>\c CASE_SENSE_NAMES <dd>
- \addindex CASE_SENSE_NAMES
- If the \c CASE_SENSE_NAMES tag is set to \c NO then doxygen
- will only generate file names in lower-case letters. If set to
- \c YES, upper-case letters are also allowed. This is useful if you have
- classes or files whose names only differ in case and if your file system
- supports case sensitive file names. Windows and Mac users are advised to set this
- option to \c NO.
-
-
-The default value is: system dependent.
-
- \anchor cfg_hide_scope_names
-<dt>\c HIDE_SCOPE_NAMES <dd>
- \addindex HIDE_SCOPE_NAMES
- If the \c HIDE_SCOPE_NAMES tag is set to \c NO then doxygen 
- will show members with their full class and namespace scopes in the
- documentation. If set to \c YES, the scope will be hidden.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_hide_compound_reference
-<dt>\c HIDE_COMPOUND_REFERENCE <dd>
- \addindex HIDE_COMPOUND_REFERENCE
- If the \c HIDE_COMPOUND_REFERENCE tag is set to \c NO (default) then
- doxygen will append additional text to a page's title, such as Class Reference.
- If set to \c YES the compound reference will be hidden.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_show_include_files
-<dt>\c SHOW_INCLUDE_FILES <dd>
- \addindex SHOW_INCLUDE_FILES
- If the \c SHOW_INCLUDE_FILES tag is set to \c YES then doxygen
- will put a list of the files that are included by a file in the documentation 
- of that file.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_show_grouped_memb_inc
-<dt>\c SHOW_GROUPED_MEMB_INC <dd>
- \addindex SHOW_GROUPED_MEMB_INC
- If the SHOW_GROUPED_MEMB_INC tag is set to \c YES then Doxygen 
- will add for each grouped member an include statement to the documentation,
- telling the reader which file to include in order to use the member.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_force_local_includes
-<dt>\c FORCE_LOCAL_INCLUDES <dd>
- \addindex FORCE_LOCAL_INCLUDES
- If the \c FORCE_LOCAL_INCLUDES tag is set to \c YES then doxygen 
- will list include files with double quotes in the documentation 
- rather than with sharp brackets.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_inline_info
-<dt>\c INLINE_INFO <dd>
- \addindex INLINE_INFO
- If the \c INLINE_INFO tag is set to \c YES then a tag [inline]
- is inserted in the documentation for inline members.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_sort_member_docs
-<dt>\c SORT_MEMBER_DOCS <dd>
- \addindex SORT_MEMBER_DOCS
- If the \c SORT_MEMBER_DOCS tag is set to \c YES then doxygen
- will sort the (detailed) documentation of file and class members
- alphabetically by member name. If set to \c NO, the members will appear in
- declaration order.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_sort_brief_docs
-<dt>\c SORT_BRIEF_DOCS <dd>
- \addindex SORT_BRIEF_DOCS
- If the \c SORT_BRIEF_DOCS tag is set to \c YES then doxygen will sort the
- brief descriptions of file, namespace and class members alphabetically
- by member name. If set to \c NO, the members will appear in
- declaration order. Note that this will also influence the order of the
- classes in the class list.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_sort_members_ctors_1st
-<dt>\c SORT_MEMBERS_CTORS_1ST <dd>
- \addindex SORT_MEMBERS_CTORS_1ST
- If the \c SORT_MEMBERS_CTORS_1ST tag is set to \c YES then doxygen
- will sort the (brief and detailed) documentation of class members so that
- constructors and destructors are listed first. If set to \c NO
- the constructors will appear in the respective orders defined by
- \ref cfg_sort_brief_docs "SORT_BRIEF_DOCS" and \ref cfg_sort_member_docs "SORT_MEMBER_DOCS".
- \note If \ref cfg_sort_brief_docs "SORT_BRIEF_DOCS" is set to \c NO this option is ignored for
-       sorting brief member documentation.
- \note If \ref cfg_sort_member_docs "SORT_MEMBER_DOCS" is set to \c NO this option is ignored for
-       sorting detailed member documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_sort_group_names
-<dt>\c SORT_GROUP_NAMES <dd>
- \addindex SORT_GROUP_NAMES
- If the \c SORT_GROUP_NAMES tag is set to \c YES then doxygen will sort the 
- hierarchy of group names into alphabetical order. If set to \c NO
- the group names will appear in their defined order.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_sort_by_scope_name
-<dt>\c SORT_BY_SCOPE_NAME <dd>
- \addindex SORT_BY_SCOPE_NAME
- If the \c SORT_BY_SCOPE_NAME tag is set to \c YES, the class list will be
- sorted by fully-qualified names, including namespaces. If set to
- \c NO, the class list will be sorted only by class name,
- not including the namespace part.
- \note This option is not very useful if \ref cfg_hide_scope_names "HIDE_SCOPE_NAMES" is set to \c YES.
- \note This option applies only to the class list, not to the 
-       alphabetical list.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_strict_proto_matching
-<dt>\c STRICT_PROTO_MATCHING <dd>
- \addindex STRICT_PROTO_MATCHING
- If the \c STRICT_PROTO_MATCHING option is enabled and doxygen fails to
- do proper type resolution of all parameters of a function it will reject a  
- match between the prototype and the implementation of a member function even
- if there is only one candidate or it is obvious which candidate to choose
- by doing a simple string match. By disabling \c STRICT_PROTO_MATCHING doxygen 
- will still accept a match between prototype and implementation in such cases.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_generate_todolist
-<dt>\c GENERATE_TODOLIST <dd>
- \addindex GENERATE_TODOLIST
- The \c GENERATE_TODOLIST tag can be used to enable (\c YES) or
- disable (\c NO) the todo list. This list is created by 
- putting \ref cmdtodo "\\todo" commands in the documentation.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_generate_testlist
-<dt>\c GENERATE_TESTLIST <dd>
- \addindex GENERATE_TESTLIST
- The \c GENERATE_TESTLIST tag can be used to enable (\c YES) or
- disable (\c NO) the test list. This list is created by 
- putting \ref cmdtest "\\test" commands in the documentation.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_generate_buglist
-<dt>\c GENERATE_BUGLIST <dd>
- \addindex GENERATE_BUGLIST
- The \c GENERATE_BUGLIST tag can be used to enable (\c YES) or
- disable (\c NO) the bug list. This list is created by 
- putting \ref cmdbug "\\bug" commands in the documentation.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_generate_deprecatedlist
-<dt>\c GENERATE_DEPRECATEDLIST <dd>
- \addindex GENERATE_DEPRECATEDLIST
- The \c GENERATE_DEPRECATEDLIST tag can be used to enable (\c YES) or
- disable (\c NO) the deprecated list. This list is created by 
- putting \ref cmddeprecated "\\deprecated"
- commands in the documentation.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_enabled_sections
-<dt>\c ENABLED_SECTIONS <dd>
- \addindex ENABLED_SECTIONS
- The \c ENABLED_SECTIONS tag can be used to enable conditional
- documentation sections, marked by \ref cmdif "\\if" \<section_label\> ... 
- \ref cmdendif "\\endif" and \ref cmdcond "\\cond" \<section_label\> ...
- \ref cmdendcond "\\endcond" blocks.
-
- \anchor cfg_max_initializer_lines
-<dt>\c MAX_INITIALIZER_LINES <dd>
- \addindex MAX_INITIALIZER_LINES
- The \c MAX_INITIALIZER_LINES tag determines the maximum number of lines
- that the initial value of a variable or macro / define can have for it to appear in
- the documentation. If the initializer
- consists of more lines than specified here it will be hidden. Use a value
- of 0 to hide initializers completely. The appearance of the value of
- individual variables and macros / defines can be controlled using \ref cmdshowinitializer "\\showinitializer"
- or \ref cmdhideinitializer "\\hideinitializer" command in the documentation regardless of this setting.
-
-
- Minimum value: <code>0</code>, maximum value: <code>10000</code>, default value: <code>30</code>.
-
- \anchor cfg_show_used_files
-<dt>\c SHOW_USED_FILES <dd>
- \addindex SHOW_USED_FILES
- Set the \c SHOW_USED_FILES tag to \c NO to disable the list of files generated
- at the bottom of the documentation of classes and structs. If set to \c YES, the
- list will mention the files that were used to generate the documentation.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_show_files
-<dt>\c SHOW_FILES <dd>
- \addindex SHOW_FILES
- Set the \c SHOW_FILES tag to \c NO to disable the generation of the Files page.
- This will remove the Files entry from the Quick Index and from the
- Folder Tree View (if specified).
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_show_namespaces
-<dt>\c SHOW_NAMESPACES <dd>
- \addindex SHOW_NAMESPACES
- Set the \c SHOW_NAMESPACES tag to \c NO to disable the generation of the
- Namespaces page. This will remove the Namespaces entry from the Quick Index
- and from the Folder Tree View (if specified).
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_file_version_filter
-<dt>\c FILE_VERSION_FILTER <dd>
- \addindex FILE_VERSION_FILTER
- The \c FILE_VERSION_FILTER tag can be used to specify a program or script that
- doxygen should invoke to get the current version for each file (typically from the
- version control system). Doxygen will invoke the program by executing (via
- <code>popen()</code>) the command <code>command input-file</code>, where \c command is 
- the value of the \c FILE_VERSION_FILTER tag, and \c input-file is the name 
- of an input file provided by doxygen. 
- Whatever the program writes to standard output is used as the file version.Example of using a shell script as a filter for Unix:
-\verbatim
- FILE_VERSION_FILTER = "/bin/sh versionfilter.sh"
-\endverbatim
-<br>
-Example shell script for CVS:
-\verbatim
-#!/bin/sh
-cvs status $1 | sed -n 's/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p'
-\endverbatim 
-<br> 
-Example shell script for Subversion:
-\verbatim
-#!/bin/sh
-svn stat -v $1 | sed -n 's/^[ A-Z?\*|!]\{1,15\}/r/;s/ \{1,15\}/\/r/;s/ .*//p'
-\endverbatim
-<br>
-Example filter for ClearCase:
-\verbatim
-FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
-\endverbatim
-
- \anchor cfg_layout_file
-<dt>\c LAYOUT_FILE <dd>
- \addindex LAYOUT_FILE
- The \c LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
- doxygen. The layout file controls the global structure of the generated output files
- in an output format independent way. To create the layout file that represents
- doxygen's defaults, run doxygen with the `-l` option. You can optionally specify a
- file name after the option, if omitted \c DoxygenLayout.xml will be used as the name
- of the layout file.
- <br>Note that if you run doxygen from a directory containing 
- a file called \c DoxygenLayout.xml, doxygen will parse it automatically even if 
- the \c LAYOUT_FILE tag is left empty.
-
- \anchor cfg_cite_bib_files
-<dt>\c CITE_BIB_FILES <dd>
- \addindex CITE_BIB_FILES
- The \c CITE_BIB_FILES tag can be used to specify one or more \c bib files 
- containing the reference definitions. This must be a list of <code>.bib</code> files. The 
- <code>.bib</code> extension is automatically appended if omitted. This requires the 
- \c bibtex tool to be installed. See also http://en.wikipedia.org/wiki/BibTeX for
- more info. For \f$\mbox{\LaTeX}\f$ the style of the bibliography can be controlled 
- using \ref cfg_latex_bib_style "LATEX_BIB_STYLE".
- To use this feature you need \c bibtex and \c perl available in the search path.
- See also \ref cmdcite "\\cite" for info how to create references.
-
-</dl>
-\section config_messages Configuration options related to warning and progress messages
- \anchor cfg_quiet
-<dl>
-
-<dt>\c QUIET <dd>
- \addindex QUIET
- The \c QUIET tag can be used to turn on/off the messages that are generated
- to standard output by doxygen. If \c QUIET is set to \c YES this implies that the messages are off.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_warnings
-<dt>\c WARNINGS <dd>
- \addindex WARNINGS
- The \c WARNINGS tag can be used to turn on/off the warning messages that are
- generated to standard error (\c stderr) by doxygen. If \c WARNINGS is set to 
- \c YES this implies that the warnings are on.
-<br>
- \b Tip: Turn warnings on while writing the documentation.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_warn_if_undocumented
-<dt>\c WARN_IF_UNDOCUMENTED <dd>
- \addindex WARN_IF_UNDOCUMENTED
- If the \c WARN_IF_UNDOCUMENTED tag is set to \c YES then doxygen will generate warnings
- for undocumented members. If \ref cfg_extract_all "EXTRACT_ALL" is set to \c YES then this flag will
- automatically be disabled.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_warn_if_doc_error
-<dt>\c WARN_IF_DOC_ERROR <dd>
- \addindex WARN_IF_DOC_ERROR
- If the \c WARN_IF_DOC_ERROR tag is set to \c YES, doxygen will generate warnings for
- potential errors in the documentation, such as not documenting some
- parameters in a documented function, or documenting parameters that
- don't exist or using markup commands wrongly.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_warn_no_paramdoc
-<dt>\c WARN_NO_PARAMDOC <dd>
- \addindex WARN_NO_PARAMDOC
- This \c WARN_NO_PARAMDOC option can be enabled to get warnings for 
- functions that are documented, but have no documentation for their parameters
- or return value. If set to \c NO, doxygen will only warn about
- wrong or incomplete parameter documentation, but not about the absence of
- documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_warn_format
-<dt>\c WARN_FORMAT <dd>
- \addindex WARN_FORMAT
- The \c WARN_FORMAT tag determines the format of the warning messages that
- doxygen can produce. The string should contain the <code>\$file</code>, 
- <code>\$line</code>, and <code>\$text</code> 
- tags, which will be replaced by the file and line number from which the
- warning originated and the warning text.
- Optionally the format may contain 
- <code>$version</code>, which will be replaced by the version of the file (if it could 
- be obtained via \ref cfg_file_version_filter "FILE_VERSION_FILTER")
-
-The default value is: <code>$file:$line: $text</code>.
-
- \anchor cfg_warn_logfile
-<dt>\c WARN_LOGFILE <dd>
- \addindex WARN_LOGFILE
- The \c WARN_LOGFILE tag can be used to specify a file to which warning
- and error messages should be written. If left blank the output is written 
- to standard error (`stderr`).
-
-</dl>
-\section config_input Configuration options related to the input files
- \anchor cfg_input
-<dl>
-
-<dt>\c INPUT <dd>
- \addindex INPUT
- The \c INPUT tag is used to specify the files and/or directories that contain 
- documented source files. You may enter file names like 
- \c myfile.cpp or directories like \c /usr/src/myproject. 
- Separate the files or directories with spaces.
-
- \note If this tag is empty the current directory is searched.
-
- \anchor cfg_input_encoding
-<dt>\c INPUT_ENCODING <dd>
- \addindex INPUT_ENCODING
- This tag can be used to specify the character encoding of the source files that 
- doxygen parses. Internally doxygen uses the UTF-8 encoding.
- Doxygen uses `libiconv` (or the `iconv` built into `libc`) for the transcoding. 
- See <a href="http://www.gnu.org/software/libiconv">the libiconv documentation</a> for 
- the list of possible encodings.
-
-The default value is: <code>UTF-8</code>.
-
- \anchor cfg_file_patterns
-<dt>\c FILE_PATTERNS <dd>
- \addindex FILE_PATTERNS
- If the value of the \ref cfg_input "INPUT" tag contains directories, you can use the 
- \c FILE_PATTERNS tag to specify one or more wildcard patterns 
- (like `*.cpp` and `*.h`) to filter out the source-files 
- in the directories. If left blank the following patterns are tested:
-<code>*.c</code>, 
-<code>*.cc</code>, 
-<code>*.cxx</code>, 
-<code>*.cpp</code>, 
-<code>*.c++</code>, 
-<code>*.java</code>, 
-<code>*.ii</code>, 
-<code>*.ixx</code>, 
-<code>*.ipp</code>, 
-<code>*.i++</code>, 
-<code>*.inl</code>, 
-<code>*.idl</code>, 
-<code>*.ddl</code>, 
-<code>*.odl</code>, 
-<code>*.h</code>, 
-<code>*.hh</code>, 
-<code>*.hxx</code>, 
-<code>*.hpp</code>, 
-<code>*.h++</code>, 
-<code>*.cs</code>, 
-<code>*.d</code>, 
-<code>*.php</code>, 
-<code>*.php4</code>, 
-<code>*.php5</code>, 
-<code>*.phtml</code>, 
-<code>*.inc</code>, 
-<code>*.m</code>, 
-<code>*.markdown</code>, 
-<code>*.md</code>, 
-<code>*.mm</code>, 
-<code>*.dox</code>, 
-<code>*.py</code>, 
-<code>*.f90</code>, 
-<code>*.f</code>, 
-<code>*.for</code>, 
-<code>*.tcl</code>, 
-<code>*.vhd</code>, 
-<code>*.vhdl</code>, 
-<code>*.ucf</code>, 
-<code>*.qsf</code>, 
-<code>*.as</code> and 
-<code>*.js</code>.
-
- \anchor cfg_recursive
-<dt>\c RECURSIVE <dd>
- \addindex RECURSIVE
- The \c RECURSIVE tag can be used to specify whether or not subdirectories
- should be searched for input files as well.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_exclude
-<dt>\c EXCLUDE <dd>
- \addindex EXCLUDE
- The \c EXCLUDE tag can be used to specify files and/or directories that should be
- excluded from the \ref cfg_input "INPUT" source files. This way you can easily exclude a
- subdirectory from a directory tree whose root is specified with the \ref cfg_input "INPUT" tag.
- <br>Note that relative paths are relative to the directory from which doxygen is run.
-
- \anchor cfg_exclude_symlinks
-<dt>\c EXCLUDE_SYMLINKS <dd>
- \addindex EXCLUDE_SYMLINKS
- The \c EXCLUDE_SYMLINKS tag can be used to select whether or not files or directories 
- that are symbolic links (a Unix file system feature) are excluded from the input.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_exclude_patterns
-<dt>\c EXCLUDE_PATTERNS <dd>
- \addindex EXCLUDE_PATTERNS
- If the value of the \ref cfg_input "INPUT" tag contains directories, you can use the
- \c EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
- certain files from those directories.
- <br>Note that the wildcards are matched 
- against the file with absolute path, so to exclude all test directories 
- for example use the pattern `*``/test/``*`
-
- \anchor cfg_exclude_symbols
-<dt>\c EXCLUDE_SYMBOLS <dd>
- \addindex EXCLUDE_SYMBOLS
- The \c EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
- (namespaces, classes, functions, etc.) that should be excluded from the 
- output. The symbol name can be a fully qualified name, a word, or if the 
- wildcard `*` is used, a substring. Examples: `ANamespace`, `AClass`, 
- `AClass::ANamespace`, `ANamespace::*Test` 
- <br>Note that the wildcards are matched against the file with absolute path, 
- so to exclude all test directories use the pattern 
- `*``/test/``*`
-
- \anchor cfg_example_path
-<dt>\c EXAMPLE_PATH <dd>
- \addindex EXAMPLE_PATH
- The \c EXAMPLE_PATH tag can be used to specify one or more files or
- directories that contain example code fragments that are included (see
- the \ref cmdinclude "\\include" command).
-
- \anchor cfg_example_patterns
-<dt>\c EXAMPLE_PATTERNS <dd>
- \addindex EXAMPLE_PATTERNS
- If the value of the \ref cfg_example_path "EXAMPLE_PATH" tag contains directories, 
- you can use the
- \c EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like `*.cpp`
- and `*.h`) to filter out the source-files in the directories. If left
- blank all files are included.
-
- \anchor cfg_example_recursive
-<dt>\c EXAMPLE_RECURSIVE <dd>
- \addindex EXAMPLE_RECURSIVE
- If the \c EXAMPLE_RECURSIVE tag is set to \c YES then subdirectories will be
- searched for input files to be used with the \ref cmdinclude "\\include" or
- \ref cmddontinclude "\\dontinclude" 
- commands irrespective of the value of the \ref cfg_recursive "RECURSIVE" tag.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_image_path
-<dt>\c IMAGE_PATH <dd>
- \addindex IMAGE_PATH
- The \c IMAGE_PATH tag can be used to specify one or more files or
- directories that contain images that are to be included in the 
- documentation (see the \ref cmdimage "\\image" command).
-
- \anchor cfg_input_filter
-<dt>\c INPUT_FILTER <dd>
- \addindex INPUT_FILTER
- The \c INPUT_FILTER tag can be used to specify a program that doxygen should
- invoke to filter for each input file. Doxygen will invoke the filter program
- by executing (via <code>popen()</code>) the command:
- <br>
-   <code>\<filter\> \<input-file\></code>
- <br>
- where <code>\<filter\></code>
- is the value of the \c INPUT_FILTER tag, and <code>\<input-file\></code> is the name of an
- input file. Doxygen will then use the output that the filter program writes
- to standard output.  If \ref cfg_filter_patterns "FILTER_PATTERNS" is specified, this tag will be ignored. 
- <br>Note that the filter must not add or remove lines; it is applied before the 
- code is scanned, but not when the output code is generated. If lines are added 
- or removed, the anchors will not be placed correctly.
-
- \anchor cfg_filter_patterns
-<dt>\c FILTER_PATTERNS <dd>
- \addindex FILTER_PATTERNS
- The \c FILTER_PATTERNS tag can be used to specify filters on a per file pattern
- basis. Doxygen will compare the file name with each pattern and apply the
- filter if there is a match. The filters are a list of the form:
- pattern=filter (like `*.cpp=my_cpp_filter`). See \ref cfg_input_filter "INPUT_FILTER" for further
- information on how filters are used. If the \c FILTER_PATTERNS tag is empty or if
- none of the patterns match the file name, \ref cfg_input_filter "INPUT_FILTER" is 
- applied.
-
- \anchor cfg_filter_source_files
-<dt>\c FILTER_SOURCE_FILES <dd>
- \addindex FILTER_SOURCE_FILES
- If the \c FILTER_SOURCE_FILES tag is set to \c YES, the input filter (if set using
- \ref cfg_input_filter "INPUT_FILTER") will also be used to filter the input
- files that are used for producing the source files to browse 
- (i.e. when \ref cfg_source_browser "SOURCE_BROWSER" is set to \c YES).
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_filter_source_patterns
-<dt>\c FILTER_SOURCE_PATTERNS <dd>
- \addindex FILTER_SOURCE_PATTERNS
- The \c FILTER_SOURCE_PATTERNS tag can be used to specify source filters per 
- file pattern. A pattern will override the setting 
- for \ref cfg_filter_patterns "FILTER_PATTERN" (if any) 
- and it is also possible to disable source filtering for a specific pattern 
- using `*.ext=` (so without naming a filter).
-
-
-This tag requires that the tag \ref cfg_filter_source_files "FILTER_SOURCE_FILES" is set to \c YES.
- \anchor cfg_use_mdfile_as_mainpage
-<dt>\c USE_MDFILE_AS_MAINPAGE <dd>
- \addindex USE_MDFILE_AS_MAINPAGE
- If the \c USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that 
- is part of the input, its contents will be placed on the main page (`index.html`). 
- This can be useful if you have a project on for instance GitHub and want to reuse 
- the introduction page also for the doxygen output.
-
-</dl>
-\section config_source_browser Configuration options related to source browsing
- \anchor cfg_source_browser
-<dl>
-
-<dt>\c SOURCE_BROWSER <dd>
- \addindex SOURCE_BROWSER
- If the \c SOURCE_BROWSER tag is set to \c YES then a list of source files will
- be generated. Documented entities will be cross-referenced with these sources.
- <br>Note: To get rid of all source code in the generated output, make sure that also
- \ref cfg_verbatim_headers "VERBATIM_HEADERS" is set to \c NO.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_inline_sources
-<dt>\c INLINE_SOURCES <dd>
- \addindex INLINE_SOURCES
- Setting the \c INLINE_SOURCES tag to \c YES will include the body
- of functions, classes and enums directly into the documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_strip_code_comments
-<dt>\c STRIP_CODE_COMMENTS <dd>
- \addindex STRIP_CODE_COMMENTS
- Setting the \c STRIP_CODE_COMMENTS tag to \c YES will instruct
- doxygen to hide any special comment blocks from generated source code
- fragments. Normal C, C++ and Fortran comments will always remain visible.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_referenced_by_relation
-<dt>\c REFERENCED_BY_RELATION <dd>
- \addindex REFERENCED_BY_RELATION
- If the \c REFERENCED_BY_RELATION tag is set to \c YES
- then for each documented function all documented
- functions referencing it will be listed.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_references_relation
-<dt>\c REFERENCES_RELATION <dd>
- \addindex REFERENCES_RELATION
- If the \c REFERENCES_RELATION tag is set to \c YES
- then for each documented function all documented entities
- called/used by that function will be listed.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_references_link_source
-<dt>\c REFERENCES_LINK_SOURCE <dd>
- \addindex REFERENCES_LINK_SOURCE
- If the \c REFERENCES_LINK_SOURCE tag is set to \c YES
- and \ref cfg_source_browser "SOURCE_BROWSER" tag is set to \c YES then the hyperlinks from 
- functions in \ref cfg_references_relation "REFERENCES_RELATION" and
- \ref cfg_referenced_by_relation "REFERENCED_BY_RELATION" lists will 
- link to the source code.  Otherwise they will link to the documentation.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_source_tooltips
-<dt>\c SOURCE_TOOLTIPS <dd>
- \addindex SOURCE_TOOLTIPS
-If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the 
-source code will show a tooltip with additional information such as prototype, 
-brief description and links to the definition and documentation. Since this will 
-make the HTML file larger and loading of large files a bit slower, you can opt 
-to disable this feature.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_source_browser "SOURCE_BROWSER" is set to \c YES.
- \anchor cfg_use_htags
-<dt>\c USE_HTAGS <dd>
- \addindex USE_HTAGS
- If the \c USE_HTAGS tag is set to \c YES then the references to source code
- will point to the HTML generated by the \c htags(1) tool instead of doxygen
- built-in source browser. The \c htags tool is part of GNU's global source
- tagging system (see http://www.gnu.org/software/global/global.html). You 
- will need version 4.8.6 or higher. 
-<br>
- To use it do the following:
- -# Install the latest version of \c global
- -# Enable \ref cfg_source_browser "SOURCE_BROWSER" and \c USE_HTAGS in the config file
- -# Make sure the \ref cfg_input "INPUT" points to the root of the source tree
- -# Run \c doxygen as normal
-<br>
- Doxygen will invoke \c htags (and that will in turn invoke \c gtags), so these tools
- must be available from the command line (i.e. in the search path).
-<br>
- The result: instead of the source browser generated by doxygen, the links to
- source code will now point to the output of \c htags.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_source_browser "SOURCE_BROWSER" is set to \c YES.
- \anchor cfg_verbatim_headers
-<dt>\c VERBATIM_HEADERS <dd>
- \addindex VERBATIM_HEADERS
-  If the \c VERBATIM_HEADERS tag is set the \c YES then doxygen
-  will generate a verbatim copy of the header file for each class for
-  which an include is specified. Set to \c NO to disable this.
-  \sa Section \ref cmdclass "\\class".
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_clang_assisted_parsing
-<dt>\c CLANG_ASSISTED_PARSING <dd>
- \addindex CLANG_ASSISTED_PARSING
-  If the \c CLANG_ASSISTED_PARSING tag is set to \c YES then doxygen will use the 
-  <a href="http://clang.llvm.org/">clang parser</a> for more accurate parsing 
-  at the cost of reduced performance. This can be particularly helpful with 
-  template rich C++ code for which doxygen's built-in parser lacks the 
-  necessary type information.
-
-  @note The availability of this option depends on whether or not doxygen
-  was compiled with the `--with-libclang` option.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_clang_options
-<dt>\c CLANG_OPTIONS <dd>
- \addindex CLANG_OPTIONS
- If clang assisted parsing is enabled you can provide the compiler with command 
- line options that you would normally use when invoking the compiler. Note that 
- the include paths will already be set by doxygen for the files and directories 
- specified with \ref cfg_input "INPUT" and \ref cfg_include_path "INCLUDE_PATH".
-
-
-This tag requires that the tag \ref cfg_clang_assisted_parsing "CLANG_ASSISTED_PARSING" is set to \c YES.
-</dl>
-\section config_index Configuration options related to the alphabetical class index
- \anchor cfg_alphabetical_index
-<dl>
-
-<dt>\c ALPHABETICAL_INDEX <dd>
- \addindex ALPHABETICAL_INDEX
- If the \c ALPHABETICAL_INDEX tag is set to \c YES, an alphabetical index
- of all compounds will be generated. Enable this if the project contains 
- a lot of classes, structs, unions or interfaces.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_cols_in_alpha_index
-<dt>\c COLS_IN_ALPHA_INDEX <dd>
- \addindex COLS_IN_ALPHA_INDEX
- The \c COLS_IN_ALPHA_INDEX tag can be 
- used to specify the number of columns in which the alphabetical index list will be split.
-
-
- Minimum value: <code>1</code>, maximum value: <code>20</code>, default value: <code>5</code>.
-
-
-This tag requires that the tag \ref cfg_alphabetical_index "ALPHABETICAL_INDEX" is set to \c YES.
- \anchor cfg_ignore_prefix
-<dt>\c IGNORE_PREFIX <dd>
- \addindex IGNORE_PREFIX
- In case all classes in a project start with a common prefix, all classes will 
- be put under the same header in the alphabetical index.
- The \c IGNORE_PREFIX tag can be used to specify a prefix 
- (or a list of prefixes) that should be ignored while generating the index headers.
-
-
-This tag requires that the tag \ref cfg_alphabetical_index "ALPHABETICAL_INDEX" is set to \c YES.
-</dl>
-\section config_html Configuration options related to the HTML output
- \anchor cfg_generate_html
-<dl>
-
-<dt>\c GENERATE_HTML <dd>
- \addindex GENERATE_HTML
- If the \c GENERATE_HTML tag is set to \c YES, doxygen will
- generate HTML output
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_html_output
-<dt>\c HTML_OUTPUT <dd>
- \addindex HTML_OUTPUT
- The \c HTML_OUTPUT tag is used to specify where the HTML docs will be put.
- If a relative path is entered the value of \ref cfg_output_directory "OUTPUT_DIRECTORY" will be
- put in front of it.
-
-The default directory is: <code>html</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_file_extension
-<dt>\c HTML_FILE_EXTENSION <dd>
- \addindex HTML_FILE_EXTENSION
- The \c HTML_FILE_EXTENSION tag can be used to specify the file extension for 
- each generated HTML page (for example: <code>.htm, .php, .asp</code>).
-
-The default value is: <code>.html</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_header
-<dt>\c HTML_HEADER <dd>
- \addindex HTML_HEADER
- The \c HTML_HEADER tag can be used to specify a user-defined HTML 
- header file for each generated HTML page. 
- If the tag is left blank doxygen will generate a 
- standard header. 
-<br>
- To get valid HTML the header file that
- includes any scripts and style sheets that doxygen
- needs, which is dependent on the configuration options used (e.g. the
- setting \ref cfg_generate_treeview "GENERATE_TREEVIEW").
- It is highly recommended to start with a default header using
-\verbatim
-doxygen -w html new_header.html new_footer.html new_stylesheet.css YourConfigFile
-\endverbatim
- and then modify the file \c new_header.html.
-
- See also section \ref doxygen_usage for information on how to generate
- the default header that doxygen normally uses.
-
- @note The header is subject to change so you typically
- have to regenerate the default header when upgrading to a newer version of 
- doxygen. The following markers have a special meaning inside the header and footer:
- <dl>
- <dt><code>\$title</code><dd>will be replaced with the title of the page.
- <dt><code>\$datetime</code><dd>will be replaced with current the date and time.
- <dt><code>\$date</code><dd>will be replaced with the current date.
- <dt><code>\$year</code><dd>will be replaces with the current year.
- <dt><code>\$doxygenversion</code><dd>will be replaced with the version of doxygen
- <dt><code>\$projectname</code><dd>will be replaced with the name of 
-            the project (see \ref cfg_project_name "PROJECT_NAME")
- <dt><code>\$projectnumber</code><dd>will be replaced with the project number
-            (see \ref cfg_project_number "PROJECT_NUMBER")
- <dt><code>\$projectbrief</code><dd>will be replaced with the project brief
-            description (see \ref cfg_project_brief "PROJECT_BRIEF")
- <dt><code>\$projectlogo</code><dd>will be replaced with the project logo
-            (see \ref cfg_project_logo "PROJECT_LOGO")
- <dt><code>\$treeview</code><dd>will be replaced with links to 
-            the javascript and style sheets needed for the navigation tree 
-            (or an empty string when \ref cfg_generate_treeview "GENERATE_TREEVIEW" 
-            is disabled).
- <dt><code>\$search</code><dd>will be replaced with a links to 
-            the javascript and style sheets needed for the search engine 
-            (or an empty string when \ref cfg_searchengine "SEARCHENGINE" 
-            is disabled).
- <dt><code>\$mathjax</code><dd>will be replaced with a links to 
-            the javascript and style sheets needed for the MathJax feature 
-            (or an empty string when \ref cfg_use_mathjax "USE_MATHJAX" is disabled).
- <dt><code>\$relpath^</code><dd>
- If \ref cfg_create_subdirs "CREATE_SUBDIRS" is enabled, the command <code>\$relpath^</code> can be 
- used to produce a relative path to the root of the HTML output directory,
- e.g. use <code>\$relpath^doxygen.css</code>, to refer to the standard style sheet.
- </dl>
-
- To cope with differences in the layout of the header and footer that depend on 
- configuration settings, the header can also contain special blocks that 
- will be copied to the output or skipped depending on the configuration.
- Such blocks have the following form:
-\verbatim
- <!--BEGIN BLOCKNAME-->
- Some context copied when condition BLOCKNAME holds
- <!--END BLOCKNAME-->
- <!--BEGIN !BLOCKNAME-->
- Some context copied when condition BLOCKNAME does not hold
- <!--END !BLOCKNAME-->
-\endverbatim
- The following block names are supported:
- <dl>
- <dt><code>DISABLE_INDEX</code><dd>Content within this block is copied to the output
-     when the \ref cfg_disable_index "DISABLE_INDEX" option is enabled (so when the index is disabled).
- <dt><code>GENERATE_TREEVIEW</code><dd>Content within this block is copied to the output
-     when the \ref cfg_generate_treeview "GENERATE_TREEVIEW" option is enabled.
- <dt><code>SEARCHENGINE</code><dd>Content within this block is copied to the output
-     when the \ref cfg_searchengine "SEARCHENGINE" option is enabled.
- <dt><code>PROJECT_NAME</code><dd>Content within the block is copied to the output
-      when the \ref cfg_project_name "PROJECT_NAME" option is not empty.
- <dt><code>PROJECT_NUMBER</code><dd>Content within the block is copied to the output
-      when the \ref cfg_project_number "PROJECT_NUMBER" option is not empty.
- <dt><code>PROJECT_BRIEF</code><dd>Content within the block is copied to the output
-      when the \ref cfg_project_brief "PROJECT_BRIEF" option is not empty.
- <dt><code>PROJECT_LOGO</code><dd>Content within the block is copied to the output
-      when the \ref cfg_project_logo "PROJECT_LOGO" option is not empty.
- <dt><code>TITLEAREA</code><dd>Content within this block is copied to the output
-     when a title is visible at the top of each page. This is the case
-     if either \ref cfg_project_name "PROJECT_NAME", 
-     \ref cfg_project_brief "PROJECT_BRIEF", \ref cfg_project_logo "PROJECT_LOGO" 
-     is filled in or if both \ref cfg_disable_index "DISABLE_INDEX" and 
-     \ref cfg_searchengine "SEARCHENGINE" are enabled.
- </dl>
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_footer
-<dt>\c HTML_FOOTER <dd>
- \addindex HTML_FOOTER
- The \c HTML_FOOTER tag can be used to specify a user-defined HTML footer for 
- each generated HTML page. 
- If the tag is left blank doxygen will generate a standard footer.
-
- See \ref cfg_html_header "HTML_HEADER" for more information on 
- how to generate a default footer and what special commands can be 
- used inside the footer.
-
- See also section \ref doxygen_usage for information on how to generate
- the default footer that doxygen normally uses.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_stylesheet
-<dt>\c HTML_STYLESHEET <dd>
- \addindex HTML_STYLESHEET
- The \c HTML_STYLESHEET tag can be used to specify a user-defined cascading 
- style sheet that is used by each HTML page. It can be used to 
- fine-tune the look of the HTML output. If left blank doxygen 
- will generate a default style sheet. 
- 
- See also section \ref doxygen_usage for information on how to generate
- the style sheet that doxygen normally uses.
-
- \note It is recommended to use 
- \ref cfg_html_extra_stylesheet "HTML_EXTRA_STYLESHEET" instead of this tag,
- as it is more robust and 
- this tag (<code>HTML_STYLESHEET</code>) will in the future become obsolete.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_extra_stylesheet
-<dt>\c HTML_EXTRA_STYLESHEET <dd>
- \addindex HTML_EXTRA_STYLESHEET
- The \c HTML_EXTRA_STYLESHEET tag can be used to specify additional 
- user-defined cascading style sheets that are included after the standard 
- style sheets created by doxygen. Using this option one can overrule 
- certain style aspects. This is preferred over using \ref cfg_html_stylesheet "HTML_STYLESHEET" 
- since it does not replace the standard style sheet and is therefore more 
- robust against future updates. Doxygen will copy the style sheet files to 
- the output directory.
- \note The order of the extra style sheet files is of importance (e.g. the last
- style sheet in the list overrules the setting of the previous ones in the list). Here is an example style sheet that gives the contents area a fixed width:
-\verbatim
-body {
-        background-color: #CCC;
-        color: black;
-        margin: 0;
-}
-
-div.contents {
-        margin-bottom: 10px;
-        padding: 12px;
-        margin-left: auto;
-        margin-right: auto;
-        width: 960px;
-        background-color: white;
-        border-radius: 8px;
-}
-
-#titlearea {
-        background-color: white;
-}
-
-hr.footer {
-        display: none;
-}
-
-.footer {
-        background-color: #AAA;
-}
-\endverbatim
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_extra_files
-<dt>\c HTML_EXTRA_FILES <dd>
- \addindex HTML_EXTRA_FILES
- The \c HTML_EXTRA_FILES tag can be used to specify one or more extra images or 
- other source files which should be copied to the HTML output directory. Note 
- that these files will be copied to the base HTML output directory. Use the 
- <code>$relpath^</code> marker in the \ref cfg_html_header "HTML_HEADER" and/or
- \ref cfg_html_footer "HTML_FOOTER" files to load these 
- files. In the \ref cfg_html_stylesheet "HTML_STYLESHEET" file, use the file name only. Also note that 
- the files will be copied as-is; there are no commands or markers available.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_colorstyle_hue
-<dt>\c HTML_COLORSTYLE_HUE <dd>
- \addindex HTML_COLORSTYLE_HUE
- The \c HTML_COLORSTYLE_HUE tag controls the color of the HTML output. 
- Doxygen will adjust the colors in the style sheet and background images 
- according to this color. Hue is specified as an angle on a colorwheel, 
- see http://en.wikipedia.org/wiki/Hue for more information. 
- For instance the value 0 represents red, 60 is yellow, 120 is green, 
- 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-
-
- Minimum value: <code>0</code>, maximum value: <code>359</code>, default value: <code>220</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_colorstyle_sat
-<dt>\c HTML_COLORSTYLE_SAT <dd>
- \addindex HTML_COLORSTYLE_SAT
- The \c HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of 
- the colors in the HTML output. For a value of 0 the output will use 
- grayscales only. A value of 255 will produce the most vivid colors.
-
-
- Minimum value: <code>0</code>, maximum value: <code>255</code>, default value: <code>100</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_colorstyle_gamma
-<dt>\c HTML_COLORSTYLE_GAMMA <dd>
- \addindex HTML_COLORSTYLE_GAMMA
- The \c HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to 
- the luminance component of the colors in the HTML output. Values below 
- 100 gradually make the output lighter, whereas values above 100 make 
- the output darker. The value divided by 100 is the actual gamma applied, 
- so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, 
- and 100 does not change the gamma.
-
-
- Minimum value: <code>40</code>, maximum value: <code>240</code>, default value: <code>80</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_timestamp
-<dt>\c HTML_TIMESTAMP <dd>
- \addindex HTML_TIMESTAMP
- If the \c HTML_TIMESTAMP tag is set to \c YES then the footer of 
- each generated HTML page will contain the date and time when the page 
- was generated. Setting this to \c NO can help when comparing the output of 
- multiple runs.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_dynamic_sections
-<dt>\c HTML_DYNAMIC_SECTIONS <dd>
- \addindex HTML_DYNAMIC_SECTIONS
- If the \c HTML_DYNAMIC_SECTIONS tag is set to \c YES then the generated HTML
- documentation will contain sections that can be hidden and shown after the
- page has loaded.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_html_index_num_entries
-<dt>\c HTML_INDEX_NUM_ENTRIES <dd>
- \addindex HTML_INDEX_NUM_ENTRIES
- With \c HTML_INDEX_NUM_ENTRIES one can control the preferred number of 
- entries shown in the various tree structured indices initially; the user 
- can expand and collapse entries dynamically later on. Doxygen will expand 
- the tree to such a level that at most the specified number of entries are 
- visible (unless a fully collapsed tree already exceeds this amount). 
- So setting the number of entries 1 will produce a full collapsed tree by 
- default. 0 is a special value representing an infinite number of entries 
- and will result in a full expanded tree by default.
-
-
- Minimum value: <code>0</code>, maximum value: <code>9999</code>, default value: <code>100</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_generate_docset
-<dt>\c GENERATE_DOCSET <dd>
- \addindex GENERATE_DOCSET
- If the \c GENERATE_DOCSET tag is set to \c YES, additional index files
- will be generated that can be used as input for 
- <a href="http://developer.apple.com/tools/xcode/">Apple's Xcode 3
- integrated development environment</a>, introduced with OSX 10.5 (Leopard).
- To create a documentation set, doxygen will generate a Makefile in the
- HTML output directory. Running \c make will produce the docset in that
- directory and running <code>make install</code> will install the docset in 
- <code>~/Library/Developer/Shared/Documentation/DocSets</code> 
- so that Xcode will find it at startup. See
- http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for
- more information.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_docset_feedname
-<dt>\c DOCSET_FEEDNAME <dd>
- \addindex DOCSET_FEEDNAME
- This tag determines the name of the docset
- feed. A documentation feed provides an umbrella under which multiple
- documentation sets from a single provider (such as a company or product suite) 
- can be grouped.
-
-The default value is: <code>Doxygen generated docs</code>.
-
-
-This tag requires that the tag \ref cfg_generate_docset "GENERATE_DOCSET" is set to \c YES.
- \anchor cfg_docset_bundle_id
-<dt>\c DOCSET_BUNDLE_ID <dd>
- \addindex DOCSET_BUNDLE_ID
- This tag specifies a string that
- should uniquely identify the documentation set bundle. This should be a
- reverse domain-name style string, e.g. <code>com.mycompany.MyDocSet</code>. 
- Doxygen will append <code>.docset</code> to the name.
-
-The default value is: <code>org.doxygen.Project</code>.
-
-
-This tag requires that the tag \ref cfg_generate_docset "GENERATE_DOCSET" is set to \c YES.
- \anchor cfg_docset_publisher_id
-<dt>\c DOCSET_PUBLISHER_ID <dd>
- \addindex DOCSET_PUBLISHER_ID
-The \c DOCSET_PUBLISHER_ID
-tag specifies a string that should uniquely identify 
-the documentation publisher. This should be a reverse domain-name style 
-string, e.g. <code>com.mycompany.MyDocSet.documentation</code>.
-
-The default value is: <code>org.doxygen.Publisher</code>.
-
-
-This tag requires that the tag \ref cfg_generate_docset "GENERATE_DOCSET" is set to \c YES.
- \anchor cfg_docset_publisher_name
-<dt>\c DOCSET_PUBLISHER_NAME <dd>
- \addindex DOCSET_PUBLISHER_NAME
-The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-
-The default value is: <code>Publisher</code>.
-
-
-This tag requires that the tag \ref cfg_generate_docset "GENERATE_DOCSET" is set to \c YES.
- \anchor cfg_generate_htmlhelp
-<dt>\c GENERATE_HTMLHELP <dd>
- \addindex GENERATE_HTMLHELP
- If the \c GENERATE_HTMLHELP tag is set to \c YES then
- doxygen generates three additional HTML index files: 
- \c index.hhp, \c index.hhc, and \c index.hhk. The \c index.hhp is a 
- project file that can be read by 
- <a href="http://www.microsoft.com/en-us/download/details.aspx?id=21138">
- Microsoft's HTML Help Workshop</a>
- on Windows.
-<br>
- The HTML Help Workshop contains a compiler that can convert all HTML output 
- generated by doxygen into a single compiled HTML file (`.chm`). Compiled
- HTML files are now used as the Windows 98 help format, and will replace
- the old Windows help format (`.hlp`) on all Windows platforms in the future.
- Compressed HTML files also contain an index, a table of contents,
- and you can search for words in the documentation.
- The HTML workshop also contains a viewer for compressed HTML files.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_chm_file
-<dt>\c CHM_FILE <dd>
- \addindex CHM_FILE
-  The \c CHM_FILE tag can
-  be used to specify the file name of the resulting `.chm` file. You
-  can add a path in front of the file if the result should not be
-  written to the html output directory.
-
-
-This tag requires that the tag \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP" is set to \c YES.
- \anchor cfg_hhc_location
-<dt>\c HHC_LOCATION <dd>
- \addindex HHC_LOCATION
-  The \c HHC_LOCATION tag can
-  be used to specify the location (absolute path including file name) of 
-  the HTML help compiler (\c hhc.exe). If non-empty, doxygen will try to run
-  the HTML help compiler on the generated \c index.hhp.
-
-The file has to be specified with full path.
-
-
-This tag requires that the tag \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP" is set to \c YES.
- \anchor cfg_generate_chi
-<dt>\c GENERATE_CHI <dd>
- \addindex GENERATE_CHI
- The \c GENERATE_CHI flag
- controls if a separate `.chi` index file is generated (\c YES) or that
- it should be included in the master `.chm` file (\c NO).
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP" is set to \c YES.
- \anchor cfg_chm_index_encoding
-<dt>\c CHM_INDEX_ENCODING <dd>
- \addindex CHM_INDEX_ENCODING
- The \c CHM_INDEX_ENCODING 
- is used to encode HtmlHelp index (\c hhk), content (\c hhc) and project file 
- content.
-
-
-This tag requires that the tag \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP" is set to \c YES.
- \anchor cfg_binary_toc
-<dt>\c BINARY_TOC <dd>
- \addindex BINARY_TOC
- The \c BINARY_TOC flag
- controls whether a binary table of contents is generated (\c YES) or a
- normal table of contents (\c NO) in the `.chm` file. Furthermore it enables
- the `Previous` and `Next` buttons.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP" is set to \c YES.
- \anchor cfg_toc_expand
-<dt>\c TOC_EXPAND <dd>
- \addindex TOC_EXPAND
- The \c TOC_EXPAND flag can be set to \c YES to add extra items for 
- group members to the table of contents of the HTML help documentation 
- and to the tree view.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP" is set to \c YES.
- \anchor cfg_generate_qhp
-<dt>\c GENERATE_QHP <dd>
- \addindex GENERATE_QHP
- If the \c GENERATE_QHP tag is set to \c YES and both \ref cfg_qhp_namespace "QHP_NAMESPACE"
- and \ref cfg_qhp_virtual_folder "QHP_VIRTUAL_FOLDER" are set, an additional index file will
- be generated that can be used as input for Qt's qhelpgenerator
- to generate a Qt Compressed Help (`.qch`) of the generated HTML
- documentation.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_qch_file
-<dt>\c QCH_FILE <dd>
- \addindex QCH_FILE
- If the \ref cfg_qhg_location "QHG_LOCATION" tag is specified, the \c QCH_FILE tag can
- be used to specify the file name of the resulting `.qch` file.
- The path specified is relative to the HTML output folder.
-
-
-This tag requires that the tag \ref cfg_generate_qhp "GENERATE_QHP" is set to \c YES.
- \anchor cfg_qhp_namespace
-<dt>\c QHP_NAMESPACE <dd>
- \addindex QHP_NAMESPACE
- The \c QHP_NAMESPACE tag specifies the namespace to use when generating
- Qt Help Project output. For more information please see
- <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace">Qt Help Project / Namespace</a>.
-
-The default value is: <code>org.doxygen.Project</code>.
-
-
-This tag requires that the tag \ref cfg_generate_qhp "GENERATE_QHP" is set to \c YES.
- \anchor cfg_qhp_virtual_folder
-<dt>\c QHP_VIRTUAL_FOLDER <dd>
- \addindex QHP_VIRTUAL_FOLDER
- The \c QHP_VIRTUAL_FOLDER tag specifies the namespace to use when
- generating Qt Help Project output. For more information please see
- <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-folders">Qt Help Project / Virtual Folders</a>.
-
-The default value is: <code>doc</code>.
-
-
-This tag requires that the tag \ref cfg_generate_qhp "GENERATE_QHP" is set to \c YES.
- \anchor cfg_qhp_cust_filter_name
-<dt>\c QHP_CUST_FILTER_NAME <dd>
- \addindex QHP_CUST_FILTER_NAME
-  If the \c QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom filter to add. For more information please see
-  <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
-
-
-This tag requires that the tag \ref cfg_generate_qhp "GENERATE_QHP" is set to \c YES.
- \anchor cfg_qhp_cust_filter_attrs
-<dt>\c QHP_CUST_FILTER_ATTRS <dd>
- \addindex QHP_CUST_FILTER_ATTRS
-  The \c QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the custom filter to add.
-  For more information please see
-  <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
-
-
-This tag requires that the tag \ref cfg_generate_qhp "GENERATE_QHP" is set to \c YES.
- \anchor cfg_qhp_sect_filter_attrs
-<dt>\c QHP_SECT_FILTER_ATTRS <dd>
- \addindex QHP_SECT_FILTER_ATTRS
-  The \c QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's filter section matches.
-  <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
-
-
-This tag requires that the tag \ref cfg_generate_qhp "GENERATE_QHP" is set to \c YES.
- \anchor cfg_qhg_location
-<dt>\c QHG_LOCATION <dd>
- \addindex QHG_LOCATION
- The \c QHG_LOCATION tag can be used to specify the location of Qt's qhelpgenerator.
- If non-empty doxygen will try to run qhelpgenerator on the generated `.qhp` file.
-
-
-This tag requires that the tag \ref cfg_generate_qhp "GENERATE_QHP" is set to \c YES.
- \anchor cfg_generate_eclipsehelp
-<dt>\c GENERATE_ECLIPSEHELP <dd>
- \addindex GENERATE_ECLIPSEHELP
- If the \c GENERATE_ECLIPSEHELP tag is set to \c YES, additional index files  
- will be generated, together with the HTML files, they form an `Eclipse` help 
- plugin. 
-
- To install this plugin and make it available under the help contents 
- menu in `Eclipse`, the contents of the directory containing the HTML and XML 
- files needs to be copied into the plugins directory of eclipse. The name of 
- the directory within the plugins directory should be the same as 
- the \ref cfg_eclipse_doc_id "ECLIPSE_DOC_ID" value. 
-
- After copying `Eclipse` needs to be restarted before the help appears.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_eclipse_doc_id
-<dt>\c ECLIPSE_DOC_ID <dd>
- \addindex ECLIPSE_DOC_ID
- A unique identifier for the `Eclipse` help plugin. When installing the plugin 
- the directory name containing the HTML and XML files should also have 
- this name. Each documentation set should have its own identifier.
-
-The default value is: <code>org.doxygen.Project</code>.
-
-
-This tag requires that the tag \ref cfg_generate_eclipsehelp "GENERATE_ECLIPSEHELP" is set to \c YES.
- \anchor cfg_disable_index
-<dt>\c DISABLE_INDEX <dd>
- \addindex DISABLE_INDEX
- If you want full control over the layout of the generated HTML pages it
- might be necessary to disable the index and replace it with your own.
- The \c DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at
- top of each HTML page. A value of \c NO enables the index and the
- value \c YES disables it. Since the tabs in the index contain the same 
- information as the navigation tree, you can set this option to \c YES if 
- you also set \ref cfg_generate_treeview "GENERATE_TREEVIEW" to \c YES.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_generate_treeview
-<dt>\c GENERATE_TREEVIEW <dd>
- \addindex GENERATE_TREEVIEW
- The \c GENERATE_TREEVIEW tag is used to specify whether a tree-like index
- structure should be generated to display hierarchical information.
- If the tag value is set to \c YES, a side panel will be generated
- containing a tree-like index structure (just like the one that
- is generated for HTML Help). For this to work a browser that supports
- JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
- Windows users are probably better off using the HTML help feature.
-
- Via custom style sheets (see \ref cfg_html_extra_stylesheet "HTML_EXTRA_STYLESHEET")
- one can further \ref doxygen_finetune "fine-tune" the look of the index.
- As an example, the default style sheet generated by doxygen has an
- example that shows how to put an image at the root of the tree instead of
- the \ref cfg_project_name "PROJECT_NAME".
-
- Since the tree basically has the same information as the tab index, you could
- consider setting \ref cfg_disable_index "DISABLE_INDEX" to \c YES when 
- enabling this option.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_enum_values_per_line
-<dt>\c ENUM_VALUES_PER_LINE <dd>
- \addindex ENUM_VALUES_PER_LINE
- The \c ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
- that doxygen will group on one line in the generated HTML documentation. 
- <br>Note that a value of 0 will completely suppress the enum values from
- appearing in the overview section.
-
-
- Minimum value: <code>0</code>, maximum value: <code>20</code>, default value: <code>4</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_treeview_width
-<dt>\c TREEVIEW_WIDTH <dd>
- \addindex TREEVIEW_WIDTH
- If the treeview is enabled (see \ref cfg_generate_treeview "GENERATE_TREEVIEW") then this tag can be
- used to set the initial width (in pixels) of the frame in which the tree
- is shown.
-
-
- Minimum value: <code>0</code>, maximum value: <code>1500</code>, default value: <code>250</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_ext_links_in_window
-<dt>\c EXT_LINKS_IN_WINDOW <dd>
- \addindex EXT_LINKS_IN_WINDOW
- If the \c EXT_LINKS_IN_WINDOW option is set to \c YES, doxygen will open 
- links to external symbols imported via tag files in a separate window.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_formula_fontsize
-<dt>\c FORMULA_FONTSIZE <dd>
- \addindex FORMULA_FONTSIZE
- Use this tag to change the font size of \f$\mbox{\LaTeX}\f$ formulas included
- as images in the HTML documentation.
- When you change the font size after a successful doxygen run you need
- to manually remove any `form_*.png` images from the HTML 
- output directory to force them to be regenerated.
-
-
- Minimum value: <code>8</code>, maximum value: <code>50</code>, default value: <code>10</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_formula_transparent
-<dt>\c FORMULA_TRANSPARENT <dd>
- \addindex FORMULA_TRANSPARENT
- Use the \c FORMULA_TRANPARENT tag to determine whether or not the images 
- generated for formulas are transparent PNGs. Transparent PNGs are 
- not supported properly for IE 6.0, but are supported on all modern browsers. 
- <br>Note that when changing this option you need to delete any `form_*.png` files 
- in the HTML output directory before the changes have effect.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_use_mathjax
-<dt>\c USE_MATHJAX <dd>
- \addindex USE_MATHJAX
- Enable the \c USE_MATHJAX option to render \f$\mbox{\LaTeX}\f$ formulas using MathJax 
- (see http://www.mathjax.org) which uses client side Javascript for the 
- rendering instead of using pre-rendered bitmaps. Use this if you do not 
- have \f$\mbox{\LaTeX}\f$ installed or if you want to formulas look prettier in the HTML 
- output. When enabled you may also need to install MathJax separately and 
- configure the path to it using the \ref cfg_mathjax_relpath "MATHJAX_RELPATH" 
- option.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_mathjax_format
-<dt>\c MATHJAX_FORMAT <dd>
- \addindex MATHJAX_FORMAT
- When MathJax is enabled you can set the default output format to be used for 
- the MathJax output.
- See <a href="http://docs.mathjax.org/en/latest/output.html">the MathJax site</a>
- for more details.
-
-Possible values are: 
-<code>HTML-CSS</code> (which is slower, but has the best compatibility), 
-<code>NativeMML</code> (i.e. MathML) and 
-<code>SVG</code>.
-
-
-The default value is: <code>HTML-CSS</code>.
-
-
-This tag requires that the tag \ref cfg_use_mathjax "USE_MATHJAX" is set to \c YES.
- \anchor cfg_mathjax_relpath
-<dt>\c MATHJAX_RELPATH <dd>
- \addindex MATHJAX_RELPATH
- When MathJax is enabled you need to specify the location relative to the 
- HTML output directory using the \c MATHJAX_RELPATH option. The destination 
- directory should contain the `MathJax.js` script. For instance, if the \c mathjax 
- directory is located at the same level as the HTML output directory, then 
- \c MATHJAX_RELPATH should be <code>../mathjax</code>. The default value points to 
- the MathJax Content Delivery Network so you can quickly see the result without 
- installing MathJax.  However, it is strongly recommended to install a local 
- copy of MathJax from http://www.mathjax.org before deployment.
-
-The default value is: <code>http://cdn.mathjax.org/mathjax/latest</code>.
-
-
-This tag requires that the tag \ref cfg_use_mathjax "USE_MATHJAX" is set to \c YES.
- \anchor cfg_mathjax_extensions
-<dt>\c MATHJAX_EXTENSIONS <dd>
- \addindex MATHJAX_EXTENSIONS
- The \c MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax extension 
- names that should be enabled during MathJax rendering. For example
-\verbatim
-MATHJAX_EXTENSIONS     = TeX/AMSmath TeX/AMSsymbols
-\endverbatim
-
-
-This tag requires that the tag \ref cfg_use_mathjax "USE_MATHJAX" is set to \c YES.
- \anchor cfg_mathjax_codefile
-<dt>\c MATHJAX_CODEFILE <dd>
- \addindex MATHJAX_CODEFILE
- The \c MATHJAX_CODEFILE tag can be used to specify a file with javascript 
- pieces of code that will be used on startup of the MathJax code. 
- See 
-<a href="http://docs.mathjax.org/en/latest/output.html">the MathJax site</a>
- for more details. As an example to disable the "Math Renderer" menu item in the "Math
- Settings" menu of MathJax:
-\verbatim
-MATHJAX_CODEFILE = disableRenderer.js
-\endverbatim
-  with in the file <code>disableRenderer.js</code>:
-\verbatim
-  MathJax.Hub.Config({
-   menuSettings: {
-    showRenderer: false,
-   } 
-  });
-\endverbatim
-
-
-This tag requires that the tag \ref cfg_use_mathjax "USE_MATHJAX" is set to \c YES.
- \anchor cfg_searchengine
-<dt>\c SEARCHENGINE <dd>
- \addindex SEARCHENGINE
- When the \c SEARCHENGINE tag is enabled doxygen will generate a search box
- for the HTML output. The underlying search engine uses javascript 
- and DHTML and should work on any modern browser. Note that when using
- HTML help (\ref cfg_generate_htmlhelp "GENERATE_HTMLHELP"), 
- Qt help (\ref cfg_generate_qhp "GENERATE_QHP"), or docsets
- (\ref cfg_generate_docset "GENERATE_DOCSET") there is already a search 
- function so this one should typically be disabled. For large projects 
- the javascript based search engine can be slow, then enabling 
- \ref cfg_server_based_search "SERVER_BASED_SEARCH" may provide a 
- better solution. 
-
- It is possible to search using the keyboard;
- to jump to the search box use <code>\<access key\> + S</code> (what the <code>\<access key\></code> is
- depends on the OS and browser, but it is typically <code>\<CTRL\></code>, <code>\<ALT\></code>/<code>\<option\></code>, or both).
- Inside the search box use the <code>\<cursor down key\></code> to jump into the search 
- results window, the results can be navigated using the <code>\<cursor keys\></code>.
- Press <code>\<Enter\></code> to select an item or <code>\<escape\></code> to cancel the search. The
- filter options can be selected when the cursor is inside the search box
- by pressing <code>\<Shift\>+\<cursor down\></code>. Also here use the <code>\<cursor keys\></code> to 
- select a filter and <code>\<Enter\></code> or <code>\<escape\></code> to activate or cancel the filter option.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_generate_html "GENERATE_HTML" is set to \c YES.
- \anchor cfg_server_based_search
-<dt>\c SERVER_BASED_SEARCH <dd>
- \addindex SERVER_BASED_SEARCH
-When the \c SERVER_BASED_SEARCH tag is enabled the search engine will be 
-implemented using a web server instead of a web client using Javascript. 
-
-There are two flavors of web server based searching depending on the 
-\ref cfg_external_search "EXTERNAL_SEARCH" setting. When disabled, 
-doxygen will generate a PHP script for searching and an index file used 
-by the script. When \ref cfg_external_search "EXTERNAL_SEARCH" is 
-enabled the indexing and searching needs to be provided by external tools. 
-See the section \ref extsearch for details.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_searchengine "SEARCHENGINE" is set to \c YES.
- \anchor cfg_external_search
-<dt>\c EXTERNAL_SEARCH <dd>
- \addindex EXTERNAL_SEARCH
- When \c EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP 
- script for searching. Instead the search results are written to an XML file 
- which needs to be processed by an external indexer. Doxygen will invoke an 
- external search engine pointed to by the 
- \ref cfg_searchengine_url "SEARCHENGINE_URL" option to obtain 
- the search results.
- <br>Doxygen ships with an example indexer (\c doxyindexer) and 
- search engine (<code>doxysearch.cgi</code>) which are based on the open source search 
- engine library <a href="http://xapian.org/">Xapian</a>.
- <br>See the section \ref extsearch for details.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_searchengine "SEARCHENGINE" is set to \c YES.
- \anchor cfg_searchengine_url
-<dt>\c SEARCHENGINE_URL <dd>
- \addindex SEARCHENGINE_URL
- The \c SEARCHENGINE_URL should point to a search engine hosted by a web server 
- which will return the search results when \ref cfg_external_search "EXTERNAL_SEARCH" 
- is enabled.
- <br>Doxygen ships with an example indexer (\c doxyindexer) and 
- search engine (<code>doxysearch.cgi</code>) which are based on the open source search 
- engine library <a href="http://xapian.org/">Xapian</a>.
- See the section \ref extsearch for details.
-
-
-This tag requires that the tag \ref cfg_searchengine "SEARCHENGINE" is set to \c YES.
- \anchor cfg_searchdata_file
-<dt>\c SEARCHDATA_FILE <dd>
- \addindex SEARCHDATA_FILE
-When \ref cfg_server_based_search "SERVER_BASED_SEARCH" and 
-\ref cfg_external_search "EXTERNAL_SEARCH" are both enabled the unindexed 
-search data is written to a file for indexing by an external tool. With the 
-\c SEARCHDATA_FILE tag the name of this file can be specified.
-
-The default file is: <code>searchdata.xml</code>.
-
-
-This tag requires that the tag \ref cfg_searchengine "SEARCHENGINE" is set to \c YES.
- \anchor cfg_external_search_id
-<dt>\c EXTERNAL_SEARCH_ID <dd>
- \addindex EXTERNAL_SEARCH_ID
-When \ref cfg_server_based_search "SERVER_BASED_SEARCH" and 
-\ref cfg_external_search "EXTERNAL_SEARCH" are both enabled the 
-\c EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is 
-useful in combination with \ref cfg_extra_search_mappings "EXTRA_SEARCH_MAPPINGS" 
-to search through multiple projects and redirect the results back to the right project.
-
-
-This tag requires that the tag \ref cfg_searchengine "SEARCHENGINE" is set to \c YES.
- \anchor cfg_extra_search_mappings
-<dt>\c EXTRA_SEARCH_MAPPINGS <dd>
- \addindex EXTRA_SEARCH_MAPPINGS
- The \c EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen 
- projects other than the one defined by this configuration file, but that are 
- all added to the same external search index. Each project needs to have a 
- unique id set via \ref cfg_external_search_id "EXTERNAL_SEARCH_ID". 
- The search mapping then maps the id of to a relative location where the 
- documentation can be found. 
-
- The format is: 
-\verbatim
-EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... 
-\endverbatim
-
-
-This tag requires that the tag \ref cfg_searchengine "SEARCHENGINE" is set to \c YES.
-</dl>
-\section config_latex Configuration options related to the LaTeX output
- \anchor cfg_generate_latex
-<dl>
-
-<dt>\c GENERATE_LATEX <dd>
- \addindex GENERATE_LATEX
- If the \c GENERATE_LATEX tag is set to \c YES, doxygen will
- generate \f$\mbox{\LaTeX}\f$ output.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_latex_output
-<dt>\c LATEX_OUTPUT <dd>
- \addindex LATEX_OUTPUT
- The \c LATEX_OUTPUT tag is used to specify where the \f$\mbox{\LaTeX}\f$ 
- docs will be put.
- If a relative path is entered the value of \ref cfg_output_directory "OUTPUT_DIRECTORY" will be
- put in front of it.
-
-The default directory is: <code>latex</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_cmd_name
-<dt>\c LATEX_CMD_NAME <dd>
- \addindex LATEX_CMD_NAME
- The \c LATEX_CMD_NAME tag can be used to specify the \f$\mbox{\LaTeX}\f$ command name to be invoked. 
- <br>Note that when enabling \ref cfg_use_pdflatex "USE_PDFLATEX" this option is only used for
- generating bitmaps for formulas in the HTML output, but not in the
- \c Makefile that is written to the output directory.
-
-The default file is: <code>latex</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_makeindex_cmd_name
-<dt>\c MAKEINDEX_CMD_NAME <dd>
- \addindex MAKEINDEX_CMD_NAME
- The \c MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
- generate index for \f$\mbox{\LaTeX}\f$.
-
-The default file is: <code>makeindex</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_compact_latex
-<dt>\c COMPACT_LATEX <dd>
- \addindex COMPACT_LATEX
- If the \c COMPACT_LATEX tag is set to \c YES, doxygen generates more compact
- \f$\mbox{\LaTeX}\f$ documents. This may be useful for small projects and may help to
- save some trees in general.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_paper_type
-<dt>\c PAPER_TYPE <dd>
- \addindex PAPER_TYPE
- The \c PAPER_TYPE tag can be used to set the paper type that is used
- by the printer.
-
-Possible values are: 
-<code>a4</code> (210 x 297 mm), 
-<code>letter</code> (8.5 x 11 inches), 
-<code>legal</code> (8.5 x 14 inches) and 
-<code>executive</code> (7.25 x 10.5 inches).
-
-
-The default value is: <code>a4</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_extra_packages
-<dt>\c EXTRA_PACKAGES <dd>
- \addindex EXTRA_PACKAGES
- The \c EXTRA_PACKAGES tag can be used to specify one or more \f$\mbox{\LaTeX}\f$ 
- package names that should be included in the \f$\mbox{\LaTeX}\f$ output.
- To get the times font for instance you can specify 
-\verbatim
-EXTRA_PACKAGES=times
-\endverbatim
- If left blank no extra packages will be included.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_header
-<dt>\c LATEX_HEADER <dd>
- \addindex LATEX_HEADER
- The \c LATEX_HEADER tag can be used to specify a personal \f$\mbox{\LaTeX}\f$ 
- header for the generated \f$\mbox{\LaTeX}\f$ document. 
- The header should contain everything until the first chapter. 
-
- If it is left blank doxygen will generate a 
- standard header. See section \ref doxygen_usage for information on how to 
- let doxygen write the default header to a separate file.
- 
- <br>Note: Only use a user-defined header if you know what you are doing!
-
- The following commands have a special meaning inside the header:
- <code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>,
- <code>\$doxygenversion</code>, <code>\$projectname</code>, 
- <code>\$projectnumber</code>, <code>\$projectbrief</code>, 
- <code>\$projectlogo</code>. 
- Doxygen will replace <code>\$title</code> with the empty string, for the replacement values of the
- other commands the user is referred to \ref cfg_html_header "HTML_HEADER".
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_footer
-<dt>\c LATEX_FOOTER <dd>
- \addindex LATEX_FOOTER
- The \c LATEX_FOOTER tag can be used to specify a personal \f$\mbox{\LaTeX}\f$ footer for 
- the generated \f$\mbox{\LaTeX}\f$ document. The footer should contain everything after 
- the last chapter. If it is left blank doxygen will generate a 
- standard footer.
- See \ref cfg_latex_header "LATEX_HEADER" for more information on 
- how to generate a default footer and what special commands can be 
- used inside the footer.
- 
- <br>Note: Only use a user-defined footer if you know what you are doing!
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_extra_stylesheet
-<dt>\c LATEX_EXTRA_STYLESHEET <dd>
- \addindex LATEX_EXTRA_STYLESHEET
- The \c LATEX_EXTRA_STYLESHEET tag can be used to specify additional 
- user-defined \f$\mbox{\LaTeX}\f$ style sheets that are included after the standard 
- style sheets created by doxygen. Using this option one can overrule 
- certain style aspects. Doxygen will copy the style sheet files to 
- the output directory.
- \note The order of the extra style sheet files is of importance (e.g. the last
- style sheet in the list overrules the setting of the previous ones in the list).
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_extra_files
-<dt>\c LATEX_EXTRA_FILES <dd>
- \addindex LATEX_EXTRA_FILES
- The \c LATEX_EXTRA_FILES tag can be used to specify one or more extra images
- or other source files which should be copied to the \ref cfg_latex_output "LATEX_OUTPUT"
- output directory.
- Note that the files will be copied as-is; there are no commands or markers
- available.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_pdf_hyperlinks
-<dt>\c PDF_HYPERLINKS <dd>
- \addindex PDF_HYPERLINKS
- If the \c PDF_HYPERLINKS tag is set to \c YES, the \f$\mbox{\LaTeX}\f$ that 
- is generated is prepared for conversion to PDF (using \c ps2pdf or \c pdflatex). 
- The PDF file will
- contain links (just like the HTML output) instead of page references.
- This makes the output suitable for online browsing using a PDF viewer.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_use_pdflatex
-<dt>\c USE_PDFLATEX <dd>
- \addindex USE_PDFLATEX
- If the \c USE_PDFLATEX tag is set to \c YES, doxygen will use
- \c pdflatex to generate the PDF file directly from the \f$\mbox{\LaTeX}\f$
- files.  Set this option to \c YES, to get a higher quality PDF documentation.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_batchmode
-<dt>\c LATEX_BATCHMODE <dd>
- \addindex LATEX_BATCHMODE
- If the \c LATEX_BATCHMODE tag is set to \c YES, doxygen will add the \c \\batchmode
- command to the generated \f$\mbox{\LaTeX}\f$ files. This will 
- instruct \f$\mbox{\LaTeX}\f$ to keep running if errors occur, instead of 
- asking the user for help. This option is also used when generating formulas 
- in HTML.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_hide_indices
-<dt>\c LATEX_HIDE_INDICES <dd>
- \addindex LATEX_HIDE_INDICES
- If the \c LATEX_HIDE_INDICES tag is set to \c YES then doxygen will not
- include the index chapters (such as File Index, Compound Index, etc.) 
- in the output.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_source_code
-<dt>\c LATEX_SOURCE_CODE <dd>
- \addindex LATEX_SOURCE_CODE
- If the \c LATEX_SOURCE_CODE tag is set to \c YES then doxygen will include 
- source code with syntax highlighting in the \f$\mbox{\LaTeX}\f$ output. 
- <br>Note that which sources are shown also depends on other settings 
- such as \ref cfg_source_browser "SOURCE_BROWSER".
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
- \anchor cfg_latex_bib_style
-<dt>\c LATEX_BIB_STYLE <dd>
- \addindex LATEX_BIB_STYLE
- The \c LATEX_BIB_STYLE tag can be used to specify the style to use for the 
- bibliography, e.g. \c plainnat, or \c ieeetr. 
- See http://en.wikipedia.org/wiki/BibTeX and \ref cmdcite "\\cite"
- for more info.
-
-The default value is: <code>plain</code>.
-
-
-This tag requires that the tag \ref cfg_generate_latex "GENERATE_LATEX" is set to \c YES.
-</dl>
-\section config_rtf Configuration options related to the RTF output
- \anchor cfg_generate_rtf
-<dl>
-
-<dt>\c GENERATE_RTF <dd>
- \addindex GENERATE_RTF
- If the \c GENERATE_RTF tag is set to \c YES, doxygen will generate RTF output.
- The RTF output is optimized for Word 97 and may not look too pretty with
- other RTF readers/editors.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_rtf_output
-<dt>\c RTF_OUTPUT <dd>
- \addindex RTF_OUTPUT
- The \c RTF_OUTPUT tag is used to specify where the RTF docs will be put.
- If a relative path is entered the value of \ref cfg_output_directory "OUTPUT_DIRECTORY" will be
- put in front of it.
-
-The default directory is: <code>rtf</code>.
-
-
-This tag requires that the tag \ref cfg_generate_rtf "GENERATE_RTF" is set to \c YES.
- \anchor cfg_compact_rtf
-<dt>\c COMPACT_RTF <dd>
- \addindex COMPACT_RTF
- If the \c COMPACT_RTF tag is set to \c YES, doxygen generates more compact
- RTF documents. This may be useful for small projects and may help to
- save some trees in general.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_rtf "GENERATE_RTF" is set to \c YES.
- \anchor cfg_rtf_hyperlinks
-<dt>\c RTF_HYPERLINKS <dd>
- \addindex RTF_HYPERLINKS
- If the \c RTF_HYPERLINKS tag is set to \c YES, the RTF that is generated
- will contain hyperlink fields. The RTF file will
- contain links (just like the HTML output) instead of page references.
- This makes the output suitable for online browsing using Word or some other
- Word compatible readers that support those fields.
-
- <br>Note: WordPad (write) and others do not support links.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_rtf "GENERATE_RTF" is set to \c YES.
- \anchor cfg_rtf_stylesheet_file
-<dt>\c RTF_STYLESHEET_FILE <dd>
- \addindex RTF_STYLESHEET_FILE
- Load stylesheet definitions from file. Syntax is similar to doxygen's
- config file, i.e. a series of assignments. You only have to provide
- replacements, missing definitions are set to their default value.
-<br>
- See also section \ref doxygen_usage for information on how to generate
- the default style sheet that doxygen normally uses.
-
-
-This tag requires that the tag \ref cfg_generate_rtf "GENERATE_RTF" is set to \c YES.
- \anchor cfg_rtf_extensions_file
-<dt>\c RTF_EXTENSIONS_FILE <dd>
- \addindex RTF_EXTENSIONS_FILE
- Set optional variables used in the generation of an RTF document.
- Syntax is similar to doxygen's config file. 
- A template extensions file can be generated using 
- <code>doxygen -e rtf extensionFile</code>.
-
-
-This tag requires that the tag \ref cfg_generate_rtf "GENERATE_RTF" is set to \c YES.
- \anchor cfg_rtf_source_code
-<dt>\c RTF_SOURCE_CODE <dd>
- \addindex RTF_SOURCE_CODE
- If the \c RTF_SOURCE_CODE tag is set to \c YES then doxygen will include
- source code with syntax highlighting in the RTF output.
- <br>Note that which sources are shown also depends on other settings
- such as \ref cfg_source_browser "SOURCE_BROWSER".
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_rtf "GENERATE_RTF" is set to \c YES.
-</dl>
-\section config_man Configuration options related to the man page output
- \anchor cfg_generate_man
-<dl>
-
-<dt>\c GENERATE_MAN <dd>
- \addindex GENERATE_MAN
- If the \c GENERATE_MAN tag is set to \c YES, doxygen will
- generate man pages for classes and files.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_man_output
-<dt>\c MAN_OUTPUT <dd>
- \addindex MAN_OUTPUT
- The \c MAN_OUTPUT tag is used to specify where the man pages will be put.
- If a relative path is entered the value of \ref cfg_output_directory "OUTPUT_DIRECTORY" will be
- put in front of it. 
- A directory \c man3 will be created inside the directory specified by 
- \c MAN_OUTPUT.
-
-The default directory is: <code>man</code>.
-
-
-This tag requires that the tag \ref cfg_generate_man "GENERATE_MAN" is set to \c YES.
- \anchor cfg_man_extension
-<dt>\c MAN_EXTENSION <dd>
- \addindex MAN_EXTENSION
- The \c MAN_EXTENSION tag determines the extension that is added to
- the generated man pages. In case
- the manual section does not start with a number, the number 3 is prepended.
- The dot (.) at the beginning of the \c MAN_EXTENSION tag is optional.
-
-The default value is: <code>.3</code>.
-
-
-This tag requires that the tag \ref cfg_generate_man "GENERATE_MAN" is set to \c YES.
- \anchor cfg_man_subdir
-<dt>\c MAN_SUBDIR <dd>
- \addindex MAN_SUBDIR
- The \c MAN_SUBDIR tag determines the name of the directory created within \c MAN_OUTPUT
- in which the man pages are placed. If defaults to man followed by \c MAN_EXTENSION
- with the initial . removed.
-
-
-This tag requires that the tag \ref cfg_generate_man "GENERATE_MAN" is set to \c YES.
- \anchor cfg_man_links
-<dt>\c MAN_LINKS <dd>
- \addindex MAN_LINKS
- If the \c MAN_LINKS tag is set to \c YES and doxygen generates man output, 
- then it will generate one additional man file for each entity documented in 
- the real man page(s). These additional files only source the real man page, 
- but without them the \c man command would be unable to find the correct page.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_man "GENERATE_MAN" is set to \c YES.
-</dl>
-\section config_xml Configuration options related to the XML output
- \anchor cfg_generate_xml
-<dl>
-
-<dt>\c GENERATE_XML <dd>
- \addindex GENERATE_XML
- If the \c GENERATE_XML tag is set to \c YES, doxygen will
- generate an XML file that captures the structure of
- the code including all documentation.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_xml_output
-<dt>\c XML_OUTPUT <dd>
- \addindex XML_OUTPUT
- The \c XML_OUTPUT tag is used to specify where the XML pages will be put. 
- If a relative path is entered the value of \ref cfg_output_directory "OUTPUT_DIRECTORY" will be 
- put in front of it.
-
-The default directory is: <code>xml</code>.
-
-
-This tag requires that the tag \ref cfg_generate_xml "GENERATE_XML" is set to \c YES.
- \anchor cfg_xml_programlisting
-<dt>\c XML_PROGRAMLISTING <dd>
- \addindex XML_PROGRAMLISTING
- If the \c XML_PROGRAMLISTING tag is set to \c YES, doxygen will
- dump the program listings (including syntax highlighting
- and cross-referencing information) to the XML output. Note that
- enabling this will significantly increase the size of the XML output.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_generate_xml "GENERATE_XML" is set to \c YES.
-</dl>
-\section config_docbook Configuration options related to the DOCBOOK output
- \anchor cfg_generate_docbook
-<dl>
-
-<dt>\c GENERATE_DOCBOOK <dd>
- \addindex GENERATE_DOCBOOK
-If the \c GENERATE_DOCBOOK tag is set to \c YES, doxygen will generate Docbook files 
-that can be used to generate PDF.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_docbook_output
-<dt>\c DOCBOOK_OUTPUT <dd>
- \addindex DOCBOOK_OUTPUT
-The \c DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. 
-If a relative path is entered the value of \ref cfg_output_directory "OUTPUT_DIRECTORY" will be put in 
-front of it.
-
-The default directory is: <code>docbook</code>.
-
-
-This tag requires that the tag \ref cfg_generate_docbook "GENERATE_DOCBOOK" is set to \c YES.
- \anchor cfg_docbook_programlisting
-<dt>\c DOCBOOK_PROGRAMLISTING <dd>
- \addindex DOCBOOK_PROGRAMLISTING
- If the \c DOCBOOK_PROGRAMLISTING tag is set to \c YES, doxygen will
- include the program listings (including syntax highlighting
- and cross-referencing information) to the DOCBOOK output. Note that
- enabling this will significantly increase the size of the DOCBOOK output.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_docbook "GENERATE_DOCBOOK" is set to \c YES.
-</dl>
-\section config_autogen Configuration options for the AutoGen Definitions output
- \anchor cfg_generate_autogen_def
-<dl>
-
-<dt>\c GENERATE_AUTOGEN_DEF <dd>
- \addindex GENERATE_AUTOGEN_DEF
- If the \c GENERATE_AUTOGEN_DEF tag is set to \c YES, doxygen will
- generate an AutoGen Definitions (see http://autogen.sf.net) file
- that captures the structure of the code including all
- documentation. Note that this feature is still experimental 
- and incomplete at the moment.
-
-
-The default value is: <code>NO</code>.
-
-</dl>
-\section config_perlmod Configuration options related to the Perl module output
- \anchor cfg_generate_perlmod
-<dl>
-
-<dt>\c GENERATE_PERLMOD <dd>
- \addindex GENERATE_PERLMOD
- If the \c GENERATE_PERLMOD tag is set to \c YES, doxygen will
- generate a Perl module file that captures the structure of
- the code including all documentation.
- <br>Note that this 
- feature is still experimental and incomplete at the
- moment.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_perlmod_latex
-<dt>\c PERLMOD_LATEX <dd>
- \addindex PERLMOD_LATEX
- If the \c PERLMOD_LATEX tag is set to \c YES, doxygen will generate 
- the necessary \c Makefile rules, \c Perl scripts and \f$\mbox{\LaTeX}\f$ code to be able 
- to generate PDF and DVI output from the Perl module output.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_generate_perlmod "GENERATE_PERLMOD" is set to \c YES.
- \anchor cfg_perlmod_pretty
-<dt>\c PERLMOD_PRETTY <dd>
- \addindex PERLMOD_PRETTY
- If the \c PERLMOD_PRETTY tag is set to \c YES, the Perl module output will be 
- nicely formatted so it can be parsed by a human reader.  This is useful 
- if you want to understand what is going on. On the other hand, if this
- tag is set to \c NO, the size of the Perl module output will be much smaller
- and Perl will parse it just the same.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_generate_perlmod "GENERATE_PERLMOD" is set to \c YES.
- \anchor cfg_perlmod_makevar_prefix
-<dt>\c PERLMOD_MAKEVAR_PREFIX <dd>
- \addindex PERLMOD_MAKEVAR_PREFIX
- The names of the make variables in the generated `doxyrules.make` file 
- are prefixed with the string contained in \c PERLMOD_MAKEVAR_PREFIX. 
- This is useful so different `doxyrules.make` files included by the same
- `Makefile` don't overwrite each other's variables.
-
-
-This tag requires that the tag \ref cfg_generate_perlmod "GENERATE_PERLMOD" is set to \c YES.
-</dl>
-\section config_preprocessor Configuration options related to the preprocessor
- \anchor cfg_enable_preprocessing
-<dl>
-
-<dt>\c ENABLE_PREPROCESSING <dd>
- \addindex ENABLE_PREPROCESSING
- If the \c ENABLE_PREPROCESSING tag is set to \c YES, doxygen will
- evaluate all C-preprocessor directives found in the sources and include
- files.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_macro_expansion
-<dt>\c MACRO_EXPANSION <dd>
- \addindex MACRO_EXPANSION
- If the \c MACRO_EXPANSION tag is set to \c YES, doxygen will expand all macro
- names in the source code. If set to \c NO, only conditional 
- compilation will be performed. Macro expansion can be done in a controlled
- way by setting \ref cfg_expand_only_predef "EXPAND_ONLY_PREDEF" to \c YES.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to \c YES.
- \anchor cfg_expand_only_predef
-<dt>\c EXPAND_ONLY_PREDEF <dd>
- \addindex EXPAND_ONLY_PREDEF
- If the \c EXPAND_ONLY_PREDEF and \ref cfg_macro_expansion "MACRO_EXPANSION" tags are both set to \c YES
- then the macro expansion is limited to the macros specified with the
- \ref cfg_predefined "PREDEFINED" and \ref cfg_expand_as_defined "EXPAND_AS_DEFINED" tags.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to \c YES.
- \anchor cfg_search_includes
-<dt>\c SEARCH_INCLUDES <dd>
- \addindex SEARCH_INCLUDES
- If the \c SEARCH_INCLUDES tag is set to \c YES, the include files
- in the \ref cfg_include_path "INCLUDE_PATH" will be searched if a \c \#include is found.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to \c YES.
- \anchor cfg_include_path
-<dt>\c INCLUDE_PATH <dd>
- \addindex INCLUDE_PATH
- The \c INCLUDE_PATH tag can be used to specify one or more directories that
- contain include files that are not input files but should be processed by
- the preprocessor.
-
-
-This tag requires that the tag \ref cfg_search_includes "SEARCH_INCLUDES" is set to \c YES.
- \anchor cfg_include_file_patterns
-<dt>\c INCLUDE_FILE_PATTERNS <dd>
- \addindex INCLUDE_FILE_PATTERNS
- You can use the \c INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
- patterns (like `*.h` and `*.hpp`) to filter out the header-files in the 
- directories. If left blank, the patterns specified with \ref cfg_file_patterns "FILE_PATTERNS" will 
- be used.
-
-
-This tag requires that the tag \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to \c YES.
- \anchor cfg_predefined
-<dt>\c PREDEFINED <dd>
- \addindex PREDEFINED
- The \c PREDEFINED tag can be used to specify one or more macro names that
- are defined before the preprocessor is started (similar to the `-D` option of
- e.g. \c gcc). The argument of the tag is a list of macros of the form:
- <code>name</code> or <code>name=definition</code> (no spaces). 
- If the definition and the \c "=" are omitted,  \c "=1" is assumed. To prevent
- a macro definition from being undefined via \c \#undef or recursively expanded
- use the <code>:=</code> operator instead of the \c = operator.
-
-
-This tag requires that the tag \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to \c YES.
- \anchor cfg_expand_as_defined
-<dt>\c EXPAND_AS_DEFINED <dd>
- \addindex EXPAND_AS_DEFINED
- If the \ref cfg_macro_expansion "MACRO_EXPANSION" and
- \ref cfg_expand_only_predef "EXPAND_ONLY_PREDEF" tags are set to \c YES then
- this tag can be used to specify a list of macro names that should be expanded.
- The macro definition that is found in the sources will be used.
- Use the \ref cfg_predefined "PREDEFINED" tag if you want to use a different macro definition that
- overrules the definition found in the source code.
-
-
-This tag requires that the tag \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to \c YES.
- \anchor cfg_skip_function_macros
-<dt>\c SKIP_FUNCTION_MACROS <dd>
- \addindex SKIP_FUNCTION_MACROS
- If the \c SKIP_FUNCTION_MACROS tag is set to \c YES then 
- doxygen's preprocessor will remove all references to function-like macros that are alone 
- on a line, have an all uppercase name, and do not end with a semicolon. 
- Such function macros are typically 
- used for boiler-plate code, and will confuse the parser if not removed.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" is set to \c YES.
-</dl>
-\section config_external Configuration options related to external references
- \anchor cfg_tagfiles
-<dl>
-
-<dt>\c TAGFILES <dd>
- \addindex TAGFILES
- The \c TAGFILES tag can be used to specify one or more tag files. 
-
-For each 
-tag file the location of the external documentation should be added. The 
-format of a tag file without this location is as follows: 
-\verbatim
-  TAGFILES = file1 file2 ... 
-\endverbatim
-Adding location for the tag files is done as follows: 
-\verbatim
-  TAGFILES = file1=loc1 "file2 = loc2" ... 
-\endverbatim
-where `loc1` and `loc2` can be relative or absolute paths or URLs.
- See the section \ref external for more information about the use of tag files.
-
- \note
-  Each tag file must have a unique name 
-  (where the name does \e NOT include the path).
-  If a tag file is not located in the directory in which doxygen 
-  is run, you must also specify the path to the tagfile here.
-
- \anchor cfg_generate_tagfile
-<dt>\c GENERATE_TAGFILE <dd>
- \addindex GENERATE_TAGFILE
- When a file name is specified after \c GENERATE_TAGFILE, doxygen will create
- a tag file that is based on the input files it reads.
- See section \ref external for more information about the usage of 
- tag files.
-
- \anchor cfg_allexternals
-<dt>\c ALLEXTERNALS <dd>
- \addindex ALLEXTERNALS
- If the \c ALLEXTERNALS tag is set to \c YES, all external class will be listed
- in the class index. If set to \c NO, only the inherited external classes
- will be listed.
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_external_groups
-<dt>\c EXTERNAL_GROUPS <dd>
- \addindex EXTERNAL_GROUPS
- If the \c EXTERNAL_GROUPS tag is set to \c YES, all external groups will be listed
- in the modules index. If set to \c NO, only the current project's groups will
- be listed.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_external_pages
-<dt>\c EXTERNAL_PAGES <dd>
- \addindex EXTERNAL_PAGES
- If the \c EXTERNAL_PAGES tag is set to \c YES, all external pages will be listed 
- in the related pages index. If set to \c NO, only the current project's 
- pages will be listed.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_perl_path
-<dt>\c PERL_PATH <dd>
- \addindex PERL_PATH
- The \c PERL_PATH should be the absolute path and name of the perl script
- interpreter (i.e. the result of `'which perl'`).
-
-The default file (with absolute path) is: <code>/usr/bin/perl</code>.
-
-</dl>
-\section config_dot Configuration options related to the dot tool
- \anchor cfg_class_diagrams
-<dl>
-
-<dt>\c CLASS_DIAGRAMS <dd>
- \addindex CLASS_DIAGRAMS
- If the \c CLASS_DIAGRAMS tag is set to \c YES, doxygen will
- generate a class diagram (in HTML and \f$\mbox{\LaTeX}\f$) for classes with base or
- super classes. Setting the tag to \c NO turns the diagrams off. Note that 
- this option also works with \ref cfg_have_dot "HAVE_DOT" disabled, but it is recommended to 
- install and use \c dot, since it yields more powerful graphs.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_mscgen_path
-<dt>\c MSCGEN_PATH <dd>
- \addindex MSCGEN_PATH
- You can define message sequence charts within doxygen comments using the \ref cmdmsc "\\msc" 
- command. Doxygen will then run the <a href="http://www.mcternan.me.uk/mscgen/">mscgen tool</a>) to 
- produce the chart and insert it in the documentation. The <code>MSCGEN_PATH</code> tag allows you to 
- specify the directory where the \c mscgen tool resides. If left empty the tool is assumed to 
- be found in the default search path.
-
- \anchor cfg_dia_path
-<dt>\c DIA_PATH <dd>
- \addindex DIA_PATH
-You can include diagrams made with dia in doxygen documentation. Doxygen will then run 
-dia to produce the diagram and insert it in the documentation. The DIA_PATH tag allows 
-you to specify the directory where the dia binary resides. If left empty dia is assumed 
-to be found in the default search path.
-
- \anchor cfg_hide_undoc_relations
-<dt>\c HIDE_UNDOC_RELATIONS <dd>
- \addindex HIDE_UNDOC_RELATIONS
- If set to \c YES the inheritance and collaboration graphs will hide
- inheritance and usage relations if the target is undocumented
- or is not a class.
-
-
-The default value is: <code>YES</code>.
-
- \anchor cfg_have_dot
-<dt>\c HAVE_DOT <dd>
- \addindex HAVE_DOT
- If you set the \c HAVE_DOT tag to \c YES then doxygen will assume the \c dot tool is
- available from the \c path. This tool is part of 
- <a href="http://www.graphviz.org/">Graphviz</a>, a graph 
- visualization toolkit from AT\&T and Lucent Bell Labs. The other options in 
- this section have no effect if this option is set to \c NO
-
-
-The default value is: <code>NO</code>.
-
- \anchor cfg_dot_num_threads
-<dt>\c DOT_NUM_THREADS <dd>
- \addindex DOT_NUM_THREADS
- The \c DOT_NUM_THREADS specifies the number of \c dot invocations doxygen is 
- allowed to run in parallel. When set to \c 0 doxygen will 
- base this on the number of processors available in the system. You can set it 
- explicitly to a value larger than 0 to get control over the balance 
- between CPU load and processing speed.
-
-
- Minimum value: <code>0</code>, maximum value: <code>32</code>, default value: <code>0</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dot_fontname
-<dt>\c DOT_FONTNAME <dd>
- \addindex DOT_FONTNAME
- When you want a differently looking font in the dot files that doxygen generates
- you can specify the font name 
- using \c DOT_FONTNAME. You need to make sure dot is able to find the font, 
- which can be done by putting it in a standard location or by setting the 
- \c DOTFONTPATH environment variable or by setting \ref cfg_dot_fontpath "DOT_FONTPATH" to the 
- directory containing the font.
-
-The default value is: <code>Helvetica</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dot_fontsize
-<dt>\c DOT_FONTSIZE <dd>
- \addindex DOT_FONTSIZE
- The \c DOT_FONTSIZE tag can be used to set the size (in points) of the font of dot graphs.
-
-
- Minimum value: <code>4</code>, maximum value: <code>24</code>, default value: <code>10</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dot_fontpath
-<dt>\c DOT_FONTPATH <dd>
- \addindex DOT_FONTPATH
- By default doxygen will tell \c dot to use the default font as specified with \ref cfg_dot_fontname "DOT_FONTNAME".
- If you specify a 
- different font using \ref cfg_dot_fontname "DOT_FONTNAME" you can set the path where \c dot 
- can find it using this tag.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_class_graph
-<dt>\c CLASS_GRAPH <dd>
- \addindex CLASS_GRAPH
- If the \c CLASS_GRAPH tag is set to \c YES then doxygen
- will generate a graph for each documented class showing the direct and
- indirect inheritance relations. Setting this tag to \c YES will force 
- the \ref cfg_class_diagrams "CLASS_DIAGRAMS" tag to \c NO.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_collaboration_graph
-<dt>\c COLLABORATION_GRAPH <dd>
- \addindex COLLABORATION_GRAPH
- If the \c COLLABORATION_GRAPH tag is set to \c YES then doxygen
- will generate a graph for each documented class showing the direct and
- indirect implementation dependencies (inheritance, containment, and
- class references variables) of the class with other documented classes.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_group_graphs
-<dt>\c GROUP_GRAPHS <dd>
- \addindex GROUP_GRAPHS
- If the \c GROUP_GRAPHS tag is set to \c YES then doxygen
- will generate a graph for groups, showing the direct groups dependencies.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_uml_look
-<dt>\c UML_LOOK <dd>
- \addindex UML_LOOK
- If the \c UML_LOOK tag is set to \c YES, doxygen will generate inheritance and
- collaboration diagrams in a style similar to the OMG's Unified Modeling
- Language.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_uml_limit_num_fields
-<dt>\c UML_LIMIT_NUM_FIELDS <dd>
- \addindex UML_LIMIT_NUM_FIELDS
- If the \ref cfg_uml_look "UML_LOOK" tag is enabled, the fields and methods are shown inside 
- the class node. If there are many fields or methods and many nodes the 
- graph may become too big to be useful. The \c UML_LIMIT_NUM_FIELDS 
- threshold limits the number of items for each type to make the size more 
- manageable. Set this to 0 for no limit. Note that the threshold may be
- exceeded by 50% before the limit is enforced. So when you set the threshold
- to 10, up to 15 fields may appear, but if the number exceeds 15, the
- total amount of fields shown is limited to 10.
-
-
- Minimum value: <code>0</code>, maximum value: <code>100</code>, default value: <code>10</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_template_relations
-<dt>\c TEMPLATE_RELATIONS <dd>
- \addindex TEMPLATE_RELATIONS
- If the \c TEMPLATE_RELATIONS tag is set to \c YES then 
- the inheritance and collaboration graphs will show the relations between templates and their instances.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_include_graph
-<dt>\c INCLUDE_GRAPH <dd>
- \addindex INCLUDE_GRAPH
- If the \c INCLUDE_GRAPH, \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" and
- \ref cfg_search_includes "SEARCH_INCLUDES" 
- tags are set to \c YES then doxygen will generate a graph for each documented file
- showing the direct and indirect include dependencies of the file with other
- documented files.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_included_by_graph
-<dt>\c INCLUDED_BY_GRAPH <dd>
- \addindex INCLUDED_BY_GRAPH
- If the \c INCLUDED_BY_GRAPH, \ref cfg_enable_preprocessing "ENABLE_PREPROCESSING" and
- \ref cfg_search_includes "SEARCH_INCLUDES"
- tags are set to \c YES then doxygen will generate a graph for each documented file
- showing the direct and indirect include dependencies of the file with other
- documented files.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_call_graph
-<dt>\c CALL_GRAPH <dd>
- \addindex CALL_GRAPH
- If the \c CALL_GRAPH tag is set to \c YES then doxygen will 
- generate a call dependency graph for every global function or class method. 
- <br>Note that enabling this option will significantly increase the time of a run.
- So in most cases it will be better to enable call graphs for selected 
- functions only using the \ref cmdcallgraph "\\callgraph" command.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_caller_graph
-<dt>\c CALLER_GRAPH <dd>
- \addindex CALLER_GRAPH
- If the \c CALLER_GRAPH tag is set to \c YES then doxygen will 
- generate a caller dependency graph for every global function or class method. 
- <br>Note that enabling this option will significantly increase the time of a run.
- So in most cases it will be better to enable caller graphs for selected 
- functions only using the \ref cmdcallergraph "\\callergraph" command.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_graphical_hierarchy
-<dt>\c GRAPHICAL_HIERARCHY <dd>
- \addindex GRAPHICAL_HIERARCHY
- If the \c GRAPHICAL_HIERARCHY tag is set to \c YES then 
- doxygen will graphical hierarchy of all classes instead of a textual one.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_directory_graph
-<dt>\c DIRECTORY_GRAPH <dd>
- \addindex DIRECTORY_GRAPH
- If the \c DIRECTORY_GRAPH tag is set 
- to \c YES then doxygen will show the dependencies a directory has on other directories
- in a graphical way. The dependency relations are determined by the \c \#include
- relations between the files in the directories.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dot_image_format
-<dt>\c DOT_IMAGE_FORMAT <dd>
- \addindex DOT_IMAGE_FORMAT
- The \c DOT_IMAGE_FORMAT tag can be used to set the image format of the images
- generated by \c dot.
- \note If you choose \c svg you need to set 
- \ref cfg_html_file_extension "HTML_FILE_EXTENSION" to \c xhtml in order to make the SVG files
- visible in IE 9+ (other browsers do not have this requirement).
-
-Possible values are: 
-<code>png</code>, 
-<code>jpg</code>, 
-<code>gif</code> and 
-<code>svg</code>.
-
-
-The default value is: <code>png</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_interactive_svg
-<dt>\c INTERACTIVE_SVG <dd>
- \addindex INTERACTIVE_SVG
- If \ref cfg_dot_image_format "DOT_IMAGE_FORMAT" is set to \c svg, then this option can be set to \c YES to
- enable generation of interactive SVG images that allow zooming and panning. 
- <br>Note that this requires a modern browser other than Internet Explorer. 
- Tested and working are Firefox, Chrome, Safari, and Opera.
- \note For IE 9+ you need to set \ref cfg_html_file_extension "HTML_FILE_EXTENSION" to \c xhtml in order 
- to make the SVG files visible. Older versions of IE do not have SVG support.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dot_path
-<dt>\c DOT_PATH <dd>
- \addindex DOT_PATH
- The \c DOT_PATH tag can be used to specify the path where the \c dot tool can be found. 
- If left blank, it is assumed the \c dot tool can be found in the \c path.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dotfile_dirs
-<dt>\c DOTFILE_DIRS <dd>
- \addindex DOTFILE_DIRS
- The \c DOTFILE_DIRS tag can be used to specify one or more directories that 
- contain dot files that are included in the documentation (see the
- \ref cmddotfile "\\dotfile" command).
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_mscfile_dirs
-<dt>\c MSCFILE_DIRS <dd>
- \addindex MSCFILE_DIRS
- The \c MSCFILE_DIRS tag can be used to specify one or more directories that 
- contain msc files that are included in the documentation (see the
- \ref cmdmscfile "\\mscfile" command).
-
- \anchor cfg_diafile_dirs
-<dt>\c DIAFILE_DIRS <dd>
- \addindex DIAFILE_DIRS
- The \c DIAFILE_DIRS tag can be used to specify one or more directories that 
- contain dia files that are included in the documentation (see the
- \ref cmddiafile "\\diafile" command).
-
- \anchor cfg_plantuml_jar_path
-<dt>\c PLANTUML_JAR_PATH <dd>
- \addindex PLANTUML_JAR_PATH
- When using plantuml, the \c PLANTUML_JAR_PATH tag should be used to specify the path where 
- java can find the \c plantuml.jar file. If left blank, it is assumed PlantUML is not used or 
- called during a preprocessing step. Doxygen will generate a warning when it encounters a 
- \ref cmdstartuml "\\startuml" command in this case and will not generate output for the diagram.
-
- \anchor cfg_plantuml_include_path
-<dt>\c PLANTUML_INCLUDE_PATH <dd>
- \addindex PLANTUML_INCLUDE_PATH
- When using plantuml, the specified paths are searched for files specified by the \c !include
- statement in a plantuml block.
-
- \anchor cfg_dot_graph_max_nodes
-<dt>\c DOT_GRAPH_MAX_NODES <dd>
- \addindex DOT_GRAPH_MAX_NODES
- The \c DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
- nodes that will be shown in the graph. If the number of nodes in a graph
- becomes larger than this value, doxygen will truncate the graph, which is 
- visualized by representing a node as a red box. Note that doxygen if the number
- of direct children of the root node in a graph is already larger than
- \c DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
- that the size of a graph can be further restricted by \ref cfg_max_dot_graph_depth "MAX_DOT_GRAPH_DEPTH".
-
-
- Minimum value: <code>0</code>, maximum value: <code>10000</code>, default value: <code>50</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_max_dot_graph_depth
-<dt>\c MAX_DOT_GRAPH_DEPTH <dd>
- \addindex MAX_DOT_GRAPH_DEPTH
- The \c MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
- graphs generated by \c dot. A depth value of 3 means that only nodes reachable
- from the root by following a path via at most 3 edges will be shown. Nodes
- that lay further from the root node will be omitted. Note that setting this
- option to 1 or 2 may greatly reduce the computation time needed for large
- code bases. Also note that the size of a graph can be further restricted by
- \ref cfg_dot_graph_max_nodes "DOT_GRAPH_MAX_NODES". Using a depth of 0 means no depth restriction.
-
-
- Minimum value: <code>0</code>, maximum value: <code>1000</code>, default value: <code>0</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dot_transparent
-<dt>\c DOT_TRANSPARENT <dd>
- \addindex DOT_TRANSPARENT
- Set the \c DOT_TRANSPARENT tag to \c YES to generate images with a transparent
- background. This is disabled by default, because dot on Windows does not 
- seem to support this out of the box.
- <br>
- Warning: Depending on the platform used, 
- enabling this option may lead to badly anti-aliased labels on the edges of 
- a graph (i.e. they become hard to read).
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dot_multi_targets
-<dt>\c DOT_MULTI_TARGETS <dd>
- \addindex DOT_MULTI_TARGETS
- Set the \c DOT_MULTI_TARGETS tag to \c YES to allow dot to generate multiple output
- files in one run (i.e. multiple -o and -T options on the command line). This
- makes \c dot run faster, but since only newer versions of \c dot (>1.8.10)
- support this, this feature is disabled by default.
-
-
-The default value is: <code>NO</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_generate_legend
-<dt>\c GENERATE_LEGEND <dd>
- \addindex GENERATE_LEGEND
- If the \c GENERATE_LEGEND tag is set to \c YES doxygen will
- generate a legend page explaining the meaning of the various boxes and
- arrows in the dot generated graphs.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
- \anchor cfg_dot_cleanup
-<dt>\c DOT_CLEANUP <dd>
- \addindex DOT_CLEANUP
-If the \c DOT_CLEANUP tag is set to \c YES, doxygen will
-remove the intermediate dot files that are used to generate the various graphs.
-
-
-The default value is: <code>YES</code>.
-
-
-This tag requires that the tag \ref cfg_have_dot "HAVE_DOT" is set to \c YES.
-</dl>
-\section config_examples Examples
-
-Suppose you have a simple project consisting of two files: a source file 
-\c example.cc and a header file \c example.h.
-Then a minimal configuration file is as simple as:
-\verbatim
-INPUT            = example.cc example.h
-\endverbatim
-
-Assuming the example makes use of Qt classes and \c perl is located 
-in <code>/usr/bin</code>, a more realistic configuration file would be:
-\verbatim
-PROJECT_NAME     = Example
-INPUT            = example.cc example.h
-WARNINGS         = YES
-TAGFILES         = qt.tag
-PERL_PATH        = /usr/local/bin/perl
-SEARCHENGINE     = NO
-\endverbatim
-
-To generate the documentation for the 
-<a href="http://www.stack.nl/~dimitri/qdbttabular/index.html">QdbtTabular</a> package
-I have used the following configuration file:
-\verbatim
-PROJECT_NAME     = QdbtTabular
-OUTPUT_DIRECTORY = html
-WARNINGS         = YES
-INPUT            = examples/examples.doc src
-FILE_PATTERNS    = *.cc *.h
-INCLUDE_PATH     = examples
-TAGFILES         = qt.tag
-PERL_PATH        = /usr/bin/perl
-SEARCHENGINE     = YES
-\endverbatim
-
-To regenerate the Qt-1.44 documentation from the sources, you could use the
-following config file:
-\verbatim
-PROJECT_NAME         = Qt
-OUTPUT_DIRECTORY     = qt_docs
-HIDE_UNDOC_MEMBERS   = YES
-HIDE_UNDOC_CLASSES   = YES
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION      = YES
-EXPAND_ONLY_PREDEF   = YES
-SEARCH_INCLUDES      = YES
-FULL_PATH_NAMES      = YES
-STRIP_FROM_PATH      = $(QTDIR)/
-PREDEFINED           = USE_TEMPLATECLASS Q_EXPORT= \
-                       QArrayT:=QArray \
-                       QListT:=QList \
-                       QDictT:=QDict \
-                       QQueueT:=QQueue \
-                       QVectorT:=QVector \
-                       QPtrDictT:=QPtrDict \
-                       QIntDictT:=QIntDict \
-                       QStackT:=QStack \
-                       QDictIteratorT:=QDictIterator \
-                       QListIteratorT:=QListIterator \
-                       QCacheT:=QCache \
-                       QCacheIteratorT:=QCacheIterator \
-                       QIntCacheT:=QIntCache \
-                       QIntCacheIteratorT:=QIntCacheIterator \
-                       QIntDictIteratorT:=QIntDictIterator \
-                       QPtrDictIteratorT:=QPtrDictIterator
-INPUT                = $(QTDIR)/doc \
-                       $(QTDIR)/src/widgets \
-                       $(QTDIR)/src/kernel \
-                       $(QTDIR)/src/dialogs \
-                       $(QTDIR)/src/tools
-FILE_PATTERNS        = *.cpp *.h q*.doc
-INCLUDE_PATH         = $(QTDIR)/include 
-RECURSIVE            = YES
-\endverbatim
-
-For the Qt-2.1 sources I recommend to use the following settings:
-\verbatim
-PROJECT_NAME          = Qt
-PROJECT_NUMBER        = 2.1
-HIDE_UNDOC_MEMBERS    = YES
-HIDE_UNDOC_CLASSES    = YES
-SOURCE_BROWSER        = YES
-INPUT                 = $(QTDIR)/src
-FILE_PATTERNS         = *.cpp *.h q*.doc
-RECURSIVE             = YES
-EXCLUDE_PATTERNS      = *codec.cpp moc_* */compat/* */3rdparty/*
-ALPHABETICAL_INDEX    = YES
-COLS_IN_ALPHA_INDEX   = 3
-IGNORE_PREFIX         = Q
-ENABLE_PREPROCESSING  = YES
-MACRO_EXPANSION       = YES
-INCLUDE_PATH          = $(QTDIR)/include
-PREDEFINED            = Q_PROPERTY(x)= \
-                        Q_OVERRIDE(x)= \
-                        Q_EXPORT= \
-                        Q_ENUMS(x)= \
-                        "QT_STATIC_CONST=static const " \
-                        _WS_X11_ \
-                        INCLUDE_MENUITEM_DEF
-EXPAND_ONLY_PREDEF    = YES
-EXPAND_AS_DEFINED     = Q_OBJECT_FAKE Q_OBJECT ACTIVATE_SIGNAL_WITH_PARAM \
-                        Q_VARIANT_AS
-\endverbatim
-
-Here doxygen's preprocessor is used to substitute some
-macro names that are normally substituted by the C preprocessor,
-but without doing full macro expansion.
-
-
-\htmlonly
-Go to the <a href="commands.html">next</a> section or return to the
- <a href="index.html">index</a>.
-\endhtmlonly
-
-*/
diff --git a/doc/custcmd.doc b/doc/custcmd.doc
index db41f95..8ac2a65 100644
--- a/doc/custcmd.doc
+++ b/doc/custcmd.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/customize.doc b/doc/customize.doc
index c7359c1..f98ce0b 100644
--- a/doc/customize.doc
+++ b/doc/customize.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/dbusxml.doc b/doc/dbusxml.doc
deleted file mode 100644
index e487126..0000000
--- a/doc/dbusxml.doc
+++ /dev/null
@@ -1,149 +0,0 @@
-/*! \page dbusxml DBus XML output format
-
-\addindex dbusxml
-
-<p>Doxygen can generate documentation for DBus XML files.  This way
-DBus interfaces can be annotated with doxygen style comments, and
-without writing custom XML parsers.  Doxygen extracts its text from
-all XML comments starting with '*' or '!'.  An additional '<' can be
-used to assign the documentation string to the previous entity instead
-of the one following the comment.
-
-Note that before the parsing of DBus XML file works one has to
-assign the .xml extension to the DBus XML parser using the
-following configuration option:
-
-\verbatim
-EXTENSION_MAPPING = xml=dbusxml
-\endverbatim
-
-\section dbusxml_supported Supported XML elements and attributes
-
-<p>The following DBus XML elemets can be annotated:
-
-<ul>
-<li><b>interface</b>
-
-<li><b>method</b> or <b>signal</b>
-
-<li><b>arg</b>
-
-<li><b>property</b>
-
-</ul>
-
-Additional elements are supported. These are available once
-the xmlns "http://psiamp.org/dtd/doxygen_dbusxml.dtd" is
-available.
-
-<ul>
-<li><b>namespace</b>: This can be used to group other more of the
-additional elemets.  This element requires a <b>name</b> attribute.
-
-<li><b>enum</b> is used to define enums.  <b>value</b> element is
-    then used to define the individual values in the enum.  This element
-    requires the <b>name</b> and <b>type</b> attributes.  A
-    optional <b>named-type</b> attribute is allowed, referrencing typed
-    previously defined by one of the additional elements.  A enum name
-    can be used anywhere a type is required using the <b>named-type</b>
-    attribute.
-
-<li><b>flagset</b> is used to define sets of flags. Required and
-    optional attributes are identical to the ones used by <b>enum</b>.
-    While <b>enum</b>s assume the values to be consecutive, while
-    a <b>flagset</b> is values suitable for flags.  A flagset name
-    can be used anywhere a type is required using the <b>named-type</b>
-    attribute.
-
-<li><b>struct</b> is used to define structures. A <b>name</b>
-    attribute is required.
-
-<li><b>member</b> is used to define members of <b>structs</b>.  It
-    is valid inside <b>struct</b> elements. This
-    element requires <b>name</b> and <b>type</b> attributes.  In
-    addition to (or even instead of) the <b>type</b> attribute a
-    <b>named-type</b> attribute may be used to reference types defined
-    by <b>enum</b>, <b>flagset</b> or <b>struct</b>.
-
-\section dbusxml_example Example
-
-<pre>
-<?xml version="1.0" ?>
-<!-- Comment -->
-<!--*< File comment -->
-<node name="/SomeNode" xmlns:dx="http://psiamp.org/dtd/doxygen_dbusxml.dtd">
-  <!--* test struct outside a namespace and interface -->
-  <dx:struct name="StructOutsideNamespace">
-    <!--* member 1 -->
-    <dx:member name="member1" type="s"/>
-    <!--* complex member 1 -->
-    <dx:member name="complexMember1" type="(ssu)"/>
-  </dx:struct>
-
-  <!--* Test flag set -->
-  <dx:flagset name="flagset">
-    <!--* Flag 1 of flagset. -->
-    <dx:value name="FLAG1"/>
-  </dx:flagset>
-
-  <!--* namespace comment -->
-  <dx:namespace name="SomeNamespace">
-    <!--* struct inside a namespace -->
-    <dx:struct name="StructInNamespace">
-       <!--* member 2 -->
-       <dx:member name="member2" type="s"/>
-    </dx:struct>
-  </dx:namespace>
-  <!--* Documentation on the interface -->
-  <interface name="nl.stack.doxygen.test.interface">
-    <!--* Test Enum documentation -->
-    <dx:enum name="TestEnum">
-      <!--* key 1 with value 13 -->
-      <dx:value name="KEY1" value="13"/>
-      <!--* key 2 without a value -->
-      <dx:value name="KEY2"/>
-    </dx:enum>
-
-    <!--* struct inside a interface -->
-    <dx:struct name="StructInInterface">
-      <!--* member 3 -->
-      <dx:member name="member3" type="s"/>
-      <!--* Struct in a struct -->
-      <dx:struct name="StructInAStruct">
-        <!--* member4 -->
-        <dx:member name="member4" type="s"/>
-      </dx:struct>
-      <!--* struct member -->
-      <dx:member name="structMembor" type="(s)" named-type="StructInAStruct"/>
-    </dx:struct>
-    <!--* Document method
-
-          Some extended documentation for the method.
-
-          @param[in] input blah.
-          @param[out] output blub
-     -->
-    <method name="method">
-      <arg direction="in" name="input" type="(s(s))" named-type="::nl::stack::doxygen::test::interface::StructInInterface"/>
-      <arg direction="out" type="v" name="output"/>
-    </method>
-
-    <signal name="signal">
-      <!--*< Documentation for signal.
-
-             @param parameter some parameter.
-        -->
-      <arg name="parameter" type="s"/>
-    </signal>
-
-    <!--* property documentation -->
-    <property name="property" type="s" access="readwrite"/>
-
-    <!--* property documentation read-only -->
-    <property name="propertyRead" type="s" access="read"/>
-    <!--* property documentation write-only -->
-    <property name="propertyWrite" type="s" access="write"/>
-  </interface>
-</node>
-</pre>
-*/
diff --git a/doc/diagrams.doc b/doc/diagrams.doc
index bafb21d..49be5d6 100644
--- a/doc/diagrams.doc
+++ b/doc/diagrams.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -52,10 +52,14 @@
       </ul>
   <li>if \ref cfg_call_graph "CALL_GRAPH" is set to YES, a 
       graphical call graph is drawn for each function showing the 
-      functions that the function directly or indirectly calls.
+      functions that the function directly or indirectly calls
+      (see also section \ref cmdcallgraph "\\callgraph" and
+       section \ref cmdhidecallgraph "\\hidecallgraph").
   <li>if \ref cfg_caller_graph "CALLER_GRAPH" is set to YES, a 
       graphical caller graph is drawn for each function showing the 
-      functions that the function is directly or indirectly called by.
+      functions that the function is directly or indirectly called by
+      (see also section \ref cmdcallergraph "\\callergraph" and
+       section \ref cmdhidecallergraph "\\hidecallergraph").
   </ul>
 
   Using a \ref customize "layout file" you can determine which of the
@@ -123,24 +127,32 @@ Here are a couple of header files that together show the various diagrams
 that doxygen can generate: 
 
 <code>diagrams_a.h</code>
-\verbinclude diagrams_a.h
+\include diagrams_a.h
 <code>diagrams_b.h</code>
-\verbinclude diagrams_b.h
+\include diagrams_b.h
 <code>diagrams_c.h</code>
-\verbinclude diagrams_c.h
+\include diagrams_c.h
 <code>diagrams_d.h</code>
-\verbinclude diagrams_d.h
+\include diagrams_d.h
 <code>diagrams_e.h</code>
-\verbinclude diagrams_e.h
+\include diagrams_e.h
 
 \htmlonly
-Click <a href="$(DOXYGEN_DOCDIR)/examples/diagrams/html/index.html">here</a>
+</p>
+Click <a href="examples/diagrams/html/index.html">here</a>
 for the corresponding HTML documentation that is generated by doxygen<br/>
 (<code>EXTRACT_ALL</code> = <code>YES</code> is used here).
 \endhtmlonly
+\latexonly
+\IfFileExists{../html/examples/diagrams/latex/refman_doc.tex}
+{
+See \hyperlink{diagrams_example}{Diagrams example}
+for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+} {}
+\endlatexonly
 
 \htmlonly
-<br><br>
+<br/><br/>
 Go to the <a href="preprocessing.html">next</a> section or return to the
 <a href="index.html">index</a>.
 \endhtmlonly
diff --git a/doc/docblocks.doc b/doc/docblocks.doc
index 333e5d2..735def6 100644
--- a/doc/docblocks.doc
+++ b/doc/docblocks.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -259,9 +259,14 @@ located in front of the block instead of after the block.
 Here is an example of the use of these comment blocks:
 \include afterdoc.h
  \htmlonly
- Click <a href="$(DOXYGEN_DOCDIR)/examples/afterdoc/html/class_test.html">here</a>
+ </p>
+ Click <a href="examples/afterdoc/html/class_test.html">here</a>
  for the corresponding HTML documentation that is generated by doxygen.
  \endhtmlonly
+ \latexonly
+ See \hyperlink{afterdoc_example}{After Block example}
+ for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+ \endlatexonly
 
 \warning These blocks can only be used to document \e members and \e parameters.
          They cannot be used to document files, classes, unions, structs,
@@ -275,9 +280,14 @@ Here is an example of the use of these comment blocks:
 Here is an example of a documented piece of C++ code using the Qt style:
 \include qtstyle.cpp
  \htmlonly
- Click <a href="$(DOXYGEN_DOCDIR)/examples/qtstyle/html/class_test.html">here</a>
+ </p>
+ Click <a href="examples/qtstyle/html/class_test.html">here</a>
  for the corresponding HTML documentation that is generated by doxygen.
  \endhtmlonly
+ \latexonly
+ See \hyperlink{qtstyle_example}{QT Style example}
+ for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+ \endlatexonly
 
 The brief descriptions are included in the member overview of a 
 class, namespace or file and are printed using a small italic font 
@@ -305,9 +315,14 @@ Here is the same piece of code as shown above, this time documented using the
 JavaDoc style and \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" set to YES:
 \include jdstyle.cpp
  \htmlonly
- Click <a href="$(DOXYGEN_DOCDIR)/examples/jdstyle/html/class_test.html">here</a>
+ </p>
+ Click <a href="examples/jdstyle/html/class_test.html">here</a>
  for the corresponding HTML documentation that is generated by doxygen.
  \endhtmlonly
+ \latexonly
+ See \hyperlink{jdstyle_example}{Javadoc Style example}
+ for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+ \endlatexonly
 
 Similarly, if one wishes the first sentence of a Qt style documentation
 block to automatically be treated as a brief description, one may set
@@ -381,9 +396,14 @@ Here is an example of a C header named \c structcmd.h that is documented
 using structural commands:
 \include structcmd.h
  \htmlonly
- Click <a href="$(DOXYGEN_DOCDIR)/examples/structcmd/html/structcmd_8h.html">here</a>
+ </p>
+ Click <a href="examples/structcmd/html/structcmd_8h.html">here</a>
  for the corresponding HTML documentation that is generated by doxygen.
  \endhtmlonly
+ \latexonly
+ See \hyperlink{structcmd_example}{Structural Commands example}
+ for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+ \endlatexonly
 
  Because each comment block in the example above contains a structural command, all
  the comment blocks could be moved to another location or input file 
@@ -421,9 +441,14 @@ and assume they have to be represented in a preformatted way.
 
 \include docstring.py
  \htmlonly
- Click <a href="$(DOXYGEN_DOCDIR)/examples/docstring/html/index.html">here</a>
+ </p>
+ Click <a href="examples/docstring/html/index.html">here</a>
  for the corresponding HTML documentation that is generated by doxygen.
  \endhtmlonly
+ \latexonly
+ See \hyperlink{python_example}{Python Docstring example}
+ for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+ \endlatexonly
 
 Note that in this case none of doxygen's \ref cmd_intro "special commands" 
 are supported.
@@ -437,9 +462,14 @@ Here is the same example again but now using doxygen style comments:
 
 \include pyexample.py
  \htmlonly
- Click <a href="$(DOXYGEN_DOCDIR)/examples/pyexample/html/index.html">here</a>
+ </p>
+ Click <a href="examples/pyexample/html/index.html">here</a>
  for the corresponding HTML documentation that is generated by doxygen.
  \endhtmlonly
+ \latexonly
+ See \hyperlink{py_example}{Python example}
+ for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+ \endlatexonly
 
 Since python looks more like Java than like C or C++, you should set 
 \ref cfg_optimize_output_java "OPTIMIZE_OUTPUT_JAVA" to \c YES in the
@@ -462,9 +492,14 @@ Here is an example VHDL file with doxygen comments:
 
 \include  mux.vhdl
  \htmlonly
- Click <a href="$(DOXYGEN_DOCDIR)/examples/mux/html/index.html">here</a>
+ </p>
+ Click <a href="examples/mux/html/index.html">here</a>
  for the corresponding HTML documentation that is generated by doxygen.
  \endhtmlonly
+ \latexonly
+ See \hyperlink{vhdl_example}{VHDL example}
+ for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+ \endlatexonly
 
 To get proper looking output you need to set
 \ref cfg_optimize_output_vhdl "OPTIMIZE_OUTPUT_VHDL" to \c YES in the
@@ -571,9 +606,14 @@ Following is an example using doxygen style comments:
 
 \include tclexample.tcl
  \htmlonly
- Click <a href="$(DOXYGEN_DOCDIR)/examples/tclexample/html/index.html">here</a>
+ </p>
+ Click <a href="examples/tclexample/html/index.html">here</a>
  for the corresponding HTML documentation that is generated by doxygen.
  \endhtmlonly
+ \latexonly
+ See \hyperlink{tcl_example}{TCL example}
+ for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+ \endlatexonly
 
 
 \section docstructure Anatomy of a comment block
@@ -601,15 +641,15 @@ Markdown is designed to be very easy to read and write.
 It's formatting is inspired by plain text mail.
 Markdown works great for simple, generic formatting, like an introduction
 page for your project. Doxygen also supports reading of markdown files 
-directly. See \ref markdown "here" for more details regards Markdown support.
+directly. For more details see chapter \ref markdown.
 
 For programming language specific formatting doxygen has two
 forms of additional markup on top of Markdown formatting.
 
 1. <a href="http://en.wikipedia.org/wiki/Javadoc">Javadoc</a> like markup.
-   See \ref cmd_intro "here" for a complete overview of all commands supported by doxygen.
+   See \ref commands for a complete overview of all commands supported by doxygen.
 2. <a href="http://en.wikipedia.org/wiki/C_Sharp_(programming_language)#XML_documentation_system">XML</a> markup
-   as specified in the C# standard. See \ref xmlcmds "here" for the XML commands supported by doxygen.
+   as specified in the C# standard. See \ref xmlcmds for the XML commands supported by doxygen.
 
 If this is still not enough doxygen also supports a \ref htmlcmds "subset" of 
 the <a href="http://en.wikipedia.org/wiki/HTML">HTML</a> markup language.
diff --git a/doc/doxygen.1 b/doc/doxygen.1
index f3a7abc..1deb7b6 100644
--- a/doc/doxygen.1
+++ b/doc/doxygen.1
@@ -1,4 +1,4 @@
-.TH DOXYGEN "1" "DATE" "doxygen VERSION" "User Commands"
+.TH DOXYGEN "1" "@DATE@" "doxygen @VERSION@" "User Commands"
 .SH NAME
 doxygen \- documentation system for various programming languages
 .SH DESCRIPTION
@@ -45,6 +45,6 @@ doxygen \fB\-e\fR rtf extensionsFile
 If \fB\-s\fR is specified the comments in the config file will be omitted.
 If configName is omitted `Doxyfile' will be used as a default.
 .SH AUTHOR
-Doxygen version VERSION, Copyright Dimitri van Heesch 1997-2014
+Doxygen version @VERSION@, Copyright Dimitri van Heesch 1997-2015
 .SH SEE ALSO
 doxywizard(1).
diff --git a/doc/doxygen.sty b/doc/doxygen.sty
deleted file mode 100644
index 8013dad..0000000
--- a/doc/doxygen.sty
+++ /dev/null
@@ -1,486 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{doxygen}
-
-% Packages used by this style file
-\RequirePackage{alltt}
-\RequirePackage{array}
-\RequirePackage{calc}
-\RequirePackage{color}
-\RequirePackage{fancyhdr}
-\RequirePackage{longtable}
-\RequirePackage{verbatim}
-\RequirePackage{ifthen}
-\RequirePackage{xtab}
-\RequirePackage{multirow}
-\RequirePackage[table]{xcolor}
-
-% Use helvetica font instead of times roman
-\RequirePackage{helvet}
-\RequirePackage{sectsty}
-\RequirePackage{tocloft}
-\providecommand{\rmdefault}{phv}
-\providecommand{\bfdefault}{bc}
-
-
-% Setup fancy headings
-\pagestyle{fancyplain}
-\newcommand{\clearemptydoublepage}{%
-  \newpage{\pagestyle{empty}\cleardoublepage}%
-}
-\renewcommand{\chaptermark}[1]{%
-  \markboth{#1}{}%
-}
-\renewcommand{\sectionmark}[1]{%
-  \markright{\thesection\ #1}%
-}
-\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
-\fancyhead[CE]{\fancyplain{}{}}
-\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
-\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
-\fancyhead[CO]{\fancyplain{}{}}
-\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
-\fancyfoot[LE]{\fancyplain{}{}}
-\fancyfoot[CE]{\fancyplain{}{}}
-\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
-\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
-\fancyfoot[CO]{\fancyplain{}{}}
-\fancyfoot[RO]{\fancyplain{}{}}
-%---------- Internal commands used in this style file ----------------
-
-\newcommand\tabfill[1]{%
-  \dimen@\linewidth%
-  \advance\dimen@\@totalleftmargin%
-  \advance\dimen at -\dimen\@curtab%
-  \parbox[t]\dimen@{\raggedright #1\ifhmode\strut\fi}%
-}
-
-\newcommand{\ensurespace}[1]{%
-  \begingroup
-    \setlength{\dimen@}{#1}%
-    \vskip\z@\@plus\dimen@
-    \penalty -100\vskip\z@\@plus -\dimen@
-    \vskip\dimen@
-    \penalty 9999%
-    \vskip -\dimen@
-    \vskip\z at skip % hide the previous |\vskip| from |\addvspace|
-  \endgroup
-}
-
-% Generic environment used by all paragraph-based environments defined
-% below. Note that the command \title{...} needs to be defined inside
-% those environments!
-\newenvironment{DoxyDesc}[1]{%
-  \ensurespace{4\baselineskip}%
-  \begin{list}{}%
-  {%
-    \settowidth{\labelwidth}{40pt}%
-    \setlength{\leftmargin}{\labelwidth}%
-    \setlength{\parsep}{0pt}%
-    \setlength{\itemsep}{-4pt}%
-    \renewcommand{\makelabel}{\entrylabel}%
-  }%
-  \item[#1]%
-}{%
-  \end{list}%
-}
-
-%---------- Commands used by doxygen LaTeX output generator ----------
-
-% Used by <pre> ... </pre>
-\newenvironment{DoxyPre}{%
-  \small%
-  \begin{alltt}%
-}{%
-  \end{alltt}%
-  \normalsize%
-}
-
-% Used by @code ... @endcode
-\newenvironment{DoxyCode}{%
-
-
-\begin{scriptsize}\begin{alltt}%
-}{%
-\end{alltt}\end{scriptsize}%
-}
-
-% Used by @example, @include, @includelineno and @dontinclude
-\newenvironment{DoxyCodeInclude}{%
-  \DoxyCode%
-}{%
-  \endDoxyCode%
-}
-
-% Used by @verbatim ... @endverbatim
-\newenvironment{DoxyVerb}{%
-  \footnotesize%
-  \verbatim%
-}{%
-  \endverbatim%
-  \normalsize%
-}
-
-% Used by @verbinclude
-\newenvironment{DoxyVerbInclude}{%
-  \DoxyVerb%
-}{%
-  \endDoxyVerb%
-}
-
-% Used by numbered lists (using '-#' or <ol> ... </ol>)
-\newenvironment{DoxyEnumerate}{%
-  \enumerate%
-}{%
-  \endenumerate%
-}
-
-% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
-\newenvironment{DoxyItemize}{%
-  \itemize%
-}{%
-  \enditemize%
-}
-
-% Used by description lists (using <dl> ... </dl>)
-\newenvironment{DoxyDescription}{%
-  \description%
-}{%
-  \enddescription%
-}
-
-% Used by @image, @dotfile, and @dot ... @enddot
-% (only if caption is specified)
-\newenvironment{DoxyImage}{%
-  \begin{figure}[H]%
-  \begin{center}%
-}{%
-  \end{center}%
-  \end{figure}%
-}
-
-% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
-% (only if no caption is specified)
-\newenvironment{DoxyImageNoCaption}{%
-}{%
-}
-
-% Used by @attention
-\newenvironment{DoxyAttention}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @author and @authors
-\newenvironment{DoxyAuthor}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @date
-\newenvironment{DoxyDate}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @invariant
-\newenvironment{DoxyInvariant}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @note
-\newenvironment{DoxyNote}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @post
-\newenvironment{DoxyPostcond}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @pre
-\newenvironment{DoxyPrecond}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @copyright
-\newenvironment{DoxyCopyright}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @remark
-\newenvironment{DoxyRemark}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @return
-\newenvironment{DoxyReturn}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @since
-\newenvironment{DoxySince}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @see
-\newenvironment{DoxySeeAlso}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @version
-\newenvironment{DoxyVersion}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @warning
-\newenvironment{DoxyWarning}[1]{%
-  \begin{DoxyDesc}{#1}%
-}{%
-  \end{DoxyDesc}%
-}
-
-% Used by @internal
-\newenvironment{DoxyInternal}[1]{%
-  \paragraph*{#1}%
-}{%
-}
-
-% Used by @par and @paragraph
-\newenvironment{DoxyParagraph}[1]{%
-  \begin{list}{}%
-  {%
-    \settowidth{\labelwidth}{40pt}%
-    \setlength{\leftmargin}{\labelwidth}%
-    \setlength{\parsep}{0pt}%
-    \setlength{\itemsep}{-4pt}%
-    \renewcommand{\makelabel}{\entrylabel}%
-  }%
-  \item[#1]%
-}{%
-  \end{list}%
-}
-
-% Used by parameter lists
-\newenvironment{DoxyParams}[2][]{%
-  \begin{DoxyDesc}{#2}%
-    \item[] \hspace{\fill} \vspace{-40pt}%
-    \settowidth{\labelwidth}{40pt}%
-    \setlength{\LTleft}{0pt}%
-    \setlength{\tabcolsep}{0.01\textwidth}%
-    \ifthenelse{\equal{#1}{}}%
-    {\begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
-                        p{0.815\textwidth}|}}%
-    {\ifthenelse{\equal{#1}{1}}%
-      {\begin{longtable}{|>{\centering}p{0.10\textwidth}|%
-                         >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
-                         p{0.685\textwidth}|}}%
-      {\begin{longtable}{|>{\centering}p{0.10\textwidth}|%
-                         >{\centering\hspace{0pt}}p{0.15\textwidth}|%
-                         >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
-                         p{0.515\textwidth}|}}%
-    }\hline%
-}{%
-    \end{longtable}%
-  \end{DoxyDesc}%
-}
-
-% Used for fields of simple structs
-\newenvironment{DoxyFields}[1]{%
-  \begin{DoxyDesc}{#1}%
-    \item[] \hspace{\fill} \vspace{-40pt}%
-    \settowidth{\labelwidth}{40pt}%
-    \setlength{\LTleft}{0pt}%
-    \setlength{\tabcolsep}{0.01\textwidth}%
-    \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
-                         p{0.15\textwidth}|%
-                         p{0.635\textwidth}|}%
-    \hline%
-}{%
-    \end{longtable}%
-  \end{DoxyDesc}%
-}
-
-% is used for parameters within a detailed function description
-\newenvironment{DoxyParamCaption}{%
-  \renewcommand{\item}[2][]{##1 {\em ##2}}%
-  }{%
-}
-
-% Used by return value lists
-\newenvironment{DoxyRetVals}[1]{%
-  \begin{DoxyDesc}{#1}%
-    \begin{description}%
-      \item[] \hspace{\fill} \vspace{-25pt}%
-      \setlength{\tabcolsep}{0.01\textwidth}%
-      \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
-                          p{0.77\textwidth}|}%
-      \hline%
-}{%
-      \end{longtable}%
-    \end{description}%
-  \end{DoxyDesc}%
-}
-
-% Used by exception lists
-\newenvironment{DoxyExceptions}[1]{%
-  \begin{DoxyDesc}{#1}%
-    \begin{description}%
-      \item[] \hspace{\fill} \vspace{-25pt}%
-      \definecolor{tableShade}{HTML}{F8F8F8}%
-      \rowcolors{1}{white}{tableShade}%
-      \arrayrulecolor{gray}%
-      \setlength{\tabcolsep}{0.01\textwidth}%
-      \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
-                          p{0.77\textwidth}|}%
-      \hline%
-}{%
-      \end{longtable}%
-    \end{description}%
-  \end{DoxyDesc}%
-}
-
-% Used by template parameter lists
-\newenvironment{DoxyTemplParams}[1]{%
-  \begin{DoxyDesc}{#1}%
-    \begin{description}%
-      \item[] \hspace{\fill} \vspace{-25pt}%
-      \definecolor{tableShade}{HTML}{F8F8F8}%
-      \rowcolors{1}{white}{tableShade}%
-      \arrayrulecolor{gray}%
-      \setlength{\tabcolsep}{0.01\textwidth}%
-      \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
-                          p{0.77\textwidth}|}%
-      \hline%
-}{%
-      \end{longtable}%
-    \end{description}%
-  \end{DoxyDesc}%
-}
-
-\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
-\newcommand{\lcurly}{\{}
-\newcommand{\rcurly}{\}}
-\newenvironment{DoxyCompactList}
-{\begin{list}{}{
-  \setlength{\leftmargin}{0.5cm}
-  \setlength{\itemsep}{0pt}
-  \setlength{\parsep}{0pt}
-  \setlength{\topsep}{0pt}
-  \renewcommand{\makelabel}{\hfill}}}
-{\end{list}}
-\newenvironment{DoxyCompactItemize}
-{
-  \begin{itemize}
-  \setlength{\itemsep}{-3pt}
-  \setlength{\parsep}{0pt}
-  \setlength{\topsep}{0pt}
-  \setlength{\partopsep}{0pt}
-}
-{\end{itemize}}
-\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
-\newlength{\tmplength}
-\newenvironment{TabularC}[1]
-{
-\setlength{\tmplength}
-     {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
-      \par\begin{xtabular*}{\linewidth}
-             {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
-}
-{\end{xtabular*}\par}
-\newcommand{\entrylabel}[1]{
-   {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{%
-   \usefont{OT1}{phv}{bc}{n}\color{darkgray}#1}\vspace{1.5\baselineskip}}}}
-\newenvironment{Desc}
-{\begin{list}{}
-  {
-    \settowidth{\labelwidth}{40pt}
-    \setlength{\leftmargin}{\labelwidth}
-    \setlength{\parsep}{0pt}
-    \setlength{\itemsep}{-4pt}
-    \renewcommand{\makelabel}{\entrylabel}
-  }
-}
-{\end{list}}
-\newsavebox{\xrefbox}
-\newlength{\xreflength}
-\newcommand{\xreflabel}[1]{%
-  \sbox{\xrefbox}{#1}%
-  \setlength{\xreflength}{\wd\xrefbox}%
-  \ifthenelse{\xreflength>\labelwidth}{%
-    \begin{minipage}{\textwidth}%
-      \setlength{\parindent}{0pt}%
-      \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
-    \end{minipage}%
-  }{%
-   \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
-  }}%
-\newenvironment{DoxyRefList}{%
-  \begin{list}{}{%
-    \setlength{\labelwidth}{10pt}%
-    \setlength{\leftmargin}{\labelwidth}%
-    \addtolength{\leftmargin}{\labelsep}%
-    \renewcommand{\makelabel}{\xreflabel}%
-    }%
-  }%
-{\end{list}}
-\newenvironment{DoxyRefDesc}[1]
-{\begin{list}{}{%
-  \renewcommand\makelabel[1]{\textbf{##1}}
-  \settowidth\labelwidth{\makelabel{#1}}
-  \setlength\leftmargin{\labelwidth+\labelsep}}}
-{\end{list}}
-\newenvironment{Indent}
-  {\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
-      \item[]\ignorespaces}
-  {\unskip\end{list}}
-\setlength{\parindent}{0cm}
-\setlength{\parskip}{0.2cm}
-\addtocounter{secnumdepth}{2}
-\usepackage[T1]{fontenc}
-\makeatletter
-\renewcommand{\paragraph}{\@startsection{paragraph}{4}{0ex}%
-   {-1.0ex}%
-   {1.0ex}%
-   {\usefont{OT1}{phv}{bc}{n}\color{darkgray}}}
-\renewcommand{\subparagraph}{\@startsection{subparagraph}{5}{0ex}%
-   {-1.0ex}%
-   {1.0ex}%
-   {\usefont{OT1}{phv}{bc}{n}\color{darkgray}}}
-\makeatother
-\allsectionsfont{\usefont{OT1}{phv}{bc}{n}\selectfont\color{darkgray}}
-\stepcounter{secnumdepth}
-\stepcounter{tocdepth}
-\definecolor{comment}{rgb}{0.5,0.0,0.0}
-\definecolor{keyword}{rgb}{0.0,0.5,0.0}
-\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
-\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
-\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
-\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
-\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
-\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
-\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
-\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
-\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex
index 4bac9a9..9f96adf 100644
--- a/doc/doxygen_manual.tex
+++ b/doc/doxygen_manual.tex
@@ -1,7 +1,7 @@
 %
 % 
 %
-% Copyright (C) 1997-2014 by Dimitri van Heesch.
+% Copyright (C) 1997-2015 by Dimitri van Heesch.
 %
 % Permission to use, copy, modify, and distribute this software and its
 % documentation under the terms of the GNU General Public License is hereby 
@@ -12,6 +12,7 @@
 % Documents produced by Doxygen are derivative works derived from the
 % input used in their production; they are not affected by this license.
 
+\batchmode
 \documentclass{book}
 \usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
 \usepackage{makeidx}
@@ -28,6 +29,8 @@
 \usepackage{textcomp}
 \usepackage[nointegrals]{wasysym}
 \usepackage{alltt}
+\usepackage{import}
+\usepackage[titletoc]{appendix}
 \usepackage{ifpdf}
 \ifpdf
 \usepackage[pdftex,
@@ -53,6 +56,7 @@
 \usepackage[titles]{tocloft}
 \usepackage{amssymb}
 \usepackage{doxygen}
+\usepackage{manual}
 \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
 \lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left }
 \makeindex
@@ -65,13 +69,15 @@
 \newcommand{\thisyear}{\the\year}
 \hfuzz=15pt
 \setlength{\emergencystretch}{15pt}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{0.2cm}
 \hbadness=750
 \tolerance=750
 \begin{document}
 \begin{titlepage}
 \includegraphics[width=\textwidth]{doxygen_logo}
 \begin{center}
-Manual for version $VERSION\\[2ex]
+Manual for version @VERSION@\\[2ex]
 Written by Dimitri van Heesch\\[2ex]
 \copyright 1997-\thisyear
 \end{center}
@@ -90,6 +96,7 @@ Written by Dimitri van Heesch\\[2ex]
 \chapter{Lists}\label{lists}\hypertarget{lists}{}\input{lists}
 \chapter{Grouping}\label{grouping}\hypertarget{grouping}{}\input{grouping}
 \chapter{Including Formulas}\label{formulas}\hypertarget{formulas}{}\input{formulas}
+\chapter{Including Tables}\label{tables}\hypertarget{tables}{}\input{tables}
 \chapter{Graphs and diagrams}\label{diagrams}\hypertarget{diagrams}{}\input{diagrams}
 \chapter{Preprocessing}\label{preprocessing}\hypertarget{preprocessing}{}\input{preprocessing}
 \chapter{Automatic link generation}\label{autolink}\hypertarget{autolink}{}\input{autolink}
@@ -112,5 +119,69 @@ Written by Dimitri van Heesch\\[2ex]
 \chapter{Doxygen's internals}\label{arch}\hypertarget{arch}{}\input{arch}
 \chapter{Perl Module Output format}\label{perlmod}\hypertarget{perlmod}{}\input{perlmod}
 \chapter{Internationalization}\label{langhowto}\hypertarget{langhowto}{}\input{langhowto}
+\renewcommand{\thepart}{}
+\part{Appendices}
+\appendix
+%mean that subinputfrom requires a / at the end of the path
+\chapter{Autolink Example}\label{autolink_example}\hypertarget{autolink_example}{}
+\subinputfrom{../html/examples/autolink/latex/}{refman_doc}
+\chapter{Resolving Typedef Example}\label{restypedef_example}\hypertarget{restypedef_example}{}
+\subinputfrom{../html/examples/restypedef/latex/}{refman_doc}
+
+\IfFileExists{../html/examples/diagrams/latex/refman_doc.tex}
+{
+  \chapter{Diagrams Example}\label{diagrams_example}\hypertarget{diagrams_example}{}
+  \subinputfrom{../html/examples/diagrams/latex/}{refman_doc}
+}{}
+
+\chapter{Modules Example}\label{modules_example}\hypertarget{modules_example}{}
+\subinputfrom{../html/examples/group/latex/}{refman_doc}
+\chapter{Member Groups Example}\label{memgrp_example}\hypertarget{memgrp_example}{}
+\subinputfrom{../html/examples/memgrp/latex/}{refman_doc}
+\chapter{After Block Example}\label{afterdoc_example}\hypertarget{afterdoc_example}{}
+\subinputfrom{../html/examples/afterdoc/latex/}{refman_doc}
+\chapter{QT Style Example}\label{qtstyle_example}\hypertarget{qtstyle_example}{}
+\subinputfrom{../html/examples/qtstyle/latex/}{refman_doc}
+\chapter{Javadoc Style Example}\label{jdstyle_example}\hypertarget{jdstyle_example}{}
+\subinputfrom{../html/examples/jdstyle/latex/}{refman_doc}
+\chapter{Structural Commands Example}\label{structcmd_example}\hypertarget{structcmd_example}{}
+\subinputfrom{../html/examples/structcmd/latex/}{refman_doc}
+\chapter{Python Docstring Example}\label{python_example}\hypertarget{python_example}{}
+\subinputfrom{../html/examples/docstring/latex/}{refman_doc}
+\chapter{Python Example}\label{py_example}\hypertarget{py_example}{}
+\subinputfrom{../html/examples/pyexample/latex/}{refman_doc}
+\chapter{VHDL Example}\label{vhdl_example}\hypertarget{vhdl_example}{}
+\subinputfrom{../html/examples/mux/latex/}{refman_doc}
+\chapter{Tcl Example}\label{tcl_example}\hypertarget{tcl_example}{}
+\subinputfrom{../html/examples/tclexample/latex/}{refman_doc}
+
+\chapter{Class Example}\label{class_example}\hypertarget{class_example}{}
+\subinputfrom{../html/examples/class/latex/}{refman_doc}
+\chapter{Define Example}\label{define_example}\hypertarget{define_example}{}
+\subinputfrom{../html/examples/define/latex/}{refman_doc}
+\chapter{Enum Example}\label{enum_example}\hypertarget{enum_example}{}
+\subinputfrom{../html/examples/enum/latex/}{refman_doc}
+\chapter{Example Example}\label{example_example}\hypertarget{example_example}{}
+\subinputfrom{../html/examples/example/latex/}{refman_doc}
+\chapter{Extends/Implements Example}\label{extends_example}\hypertarget{extends_example}{}
+\subinputfrom{../html/examples/manual/latex/}{refman_doc}
+\chapter{File Example}\label{file_example}\hypertarget{file_example}{}
+\subinputfrom{../html/examples/file/latex/}{refman_doc}
+\chapter{Fn Example}\label{fn_example}\hypertarget{fn_example}{}
+\subinputfrom{../html/examples/func/latex/}{refman_doc}
+\chapter{Overload Example}\label{overload_example}\hypertarget{overload_example}{}
+\subinputfrom{../html/examples/overload/latex/}{refman_doc}
+\chapter{Page Example}\label{page_example}\hypertarget{page_example}{}
+\subinputfrom{../html/examples/page/latex/}{refman_doc}
+\chapter{Relates Example}\label{relates_example}\hypertarget{relates_example}{}
+\subinputfrom{../html/examples/relates/latex/}{refman_doc}
+\chapter{Author Example}\label{author_example}\hypertarget{author_example}{}
+\subinputfrom{../html/examples/author/latex/}{refman_doc}
+\chapter{Par Example}\label{par_example}\hypertarget{par_example}{}
+\subinputfrom{../html/examples/par/latex/}{refman_doc}
+\chapter{Include Example}\label{include_example}\hypertarget{include_example}{}
+\subinputfrom{../html/examples/include/latex/}{refman_doc}
+
+
 \printindex
 \end{document}
diff --git a/doc/doxygen_usage.doc b/doc/doxygen_usage.doc
index d84432e..bcb14e8 100644
--- a/doc/doxygen_usage.doc
+++ b/doc/doxygen_usage.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/doxyindexer.1 b/doc/doxyindexer.1
index 7b7a298..ae4b282 100644
--- a/doc/doxyindexer.1
+++ b/doc/doxyindexer.1
@@ -1,4 +1,4 @@
-.TH DOXYINDEXER "1" "DATE" "doxyindexer VERSION" "User Commands"
+.TH DOXYINDEXER "1" "@DATE@" "doxyindexer @VERSION@" "User Commands"
 .SH NAME
 doxyindexer \- creates a search index from raw search data
 .SH SYNOPSIS
diff --git a/doc/doxysearch.1 b/doc/doxysearch.1
index da9ae05..a00124f 100644
--- a/doc/doxysearch.1
+++ b/doc/doxysearch.1
@@ -1,4 +1,4 @@
-.TH DOXYSEARCH "1" "DATE" "doxysearch.cgi VERSION" "User Commands"
+.TH DOXYSEARCH "1" "@DATE@" "doxysearch.cgi @VERSION@" "User Commands"
 .SH NAME
 doxysearch.cgi \- search engine used for searching in doxygen documentation.
 .SH SYNOPSIS
diff --git a/doc/doxywizard.1 b/doc/doxywizard.1
index e3f23c0..9f57701 100644
--- a/doc/doxywizard.1
+++ b/doc/doxywizard.1
@@ -1,4 +1,4 @@
-.TH DOXYWIZARD "1" "DATE" "doxywizard VERSION" "User Commands"
+.TH DOXYWIZARD "1" "@DATE@" "doxywizard @VERSION@" "User Commands"
 .SH NAME
 doxywizard \- a tool to configure and run doxygen on your source files
 .SH SYNOPSIS
diff --git a/doc/doxywizard_usage.doc b/doc/doxywizard_usage.doc
index bec143c..310c358 100644
--- a/doc/doxywizard_usage.doc
+++ b/doc/doxywizard_usage.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/external.doc b/doc/external.doc
index be7d764..c3ec811 100644
--- a/doc/external.doc
+++ b/doc/external.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/extsearch.doc b/doc/extsearch.doc
index e07edd7..6429766 100644
--- a/doc/extsearch.doc
+++ b/doc/extsearch.doc
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/faq.doc b/doc/faq.doc
index 356c42b..bd327a1 100644
--- a/doc/faq.doc
+++ b/doc/faq.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -63,7 +63,7 @@ PREDEFINED             = MY_MACRO()=
       manual for more information.
   </ol> 
 
-\section faq_extract_allWhen I set EXTRACT_ALL to NO none of my functions are shown in the documentation.
+\section faq_extract_all When I set EXTRACT_ALL to NO none of my functions are shown in the documentation.
 
 In order for global functions, variables, enums, typedefs, and defines 
 to be documented you should document the file in which these commands are
@@ -77,6 +77,19 @@ block containing the \ref cmddefgroup "\\defgroup" command.
 For member functions or functions that are part of a namespace you should
 document either the class or namespace.
  
+\section faq_ext_mapping My file with a custom extension is not parsed (properly) (anymore).
+
+Doxygen only parses files that are specified as input (via the \ref cfg_input "INPUT" tag)
+and that match a specified extension (mentioned in \ref cfg_file_patterns "FILE_PATTERNS")
+The list of files is then reduced by excluding files listed as \ref cfg_exclude "EXCLUDE" or 
+files that match the patterns set by \ref cfg_exclude_patterns "EXCLUDE_PATTERNS".
+
+In the past doxygen parsed all files with an unknown extension as C files which could lead to
+undesired results. Since version 1.8.8, doxygen requires that you specify a mapping that tells
+for a certain file extension, which parser to use. 
+This mapping is specified using the \ref cfg_extension_mapping "EXTENSION_MAPPING" tag.
+If no mapping is specified the file's contents will be ignored.
+
 \section faq_code How can I make doxygen ignore some code fragment?
 
 The new and easiest way is to add one comment block 
diff --git a/doc/features.doc b/doc/features.doc
index bd548c2..dd75a9d 100644
--- a/doc/features.doc
+++ b/doc/features.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/formulas.doc b/doc/formulas.doc
index 1a6208e..650751e 100644
--- a/doc/formulas.doc
+++ b/doc/formulas.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -105,7 +105,7 @@ file <code>formula.repository</code> that is written to the html directory to
 get rid of an incorrect formula.
 
 \htmlonly
-Go to the <a href="diagrams.html">next</a> section or return to the
+Go to the <a href="tables.html">next</a> section or return to the
  <a href="index.html">index</a>.
 \endhtmlonly
 
diff --git a/doc/grouping.doc b/doc/grouping.doc
index 4397b76..64102e1 100644
--- a/doc/grouping.doc
+++ b/doc/grouping.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -135,12 +135,17 @@ files to define the hierarchy and \ref cmdweakgroup "\\weakgroup"
 in .c files without having to duplicate the hierarchy exactly.
 
 \par Example:
-\verbinclude group.cpp
+\include group.cpp
 
 \htmlonly
-Click <a href="$(DOXYGEN_DOCDIR)/examples/group/html/modules.html">here</a> 
+</p>
+Click <a href="examples/group/html/modules.html">here</a> 
 for the corresponding HTML documentation that is generated by Doxygen.
 \endhtmlonly
+\latexonly
+See \hyperlink{modules_example}{Modules example}
+for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+\endlatexonly
 
 \section memgroup Member Groups
 
@@ -188,12 +193,17 @@ you should put a \ref cmdnosubgrouping "\\nosubgrouping" command inside the
 documentation of the class. 
 
 \par Example:
-\verbinclude memgrp.cpp
+\include memgrp.cpp
 
 \htmlonly
-Click <a href="$(DOXYGEN_DOCDIR)/examples/memgrp/html/class_test.html">here</a> 
+</p>
+Click <a href="examples/memgrp/html/class_test.html">here</a> 
 for the corresponding HTML documentation that is generated by Doxygen.
 \endhtmlonly
+\latexonly
+See \hyperlink{memgrp_example}{Member Groups example}
+for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
+\endlatexonly
 
 Here Group1 is displayed as a subsection of the "Public Members". And
 Group2 is a separate section because it contains members with
@@ -216,8 +226,10 @@ two groups GA and GB, where GB is part of GA, page A is put in group GA,
 and page B is put in group GB.
 
 \htmlonly
+</p>
 Go to the <a href="formulas.html">next</a> section or return to the
  <a href="index.html">index</a>.
+<p>
 \endhtmlonly
 
 */
diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc
index d041f1e..b8324f8 100644
--- a/doc/htmlcmds.doc
+++ b/doc/htmlcmds.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/index.doc b/doc/index.doc
index 0cb1e59..8b0d403 100644
--- a/doc/index.doc
+++ b/doc/index.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -118,7 +118,7 @@ The third part provides information for developers:
 \addindex license
 \addindex GPL
 
-Copyright © 1997-2014 by 
+Copyright © 1997-2015 by 
 <a href="mailto:dimitri at stack.nl">Dimitri van Heesch</a>.<p>
 
 Permission to use, copy, modify, and distribute this software and its
diff --git a/doc/install.doc b/doc/install.doc
index 9648ade..295154f 100644
--- a/doc/install.doc
+++ b/doc/install.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -35,11 +35,10 @@ following to build the executable:
     \addindex libiconv
     \addindex make
     \addindex strip
+    \addindex python
 <li>In order to generate a \c Makefile for your platform, you need 
-    <a href="http://www.perl.com/">perl</a>
-    \addindex perl
-<li>The configure script assume the availability of standard UNIX tools such 
-    as <code>sed, date, find, uname, mv, cp, cat, echo, tr, cd</code> and \c rm.
+    <a href="http://www.cmake.org/">cmake</a> version 2.8.12 or later.
+    \addindex cmake
 </ul>
 
 To take full advantage of doxygen's features the following additional
@@ -49,7 +48,7 @@ tools should be installed.
 <li>Qt Software's GUI toolkit 
     <a href="http://qt-project.org/">Qt</A>
     \addindex Qt
-    version 4.3 or higher (but currently, Qt 5.x is not supported).
+    version 4.3 or higher (but currently, Qt 5.x is not yet supported).
     This is needed to build the GUI front-end doxywizard. 
 <li>A \LaTeX distribution: for instance
     <a href="http://www.tug.org/interest.html#free">TeX Live</a>
@@ -61,11 +60,10 @@ tools should be installed.
     If you compile graphviz yourself, make sure you do include
     freetype support (which requires the freetype library and header files), 
     otherwise the graphs will not render proper text labels.
-<li>For formulas or if you do not wish to use `pdflatex, the ghostscript interpreter
-    is needed. You can find it at 
+<li>For formulas in the HTML output (when MathJax is not used)
+    or in case you do not wish to use `pdflatex,
+    the ghostscript interpreter is needed. You can find it at 
     <a href="http://www.ghostscript.com/">www.ghostscript.com</a>.
-<li>In order to generate doxygen's own documentation, Python is needed, you
-    can find it  at <a href="http://www.python.org">www.python.org</a>.
 </ul>
 
 Compilation is now done by performing the following steps:
@@ -76,62 +74,46 @@ Compilation is now done by performing the following steps:
         gunzip doxygen-$VERSION.src.tar.gz    # uncompress the archive
         tar xf doxygen-$VERSION.src.tar       # unpack it
 
-<li>Run the configure script:
- 
-        sh ./configure
+<li>Create a build directory (for instance inside the source tree)
 
-    The script tries to determine the platform you use, the make tool 
-    (which \e must be GNU make) and the perl 
-    interpreter. It will report what it finds. 
+        cd doxygen-$VERSION
+        mkdir build
 
-    To override the auto detected platform and compiler you can run
-    configure as follows:
+<li>Run cmake with the makefile generator
 
-        configure --platform platform-type
+        cmake -G "Unix Makefiles" ..
 
-    See the <code>PLATFORMS</code> file for a list of possible platform
-    options.
+    <code>cmake</code> tries to determine the platform you use, and will look
+    for the requires tools. It will report if something is missing.
 
-    If you have Qt-4.3 or higher installed and want to build the GUI 
-    front-end, you should run the configure script with 
-    the `--with-doxywizard` option:
+    If you have Qt-4.3 or higher installed and want to build the GUI
+    front-end, you should enable it as follows:
 
-        configure --with-doxywizard
+        cmake -Dbuild_wizard=YES
 
     For an overview of other configuration options use
 
-        configure --help
+        cmake -L
 
 <li>Compile the program by running make:
 
         make
 
-    The program should compile without problems and the binaries 
-    (<code>doxygen</code> and optionally <code>doxywizard</code>) 
-    should be available in the bin directory of the distribution.
+    The program should compile without problems and the binaries
+    (<code>doxygen</code> and optionally <code>doxywizard</code>)
+    should be available in the bin directory within the build directory.
 
 <li>Optional: Generate the user manual.
     
+        cmake -Dbuild_doc=YES
         make docs
 
-    To let doxygen generate the HTML documentation.
+    To let doxygen generate the HTML and PDF documentation.
     
-    The HTML directory of the distribution will now contain the html 
-    documentation (just point a HTML browser to the file 
-    <code>index.html</code> in the 
-    html directory). You will need the <code>python</code> interpreter 
-    for this.
+    The HTML directory within the build directory will now contain the html
+    documentation (just point a HTML browser to the file
+    <code>index.html</code> in the html directory).
     
-<li>Optional: Generate a PDF version of the manual
-    (you will need <code>pdflatex</code>, <code>makeindex</code>, and
-     <code>egrep</code> for this).
-
-        make pdf
-
-    The PDF manual <code>doxygen_manual.pdf</code> will be located 
-    in the latex directory of the distribution. Just 
-    view and print it via the acrobat reader. 
-
 </ol>
 
 \section install_bin_unix    Installing the binaries on UNIX
@@ -164,107 +146,15 @@ the wrong directory!
 If you have a RPM or DEP package, then please follow the 
 standard installation procedure that is required for these packages. 
 
-\section unix_problems Known compilation problems for UNIX
-
-<b>Qt problems</b>
-
-The Qt include files and libraries are not a subdirectory of the
-directory pointed to by <code>QTDIR</code> on some systems
-(for instance on Red Hat 6.0 includes are in <code>/usr/include/qt</code> and
-libs are in <code>/usr/lib</code>).
-  
-The solution: go to the root of the doxygen distribution and do:
-
-    mkdir qt
-    cd qt
-    ln -s your-qt-include-dir-here include
-    ln -s your-qt-lib-dir-here lib
-    ln -s your-qt-bin-dir-here bin
-    export QTDIR=$PWD
-
-If you have a <code>csh</code>-like shell you should use <code>setenv QTDIR \$PWD</code>
-instead of the <code>export</code> command above.
-  
-Now install doxygen as described above.  
-
-<b>Bison problems</b>
-
-Versions 1.31 to 1.34 of \c bison contain a "bug" that results in a 
-compiler errors like this:
-
-<code>ce_parse.cpp:348: member `class CPPValue yyalloc::yyvs' with </code>
-constructor not allowed in union
-
-This problem has been solved in version 1.35 (versions before 1.31 
-will also work).
-
-<b>Sun compiler problems</b>
-
-It appears that doxygen doesn't work properly if it is compiled 
-with Sun's C++ WorkShop Compiler. I cannot verify this myself as I do 
-not have access to a Solaris machine with this compiler. With GNU compiler
-it does work and installing Sun patch 111679-13 has also been reported 
-as a way to fix the problem.
-
-when configuring with `--static` I got:
-
-\verbatim
-Undefined                       first referenced
- symbol                             in file
-dlclose                             /usr/lib/libc.a(nss_deffinder.o)
-dlsym                               /usr/lib/libc.a(nss_deffinder.o)
-dlopen                              /usr/lib/libc.a(nss_deffinder.o)
-\endverbatim
-
-Manually adding `-Bdynamic` after the target rule in 
-`Makefile.doxygen` will fix this:
-
-    $(TARGET): $(OBJECTS) $(OBJMOC) 
-            $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) -Bdynamic
-
-<b>GCC compiler problems</b>
-
-Older versions of the GNU compiler have problems with constant strings
-containing characters with character codes larger than 127. Therefore 
-the compiler will fail to compile some of the `translator_xx.h` files. 
-A workaround, if you are planning to use the English translation only, 
-is to configure doxygen with the `--english-only` option.  
-
-On some platforms (such as OpenBSD) using some versions of gcc with
--O2 can lead to eating all memory during the compilation of files 
-such as config.cpp. As a workaround use `--debug` as a configure option 
-or omit the `-O2` for the particular files in the Makefile.
-
-Gcc versions before 2.95 may produce broken binaries due to bugs in 
-these compilers. 
-
-<b>Dot problems</b>
-
-Due to a change in the way image maps are generated, older versions
-of doxygen (\<=1.2.17) will not work correctly with newer versions of
-graphviz (\>=1.8.8). The effect of this incompatibility is that
-generated graphs in HTML are not properly clickable. For doxygen 1.3
-it is recommended to use at least graphviz 1.8.10 or higher.
-For doxygen 1.4.7 or higher it is recommended to 
-use GraphViz 2.8 or higher to avoid font issues.
+\section install_src_windows Compiling from source on Windows
 
-<b>Red Hat 9.0 problems</b>
+From version 1.8.10 onwards, build files need to be generated by cmake.
+cmake can be downloaded from http://www.cmake.org/download/
 
-If you get the following error after running make
-\verbatim
-tmake error: qtools.pro:70: Syntax error
-\endverbatim
-then first type
-\verbatim
-export LANG=
-\endverbatim
-before running make.
-
-\section install_src_windows Compiling from source on Windows
+At the moment only the express version of Visual Studio 2013 is tested,
+but other version might also work.
 
-From version 1.7.0 onwards, build files are provided for Visual Studio 2008.
-Also the free (as in beer) "Express" version of Developer Studio can be used to 
-compile doxygen. Alternatively, you can compile doxygen 
+Alternatively, you can compile doxygen 
 \ref install_src_unix "the UNIX way" using 
 <a href="http://en.wikipedia.org/wiki/Cygwin">Cygwin</a>
 or <a href="http://www.mingw.org/">MinGW</a>.
@@ -273,13 +163,11 @@ The next step is to install modern versions of \c bison and \c flex
 (see http://sourceforge.net/projects/winflexbison. After installation and adding them to
 your `path` rename `win_flex.exe` to `flex.exe` and `win_bison.exe` to `bison.exe`)
 Furthermore you have to install \c python (version 2.6 or higher, see http://www.python.org).
-These packages are needed during the
-compilation process if you use a GitHub snapshot of doxygen (the official source releases 
-come with pre-generated sources).
+These packages are needed during the compilation process.
 
 Download doxygen's source tarball and put it somewhere (e.g. use <code>c:\\tools</code>)
 
-Now start a new command shell and type
+Now start a visual studio native command shell (for either x86 or x64) and type
 \verbatim
 cd c:\tools
 tar zxvf doxygen-x.y.z.src.tar.gz
@@ -288,12 +176,14 @@ to unpack the sources (you can obtain \c tar from e.g. http://gnuwin32.sourcefor
 Alternatively you can use an unpack program, like 7-Zip (see http://www.7-zip.org)
 or use the build in unpack feature of modern Windows systems).
 
-Now your environment is setup to build \c doxygen.
+Now your environment is setup to generate the required project files for \c doxygen.
 
-Inside the \c doxygen-x.y.z directory you will find a \c winbuild directory 
-containing a \c Doxygen.sln file. Open this file in Visual Studio. 
-You can now build the Release or Debug flavor of Doxygen by right-clicking
-the project in the solutions explorer, and selecting Build.
+cd into the \c doxygen-x.y.z directory, create and cd to a build directory
+\verbatim
+mkdir build
+cd build
+cmake -G "Visual Studio 12 2013"
+\endverbatim
 
 Note that compiling Doxywizard currently requires Qt version 4
 (see http://qt-project.org/).
@@ -301,149 +191,6 @@ Note that compiling Doxywizard currently requires Qt version 4
 Also read the next section for additional tools you may need to install to run
 doxygen with certain features enabled.
 
-<!--
-
-Currently, I have only compiled doxygen for Windows using Microsoft's 
-Visual C++ (). For other compilers you may need to edit the 
-perl script in <code>wintools/make.pl</code> a bit. 
-Let me know what you had to change if you got Doxygen working with another 
-compiler. If you have Visual Studio you can also use the .dsw file found in
-the <code>wintools</code> directory. Note that this file is not maintained
-by me, so it might be outdated a little.
-
-If you have Visual C++ 6.0, and the source distribution, you can easily
-build doxygen using the project files in the \c wintools directory. If
-you want to build the CVS sources, or want to build from the command line,
-or with another compiler, you have to follow the steps below.
-
-Thomas Baust reported that if you have Visual Studio.NET (2003) then 
-you should be aware that there is a problem with the _popen() and _pclose() 
-implementation, which currently leaks handles, so if you build doxygen with 
-it and use the INPUT_FILTER, you will run to risk of crashing Windows! 
-The problem is reported to and confirmed by Microsoft so maybe it will 
-fixed in the next service pack.
-
-Since Windows comes without all the nice tools that UNIX users are
-used to, you'll need to install a number of these tools before you can compile 
-doxygen for Windows from the command-line.
-
-Here is what is required:
-<ul>
-<li>An unzip/untar tool like WinZip to unpack the tar source distribution. 
-    This can be found at http://www.winzip.com/  
-
-    The good, tested, and free alternative is the <code>tar</code> utility
-    supplied with <a href="http://sourceware.cygnus.com/cygwin/">cygwin
-    tools</a>. Anyway, the Cygwin's \c flex, \c bison, and \c sed are also
-    recommended below.
-
-<li>Microsoft Visual C++ (I only tested with version 6.0).
-    Use the <code>vcvars32.bat</code> batch file to set the environment 
-    variables (if you did not select to do this automatically during 
-    installation). 
-
-    Borland C++ or MINGW (see http://www.mingw.org/) are also supported. 
-
-<li>Perl 5.0 or higher for Windows. This can be downloaded from:
-    http://www.ActiveState.com/Products/ActivePerl/
-
-<li>The GNU tools \c flex, \c bison, and \c sed.
-    To get these working on Windows you should install the 
-    <a href="http://sources.redhat.com/cygwin/">cygwin tools</a>
-    
-    Alternatively, you can also choose to 
-    download only a <a href="http://www.doxygen.org/dl/cygwin_tools.zip">small subset</a> 
-    of the cygwin tools that I put together just to compile doxygen.
-
-    As a third alternative one could use the GNUWin32 tools that can be
-    found at http://gnuwin32.sourceforge.net/ 
-    
-    Make sure the <code>BISON_SIMPLE</code> environment variable points to the
-    location where the files <code>bison.simple</code> and 
-    is located. For instance if these file is in
-    <code>c:\\tools\\cygwin\\usr\\share</code> then BISON_SIMPLE should 
-    be set to <code>c:/tools/cygwin/usr/share/bison.simple</code>
-
-    Also make sure the tools are available from a dos box, by adding 
-    the directory they are in to the search path.
-    
-    For those of you who are very new to cygwin (if you are going to
-    install it from scratch), you should notice that there is an
-    archive file <code>bootstrap.zip</code> which also contains the
-    <code>tar</code> utility (<code>tar.exe</code>), <code>gzip</code>
-    utilities, and the <code>cygwin1.dll</code> core. This also means
-    that you have the <code>tar</code> in hands from the start. It
-    can be used to unpack the tar source distribution instead of
-    using WinZip -- as mentioned at the beginning of this list of
-    steps.
-
-<li>From Doxygen-1.2.2-20001015 onwards, the distribution includes the part
-    of Qt that is needed for to compile doxygen.
-    The Windows specific part were also created.
-    As a result doxygen (without the wizard) can be compiled on systems 
-    without X11 or (the commercial version of) Qt.
-
-<li>If you used WinZip to extract the tar archive it will (apparently) not 
-    create empty folders, so you have to add the folders
-    <code>objects</code> and <code>bin</code> manually in the root of the 
-    distribution before compiling.
-
-</ul>
-
-
-Compilation is now done by performing the following steps:
-
-<ol>
-<li>Open a dos box.
-    Make sure all tools (i.e. <code>nmake</code>, <code>latex</code>, 
-    <code>gswin32</code>, <code>dvips</code>, <code>sed</code>, 
-    <code>flex</code>, <code>bison</code>, <code>cl</code>,
-    <code>rm</code>, and <code>perl</code>), are accessible from
-    the command-line (add them to the PATH environment variable if
-    needed).
-
-    Notice: The use of \LaTeX is optional and only needed for compilation
-    of the documentation into PostScript or PDF. 
-    It is \e not needed for compiling the doxygen's binaries. 
-    
-<li>Go to the doxygen root dir and type:
-
-\verbatim
-    make.bat msvc
-\endverbatim
-
-    This should build the executable
-    <code>doxygen.exe</code> using Microsoft's Visual C++ compiler
-    (The compiler should not produce any serious warnings or errors).
-
-    You can use also the <code>bcc</code> argument to build
-    executables using the Borland C++ compiler, or
-    <code>mingw</code> argument to compile using GNU gcc.
-
-<li>To build the examples, go to the <code>examples</code> subdirectory
-    and type:
-
-\verbatim
-    nmake
-\endverbatim
-
-<li>To generate the doxygen documentation, go to the <code>doc</code> 
-    subdirectory and type:
-
-\verbatim
-    nmake
-\endverbatim
-
-    The generated HTML docs are located in the <code>..\\html</code>
-    subdirectory.
-
-    The sources for \LaTeX documentation are located in the <code>..\\latex</code>
-    subdirectory. From those sources, the DVI, PostScript, and PDF
-    documentation can be generated. 
-</ol>
-
--->
-
 \section install_bin_windows Installing the binaries on Windows
 
 Doxygen comes as a self-installing archive, so installation is extremely simple.
@@ -481,85 +228,6 @@ latex.exe, pdflatex.exe, and gswin32c.exe are present in the search path of a
 command box. Follow <a href="http://www.computerhope.com/issues/ch000549.htm">these</a>
 instructions if you are unsure and run the commands from a command box to verify it works.
 
-<!--
-There is no fancy installation procedure at the moment (if anyone can
-add it in a location independent way please let me know).
-
-To install doxygen, just copy the binaries from the <code>bin</code> directory
-to a location somewhere in the path. Alternatively, you can include 
-the <code>bin</code> directory of the distribution to the path.
-
-There are a couple of tools you may want to install to use all of doxygen's
-features:
-
-<ul>
-<li>To generate \LaTeX documentation or formulas in HTML you need the tools:
-    <code>latex</code>, <code>dvips</code> and <code>gswin32</code>. 
-    To get these working under Windows
-    install the fpTeX distribution. You can find more info at:
-    http://www.fptex.org/ and download it from CTAN or one of its mirrors.
-    In the Netherlands for example this would be: 
-    ftp://ftp.easynet.nl/mirror/CTAN/systems/win32/fptex/
-
-    Make sure the tools are available from a dos box, by adding the 
-    directory they are in to the search path.
-
-    For your information, \LaTeX is a freely available set of so
-    called macros and styles on the top of the famous \TeX program
-    (by famous Donald Knuth) and the accompanied utilities (all
-    available for free). It is used for high quality
-    typesetting. The result -- in the form of so called
-    <code>DVI</code> (DeVice Independent) file -- can be printed or
-    displayed on various devices preserving exactly the same look up
-    to the capability of the device. The <code>dvips</code> allows you
-    to convert the <code>dvi</code> to the high quality PostScript
-    (i.e. PostScript that can be processed by utilities like 
-    <code>psnup</code>, <code>psbook</code>, <code>psselect</code>,
-    and others). The derived version of \TeX (the pdfTeX) can be used
-    to produce PDF output instead of DVI, or the PDF can be produced
-    from PostScript using the utility <code>ps2pdf</code>.
-
-    If you want to use MikTeX then you need to select at least the 
-    medium size installation. For really old versions of MikTex or minimal 
-    installations, you may need to download the fancyhdr package separately. 
-    You can find it in the 
-    <a href="ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/supported/fancyhdr/">
-    contrib/supported</a> directory of the tex archives.
-
-<li>If you want to generate compressed HTML help 
-    (see \ref cfg_generate_htmlhelp "GENERATE_HTMLHELP") in the 
-    config file, then you need the Microsoft HTML help workshop. 
-    You can download it from 
-    <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/vsconHH1Start.asp">Microsoft</a>.
-
-<li>If you want to produce Qt Compressed Help files (see \ref 
-    cfg_qhelgenerator_loc "QHG_LOCATION") in the config file,
-    then you need qhelpgenerator which is part of Qt. 
-    You can download Qt from
-    <a href="http://qt-project.org/downloads">Qt Software Downloads</a>.
-
-<li><a href="http://www.graphviz.org/">
-    the Graph visualization toolkit version 1.8.10</a><br>
-    Needed for the include dependency graphs, the graphical inheritance graphs,
-    and the collaboration graphs.
-</ul>
-
--->
-
-\section build_tools Tools used to develop doxygen
-
-Doxygen was developed and tested under Linux & MacOSX using the following 
-open-source tools:
-<ul>
-<li>GCC version 4.6.3 (Linux) and 4.2.1 (MacOSX)
-<li>GNU flex version 2.5.35 
-<li>GNU bison version 2.5 (Linux) and 2.3 (MacOSX)
-<li>GNU make version 3.81
-<li>Perl version 5.12
-<li>Python version 2.7 and 3.4
-<li>TeX Live 2009 (or later)
-</ul>
-
 \htmlonly
 Go to the <a href="starting.html">next</a> section or return to the
  <a href="index.html">index</a>.
diff --git a/doc/language.doc b/doc/language.doc
deleted file mode 100644
index b96fa44..0000000
--- a/doc/language.doc
+++ /dev/null
@@ -1,773 +0,0 @@
-/******************************************************************************
- * Do not edit this file. It was generated by the translator.py script. * Instead edit language.tpl and maintainers.txt
- *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
- * for any purpose. It is provided "as is" without express or implied warranty.
- * See the GNU General Public License for more details.
- *
- * Documents produced by doxygen are derivative works derived from the
- * input used in their production; they are not affected by this license.
- *
- */
-/*! \page langhowto Internationalization
-
-<h3>Support for multiple languages</h3>
-
-Doxygen has built-in support for multiple languages. This means that the
-text fragments, generated by doxygen, can be produced in languages other
-than English (the default). The output language is chosen through the
-configuration option \ref cfg_output_language "OUTPUT_LANGUAGE" in the 
-configuration file (with default name and known as Doxyfile).
-
-Currently (version 1.8.8), 40 languages
-are supported (sorted alphabetically):
-Afrikaans, Arabic, Armenian, Brazilian Portuguese, Catalan, Chinese,
-Chinese Traditional, Croatian, Czech, Danish, Dutch, English,
-Esperanto, Finnish, French, German, Greek, Hungarian, Indonesian,
-Italian, Japanese (+En), Korean (+En), Latvian, Lithuanian,
-Macedonian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian,
-Serbian, SerbianCyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-Ukrainian, and Vietnamese..
-
-The table of information related to the supported languages follows.
-It is sorted by language alphabetically.  The <b>Status</b> column
-was generated from sources and shows approximately the last version
-when the translator was updated.
-
-\htmlonly
-<table align="center" cellspacing="0" cellpadding="0" border="0">
-<tr bgcolor="#000000">
-<td>
-  <table cellspacing="1" cellpadding="2" border="0">
-  <tr bgcolor="#4040c0">
-  <td ><b><font size="+1" color="#ffffff"> Language </font></b></td>
-  <td ><b><font size="+1" color="#ffffff"> Maintainer </font></b></td>
-  <td ><b><font size="+1" color="#ffffff"> Contact address </font>
-          <font size="-2" color="#ffffff">(replace the at and dot)</font></b></td>
-  <td ><b><font size="+1" color="#ffffff"> Status </font></b></td>
-  </tr>
-  <!-- table content begin -->
-
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Afrikaans</td>
-    <td>Johan Prinsloo</td>
-    <td>johan at zippysnoek dot com</td>
-    <td bgcolor="#ffcccc">1.6.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ff5555">Arabic</td>
-    <td>Moaz Reyad<br/>Muhammad Bashir Al-Noimi</td>
-    <td><span style="color: brown">[resigned]</span><br/>mbnoimi at gmail dot com</td>
-    <td bgcolor="#ff5555">1.4.6</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Armenian</td>
-    <td>Armen Tangamyan</td>
-    <td>armen dot tangamyan at anu dot edu dot au</td>
-    <td bgcolor="#ffffcc">1.8.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Brazilian Portuguese</td>
-    <td>Fabio "FJTC" Jun Takada Chino</td>
-    <td>jun-chino at uol dot com dot br</td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Catalan</td>
-    <td>Maximiliano Pin<br/>Albert Mora</td>
-    <td>max dot pin at bitroit dot com<br/><span style="color: brown">[unreachable]</span></td>
-    <td bgcolor="#ffffcc">1.8.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Chinese</td>
-    <td>Lian Yang<br/>Li Daobing<br/>Wei Liu</td>
-    <td>lian dot yang dot cn at gmail dot com<br/>lidaobing at gmail dot com<br/>liuwei at asiainfo dot com</td>
-    <td bgcolor="#ffffcc">1.8.2</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Chinese Traditional</td>
-    <td>Daniel YC Lin<br/>Gary Lee</td>
-    <td>dlin dot tw at gmail dot com<br/>garywlee at gmail dot com</td>
-    <td bgcolor="#ffffff">almost up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Croatian</td>
-    <td>Boris Bralo</td>
-    <td>boris dot bralo at gmail dot com</td>
-    <td bgcolor="#ffffcc">1.8.2</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Czech</td>
-    <td>Petr Přikryl</td>
-    <td>prikryl at atlas dot cz</td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Danish</td>
-    <td>Poul-Erik Hansen<br/>Erik Søe Sørensen</td>
-    <td>pouhan at gnotometrics dot dk<br/>eriksoe+doxygen at daimi dot au dot dk</td>
-    <td bgcolor="#ffffcc">1.8.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Dutch</td>
-    <td>Dimitri van Heesch</td>
-    <td>dimitri at stack dot nl</td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">English</td>
-    <td>Dimitri van Heesch</td>
-    <td>dimitri at stack dot nl</td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Esperanto</td>
-    <td>Ander Martínez</td>
-    <td>ander dot basaundi at gmail dot com</td>
-    <td bgcolor="#ffffcc">1.8.4</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Finnish</td>
-    <td>Antti Laine</td>
-    <td>antti dot a dot laine at tut dot fi</td>
-    <td bgcolor="#ffcccc">1.6.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">French</td>
-    <td>David Martinet<br/>Xavier Outhier<br/>Benoît BROSSE</td>
-    <td>contact at e-concept-applications dot fr<br/>xouthier at yahoo dot fr<br/>Benoit dot BROSSE at ingenico dot com</td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">German</td>
-    <td>Peter Grotrian<br/>Jens Seidel</td>
-    <td>Peter dot Grotrian at pdv-FS dot de<br/>jensseidel at users dot sf dot net</td>
-    <td bgcolor="#ffffcc">1.8.4</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Greek</td>
-    <td>Paul Gessos</td>
-    <td>gessos dot paul at yahoo dot gr</td>
-    <td bgcolor="#ffffcc">1.8.4</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ff5555">Hungarian</td>
-    <td>Ákos Kiss<br/>Földvári György</td>
-    <td>akiss at users dot sourceforge dot net<br/><span style="color: brown">[unreachable]</span></td>
-    <td bgcolor="#ff5555">1.4.6</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Indonesian</td>
-    <td>Hendy Irawan</td>
-    <td>ceefour at gauldong dot net</td>
-    <td bgcolor="#ffffcc">1.8.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Italian</td>
-    <td>Alessandro Falappa<br/>Ahmed Aldo Faisal</td>
-    <td>alessandro at falappa dot net<br/>aaf23 at cam dot ac dot uk</td>
-    <td bgcolor="#ffffcc">1.8.2</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Japanese</td>
-    <td>Suzumizaki-Kimikata<br/>Hiroki Iseri<br/>Ryunosuke Satoh<br/>Kenji Nagamatsu<br/>Iwasa Kazmi</td>
-    <td>szmml at h12u.com<br/>goyoki at gmail dot com<br/>sun594 at hotmail dot com<br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span></td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">JapaneseEn</td>
-    <td>see the Japanese language</td>
-    <td> </td>
-    <td bgcolor="#ccffcc">English based</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Korean</td>
-    <td>Kim Taedong<br/>SooYoung Jung<br/>Richard Kim</td>
-    <td>fly1004 at gmail dot com<br/>jung5000 at gmail dot com<br/><span style="color: brown">[unreachable]</span></td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">KoreanEn</td>
-    <td>see the Korean language</td>
-    <td> </td>
-    <td bgcolor="#ccffcc">English based</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Latvian</td>
-    <td>Lauris</td>
-    <td>lauris at nix.lv</td>
-    <td bgcolor="#ffffcc">1.8.4</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ff5555">Lithuanian</td>
-    <td>Tomas Simonaitis<br/>Mindaugas Radzius<br/>Aidas Berukstis<br/><span style="color: red; background-color: yellow">-- searching for the maintainer --</span></td>
-    <td><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[Please, try to help to find someone.]</span></td>
-    <td bgcolor="#ff5555">1.4.6</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Macedonian</td>
-    <td>Slave Jovanovski</td>
-    <td>slavejovanovski at yahoo dot com</td>
-    <td bgcolor="#ffcccc">1.6.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ff5555">Norwegian</td>
-    <td>Lars Erik Jordet</td>
-    <td>lejordet at gmail dot com</td>
-    <td bgcolor="#ff5555">1.4.6</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Persian</td>
-    <td>Ali Nadalizadeh</td>
-    <td>nadalizadeh at gmail dot com</td>
-    <td bgcolor="#ffcccc">1.7.5</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Polish</td>
-    <td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td>
-    <td><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span><br/>krzysztof dot kral at gmail dot com</td>
-    <td bgcolor="#ffffcc">1.8.2</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Portuguese</td>
-    <td>Rui Godinho Lopes<br/>Fabio "FJTC" Jun Takada Chino</td>
-    <td><span style="color: brown">[resigned]</span><br/>jun-chino at uol dot com dot br</td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Romanian</td>
-    <td>Ionut Dumitrascu<br/>Alexandru Iosup</td>
-    <td>reddumy at yahoo dot com<br/>aiosup at yahoo dot com</td>
-    <td bgcolor="#ffffff">almost up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Russian</td>
-    <td>Brilliantov Kirill Vladimirovich<br/>Alexandr Chelpanov</td>
-    <td>brilliantov at byterg dot ru<br/>cav at cryptopro dot ru</td>
-    <td bgcolor="#ffffff">almost up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Serbian</td>
-    <td>Dejan Milosavljevic</td>
-    <td><span style="color: brown">[unreachable]</span></td>
-    <td bgcolor="#ffcccc">1.6.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">SerbianCyrillic</td>
-    <td>Nedeljko Stefanovic</td>
-    <td>stenedjo at yahoo dot com</td>
-    <td bgcolor="#ffcccc">1.6.0</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Slovak</td>
-    <td>Kali+Laco Švec<br/>Petr Přikryl</td>
-    <td><span style="color: brown">[the Slovak language advisors]</span><br/>prikryl at atlas dot cz</td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ff5555">Slovene</td>
-    <td>Matjaž Ostroveršnik</td>
-    <td>matjaz dot ostroversnik at ostri dot org</td>
-    <td bgcolor="#ff5555">1.4.6</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Spanish</td>
-    <td>Bartomeu<br/>Francisco Oltra Thennet<br/>David Vaquero</td>
-    <td>bartomeu at loteria3cornella dot com<br/><span style="color: brown">[unreachable]</span><br/>david at grupoikusnet dot com</td>
-    <td bgcolor="#ccffcc">up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Swedish</td>
-    <td>Björn Palmqvist</td>
-    <td>bjorn.palmqvist at aidium.se</td>
-    <td bgcolor="#ffffff">almost up-to-date</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Turkish</td>
-    <td>Emin Ilker Cetinbas</td>
-    <td>niw3 at yahoo dot com</td>
-    <td bgcolor="#ffcccc">1.7.5</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Ukrainian</td>
-    <td>Olexij Tkatchenko<br/>Petro  Yermolenko</td>
-    <td><span style="color: brown">[resigned]</span><br/>python at i dot ua</td>
-    <td bgcolor="#ffffcc">1.8.4</td>
-  </tr>
-  <tr bgcolor="#ffffff">
-    <td bgcolor="#ffffff">Vietnamese</td>
-    <td>Dang Minh Tuan</td>
-    <td>tuanvietkey at gmail dot com</td>
-    <td bgcolor="#ffcccc">1.6.0</td>
-  </tr>
-  <!-- table content end -->
-  </table>
-</td>
-</tr>
-</table>
-\endhtmlonly
-
-
-\latexonly
-\footnotesize
-\begin{longtable}{|l|l|l|l|}
-  \hline
-  {\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
-  \hline
-
-  \hline
-  Afrikaans & Johan Prinsloo & {\tt\tiny johan at zippysnoek dot com} & 1.6.0 \\
-  \hline
-  Arabic & Moaz Reyad & {\tt\tiny [resigned] moazreyad at yahoo dot com} & 1.4.6 \\
-  ~ & Muhammad Bashir Al-Noimi & {\tt\tiny mbnoimi at gmail dot com} & ~ \\
-  \hline
-  Armenian & Armen Tangamyan & {\tt\tiny armen dot tangamyan at anu dot edu dot au} & 1.8.0 \\
-  \hline
-  Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino at uol dot com dot br} & up-to-date \\
-  \hline
-  Catalan & Maximiliano Pin & {\tt\tiny max dot pin at bitroit dot com} & 1.8.0 \\
-  ~ & Albert Mora & {\tt\tiny [unreachable] amora at iua dot upf dot es} & ~ \\
-  \hline
-  Chinese & Lian Yang & {\tt\tiny lian dot yang dot cn at gmail dot com} & 1.8.2 \\
-  ~ & Li Daobing & {\tt\tiny lidaobing at gmail dot com} & ~ \\
-  ~ & Wei Liu & {\tt\tiny liuwei at asiainfo dot com} & ~ \\
-  \hline
-  Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin dot tw at gmail dot com} & almost up-to-date \\
-  ~ & Gary Lee & {\tt\tiny garywlee at gmail dot com} & ~ \\
-  \hline
-  Croatian & Boris Bralo & {\tt\tiny boris dot bralo at gmail dot com} & 1.8.2 \\
-  \hline
-  Czech & Petr Přikryl & {\tt\tiny prikryl at atlas dot cz} & up-to-date \\
-  \hline
-  Danish & Poul-Erik Hansen & {\tt\tiny pouhan at gnotometrics dot dk} & 1.8.0 \\
-  ~ & Erik Søe Sørensen & {\tt\tiny eriksoe+doxygen at daimi dot au dot dk} & ~ \\
-  \hline
-  Dutch & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\
-  \hline
-  English & Dimitri van Heesch & {\tt\tiny dimitri at stack dot nl} & up-to-date \\
-  \hline
-  Esperanto & Ander Martínez & {\tt\tiny ander dot basaundi at gmail dot com} & 1.8.4 \\
-  \hline
-  Finnish & Antti Laine & {\tt\tiny antti dot a dot laine at tut dot fi} & 1.6.0 \\
-  \hline
-  French & David Martinet & {\tt\tiny contact at e-concept-applications dot fr} & up-to-date \\
-  ~ & Xavier Outhier & {\tt\tiny xouthier at yahoo dot fr} & ~ \\
-  ~ & Benoît BROSSE & {\tt\tiny Benoit dot BROSSE at ingenico dot com} & ~ \\
-  \hline
-  German & Peter Grotrian & {\tt\tiny Peter dot Grotrian at pdv-FS dot de} & 1.8.4 \\
-  ~ & Jens Seidel & {\tt\tiny jensseidel at users dot sf dot net} & ~ \\
-  \hline
-  Greek & Paul Gessos & {\tt\tiny gessos dot paul at yahoo dot gr} & 1.8.4 \\
-  \hline
-  Hungarian & Ákos Kiss & {\tt\tiny akiss at users dot sourceforge dot net} & 1.4.6 \\
-  ~ & Földvári György & {\tt\tiny [unreachable] foldvari lost at cyberspace} & ~ \\
-  \hline
-  Indonesian & Hendy Irawan & {\tt\tiny ceefour at gauldong dot net} & 1.8.0 \\
-  \hline
-  Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & 1.8.2 \\
-  ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23 at cam dot ac dot uk} & ~ \\
-  \hline
-  Japanese & Suzumizaki-Kimikata & {\tt\tiny szmml at h12u.com} & up-to-date \\
-  ~ & Hiroki Iseri & {\tt\tiny goyoki at gmail dot com} & ~ \\
-  ~ & Ryunosuke Satoh & {\tt\tiny sun594 at hotmail dot com} & ~ \\
-  ~ & Kenji Nagamatsu & {\tt\tiny [unreachable] naga at joyful dot club dot ne dot jp} & ~ \\
-  ~ & Iwasa Kazmi & {\tt\tiny [unreachable] iwasa at cosmo-system dot jp} & ~ \\
-  \hline
-  JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
-  \hline
-  Korean & Kim Taedong & {\tt\tiny fly1004 at gmail dot com} & up-to-date \\
-  ~ & SooYoung Jung & {\tt\tiny jung5000 at gmail dot com} & ~ \\
-  ~ & Richard Kim & {\tt\tiny [unreachable] ryk at dspwiz dot com} & ~ \\
-  \hline
-  KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
-  \hline
-  Latvian & Lauris & {\tt\tiny lauris at nix.lv} & 1.8.4 \\
-  \hline
-  Lithuanian & Tomas Simonaitis & {\tt\tiny [unreachable] haden at homelan dot lt} & 1.4.6 \\
-  ~ & Mindaugas Radzius & {\tt\tiny [unreachable] mindaugasradzius at takas dot lt} & ~ \\
-  ~ & Aidas Berukstis & {\tt\tiny [unreachable] aidasber at takas dot lt} & ~ \\
-  ~ & -- searching for the maintainer -- & {\tt\tiny [Please, try to help to find someone.]} & ~ \\
-  \hline
-  Macedonian & Slave Jovanovski & {\tt\tiny slavejovanovski at yahoo dot com} & 1.6.0 \\
-  \hline
-  Norwegian & Lars Erik Jordet & {\tt\tiny lejordet at gmail dot com} & 1.4.6 \\
-  \hline
-  Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh at gmail dot com} & 1.7.5 \\
-  \hline
-  Polish & Piotr Kaminski & {\tt\tiny [unreachable] Piotr dot Kaminski at ctm dot gdynia dot pl} & 1.8.2 \\
-  ~ & Grzegorz Kowal & {\tt\tiny [unreachable] g\_kowal at poczta dot onet dot pl} & ~ \\
-  ~ & Krzysztof Kral & {\tt\tiny krzysztof dot kral at gmail dot com} & ~ \\
-  \hline
-  Portuguese & Rui Godinho Lopes & {\tt\tiny [resigned] rgl at ruilopes dot com} & up-to-date \\
-  ~ & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino at uol dot com dot br} & ~ \\
-  \hline
-  Romanian & Ionut Dumitrascu & {\tt\tiny reddumy at yahoo dot com} & almost up-to-date \\
-  ~ & Alexandru Iosup & {\tt\tiny aiosup at yahoo dot com} & ~ \\
-  \hline
-  Russian & Brilliantov Kirill Vladimirovich & {\tt\tiny brilliantov at byterg dot ru} & almost up-to-date \\
-  ~ & Alexandr Chelpanov & {\tt\tiny cav at cryptopro dot ru} & ~ \\
-  \hline
-  Serbian & Dejan Milosavljevic & {\tt\tiny [unreachable] dmilos at email dot com} & 1.6.0 \\
-  \hline
-  SerbianCyrillic & Nedeljko Stefanovic & {\tt\tiny stenedjo at yahoo dot com} & 1.6.0 \\
-  \hline
-  Slovak & Kali+Laco Švec & {\tt\tiny [the Slovak language advisors]} & up-to-date \\
-  ~ & Petr Přikryl & {\tt\tiny prikryl at atlas dot cz} & ~ \\
-  \hline
-  Slovene & Matjaž Ostroveršnik & {\tt\tiny matjaz dot ostroversnik at ostri dot org} & 1.4.6 \\
-  \hline
-  Spanish & Bartomeu & {\tt\tiny bartomeu at loteria3cornella dot com} & up-to-date \\
-  ~ & Francisco Oltra Thennet & {\tt\tiny [unreachable] foltra at puc dot cl} & ~ \\
-  ~ & David Vaquero & {\tt\tiny david at grupoikusnet dot com} & ~ \\
-  \hline
-  Swedish & Björn Palmqvist & {\tt\tiny bjorn.palmqvist at aidium.se} & almost up-to-date \\
-  \hline
-  Turkish & Emin Ilker Cetinbas & {\tt\tiny niw3 at yahoo dot com} & 1.7.5 \\
-  \hline
-  Ukrainian & Olexij Tkatchenko & {\tt\tiny [resigned] olexij at tkatchenko dot com} & 1.8.4 \\
-  ~ & Petro  Yermolenko & {\tt\tiny python at i dot ua} & ~ \\
-  \hline
-  Vietnamese & Dang Minh Tuan & {\tt\tiny tuanvietkey at gmail dot com} & 1.6.0 \\
-  \hline
-\end{longtable}
-\normalsize
-\endlatexonly
-
-
-Most people on the list have indicated that they were also busy
-doing other things, so if you want to help to speed things up please
-let them (or me) know.
-
-If you want to add support for a language that is not yet listed
-please read the next section.
-
-
-<h3>Adding a new language to doxygen</h3>
-
-This short HOWTO explains how to add support for the new language to doxygen:
-
-Just follow the following steps:
-<ol>
-<li>Tell me for which language you want to add support. If no one else
-    is already working on support for that language, you will be
-    assigned as the maintainer for the language.
-<li>Create a copy of `doxygen/src/translator_en.h` and name it
-    `doxygen/src/translator_<your_2_letter_country_code>.h`
-    I'll use `xx` in the rest of this document (and `XX` for the uppercase version).
-<li>Edit `doxygen/src/language.cpp`:
-    Add the following code:
-\verbatim
-#ifdef LANG_XX
-#include<translator_xx.h>
-#endif
-\endverbatim
-    Remember to use the same symbol `LANG_XX` that was added to `doxygen/src/lang_cfg.h`.
-    <p>Now, in <code>setTranslator()</code> add
-\verbatim
-#ifdef LANG_XX
-    else if (L_EQUAL("your_language_name"))
-    {
-      theTranslator = new TranslatorYourLanguage;
-    }
-#endif
-\endverbatim
-    after the <code>if { ... }</code>. I.e., it must be placed after the code
-    for creating the English translator at the beginning, and before the
-    <code>else { ... }</code> part that creates the translator for the
-    default language (English again).
-<li>Edit <code>doxygen/src/translator_xx.h</code>:
-   <ul>
-   <li>Use the UTF-8 capable editor and open the file using the UTF-8 mode.
-   <li>Rename <code>TRANSLATOR_EN_H</code> to <code>TRANSLATOR_XX_H</code>
-       twice (i.e. in the \c \#ifndef and \c \#define preprocessor commands at
-       the beginning of the file).
-   <li>Rename \c TranslatorEnglish to \c TranslatorYourLanguage
-   <li>In the member <code>idLanguage()</code> change "english" into the
-     name of your language (use lower case characters only). Depending
-     on the language you may also wish to change the member functions
-     `latexLanguageSupportCommand()` and other (you will recognize them when
-     you start the work).
-   <li>Edit all the strings that are returned by the member functions that
-     start with \c tr.
-     Try to match punctuation and capitals!
-     To enter special characters (with accents) you can:
-     <ul>
-     <li>  Enter them directly if your keyboard supports that. Recall that
-           the text is expected to be saved using the UTF-8 encoding. Doxygen
-           will translate the characters to proper \LaTeX and
-           leaves the HTML and man output in UTF-8.
-     <li>  Use HTML codes like \c \ä for an \c a with an \c umlaut (i.e. \c ä).
-           See the HTML specification for the codes.
-     </ul>
-   </ul>
-<li>
-    <ul>
-      <li>On *nix systems:<br>
-    <ul>
-        <li>Rerun the `configure` script from the root (i.e. in the \c doxygen  directory) so
-        that it generates `doxygen/src/lang_cfg.h`.
-        This file should now contain a  \c \#define for your language code.<br>
-        <li>Run \c make again from the root (i.e. in the \c doxygen
-        directory) of the distribution, in order to regenerate the `Makefile`s.
-    </ul>
-      <li> On Windows:<br>
-    <ul>
-       <li>stop Visual Stdio<br>
-       <li>open a command window<br>
-       <li>goto the directory `doxygen\src`<br>
-       <li>give the command `python languages.py > ..\winbuild\Languages.rules`<br>
-       <li>close the command window<br>
-       <li>start Visual Studio again<br>
-       <li>Your language should now be selectable in the `General` part of the `Settings` of the `Properties`
-       window of `lang_cfg.py`, by default Your language will be `on`. Rebuild `doxygen` (and `doxywizard`) now.
-    </ul>
-    </ul>
-<li>Now you can use <code>OUTPUT_LANGUAGE = your_language_name</code>
-    in the config file to generate output in your language.
-<li>Send <code>translator_xx.h</code> to me so I can add it to doxygen.
-    Send also your name and e-mail address to be included in the
-    \c maintainers.txt list. You can also clone the doxygen repository
-    at GitHub and make a Pull Request later.
-</ol>
-
-
-<h3>Maintaining a language</h3>
-
-New versions of doxygen may use new translated sentences.  In such
-situation, the \c Translator class requires implementation of new
-methods -- its interface changes.  Of course, the English
-sentences need to be translated to the other languages.  At least,
-new methods have to be implemented by the language-related
-translator class; otherwise, doxygen wouldn't even compile.  Waiting
-until all language maintainers have translated the new sentences and
-sent the results would not be very practical. The following text
-describes the usage of translator adapters to solve the problem.
-
-<b>The role of Translator Adapters.</b>
-Whenever the \c Translator class interface changes in the new
-release, the new class \c TranslatorAdapter_x_y_z is added to the \c
-translator_adapter.h file (here x, y, and z are numbers that
-correspond to the current official version of doxygen). All
-translators that previously derived from the \c Translator class now
-derive from this adapter class.
-
-The \c TranslatorAdapter_x_y_z class implements the new, required
-methods.  If the new method replaces some similar but obsolete
-method(s) (e.g. if the number of arguments changed and/or the
-functionality of the older method was changed or enriched), the \c
-TranslatorAdapter_x_y_z class may use the obsolete method to get the
-result which is as close as possible to the older result in the
-target language.  If it is not possible, the result (the default
-translation) is obtained using the English translator, which is (by
-definition) always up-to-date.
-
-<b>For example,</b> when the new \c trFile() method with
-parameters (to determine the capitalization of the first letter and
-the singular/plural form) was introduced to replace the older method
-\c trFiles() without arguments, the following code appeared in one
-of the translator adapter classes:
-
-\verbatim
-    /*! This is the default implementation of the obsolete method
-     * used in the documentation of a group before the list of
-     * links to documented files.  This is possibly localized.
-     */
-    virtual QCString trFiles()
-    { return "Files"; }
-
-    /*! This is the localized implementation of newer equivalent
-     * using the obsolete method trFiles().
-     */
-    virtual QCString trFile(bool first_capital, bool singular)
-    {
-      if (first_capital && !singular)
-        return trFiles();  // possibly localized, obsolete method
-      else
-        return english.trFile(first_capital, singular);
-    }
-\endverbatim
-
-The \c trFiles() is not present in the \c TranslatorEnglish class,
-because it was removed as obsolete.  However, it was used until now
-and its call was replaced by
-
-\verbatim
-    trFile(true, false)
-\endverbatim
-
-in the doxygen source files.  Probably, many language translators
-implemented the obsolete method, so it perfectly makes sense to use
-the same language dependent result in those cases. The \c
-TranslatorEnglish does not implement the old method.  It derives
-from the abstract \c Translator class.  On the other hand, the old
-translator for a different language does not implement the new \c
-trFile() method.  Because of that it is derived from another base
-class -- \c TranslatorAdapter_x_y_z. The \c TranslatorAdapter_x_y_z
-class has to implement the new, required \c trFile() method.
-However, the translator adapter would not be compiled if the \c
-trFiles() method was not implemented. This is the reason for
-implementing the old method in the translator adapter class (using
-the same code, that was removed from the TranslatorEnglish).
-
-The simplest way would be to pass the arguments to the English
-translator and to return its result.  Instead, the adapter uses the
-old \c trFiles() in one special case -- when the new
-<code>trFile(true, false)</code> is called.  This is the
-mostly used case at the time of introducing the new method -- see
-above.  While this may look too complicated, the technique allows
-the developers of the core sources to change the Translator
-interface, while the users may not even notice the change.  Of
-course, when the new \c trFile() is used with different arguments,
-the English result is returned and it will be noticed by non English
-users.  Here the maintainer of the language translator should
-implement at least that one particular method.
-
-<b>What says the base class of a language translator?</b>
-If the language translator class inherits from any adapter class then
-maintenance is needed.  In such case, the language translator is
-considered not up-to-date.  On the other hand, if the language
-translator derives directly from the abstract class \c Translator, the
-language translator is up-to-date.
-
-The translator adapter classes are chained so that the older
-translator adapter class uses the one-step-newer translator adapter
-as the base class.  The newer adapter does less \e adapting work
-than the older one.  The oldest adapter class derives (indirectly)
-from all of the adapter classes.  The name of the adapter class is
-chosen so that its suffix is derived from the previous official
-version of doxygen that did not need the adapter.  This way, one can
-say approximately, when the language translator class was last
-updated -- see details below.
-
-The newest translator adapter derives from the abstract \c
-TranslatorAdapterBase class that derives directly from the abstract
-\c Translator class.  It adds only the private English-translator
-member for easy implementation of the default translation inside the
-adapter classes, and it also enforces implementation of one method
-for notifying the user that the language translation is not up-to-date
-(because of that some sentences in the generated files may appear in
-English).
-
-Once the oldest adapter class is not used by any of the language
-translators, it can be removed from the doxygen project.  The
-maintainers should try to reach the state with the minimal number of
-translator adapter classes.
-
-<b>To simplify the maintenance of the language translator classes</b>
-for the supported languages, the \c translator.py Python
-script was developed (located in \c doxygen/doc directory).
-It extracts the important information about obsolete and
-new methods from the source files for each of the languages.
-The information is stored in the translator report ASCII file
-(\c translator_report.txt).
-
-\htmlonly If you compiled this documentation
-from sources and if you have also doxygen sources available the
-link <a href="../doc/translator_report.txt"
-><code>doxygen/doc/translator_report.txt</code></a> should be valid.\endhtmlonly
-
-Looking at the base class of the language translator, the script
-guesses also the status of the translator -- see the last column of
-the table with languages above.  The \c translator.py is called
-automatically when the doxygen documentation is generated.  You can
-also run the script manually whenever you feel that it can help you.
-Of course, you are not forced to use the results of the script.  You
-can find the same information by looking at the adapter class and
-its base classes.
-
-<b>How should I update my language translator?</b> First, you
-should be the language maintainer, or you should let him/her know
-about the changes.  The following text was written for the language
-maintainers as the primary audience.
-
-There are several approaches to be taken when updating your
-language.  If you are not extremely busy, you should always chose
-the most radical one.  When the update takes much more time than you
-expected, you can always decide use some suitable translator adapter to
-finish the changes later and still make your translator working.
-
-<b>The most radical way of updating the language translator</b> is
-to make your translator class derive directly
-from the abstract class \c Translator and provide translations for the
-methods that are required to be implemented -- the compiler will
-tell you if you forgot to implement some of them.  If you are in
-doubt, have a look at the \c TranslatorEnglish class to recognize the
-purpose of the implemented method.  Looking at the previously used
-adapter class may help you sometimes, but it can also be misleading
-because the adapter classes do implement also the obsolete methods
-(see the previous \c trFiles() example).
-
-In other words, the up-to-date language translators do not need the
-\c TranslatorAdapter_x_y_z classes at all, and you do not need to
-implement anything else than the methods required by the Translator
-class (i.e. the pure virtual methods of the \c Translator -- they
-end with <code>=0;</code>).
-
-If everything compiles fine, try to run \c translator.py, and have a
-look at the translator report (ASCII file) at the \c doxygen/doc
-directory. Your translator is marked as up-to-date only if the script
-does not detect anything special. If the translator uses the \c Translator
-base class, there still may be some remarks related to your source code.
-In the case, the translator is marked as <em>almost up-to-date</em>.
-Namely, the obsolete methods--that are not used at all--may be listed in the
-section for your language. Simply, remove their code (and run the \c
-translator.py again). Also, you will be informed when you forgot to
-change the base class of your translator class to some newer adapter
-class or directly to the Translator class.
-
-<b>If you do not have time to finish all the updates</b> you should
-still start with <em>the most radical approach</em> as described
-above.  You can always change the base class to the translator
-adapter class that implements all of the not-yet-implemented methods.
-
-<b>If you prefer to update your translator gradually</b>, have a look
-at \c TranslatorEnglish (the \c translator_en.h file). Inside, you
-will find the comments like <code>new since 1.2.4</code> that separate
-always a number of methods that were implemented in the stated
-version. Do implement the group of methods that are placed below the
-comment that uses the same version numbers as your translator adapter
-class. (For example, your translator class have to use the \c
-TranslatorAdapter_1_2_4, if it does not implement the methods below
-the comment <code>new since 1.2.4</code>. When you implement them,
-your class should use a newer translator adapter.
-
-Run the \c translator.py script occasionally and give it your \c xx
-identification (from \c translator_xx.h) to create the translator
-report shorter (also produced faster) -- it will contain only the
-information related to your translator. Once you reach the state when
-the base class should be changed to some newer adapter, you will see
-the note in the translator report.
-
-Warning: Don't forget to compile doxygen to discover, whether it is
-compilable. The \c translator.py does not check if everything is
-correct with respect to the compiler. Because of that, it may lie
-sometimes about the necessary base class.
-
-<b>The most obsolete language translators</b> would lead to
-implementation of too complicated adapters. Because of that, doxygen
-developers may decide to derive such translators from the \c
-TranslatorEnglish class, which is by definition always up-to-date.
-
-When doing so, all the missing methods will be replaced by the
-English translation.  This means that not-implemented methods will
-always return the English result.  Such translators are marked using
-the word \c obsolete.  You should read it <b>really obsolete</b>. No
-guess about the last update can be done.
-
-Often, it is possible to construct better result from the obsolete
-methods.  Because of that, the translator adapter classes should be
-used if possible.  On the other hand, implementation of adapters for
-really obsolete translators brings too much maintenance and
-run-time overhead.
-
-\htmlonly
-Go to the <a href="perlmod.html">next</a> section or return to the
- <a href="index.html">index</a>.
-\endhtmlonly
-
-*/
-
diff --git a/doc/language.tpl b/doc/language.tpl
index 78e3e97..01d906b 100644
--- a/doc/language.tpl
+++ b/doc/language.tpl
@@ -5,7 +5,7 @@ change the language.doc, make the changes here and inside maintainers.txt.
 /******************************************************************************
  * %(editnote)s
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/doc/mailto.txt b/doc/mailto.txt
index b1675e6..d3bc505 100644
--- a/doc/mailto.txt
+++ b/doc/mailto.txt
@@ -1,8 +1,8 @@
 up-to-date
-jun-chino at uol.com.br; prikryl at atlas.cz; dimitri at stack.nl; dimitri at stack.nl; contact at e-concept-applications.fr; xouthier at yahoo.fr; Benoit.BROSSE at ingenico.com; szmml at h12u.com; goyoki at gmail.com; sun594 at hotmail.com; fly1004 at gmail.com; jung5000 at gmail.com; jun-chino at uol.com.br; prikryl at atlas.cz; bartomeu at loteria3cornella.com; david at grupoikusnet.com
+jun-chino at uol.com.br; dlin.tw at gmail.com; garywlee at gmail.com; prikryl at atlas.cz; dimitri at stack.nl; dimitri at stack.nl; contact at e-concept-applications.fr; xouthier at yahoo.fr; Benoit.BROSSE at ingenico.com; szmml at h12u.com; goyoki at gmail.com; sun594 at hotmail.com; fly1004 at gmail.com; jung5000 at gmail.com; jun-chino at uol.com.br; prikryl at atlas.cz; bartomeu at loteria3cornella.com; david at grupoikusnet.com; bjorn.palmqvist at aidium.se
 
 almost up-to-date
-dlin.tw at gmail.com; garywlee at gmail.com; reddumy at yahoo.com; aiosup at yahoo.com; brilliantov at byterg.ru; cav at cryptopro.ru; bjorn.palmqvist at aidium.se
+reddumy at yahoo.com; aiosup at yahoo.com; brilliantov at byterg.ru; cav at cryptopro.ru
 
 translator based
 python at i.ua; lauris at nix.lv; gessos.paul at yahoo.gr; Peter.Grotrian at pdv-FS.de; jensseidel at users.sf.net; ander.basaundi at gmail.com; krzysztof.kral at gmail.com; alessandro at falappa.net; aaf23 at cam.ac.uk; boris.bralo at gmail.com; lian.yang.cn at gmail.com; lidaobing at gmail.com; liuwei at asiainfo.com; ceefour at gauldong.net; pouhan at gnotometrics.dk; eriksoe+doxygen at daimi.au.dk; max.pin at bitroit.com; armen.tangamyan at anu.edu.au; niw3 at yahoo.com; nadalizadeh at gmail.com; tuanvietkey at gmail.com; stenedjo at yahoo.com; sla [...]
\ No newline at end of file
diff --git a/doc/maintainers.txt b/doc/maintainers.txt
index 30afcd5..2c11a17 100644
--- a/doc/maintainers.txt
+++ b/doc/maintainers.txt
@@ -81,7 +81,7 @@ TranslatorIndonesian
 Hendy Irawan: ceefour at gauldong dot net
 
 TranslatorItalian
-Alessandro Falappa: alessandro at falappa dot net
+Alessandro Falappa: alex dot falappa at gmail dot com
 Ahmed Aldo Faisal: aaf23 at cam dot ac dot uk
 
 TranslatorJapanese
diff --git a/doc/manual.sty b/doc/manual.sty
new file mode 100644
index 0000000..80fbda6
--- /dev/null
+++ b/doc/manual.sty
@@ -0,0 +1,33 @@
+% Use helvetica font instead of times roman
+\RequirePackage{helvet}
+\RequirePackage{sectsty}
+\RequirePackage{tocloft}
+\providecommand{\rmdefault}{phv}
+\providecommand{\bfdefault}{bc}
+\usepackage[T1]{fontenc}
+
+% Setup fancy headings
+\RequirePackage{fancyhdr}
+\pagestyle{fancyplain}
+\newcommand{\clearemptydoublepage}{%
+  \newpage{\pagestyle{empty}\cleardoublepage}%
+}
+\renewcommand{\chaptermark}[1]{%
+  \markboth{#1}{}%
+}
+\renewcommand{\sectionmark}[1]{%
+  \markright{\thesection\ #1}%
+}
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
+\fancyhead[CE]{\fancyplain{}{}}
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
+\fancyhead[CO]{\fancyplain{}{}}
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
+\fancyfoot[LE]{\fancyplain{}{}}
+\fancyfoot[CE]{\fancyplain{}{}}
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen @VERSION@ }}
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen @VERSION@ }}
+\fancyfoot[CO]{\fancyplain{}{}}
+\fancyfoot[RO]{\fancyplain{}{}}
+
diff --git a/doc/markdown.doc b/doc/markdown.doc
index e97b29e..cec2191 100644
--- a/doc/markdown.doc
+++ b/doc/markdown.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -337,6 +337,8 @@ which will look as follows:
 | 10    | 10     | 10    |
 | 1000  | 1000   | 1000  |
 
+For more complex tables in doxygen please have a look at: \ref tables
+
 \subsection md_fenced Fenced Code Blocks
 
 Another feature defined by "Markdown Extra" is support for
@@ -390,6 +392,12 @@ int func(int a,int b) { return a*b; }
 
 The curly braces and dot are optional by the way.
 
+Another way to denote fenced code blocks is to use 3 or more backticks (```):
+
+    ```
+    also a fenced code block
+    ```
+
 \subsection md_header_id Header Id Attributes
 
 Standard Markdown has no support for labeling headers, which
@@ -431,7 +439,7 @@ details).
 By default the name and title of the page are derived from the file name.
 If the file starts with a level 1 header however, it is used as the title
 of the page. If you specify a label for the 
-header (as shown \ref md_header_id "here") doxygen will use that as the
+header (as shown in \ref md_header_id) doxygen will use that as the
 page name. 
 
 If the label is called `index` or `mainpage` doxygen will put the
diff --git a/doc/output.doc b/doc/output.doc
index 2cb81bd..3a24a60 100644
--- a/doc/output.doc
+++ b/doc/output.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/preprocessing.doc b/doc/preprocessing.doc
index 0ba9b12..d62bbb3 100644
--- a/doc/preprocessing.doc
+++ b/doc/preprocessing.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/searching.doc b/doc/searching.doc
index 25dcc3a..dcf858f 100644
--- a/doc/searching.doc
+++ b/doc/searching.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/starting.doc b/doc/starting.doc
index a465d3f..081ef8b 100644
--- a/doc/starting.doc
+++ b/doc/starting.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/tables.doc b/doc/tables.doc
new file mode 100644
index 0000000..5dc166d
--- /dev/null
+++ b/doc/tables.doc
@@ -0,0 +1,95 @@
+/******************************************************************************
+ *
+ *
+ *
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+/*! \page tables Including tables
+
+Doxygen supports two ways to put tables in the documentation.
+
+The easiest is to use the Markdown format as shown in @ref markdown_extra section @ref md_tables.
+
+Although this format is easy to use and read, it is also rather limited.
+It supports only a simple grid of cells, while each cell is a
+single line of plain text.
+
+For more complex tables the HTML syntax can be used. Doxygen
+will process such tables and translate them to the various output formats
+(at least for the formats that do support tables such as HTML and \LaTeX).
+
+Here is an example of a complex table:
+
+\verbatim
+<table>
+<caption id="multi_row">Complex table</caption>
+<tr><th>Column 1                      <th>Column 2        <th>Column 3
+<tr><td rowspan="2">cell row=1+2,col=1<td>cell row=1,col=2<td>cell row=1,col=3
+<tr><td rowspan="2">cell row=2+3,col=2                    <td>cell row=2,col=3
+<tr><td>cell row=3,col=1                                  <td rowspan="2">cell row=3+4,col=3
+<tr><td colspan="2">cell row=4,col=1+2
+<tr><td>cell row=5,col=1              <td colspan="2">cell row=5,col=2+3
+<tr><td colspan="2" rowspan="2">cell row=6+7,col=1+2      <td>cell row=6,col=3
+<tr>                                                      <td>cell row=7,col=3
+<tr><td>cell row=8,col=1              <td>cell row=8,col=2\n
+  <table>
+    <tr><td>Inner cell row=1,col=1<td>Inner cell row=1,col=2
+    <tr><td>Inner cell row=2,col=1<td>Inner cell row=2,col=2
+  </table>
+  <td>cell row=8,col=3
+  <ul>
+    <li>Item 1
+    <li>Item 2
+  </ul>
+</table>
+\endverbatim
+
+It has a caption, table heading, various row and column spans,
+a nested table as one of the cells, and a item list in another cell.
+
+Note that the end tags (like `</td>`) are left out in the example above.
+This is allowed, and in the HTML output doxygen will add the end tags again.
+
+The output will look as follows:
+
+<table>
+<caption id="multi_row">Complex table</caption>
+<tr><th>Column 1                      <th>Column 2        <th>Column 3
+<tr><td rowspan="2">cell row=1+2,col=1<td>cell row=1,col=2<td>cell row=1,col=3
+<tr><td rowspan="2">cell row=2+3,col=2                    <td>cell row=2,col=3
+<tr><td>cell row=3,col=1                                  <td rowspan="2">cell row=3+4,col=3
+<tr><td colspan="2">cell row=4,col=1+2
+<tr><td>cell row=5,col=1              <td colspan="2">cell row=5,col=2+3
+<tr><td colspan="2" rowspan="2">cell row=6+7,col=1+2      <td>cell row=6,col=3
+<tr>                                                      <td>cell row=7,col=3
+<tr><td>cell row=8,col=1              <td>cell row=8,col=2\n
+  <table>
+    <tr><td>Inner cell row=1,col=1<td>Inner cell row=1,col=2
+    <tr><td>Inner cell row=2,col=1<td>Inner cell row=2,col=2
+  </table>
+  <td>cell row=8,col=3
+  <ul>
+    <li>Item 1
+    <li>Item 2
+  </ul>
+</table>
+
+One can refer to the caption of the table using \ref cmdref "\\ref" using the caption's
+id as the label.
+
+\htmlonly
+Go to the <a href="diagrams.html">next</a> section or return to the
+ <a href="index.html">index</a>.
+\endhtmlonly
+
+*/
diff --git a/doc/translator.py b/doc/translator.py
index 19277be..1d470b4 100644
--- a/doc/translator.py
+++ b/doc/translator.py
@@ -1796,7 +1796,9 @@ class TrManager:
         # document template.
         tplDic = {}
 
-        s = 'Do not edit this file. It was generated by the %s script. * Instead edit %s and %s' % (self.script_name, self.languageTplFileName, self.maintainersFileName)
+        s = ('Do not edit this file. It was generated by the %s script.\n' +\
+             ' * Edit the %s and %s files instead.') % (
+             self.script_name, self.languageTplFileName, self.maintainersFileName)
         tplDic['editnote'] = s
 
         tplDic['doxVersion'] = self.doxVersion
@@ -1812,6 +1814,7 @@ class TrManager:
         # Define templates for HTML table parts of the documentation.
         htmlTableTpl = '''\
             \\htmlonly
+			</p>
             <table align="center" cellspacing="0" cellpadding="0" border="0">
             <tr bgcolor="#000000">
             <td>
@@ -1830,6 +1833,7 @@ class TrManager:
             </td>
             </tr>
             </table>
+			<p>
             \\endhtmlonly
             '''
         htmlTableTpl = textwrap.dedent(htmlTableTpl)
@@ -1987,17 +1991,14 @@ if __name__ == '__main__':
 
     # The Python 2.6+ or 3.3+ is required.
     major, minor, patch = (int(e) for e in platform.python_version_tuple())
-    print(major, minor, patch)
     if (major == 2 and minor < 6) or (major == 3 and minor < 0):
         print('Python 2.6+ or Python 3.0+ are required for the script')
         sys.exit(1)
 
-    # The translator manager builds the transl objects, parses the related
+    # The translator manager builds the Transl objects, parses the related
     # sources, and keeps them in memory.
     trMan = TrManager()
 
-    # Generate the language.doc.
+    # Process the Transl objects and generate the output files.
     trMan.generateLanguageDoc()
-
-    # Generate the translator report.
     trMan.generateTranslatorReport()
diff --git a/doc/translator_report.txt b/doc/translator_report.txt
deleted file mode 100644
index 6143c54..0000000
--- a/doc/translator_report.txt
+++ /dev/null
@@ -1,1138 +0,0 @@
-(1.8.8)
-
-Doxygen supports the following 40 languages (sorted alphabetically):
-
-Afrikaans, Arabic, Armenian, Brazilian Portuguese, Catalan, Chinese,
-Chinese Traditional, Croatian, Czech, Danish, Dutch, English,
-Esperanto, Finnish, French, German, Greek, Hungarian, Indonesian,
-Italian, Japanese (+En), Korean (+En), Latvian, Lithuanian,
-Macedonian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian,
-Serbian, SerbianCyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-Ukrainian, and Vietnamese.
-
-Of them, 14 translators are up-to-date, 26 translators are based on
-some adapter class, and 2 are English based.
-
-----------------------------------------------------------------------
-The following translator classes are up-to-date (sorted
-alphabetically). This means that they derive from the Translator
-class, they implement all 242 of the required methods, and even minor
-problems were not spotted by the script:
-
-  TranslatorBrazilian
-  TranslatorCzech
-  TranslatorDutch
-  TranslatorEnglish
-  TranslatorFrench
-  TranslatorJapanese
-  TranslatorKorean
-  TranslatorPortuguese
-  TranslatorSlovak
-  TranslatorSpanish
-
-----------------------------------------------------------------------
-The following translator classes are ALMOST up-to-date (sorted
-alphabetically). This means that they derive from the Translator
-class, but there still may be some minor problems listed for them:
-
-  TranslatorChinesetraditional	-- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()
-  TranslatorRomanian	-- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()
-  TranslatorRussian	-- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()
-  TranslatorSwedish	-- The "translate me!" found in a comment.
-		The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()
-
-----------------------------------------------------------------------
-The following translator classes need maintenance (the most obsolete
-at the end). The other info shows the estimation of Doxygen version
-when the class was last updated and number of methods that must be
-implemented to become up-to-date:
-
-  TranslatorUkrainian             1.8.4 	 8 methods to implement (3 %)
-  TranslatorLatvian               1.8.4 	 8 methods to implement (3 %)
-  TranslatorGreek                 1.8.4 	 8 methods to implement (3 %)
-  TranslatorGerman                1.8.4 	 8 methods to implement (3 %)
-  TranslatorEsperanto             1.8.4 	 8 methods to implement (3 %)
-  TranslatorPolish                1.8.2 	14 methods to implement (5 %)
-  TranslatorItalian               1.8.2 	15 methods to implement (6 %)
-  TranslatorCroatian              1.8.2 	15 methods to implement (6 %)
-  TranslatorChinese               1.8.2 	15 methods to implement (6 %)
-  TranslatorIndonesian            1.8.0 	22 methods to implement (9 %)
-  TranslatorDanish                1.8.0 	22 methods to implement (9 %)
-  TranslatorCatalan               1.8.0 	22 methods to implement (9 %)
-  TranslatorArmenian              1.8.0 	22 methods to implement (9 %)
-  TranslatorTurkish               1.7.5 	25 methods to implement (10 %)
-  TranslatorPersian               1.7.5 	25 methods to implement (10 %)
-  TranslatorVietnamese            1.6.0 	33 methods to implement (13 %)
-  TranslatorSerbian               1.6.0 	33 methods to implement (13 %)
-  TranslatorSerbianCyrillic       1.6.0 	33 methods to implement (13 %)
-  TranslatorMacedonian            1.6.0 	33 methods to implement (13 %)
-  TranslatorFinnish               1.6.0 	33 methods to implement (13 %)
-  TranslatorAfrikaans             1.6.0 	33 methods to implement (13 %)
-  TranslatorSlovene               1.4.6 	57 methods to implement (23 %)
-  TranslatorNorwegian             1.4.6 	55 methods to implement (22 %)
-  TranslatorLithuanian            1.4.6 	57 methods to implement (23 %)
-  TranslatorHungarian             1.4.6 	57 methods to implement (23 %)
-  TranslatorArabic                1.4.6 	55 methods to implement (22 %)
-
-----------------------------------------------------------------------
-The following translator classes derive directly from the
-TranslatorEnglish. The class identifier has the suffix 'En' that says
-that this is intentional. Usually, there is also a non-English based
-version of the translator for the language:
-
-  TranslatorJapaneseEn	implements 4 methods
-  TranslatorKoreanEn	implements 4 methods
-
-======================================================================
-WARNING: The following translator methods are declared in the
-Translator class but their identifiers do not appear in source files.
-The situation should be checked. The .cpp files and .h files excluding
-the '*translator*' files in doxygen/src directory were simply searched
-for occurrence of the method identifiers:
-
-  QCString trBug()
-  QCString trBugList()
-  QCString trDeprecated()
-  QCString trDeprecatedList()
-  QCString trTest()
-  QCString trTestList()
-  QCString trTodo()
-  QCString trTodoList()
-
-
-======================================================================
-Details for translators (classes sorted alphabetically):
-
-
-
-TranslatorAfrikaans   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
--------------------
-
-  Implements 209 of the required methods (86 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorArabic   (TranslatorAdapter_1_4_6)  55 methods to implement (22 %)
-----------------
-
-  Implements 187 of the required methods (77 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCallerGraph()
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trCompoundIndexFortran()
-    virtual QCString trCompoundListDescriptionFortran()
-    virtual QCString trCompoundListFortran()
-    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
-    virtual QCString trCompoundMembersFortran()
-    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDataTypes()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trLoading()
-    virtual QCString trMemberFunctionDocumentationFortran()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trModule(bool first_capital, bool singular)
-    virtual QCString trModuleReference(const char * namespaceName)
-    virtual QCString trModulesIndex()
-    virtual QCString trModulesList()
-    virtual QCString trModulesListDescription(bool extractAll)
-    virtual QCString trModulesMemberDescription(bool extractAll)
-    virtual QCString trModulesMembers()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trSubprogram(bool first_capital, bool singular)
-    virtual QCString trSubprogramDocumentation()
-    virtual QCString trSubprograms()
-    virtual QCString trTemplateParameters()
-    virtual QCString trType(bool first_capital, bool singular)
-    virtual QCString trTypeConstraints()
-    virtual QCString trTypeDocumentation()
-
-  Obsolete methods (should be removed, never used):
-
-    virtual QCString trBugsAndLimitations()
-    virtual QCString trField(bool/*first_capital*/, bool singular)
-    virtual QCString trHeaderFiles()
-    virtual QCString trHeaderFilesDescription()
-    virtual QCString trNoDescriptionAvailable()
-    virtual QCString trPackageDocumentation()
-    virtual QCString trReimplementedForInternalReasons()
-    virtual QCString trSources()
-
-
-TranslatorArmenian   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
-------------------
-
-  Implements 220 of the required methods (90 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorCatalan   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
------------------
-
-  Implements 220 of the required methods (90 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorChinese   (TranslatorAdapter_1_8_2)  15 methods to implement (6 %)
------------------
-
-  Implements 227 of the required methods (93 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trDesignOverview()
-    virtual QCString trExtendsClass()
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-
-TranslatorChinesetraditional   (Translator)
-----------------------------
-
-  Implements 242 of the required methods (100 %).
-
-
-TranslatorCroatian   (TranslatorAdapter_1_8_2)  15 methods to implement (6 %)
-------------------
-
-  Implements 227 of the required methods (93 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trDesignOverview()
-    virtual QCString trExtendsClass()
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-
-TranslatorDanish   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
-----------------
-
-  Implements 220 of the required methods (90 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorEsperanto   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
--------------------
-
-  Implements 234 of the required methods (96 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trInterfaces()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-
-TranslatorFinnish   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
------------------
-
-  Implements 209 of the required methods (86 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorGerman   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
-----------------
-
-  Implements 234 of the required methods (96 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trInterfaces()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-
-TranslatorGreek   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
----------------
-
-  Implements 234 of the required methods (96 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trInterfaces()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-
-TranslatorHungarian   (TranslatorAdapter_1_4_6)  57 methods to implement (23 %)
--------------------
-
-  Implements 185 of the required methods (76 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCallerGraph()
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trCompoundIndexFortran()
-    virtual QCString trCompoundListDescriptionFortran()
-    virtual QCString trCompoundListFortran()
-    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
-    virtual QCString trCompoundMembersFortran()
-    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDataTypes()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trEnumerationValueDocumentation()
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMemberFunctionDocumentationFortran()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trModule(bool first_capital, bool singular)
-    virtual QCString trModuleReference(const char * namespaceName)
-    virtual QCString trModulesIndex()
-    virtual QCString trModulesList()
-    virtual QCString trModulesListDescription(bool extractAll)
-    virtual QCString trModulesMemberDescription(bool extractAll)
-    virtual QCString trModulesMembers()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trSubprogram(bool first_capital, bool singular)
-    virtual QCString trSubprogramDocumentation()
-    virtual QCString trSubprograms()
-    virtual QCString trTemplateParameters()
-    virtual QCString trType(bool first_capital, bool singular)
-    virtual QCString trTypeConstraints()
-    virtual QCString trTypeDocumentation()
-
-
-TranslatorIndonesian   (TranslatorAdapter_1_8_0)  22 methods to implement (9 %)
---------------------
-
-  Implements 220 of the required methods (90 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorItalian   (TranslatorAdapter_1_8_2)  15 methods to implement (6 %)
------------------
-
-  Implements 227 of the required methods (93 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trDesignOverview()
-    virtual QCString trExtendsClass()
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-
-TranslatorJapaneseEn   (TranslatorEnglish)  238 methods to implement (98 %)
---------------------
-
-  Implements 4 of the required methods (1 %).
-
-  This English-based translator implements the following methods:
-
-    virtual QCString idLanguage()
-    virtual QCString latexLanguageSupportCommand()
-    virtual QCString trRTFCharSet()
-    virtual QCString trRTFansicp()
-
-
-TranslatorKoreanEn   (TranslatorEnglish)  238 methods to implement (98 %)
-------------------
-
-  Implements 4 of the required methods (1 %).
-
-  This English-based translator implements the following methods:
-
-    virtual QCString idLanguage()
-    virtual QCString latexLanguageSupportCommand()
-    virtual QCString trRTFCharSet()
-    virtual QCString trRTFansicp()
-
-
-TranslatorLatvian   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
------------------
-
-  Implements 234 of the required methods (96 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trInterfaces()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-
-TranslatorLithuanian   (TranslatorAdapter_1_4_6)  57 methods to implement (23 %)
---------------------
-
-  Implements 185 of the required methods (76 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCallerGraph()
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trCompoundIndexFortran()
-    virtual QCString trCompoundListDescriptionFortran()
-    virtual QCString trCompoundListFortran()
-    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
-    virtual QCString trCompoundMembersFortran()
-    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDataTypes()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trEnumerationValueDocumentation()
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMemberFunctionDocumentationFortran()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trModule(bool first_capital, bool singular)
-    virtual QCString trModuleReference(const char * namespaceName)
-    virtual QCString trModulesIndex()
-    virtual QCString trModulesList()
-    virtual QCString trModulesListDescription(bool extractAll)
-    virtual QCString trModulesMemberDescription(bool extractAll)
-    virtual QCString trModulesMembers()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trSubprogram(bool first_capital, bool singular)
-    virtual QCString trSubprogramDocumentation()
-    virtual QCString trSubprograms()
-    virtual QCString trTemplateParameters()
-    virtual QCString trType(bool first_capital, bool singular)
-    virtual QCString trTypeConstraints()
-    virtual QCString trTypeDocumentation()
-
-
-TranslatorMacedonian   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
---------------------
-
-  Implements 209 of the required methods (86 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorNorwegian   (TranslatorAdapter_1_4_6)  55 methods to implement (22 %)
--------------------
-
-  Implements 187 of the required methods (77 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCallerGraph()
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trCompoundIndexFortran()
-    virtual QCString trCompoundListDescriptionFortran()
-    virtual QCString trCompoundListFortran()
-    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
-    virtual QCString trCompoundMembersFortran()
-    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDataTypes()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trLoading()
-    virtual QCString trMemberFunctionDocumentationFortran()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trModule(bool first_capital, bool singular)
-    virtual QCString trModuleReference(const char * namespaceName)
-    virtual QCString trModulesIndex()
-    virtual QCString trModulesList()
-    virtual QCString trModulesListDescription(bool extractAll)
-    virtual QCString trModulesMemberDescription(bool extractAll)
-    virtual QCString trModulesMembers()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trSubprogram(bool first_capital, bool singular)
-    virtual QCString trSubprogramDocumentation()
-    virtual QCString trSubprograms()
-    virtual QCString trTemplateParameters()
-    virtual QCString trType(bool first_capital, bool singular)
-    virtual QCString trTypeConstraints()
-    virtual QCString trTypeDocumentation()
-
-  Obsolete methods (should be removed, never used):
-
-    virtual QCString trBugsAndLimitations()
-    virtual QCString trField(bool first_capital, bool singular)
-    virtual QCString trHeaderFiles()
-    virtual QCString trHeaderFilesDescription()
-    virtual QCString trNoDescriptionAvailable()
-    virtual QCString trPackageDocumentation()
-    virtual QCString trReimplementedForInternalReasons()
-    virtual QCString trSources()
-
-
-TranslatorPersian   (TranslatorAdapter_1_7_5)  25 methods to implement (10 %)
------------------
-
-  Implements 217 of the required methods (89 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorPolish   (TranslatorAdapter_1_8_2)  14 methods to implement (5 %)
-----------------
-
-  Implements 228 of the required methods (94 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trDesignOverview()
-    virtual QCString trExtendsClass()
-    virtual QCString trInstanceMethods()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-  Obsolete methods (should be removed, never used):
-
-    QCString trBugsAndLimitations()
-    virtual QCString trField(bool first_capital, bool singular)
-    QCString trHeaderFiles()
-    QCString trHeaderFilesDescription()
-    QCString trNoDescriptionAvailable()
-    virtual QCString trPackageDocumentation()
-    QCString trReimplementedForInternalReasons()
-    QCString trSources()
-
-
-TranslatorRomanian   (Translator)
-------------------
-
-  Implements 242 of the required methods (100 %).
-
-
-TranslatorRussian   (Translator)
------------------
-
-  Implements 242 of the required methods (100 %).
-
-
-TranslatorSerbian   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
------------------
-
-  Implements 209 of the required methods (86 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorSerbianCyrillic   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
--------------------------
-
-  Implements 209 of the required methods (86 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorSlovene   (TranslatorAdapter_1_4_6)  57 methods to implement (23 %)
------------------
-
-  Implements 185 of the required methods (76 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCallerGraph()
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trCompoundIndexFortran()
-    virtual QCString trCompoundListDescriptionFortran()
-    virtual QCString trCompoundListFortran()
-    virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
-    virtual QCString trCompoundMembersFortran()
-    virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDataTypes()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trEnumerationValueDocumentation()
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMemberFunctionDocumentationFortran()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trModule(bool first_capital, bool singular)
-    virtual QCString trModuleReference(const char * namespaceName)
-    virtual QCString trModulesIndex()
-    virtual QCString trModulesList()
-    virtual QCString trModulesListDescription(bool extractAll)
-    virtual QCString trModulesMemberDescription(bool extractAll)
-    virtual QCString trModulesMembers()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trSubprogram(bool first_capital, bool singular)
-    virtual QCString trSubprogramDocumentation()
-    virtual QCString trSubprograms()
-    virtual QCString trTemplateParameters()
-    virtual QCString trType(bool first_capital, bool singular)
-    virtual QCString trTypeConstraints()
-    virtual QCString trTypeDocumentation()
-
-
-TranslatorSwedish   (Translator)
------------------
-
-  Implements 242 of the required methods (100 %).
-
-
-TranslatorTurkish   (TranslatorAdapter_1_7_5)  25 methods to implement (10 %)
------------------
-
-  Implements 217 of the required methods (89 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
-
-
-TranslatorUkrainian   (TranslatorAdapter_1_8_4)  8 methods to implement (3 %)
--------------------
-
-  Implements 234 of the required methods (96 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trInterfaces()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-
-
-TranslatorVietnamese   (TranslatorAdapter_1_6_0)  33 methods to implement (13 %)
---------------------
-
-  Implements 209 of the required methods (86 %).
-
-  Missing methods (should be implemented):
-
-    virtual QCString trAdditionalInheritedMembers()
-    virtual QCString trAndMore(const QCString & number)
-    virtual QCString trCiteReferences()
-    virtual QCString trClassMethods()
-    virtual QCString trConstantGroupReference(const char * namespaceName)
-    virtual QCString trConstantGroups()
-    virtual QCString trCopyright()
-    virtual QCString trDateTime(int year, int month, int day, int dayOfWeek, int hour, int minutes, int seconds, bool includeTime)
-    virtual QCString trDesignOverview()
-    virtual QCString trDetailLevel()
-    virtual QCString trDirDepGraph(const char * name)
-    virtual QCString trDirRelation(const char * name)
-    virtual QCString trEnumGeneratedFromFiles(bool single)
-    virtual QCString trEnumReference(const char * name)
-    virtual QCString trExtendsClass()
-    virtual QCString trFileIn(const char * name)
-    virtual QCString trGlobalNamespace()
-    virtual QCString trIncludesFileIn(const char * name)
-    virtual QCString trInheritedFrom(const char * members, const char * what)
-    virtual QCString trInstanceMethods()
-    virtual QCString trInterfaces()
-    virtual QCString trLoading()
-    virtual QCString trMethodDocumentation()
-    virtual QCString trNoMatches()
-    virtual QCString trPanelSynchronisationTooltip(bool enable)
-    virtual QCString trProvidedByCategory()
-    virtual QCString trSearching()
-    virtual QCString trServiceGeneratedFromFiles(bool single)
-    virtual QCString trServiceReference(const char * sName)
-    virtual QCString trServices()
-    virtual QCString trSingletonGeneratedFromFiles(bool single)
-    virtual QCString trSingletonReference(const char * sName)
-    virtual QCString trTemplateParameters()
\ No newline at end of file
diff --git a/doc/trouble.doc b/doc/trouble.doc
index d36e330..47ef623 100644
--- a/doc/trouble.doc
+++ b/doc/trouble.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -18,8 +18,6 @@
 
 \section knowproblems Known Problems
 <ul>
-<li>If you have problems building doxygen from sources, please 
-    read \ref unix_problems "this section" first.
 <li>Doxygen is <em>not</em> a real compiler, it is only a lexical scanner.
     This means that it can and will not detect errors in your source code.
 <li>Doxygen has a build in preprocessor, but this works slightly different than
diff --git a/doc/xmlcmds.doc b/doc/xmlcmds.doc
index 0e8aa64..501bf91 100644
--- a/doc/xmlcmds.doc
+++ b/doc/xmlcmds.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
new file mode 100644
index 0000000..24bcbfa
--- /dev/null
+++ b/examples/CMakeLists.txt
@@ -0,0 +1,250 @@
+if (build_doc)
+
+file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/examples)
+file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/html/examples)
+file(GLOB EXAMPLE_FILES RELATIVE ${CMAKE_SOURCE_DIR}/examples "*")
+
+if (DOT)
+  set(DIAGRAM_EXAMPLE ${PROJECT_BINARY_DIR}/html/examples/diagrams/html/index.html)
+endif()
+
+foreach (f  ${EXAMPLE_FILES})
+    add_custom_command(
+        COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/examples/${f}" "${PROJECT_BINARY_DIR}/examples/"
+        DEPENDS "${CMAKE_SOURCE_DIR}/examples/${f}"
+        OUTPUT "${PROJECT_BINARY_DIR}/examples/${f}"
+    )
+    set_source_files_properties("${PROJECT_BINARY_DIR}/examples/${f}" PROPERTIES GENERATED 1)
+    list(APPEND OUT_EXAMPLE_FILES "${PROJECT_BINARY_DIR}/examples/${f}")
+endforeach()
+
+add_custom_target(examples
+  DEPENDS ${OUT_EXAMPLE_FILES}
+                ${PROJECT_BINARY_DIR}/html/examples/class/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/define/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/enum/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/file/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/func/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/page/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/relates/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/author/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/par/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/overload/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/example/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/include/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/qtstyle/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/jdstyle/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/structcmd/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/autolink/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/restypedef/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/afterdoc/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/template/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/tag/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/group/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/memgrp/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/docstring/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/pyexample/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/tclexample/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/mux/html/index.html
+                ${PROJECT_BINARY_DIR}/html/examples/manual/html/index.html
+                ${DIAGRAM_EXAMPLE}
+	WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/examples
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen class.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman_doc.tex
+	DEPENDS doxygen class.h class.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/class/html/index.html ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen define.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman_doc.tex
+	DEPENDS doxygen define.h define.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/define/html/index.html ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen enum.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman_doc.tex
+	DEPENDS doxygen enum.h enum.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/enum/html/index.html ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen file.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman_doc.tex
+	DEPENDS doxygen file.h file.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/file/html/index.html ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen func.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman_doc.tex
+	DEPENDS doxygen func.h func.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/func/html/index.html ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen page.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman_doc.tex
+	DEPENDS doxygen page.doc page.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/page/html/index.html ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen relates.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman_doc.tex
+	DEPENDS doxygen relates.cpp relates.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/relates/html/index.html ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen author.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman_doc.tex
+	DEPENDS doxygen author.cpp author.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/author/html/index.html ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen par.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman_doc.tex
+	DEPENDS doxygen par.cpp par.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/par/html/index.html ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen overload.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman_doc.tex
+	DEPENDS doxygen overload.cpp overload.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/overload/html/index.html ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen example.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman_doc.tex
+	DEPENDS doxygen example.cpp example_test.cpp example.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/example/html/index.html ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen include.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman_doc.tex
+	DEPENDS doxygen include.cpp include_test.cpp include.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/include/html/index.html ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen qtstyle.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman_doc.tex
+	DEPENDS doxygen qtstyle.cpp qtstyle.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/qtstyle/html/index.html ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen jdstyle.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman_doc.tex
+	DEPENDS doxygen jdstyle.cpp jdstyle.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/jdstyle/html/index.html ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen structcmd.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman_doc.tex
+	DEPENDS doxygen structcmd.h structcmd.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/structcmd/html/index.html ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen autolink.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman_doc.tex
+	DEPENDS doxygen autolink.cpp autolink.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/autolink/html/index.html ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen tag.cfg
+	DEPENDS doxygen tag.cpp tag.cfg ${PROJECT_BINARY_DIR}/html/examples/example/html/index.html ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/tag/html/index.html
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen restypedef.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman_doc.tex
+	DEPENDS doxygen restypedef.cpp restypedef.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/restypedef/html/index.html ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen afterdoc.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman_doc.tex
+	DEPENDS doxygen afterdoc.h afterdoc.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/afterdoc/html/index.html ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen templ.cfg
+	DEPENDS doxygen templ.cpp templ.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/template/html/index.html
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen group.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman_doc.tex
+	DEPENDS doxygen group.cpp group.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/group/html/index.html ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen memgrp.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman_doc.tex
+	DEPENDS doxygen memgrp.cpp memgrp.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/memgrp/html/index.html ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen pyexample.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman_doc.tex
+	DEPENDS doxygen pyexample.py pyexample.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/pyexample/html/index.html ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen tclexample.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman_doc.tex
+	DEPENDS doxygen tclexample.tcl tclexample.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/tclexample/html/index.html ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen mux.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman_doc.tex
+	DEPENDS doxygen mux.vhdl mux.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/mux/html/index.html ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen manual.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman_doc.tex
+	DEPENDS doxygen manual.c manual.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/manual/html/index.html ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman_doc.tex
+)
+
+add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen docstring.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman_doc.tex
+	DEPENDS doxygen docstring.py docstring.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/docstring/html/index.html ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman_doc.tex
+)
+
+if (DOT)
+  add_custom_command(
+	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen diagrams.cfg
+        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman_doc.tex
+	DEPENDS doxygen diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg ${TOP}/examples/strip_example.py
+	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/diagrams/html/index.html ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman_doc.tex
+  )
+endif(DOT)
+
+endif()
diff --git a/examples/Makefile.in b/examples/Makefile.in
deleted file mode 100644
index b9c9f20..0000000
--- a/examples/Makefile.in
+++ /dev/null
@@ -1,129 +0,0 @@
-DOXYGEN_BIN="$(DOXYGEN)/bin/doxygen"
-
-all: class/html/index.html \
-     define/html/index.html \
-     enum/html/index.html \
-     file/html/index.html \
-     func/html/index.html \
-     page/html/index.html \
-     relates/html/index.html \
-     author/html/index.html \
-     par/html/index.html \
-     overload/html/index.html \
-     example/html/index.html \
-     include/html/index.html \
-     qtstyle/html/index.html \
-     jdstyle/html/index.html \
-     structcmd/html/index.html \
-     autolink/html/index.html \
-     restypedef/html/index.html \
-     afterdoc/html/index.html \
-     template/html/index.html \
-     tag/html/index.html \
-     group/html/index.html \
-     diagrams/html/index.html \
-     memgrp/html/index.html \
-     docstring/html/index.html \
-     pyexample/html/index.html \
-     tclexample/html/index.html \
-     mux/html/index.html \
-     manual/html/index.html
-
-# Disabled since it is broken :-(
-#     dbusxml/html/index.html
-
-clean:
-	rm -rf  class define enum file func page relates author \
-                par overload example include qtstyle jdstyle structcmd \
-		autolink tag restypedef afterdoc template tag group diagrams \
-		memgrp docstring pyexample mux manual dbusxml tclexample
-
-class/html/index.html: class.h class.cfg
-	$(DOXYGEN_BIN) class.cfg
-
-define/html/index.html: define.h define.cfg
-	$(DOXYGEN_BIN) define.cfg
-
-enum/html/index.html: enum.h enum.cfg
-	$(DOXYGEN_BIN) enum.cfg
-
-file/html/index.html: file.h file.cfg
-	$(DOXYGEN_BIN) file.cfg
-
-func/html/index.html: func.h func.cfg
-	$(DOXYGEN_BIN) func.cfg
-
-page/html/index.html: page.doc page.cfg
-	$(DOXYGEN_BIN) page.cfg
-
-relates/html/index.html: relates.cpp relates.cfg
-	$(DOXYGEN_BIN) relates.cfg
-
-author/html/index.html: author.cpp author.cfg
-	$(DOXYGEN_BIN) author.cfg
-
-par/html/index.html: par.cpp par.cfg
-	$(DOXYGEN_BIN) par.cfg
-
-overload/html/index.html: overload.cpp overload.cfg
-	$(DOXYGEN_BIN) overload.cfg
-
-example/html/index.html: example.cpp example_test.cpp example.cfg
-	$(DOXYGEN_BIN) example.cfg
-
-include/html/index.html: include.cpp example_test.cpp include.cfg
-	$(DOXYGEN_BIN) include.cfg
-
-qtstyle/html/index.html: qtstyle.cpp qtstyle.cfg
-	$(DOXYGEN_BIN) qtstyle.cfg
-
-jdstyle/html/index.html: jdstyle.cpp jdstyle.cfg
-	$(DOXYGEN_BIN) jdstyle.cfg
-
-structcmd/html/index.html: structcmd.h structcmd.cfg
-	$(DOXYGEN_BIN) structcmd.cfg
-
-autolink/html/index.html: autolink.cpp autolink.cfg
-	$(DOXYGEN_BIN) autolink.cfg
-
-tag/html/index.html: tag.cpp tag.cfg example/html/index.html
-	$(DOXYGEN_BIN) tag.cfg
-
-restypedef/html/index.html: restypedef.cpp restypedef.cfg
-	$(DOXYGEN_BIN) restypedef.cfg
-
-afterdoc/html/index.html: afterdoc.h afterdoc.cfg
-	$(DOXYGEN_BIN) afterdoc.cfg
-
-template/html/index.html: templ.cpp templ.cfg
-	$(DOXYGEN_BIN) templ.cfg
-
-group/html/index.html: group.cpp group.cfg
-	$(DOXYGEN_BIN) group.cfg
-
-memgrp/html/index.html: memgrp.cpp memgrp.cfg
-	$(DOXYGEN_BIN) memgrp.cfg
-
-pyexample/html/index.html: pyexample.py pyexample.cfg
-	$(DOXYGEN_BIN) pyexample.cfg
-
-tclexample/html/index.html: tclexample.tcl tclexample.cfg
-	$(DOXYGEN_BIN) tclexample.cfg
-
-mux/html/index.html: mux.vhdl mux.cfg
-	$(DOXYGEN_BIN) mux.cfg
-
-manual/html/index.html: manual.c manual.cfg
-	$(DOXYGEN_BIN) manual.cfg
-
-docstring/html/index.html: docstring.py docstring.cfg
-	$(DOXYGEN_BIN) docstring.cfg
-
-#dbusxml/html/index.html: dbusxml.xml dbusxml.cfg
-#	$(DOXYGEN_BIN) dbusxml.cfg
-
-diagrams/html/index.html: diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg
-ifneq ($(HAVE_DOT),)
-	$(DOXYGEN_BIN) diagrams.cfg
-endif
-
diff --git a/examples/Makefile.win.in b/examples/Makefile.win.in
deleted file mode 100644
index 914c5ed..0000000
--- a/examples/Makefile.win.in
+++ /dev/null
@@ -1,122 +0,0 @@
-DOXYDIR = ..\bin
-
-all: class/html/index.html \
-     define/html/index.html \
-     enum/html/index.html \
-     file/html/index.html \
-     func/html/index.html \
-     page/html/index.html \
-     relates/html/index.html \
-     author/html/index.html \
-     par/html/index.html \
-     overload/html/index.html \
-     example/html/index.html \
-     include/html/index.html \
-     qtstyle/html/index.html \
-     jdstyle/html/index.html \
-     structcmd/html/index.html \
-     autolink/html/index.html \
-     restypedef/html/index.html \
-     afterdoc/html/index.html \
-     template/html/index.html \
-     tag/html/index.html \
-     group/html/index.html \
-     diagrams/html/index.html \
-     memgrp/html/index.html \
-     docstring/html/index.html \
-     pyexample/html/index.html \
-     tclexample/html/index.html \
-     mux/html/index.html \
-     manual/html/index.html
-
-clean:
-	del /s/y class define enum file pyexample tclexample docstring
-	del /s/y func page relates author
-	del /s/y par overload example include qtstyle 
-	del /s/y jdstyle structcmd autolink resdefine mux manual
-	del /s/y restypedef afterdoc template tag group diagrams memgrp
-
-class/html/index.html: class.h class.cfg
-	$(DOXYDIR)\doxygen class.cfg
-
-define/html/index.html: define.h define.cfg
-	$(DOXYDIR)\doxygen define.cfg
-
-enum/html/index.html: enum.h enum.cfg
-	$(DOXYDIR)\doxygen enum.cfg
-
-file/html/index.html: file.h file.cfg
-	$(DOXYDIR)\doxygen file.cfg
-
-func/html/index.html: func.h func.cfg
-	$(DOXYDIR)\doxygen func.cfg
-
-page/html/index.html: page.doc page.cfg
-	$(DOXYDIR)\doxygen page.cfg
-
-relates/html/index.html: relates.cpp relates.cfg
-	$(DOXYDIR)\doxygen relates.cfg
-
-author/html/index.html: author.cpp author.cfg
-	$(DOXYDIR)\doxygen author.cfg
-
-par/html/index.html: par.cpp par.cfg
-	$(DOXYDIR)\doxygen par.cfg
-
-overload/html/index.html: overload.cpp overload.cfg
-	$(DOXYDIR)\doxygen overload.cfg
-
-example/html/index.html: example.cpp example_test.cpp example.cfg 
-	$(DOXYDIR)\doxygen example.cfg
-
-include/html/index.html: include.cpp example_test.cpp include.cfg 
-	$(DOXYDIR)\doxygen include.cfg
-
-qtstyle/html/index.html: qtstyle.cpp qtstyle.cfg 
-	$(DOXYDIR)\doxygen qtstyle.cfg
-
-jdstyle/html/index.html: jdstyle.cpp jdstyle.cfg 
-	$(DOXYDIR)\doxygen jdstyle.cfg
-
-structcmd/html/index.html: structcmd.h structcmd.cfg 
-	$(DOXYDIR)\doxygen structcmd.cfg
-
-autolink/html/index.html: autolink.cpp autolink.cfg 
-	$(DOXYDIR)\doxygen autolink.cfg
-
-tag/html/index.html: tag.cpp tag.cfg 
-	$(DOXYDIR)\doxygen tag.cfg
-
-restypedef/html/index.html: restypedef.cpp restypedef.cfg 
-	$(DOXYDIR)\doxygen restypedef.cfg
-
-afterdoc/html/index.html: afterdoc.h afterdoc.cfg
-	$(DOXYDIR)\doxygen afterdoc.cfg
-
-template/html/index.html: templ.cpp templ.cfg
-	$(DOXYDIR)\doxygen templ.cfg
-
-group/html/index.html: group.cpp group.cfg
-	$(DOXYDIR)\doxygen group.cfg
-
-memgrp/html/index.html: memgrp.cpp memgrp.cfg
-	$(DOXYDIR)\doxygen memgrp.cfg
-
-pyexample/html/index.html: pyexample.py pyexample.cfg
-	$(DOXYDIR)\doxygen pyexample.cfg
-
-tclexample/html/index.html: tclexample.tcl tclexample.cfg
-	$(DOXYDIR)\doxygen tclexample.cfg
-
-mux/html/index.html: mux.vhdl mux.cfg
-	$(DOXYDIR)\doxygen mux.cfg
-
-manual/html/index.html: manual.c manual.cfg
-	$(DOXYDIR)\doxygen manual.cfg
-
-docstring/html/index.html: docstring.py docstring.cfg
-	$(DOXYDIR)\doxygen docstring.cfg
-	
-diagrams/html/index.html: diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg
-	$(DOXYDIR)\doxygen diagrams.cfg
-
diff --git a/examples/afterdoc.cfg b/examples/afterdoc.cfg
index fcdbcae..0542929 100644
--- a/examples/afterdoc.cfg
+++ b/examples/afterdoc.cfg
@@ -1,10 +1,13 @@
 PROJECT_NAME      = "AfterDocs"
-OUTPUT_DIRECTORY  = afterdoc
-GENERATE_LATEX    = NO
+OUTPUT_DIRECTORY  = ../html/examples/afterdoc
+GENERATE_LATEX    = YES
 GENERATE_MAN      = NO
 GENERATE_RTF      = NO
 CASE_SENSE_NAMES  = NO
 INPUT             = afterdoc.h
+STRIP_CODE_COMMENTS = NO
 QUIET             = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE      = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/afterdoc.h b/examples/afterdoc.h
index 907dabe..b3200a8 100644
--- a/examples/afterdoc.h
+++ b/examples/afterdoc.h
@@ -1,6 +1,6 @@
 /*! A test class */
 
-class Test
+class Afterdoc_Test
 {
   public:
     /** An enum type. 
diff --git a/examples/author.cfg b/examples/author.cfg
index 8bb04f7..2fafbfe 100644
--- a/examples/author.cfg
+++ b/examples/author.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Author Command"
-OUTPUT_DIRECTORY = author
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/author
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -8,3 +8,5 @@ INPUT            = author.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/autolink.cfg b/examples/autolink.cfg
index 406d52c..68e5192 100644
--- a/examples/autolink.cfg
+++ b/examples/autolink.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Automatic link generation"
-OUTPUT_DIRECTORY = autolink
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/autolink
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -8,3 +8,5 @@ INPUT            = autolink.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/autolink.cpp b/examples/autolink.cpp
index e028f22..71a3c85 100644
--- a/examples/autolink.cpp
+++ b/examples/autolink.cpp
@@ -1,33 +1,33 @@
 /*! \file autolink.cpp
   Testing automatic link generation.
   
-  A link to a member of the Test class: Test::member, 
+  A link to a member of the Autolink_Test class: Autolink_Test::member, 
   
   More specific links to the each of the overloaded members:
-  Test::member(int) and Test#member(int,int)
+  Autolink_Test::member(int) and Autolink_Test#member(int,int)
 
-  A link to a protected member variable of Test: Test#var, 
+  A link to a protected member variable of Autolink_Test: Autolink_Test#var, 
 
   A link to the global enumeration type #GlobEnum.
  
   A link to the define #ABS(x).
   
-  A link to the destructor of the Test class: Test::~Test, 
+  A link to the destructor of the Autolink_Test class: Autolink_Test::~Autolink_Test, 
   
   A link to the typedef ::B.
  
-  A link to the enumeration type Test::EType
+  A link to the enumeration type Autolink_Test::EType
   
-  A link to some enumeration values Test::Val1 and ::GVal2
+  A link to some enumeration values Autolink_Test::Val1 and ::GVal2
 */
 
 /*!
-  Since this documentation block belongs to the class Test no link to 
-  Test is generated.
+  Since this documentation block belongs to the class Autolink_Test no link to 
+  Autolink_Test is generated.
 
-  Two ways to link to a constructor are: #Test and Test().
+  Two ways to link to a constructor are: #Autolink_Test and Autolink_Test().
 
-  Links to the destructor are: #~Test and ~Test().
+  Links to the destructor are: #~Autolink_Test and ~Autolink_Test().
   
   A link to a member in this class: member().
 
@@ -46,19 +46,19 @@
   
   A link to the enumeration type #EType.
 
-  A link to some enumeration values: \link Test::Val1 Val1 \endlink and ::GVal1.
+  A link to some enumeration values: \link Autolink_Test::Val1 Val1 \endlink and ::GVal1.
 
   And last but not least a link to a file: autolink.cpp.
   
   \sa Inside a see also section any word is checked, so EType, 
-      Val1, GVal1, ~Test and member will be replaced by links in HTML.
+      Val1, GVal1, ~Autolink_Test and member will be replaced by links in HTML.
 */
 
-class Test
+class Autolink_Test
 {
   public:
-    Test();               //!< constructor 
-   ~Test();               //!< destructor 
+    Autolink_Test();               //!< constructor 
+   ~Autolink_Test();               //!< destructor 
     void member(int);     /**< A member function. Details. */
     void member(int,int); /**< An overloaded member function. Details */
 
@@ -73,10 +73,10 @@ class Test
 };
 
 /*! details. */
-Test::Test() { }
+Autolink_Test::Autolink_Test() { }
 
 /*! details. */
-Test::~Test() { }
+Autolink_Test::~Autolink_Test() { }
 
 /*! A global variable. */
 int globVar;
@@ -92,8 +92,8 @@ enum GlobEnum {
  */ 
 #define ABS(x) (((x)>0)?(x):-(x))
 
-typedef Test B;
+typedef Autolink_Test B;
 
-/*! \fn typedef Test B
+/*! \fn typedef Autolink_Test B
  *  A type definition. 
  */
diff --git a/examples/class.cfg b/examples/class.cfg
index f2c4796..5d75373 100644
--- a/examples/class.cfg
+++ b/examples/class.cfg
@@ -1,10 +1,13 @@
 PROJECT_NAME     = "Class Command"
-OUTPUT_DIRECTORY = class
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/class
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
 INPUT            = class.h
+STRIP_CODE_COMMENTS = NO
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/class.h b/examples/class.h
index e5a9121..b40b186 100644
--- a/examples/class.h
+++ b/examples/class.h
@@ -7,5 +7,5 @@ class Test
 /*! \class Test class.h "inc/class.h"
  *  \brief This is a test class.
  *
- * Some details about the Test class
+ * Some details about the Test class.
  */
diff --git a/examples/dbusxml.cfg b/examples/dbusxml.cfg
index 23b9dea..d964ea2 100644
--- a/examples/dbusxml.cfg
+++ b/examples/dbusxml.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME      = "DBusXMLDocs"
-OUTPUT_DIRECTORY  = dbusxml
-GENERATE_LATEX    = NO
+OUTPUT_DIRECTORY  = ../html/examples/dbusxml
+GENERATE_LATEX    = YES
 GENERATE_MAN      = NO
 GENERATE_RTF      = NO
 CASE_SENSE_NAMES  = NO
@@ -10,3 +10,5 @@ JAVADOC_AUTOBRIEF = YES
 EXTRACT_ALL       = YES
 SEARCHENGINE      = NO
 EXTENSION_MAPPING = xml=dbusxml
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/define.cfg b/examples/define.cfg
index 547591e..61c0f52 100644
--- a/examples/define.cfg
+++ b/examples/define.cfg
@@ -1,11 +1,14 @@
 PROJECT_NAME     = "Define Command"
-OUTPUT_DIRECTORY = define
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/define
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
 INPUT            = define.h
+STRIP_CODE_COMMENTS = NO
 ENABLE_PREPROCESSING = YES
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/diagrams.cfg b/examples/diagrams.cfg
index 9bc5551..c2e637d 100644
--- a/examples/diagrams.cfg
+++ b/examples/diagrams.cfg
@@ -1,14 +1,17 @@
 PROJECT_NAME       = "Diagrams"
-OUTPUT_DIRECTORY   = diagrams
+OUTPUT_DIRECTORY   = ../html/examples/diagrams
 HAVE_DOT           = YES
 EXTRACT_ALL        = YES
-GENERATE_LATEX     = NO
+GENERATE_LATEX     = YES
 GENERATE_MAN       = NO
 GENERATE_RTF       = NO
 CASE_SENSE_NAMES = NO
 ENABLE_PREPROCESSING       = YES
 INPUT              = .
+STRIP_CODE_COMMENTS = NO
 FILE_PATTERNS      = diagrams_*.h
 QUIET              = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/docstring.cfg b/examples/docstring.cfg
index 2a5cd9a..60b089e 100644
--- a/examples/docstring.cfg
+++ b/examples/docstring.cfg
@@ -1,7 +1,7 @@
 PROJECT_NAME     = "Python"
-OUTPUT_DIRECTORY = docstring
+OUTPUT_DIRECTORY = ../html/examples/docstring
 EXTRACT_ALL      = YES
-GENERATE_LATEX   = NO
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 OPTIMIZE_OUTPUT_JAVA = YES
@@ -9,3 +9,5 @@ INPUT            = docstring.py
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/enum.cfg b/examples/enum.cfg
index ed83670..e5540bd 100644
--- a/examples/enum.cfg
+++ b/examples/enum.cfg
@@ -1,10 +1,13 @@
 PROJECT_NAME     = "Enum Command"
-OUTPUT_DIRECTORY = enum
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/enum
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
 INPUT            = enum.h
+STRIP_CODE_COMMENTS = NO
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/enum.h b/examples/enum.h
index 4c54fab..ab7ffa6 100644
--- a/examples/enum.h
+++ b/examples/enum.h
@@ -1,4 +1,4 @@
-class Test
+class Enum_Test
 {
   public:
     enum TEnum { Val1, Val2 };
@@ -11,14 +11,14 @@ class Test
     };
 };
 
-/*! \class Test
+/*! \class Enum_Test
  * The class description.
  */
 
-/*! \enum Test::TEnum
+/*! \enum Enum_Test::TEnum
  * A description of the enum type.
  */
 
-/*! \var Test::TEnum Test::Val1
+/*! \var Enum_Test::TEnum Enum_Test::Val1
  * The description of the first enum value.
  */
diff --git a/examples/example.cfg b/examples/example.cfg
index a25df24..c55c6b9 100644
--- a/examples/example.cfg
+++ b/examples/example.cfg
@@ -1,7 +1,7 @@
 PROJECT_NAME      = "Example Command"
-OUTPUT_DIRECTORY  = example
+OUTPUT_DIRECTORY  = ../html/examples/example
 #GENERATE_TAGFILE  = example.tag
-GENERATE_LATEX    = NO
+GENERATE_LATEX    = YES
 GENERATE_MAN      = NO
 GENERATE_RTF      = NO
 CASE_SENSE_NAMES  = NO
@@ -10,3 +10,5 @@ EXAMPLE_PATH      = example_test.cpp
 QUIET             = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE      = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/example.cpp b/examples/example.cpp
index 230d6ec..657c266 100644
--- a/examples/example.cpp
+++ b/examples/example.cpp
@@ -1,8 +1,8 @@
-/** A Test class.
+/** A Example_Test class.
  *  More details about this class.
  */
 
-class Test
+class Example_Test
 {
   public:
     /** An example member function.
@@ -11,9 +11,9 @@ class Test
     void example();
 };
 
-void Test::example() {}
+void Example_Test::example() {}
 
 /** \example example_test.cpp
- * This is an example of how to use the Test class.
+ * This is an example of how to use the Example_Test class.
  * More details about this example.
  */
diff --git a/examples/example_test.cpp b/examples/example_test.cpp
index a7e1643..cefee43 100644
--- a/examples/example_test.cpp
+++ b/examples/example_test.cpp
@@ -1,5 +1,5 @@
 void main()
 {
-  Test t;
+  Example_Test t;
   t.example();
 }
diff --git a/examples/file.cfg b/examples/file.cfg
index e54b1c7..ef67ae6 100644
--- a/examples/file.cfg
+++ b/examples/file.cfg
@@ -1,10 +1,13 @@
 PROJECT_NAME     = "File Command"
-OUTPUT_DIRECTORY = file
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/file
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
 INPUT            = file.h
+STRIP_CODE_COMMENTS = NO
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/func.cfg b/examples/func.cfg
index 32c3190..2f455d9 100644
--- a/examples/func.cfg
+++ b/examples/func.cfg
@@ -1,10 +1,13 @@
 PROJECT_NAME     = "Fn Command"
-OUTPUT_DIRECTORY = func
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/func
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
 INPUT            = func.h
+STRIP_CODE_COMMENTS = NO
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/func.h b/examples/func.h
index b335448..cc0ac38 100644
--- a/examples/func.h
+++ b/examples/func.h
@@ -1,18 +1,18 @@
-class Test
+class Fn_Test
 {
   public:
     const char *member(char,int) throw(std::out_of_range);
 };
 
-const char *Test::member(char c,int n) throw(std::out_of_range) {}
+const char *Fn_Test::member(char c,int n) throw(std::out_of_range) {}
 
-/*! \class Test
- * \brief Test class.
+/*! \class Fn_Test
+ * \brief Fn_Test class.
  *
- * Details about Test.
+ * Details about Fn_Test.
  */
 
-/*! \fn const char *Test::member(char c,int n) 
+/*! \fn const char *Fn_Test::member(char c,int n) 
  *  \brief A member function.
  *  \param c a character.
  *  \param n an integer.
diff --git a/examples/group.cfg b/examples/group.cfg
index 98cc27e..83911b8 100644
--- a/examples/group.cfg
+++ b/examples/group.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Grouping"
-OUTPUT_DIRECTORY = group
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/group
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -8,3 +8,5 @@ INPUT            = group.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/include.cfg b/examples/include.cfg
index 8516b32..abaecc6 100644
--- a/examples/include.cfg
+++ b/examples/include.cfg
@@ -1,11 +1,13 @@
 PROJECT_NAME     = "Include Command"
-OUTPUT_DIRECTORY = include
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/include
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
 INPUT            = include.cpp
-EXAMPLE_PATH     = example_test.cpp
+EXAMPLE_PATH     = include_test.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/include.cpp b/examples/include.cpp
index 674ad13..ba8c054 100644
--- a/examples/include.cpp
+++ b/examples/include.cpp
@@ -1,7 +1,7 @@
 
 /*! A test class. */
 
-class Test
+class Include_Test
 {
   public:
     /// a member function
@@ -9,12 +9,12 @@ class Test
 };
 
 /*! \page example
- *  \dontinclude example_test.cpp
+ *  \dontinclude include_test.cpp
  *  Our main function starts like this:
  *  \skip main
  *  \until {
- *  First we create an object \c t of the Test class.
- *  \skipline Test
+ *  First we create an object \c t of the Include_Test class.
+ *  \skipline Include_Test
  *  Then we call the example member function 
  *  \line example
  *  After that our little test routine ends.
diff --git a/examples/example_test.cpp b/examples/include_test.cpp
similarity index 63%
copy from examples/example_test.cpp
copy to examples/include_test.cpp
index a7e1643..df8634a 100644
--- a/examples/example_test.cpp
+++ b/examples/include_test.cpp
@@ -1,5 +1,5 @@
 void main()
 {
-  Test t;
+  Include_Test t;
   t.example();
 }
diff --git a/examples/jdstyle.cfg b/examples/jdstyle.cfg
index 02bf18c..0ddc0d9 100644
--- a/examples/jdstyle.cfg
+++ b/examples/jdstyle.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME      = "JavaDoc Style"
-OUTPUT_DIRECTORY  = jdstyle
-GENERATE_LATEX    = NO
+OUTPUT_DIRECTORY  = ../html/examples/jdstyle
+GENERATE_LATEX    = YES
 GENERATE_MAN      = NO
 GENERATE_RTF      = NO
 CASE_SENSE_NAMES  = NO
@@ -8,3 +8,5 @@ INPUT             = jdstyle.cpp
 QUIET             = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE      = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/jdstyle.cpp b/examples/jdstyle.cpp
index bd8b9a7..04885e4 100644
--- a/examples/jdstyle.cpp
+++ b/examples/jdstyle.cpp
@@ -2,7 +2,7 @@
  *  A test class. A more elaborate class description.
  */
 
-class Test
+class Javadoc_Test
 {
   public:
 
@@ -23,20 +23,20 @@ class Test
        * A constructor.
        * A more elaborate description of the constructor.
        */
-      Test();
+      Javadoc_Test();
 
       /**
        * A destructor.
        * A more elaborate description of the destructor.
        */
-     ~Test();
+     ~Javadoc_Test();
     
       /**
        * a normal member taking two arguments and returning an integer value.
        * @param a an integer argument.
        * @param s a constant character pointer.
-       * @see Test()
-       * @see ~Test()
+       * @see Javadoc_Test()
+       * @see ~Javadoc_Test()
        * @see testMeToo()
        * @see publicVar()
        * @return The test results
diff --git a/examples/manual.cfg b/examples/manual.cfg
index 9359842..07040d9 100644
--- a/examples/manual.cfg
+++ b/examples/manual.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME           = "Manual inheritance and membership"
-OUTPUT_DIRECTORY       = manual
-GENERATE_LATEX         = NO
+OUTPUT_DIRECTORY       = ../html/examples/manual
+GENERATE_LATEX         = YES
 GENERATE_MAN           = NO
 GENERATE_RTF           = NO
 CASE_SENSE_NAMES       = NO
@@ -14,3 +14,5 @@ INLINE_SOURCES         = YES
 REFERENCED_BY_RELATION = YES
 REFERENCES_RELATION    = YES
 SEARCHENGINE           = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/memgrp.cfg b/examples/memgrp.cfg
index a69c33c..d609778 100644
--- a/examples/memgrp.cfg
+++ b/examples/memgrp.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME         = "Member Grouping"
-OUTPUT_DIRECTORY     = memgrp
-GENERATE_LATEX       = NO
+OUTPUT_DIRECTORY     = ../html/examples/memgrp
+GENERATE_LATEX       = YES
 GENERATE_MAN         = NO
 GENERATE_RTF         = NO
 CASE_SENSE_NAMES     = NO
@@ -9,3 +9,5 @@ QUIET                = YES
 DISTRIBUTE_GROUP_DOC = YES
 JAVADOC_AUTOBRIEF    = YES
 SEARCHENGINE         = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/memgrp.cpp b/examples/memgrp.cpp
index 77f03a4..9a24774 100644
--- a/examples/memgrp.cpp
+++ b/examples/memgrp.cpp
@@ -1,5 +1,5 @@
 /** A class. Details */
-class Test
+class Memgrp_Test
 {
   public:
     //@{
@@ -15,17 +15,17 @@ class Test
     void func2InGroup2();
 };
 
-void Test::func1InGroup1() {}
-void Test::func2InGroup1() {}
+void Memgrp_Test::func1InGroup1() {}
+void Memgrp_Test::func2InGroup1() {}
 
 /** @name Group2
  *  Description of group 2. 
  */
 ///@{
 /** Function 2 in group 2. Details. */
-void Test::func2InGroup2() {}
+void Memgrp_Test::func2InGroup2() {}
 /** Function 1 in group 2. Details. */
-void Test::func1InGroup2() {}
+void Memgrp_Test::func1InGroup2() {}
 ///@}
 
 /*! \file 
diff --git a/examples/mux.cfg b/examples/mux.cfg
index ccb0f05..861f2f6 100644
--- a/examples/mux.cfg
+++ b/examples/mux.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME         = Mux
-OUTPUT_DIRECTORY     = mux
-GENERATE_LATEX       = NO
+OUTPUT_DIRECTORY     = ../html/examples/mux
+GENERATE_LATEX       = YES
 GENERATE_MAN         = NO
 GENERATE_RTF         = NO
 CASE_SENSE_NAMES     = NO
@@ -14,3 +14,5 @@ INHERIT_DOCS         = NO
 SEARCHENGINE         = NO
 ENABLE_PREPROCESSING = NO
 EXTRACT_PACKAGE      = YES
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/overload.cfg b/examples/overload.cfg
index d29cb9c..71ebcc5 100644
--- a/examples/overload.cfg
+++ b/examples/overload.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Overloaded Command"
-OUTPUT_DIRECTORY = overload
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/overload
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -9,3 +9,5 @@ INPUT            = overload.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/overload.cpp b/examples/overload.cpp
index 02bcced..7aeb1cb 100644
--- a/examples/overload.cpp
+++ b/examples/overload.cpp
@@ -1,25 +1,25 @@
-class Test 
+class Overload_Test 
 {
   public:
     void drawRect(int,int,int,int);
     void drawRect(const Rect &r);
 };
 
-void Test::drawRect(int x,int y,int w,int h) {}
-void Test::drawRect(const Rect &r) {}
+void Overload_Test::drawRect(int x,int y,int w,int h) {}
+void Overload_Test::drawRect(const Rect &r) {}
 
-/*! \class Test
+/*! \class Overload_Test
  *  \brief A short description.
  *   
  *  More text.
  */
 
-/*! \fn void Test::drawRect(int x,int y,int w,int h)
+/*! \fn void Overload_Test::drawRect(int x,int y,int w,int h)
  * This command draws a rectangle with a left upper corner at ( \a x , \a y ),
  * width \a w and height \a h. 
  */
 
 /*!
- * \overload void Test::drawRect(const Rect &r)
+ * \overload void Overload_Test::drawRect(const Rect &r)
  */
 
diff --git a/examples/page.cfg b/examples/page.cfg
index cd1ff84..972368a 100644
--- a/examples/page.cfg
+++ b/examples/page.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Page Command"
-OUTPUT_DIRECTORY = page
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/page
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -8,3 +8,5 @@ INPUT            = page.doc
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/par.cfg b/examples/par.cfg
index de6caa9..fe4be84 100644
--- a/examples/par.cfg
+++ b/examples/par.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Par Command"
-OUTPUT_DIRECTORY = par
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/par
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -8,3 +8,5 @@ INPUT            = par.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/par.cpp b/examples/par.cpp
index 6fd2c4e..cae55d7 100644
--- a/examples/par.cpp
+++ b/examples/par.cpp
@@ -1,4 +1,4 @@
-/*! \class Test
+/*! \class Par_Test
  * Normal text.
  *
  * \par User defined paragraph:
@@ -17,4 +17,4 @@
  * More normal text. 
  */
   
-class Test {};
+class Par_Test {};
diff --git a/examples/pyexample.cfg b/examples/pyexample.cfg
index 27db0f7..4569425 100644
--- a/examples/pyexample.cfg
+++ b/examples/pyexample.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Python"
-OUTPUT_DIRECTORY = pyexample
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/pyexample
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 OPTIMIZE_OUTPUT_JAVA = YES
@@ -8,3 +8,5 @@ INPUT            = pyexample.py
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/qtstyle.cfg b/examples/qtstyle.cfg
index 0a930be..1516c7e 100644
--- a/examples/qtstyle.cfg
+++ b/examples/qtstyle.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Qt Style"
-OUTPUT_DIRECTORY = qtstyle
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/qtstyle
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -8,3 +8,5 @@ INPUT            = qtstyle.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/qtstyle.cpp b/examples/qtstyle.cpp
index e24d541..8b55c8d 100644
--- a/examples/qtstyle.cpp
+++ b/examples/qtstyle.cpp
@@ -3,7 +3,7 @@
   A more elaborate class description.
 */
 
-class Test
+class QTstyle_Test
 {
   public:
 
@@ -25,20 +25,20 @@ class Test
     /*!
       A more elaborate description of the constructor.
     */
-    Test();
+    QTstyle_Test();
 
     //! A destructor.
     /*!
       A more elaborate description of the destructor.
     */
-   ~Test();
+   ~QTstyle_Test();
     
     //! A normal member taking two arguments and returning an integer value.
     /*!
       \param a an integer argument.
       \param s a constant character pointer.
       \return The test results
-      \sa Test(), ~Test(), testMeToo() and publicVar()
+      \sa QTstyle_Test(), ~QTstyle_Test(), testMeToo() and publicVar()
     */
     int testMe(int a,const char *s);
        
diff --git a/examples/relates.cfg b/examples/relates.cfg
index 4e1d90b..89f46da 100644
--- a/examples/relates.cfg
+++ b/examples/relates.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Relates Command"
-OUTPUT_DIRECTORY = relates
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/relates
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -8,3 +8,5 @@ INPUT            = relates.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/restypedef.cfg b/examples/restypedef.cfg
index c55926e..63d2ea5 100644
--- a/examples/restypedef.cfg
+++ b/examples/restypedef.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME     = "Resolving Typedefs"
-OUTPUT_DIRECTORY = restypedef
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/restypedef
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
@@ -8,3 +8,5 @@ INPUT            = restypedef.cpp
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/strip_example.py b/examples/strip_example.py
new file mode 100644
index 0000000..d88b893
--- /dev/null
+++ b/examples/strip_example.py
@@ -0,0 +1,9 @@
+import sys
+do_print = False
+for line in sys.stdin:
+    if line.startswith("%--- Begin generated contents ---"):
+       do_print = True
+    elif line.startswith("%--- End generated contents ---"):
+       do_print = False
+    elif do_print:
+       sys.stdout.write(line)
diff --git a/examples/structcmd.cfg b/examples/structcmd.cfg
index f956ad4..f926ddf 100644
--- a/examples/structcmd.cfg
+++ b/examples/structcmd.cfg
@@ -1,10 +1,13 @@
 PROJECT_NAME     = "Structural commands"
-OUTPUT_DIRECTORY = structcmd
-GENERATE_LATEX   = NO
+OUTPUT_DIRECTORY = ../html/examples/structcmd
+GENERATE_LATEX   = YES
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
 CASE_SENSE_NAMES = NO
 INPUT            = structcmd.h
+STRIP_CODE_COMMENTS = NO
 QUIET            = YES
 JAVADOC_AUTOBRIEF = YES
 SEARCHENGINE     = NO
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/tag.cfg b/examples/tag.cfg
index 3627281..97d7d2f 100644
--- a/examples/tag.cfg
+++ b/examples/tag.cfg
@@ -1,5 +1,5 @@
 PROJECT_NAME     = "Tag Files"
-OUTPUT_DIRECTORY = tag
+OUTPUT_DIRECTORY = ../html/examples/tag
 GENERATE_LATEX   = NO
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
diff --git a/examples/tclexample.cfg b/examples/tclexample.cfg
index bde5cc4..e151d14 100644
--- a/examples/tclexample.cfg
+++ b/examples/tclexample.cfg
@@ -1,6 +1,6 @@
 PROJECT_NAME       = "Tcl"
-OUTPUT_DIRECTORY   = tclexample
-GENERATE_LATEX     = NO
+OUTPUT_DIRECTORY   = ../html/examples/tclexample
+GENERATE_LATEX     = YES
 GENERATE_MAN       = NO
 GENERATE_RTF       = NO
 CASE_SENSE_NAMES   = NO
@@ -10,3 +10,5 @@ JAVADOC_AUTOBRIEF  = YES
 SEARCHENGINE       = NO
 INLINE_SOURCES     = YES
 HIDE_UNDOC_MEMBERS = YES
+COMPACT_LATEX = YES
+LATEX_HIDE_INDICES     = YES
diff --git a/examples/templ.cfg b/examples/templ.cfg
index c8d9514..eb59559 100644
--- a/examples/templ.cfg
+++ b/examples/templ.cfg
@@ -1,5 +1,5 @@
 PROJECT_NAME     = "Template Test"
-OUTPUT_DIRECTORY = template
+OUTPUT_DIRECTORY = ../html/examples/template
 GENERATE_LATEX   = NO
 GENERATE_MAN     = NO
 GENERATE_RTF     = NO
diff --git a/jquery/jquery.ui-1.8.18.core.js b/jquery/jquery.ui-1.8.18.core.js
index 98b4f9b..e6f1212 100644
--- a/jquery/jquery.ui-1.8.18.core.js
+++ b/jquery/jquery.ui-1.8.18.core.js
@@ -226,7 +226,7 @@ $(function() {
 		div = body.appendChild( div = document.createElement( "div" ) );
 
 	// access offsetHeight before setting the style to prevent a layout bug
-	// in IE 9 which causes the elemnt to continue to take up space even
+	// in IE 9 which causes the element to continue to take up space even
 	// after it is removed from the DOM (#8026)
 	div.offsetHeight;
 
diff --git a/libmd5/CMakeLists.txt b/libmd5/CMakeLists.txt
new file mode 100644
index 0000000..ae7e111
--- /dev/null
+++ b/libmd5/CMakeLists.txt
@@ -0,0 +1,3 @@
+add_library(md5 STATIC
+md5.c
+)
diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec
deleted file mode 100644
index 7bd673d..0000000
--- a/packages/rpm/doxygen.spec
+++ /dev/null
@@ -1,129 +0,0 @@
-%define version 1.8.9.1
-%define revision 1
-%define mmn 1
-%define name doxygen
-
-# optionally pass --with-doxywizard to rpmbuild
-
-%define contentdir /var/www
-%define suexec_caller doxygen
-%define buildroot /var/tmp/%{name}-%{version}-%{revision}root
-
-Summary: A documentation system for C/C++.
-Name: doxygen
-Version: %{version}
-Release: %{revision}
-URL: http://www.stack.nl/~dimitri/doxygen/index.html
-Vendor: Dimitri van Heesch
-License: GNU General Public License
-Group: Development/Tools
-Source: %{name}-%{version}.src.tar.gz
-BuildRoot: %{buildroot}
-BuildRequires: libstdc++-devel >= 2.96, /usr/bin/perl, /usr/bin/latex, /usr/bin/dvips, /usr/bin/gs
-Requires: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96
-Provides: doxygen = %{mmn}
-
-%description
-Doxygen can generate an online class browser (in HTML) and/or a
-reference manual (in LaTeX) from a set of documented source files. The
-documentation is extracted directly from the sources. Doxygen can
-also be configured to extract the code structure from undocumented
-source files.
-
-%if %{?_with_doxywizard:1}%{!?_with_doxywizard:0}
-%package doxywizard
-Group: Development/Libraries
-Summary: GUI Interface for doxygen.
-Requires: doxygen = %{mmn}
-Requires: qt >= 3.3
-Provides: doxywizard = %{mmn}
-# Obsoletes:
-
-%description doxywizard
-Doxygen can generate an online class browser (in HTML) and/or a
-reference manual (in LaTeX) from a set of documented source files. The
-documentation is extracted directly from the sources. Doxygen can
-also be configured to extract the code structure from undocumented
-source files.
-
-This is the GUI interface for doxygen.  It requires qt and X11 to
-install.
-%endif
-
-%if %{?_with_doxysearch:1}%{!?_with_doxysearch:0}
-%package doxysearch
-Group: Development/Libraries
-Summary: external indexer and search engine for doxygen.
-Requires: doxygen = %{mmn}
-Requires: libxapian-devel >= 1.2
-Provides: doxysearch.cgi = %{mmn}
-Provides: doxyindexer = %{mmn}
-# Obsoletes:
-
-%description doxysearch
-External indexing and search tools for searching through doxygen
-generated HTML documentation.
-%endif
-
-%prep
-%setup -q -n %{name}-%{version}
-./configure %{?_with_doxywizard} %{?_with_doxysearch} --prefix $RPM_BUILD_ROOT/usr
-
-%build
-make %{?_smp_mflags}
-make %{?_smp_mflags} pdf
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make install
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-
-%doc README.md LICENSE LANGUAGE.HOWTO examples ./latex/*.pdf
-%doc /usr/man/man1/doxygen.1.gz
-
-%{_bindir}/doxygen
-
-%if %{?_with_doxywizard:1}%{!?_with_doxywizard:0}
-%files doxywizard
-%defattr(-,root,root)
-%{_bindir}/doxywizard
-%doc /usr/man/man1/doxywizard.1.gz
-%endif
-
-%if %{?_with_doxysearch:1}%{!?_with_doxysearch:0}
-%files doxysearch
-%defattr(-,root,root)
-%{_bindir}/doxyindexer
-%{_bindir}/doxysearch.cgi
-%doc /usr/man/man1/doxyindexer.1.gz
-%doc /usr/man/man1/doxysearch.1.gz
-%endif
-
-%changelog
-* Tue Dec 25 2012 Dimitri van Heesch <dimitri at stack.nl> 1.8.3
-- added doxyindexer and doxysearch
-
-* Fri Apr 18 2008 Kenneth Porter <shiva+doxygenspec at sewingwitch.com> 1.5.5-1
-- consolidate with and without doxywizard spec files with rpm macro
-- add gs BuildPrereq
-
-* Sun Nov 18 2007 Kevin McBride <kevin at planetsaphire.com> 1.5.4
-- consolidated manual package in lieu of --excludedocs flag for rpm --install
-
-* Mon Oct 10 2005 Kevin McBride <kevin at planetsaphire.com> 1.4.5
-- fixed versioning bugs.
-
-* Tue Oct 4 2005 Kevin McBride <kevin at planetsaphire.com> 1.4.5
-- added obsoletes and proides sections.
-
-* Sun Sep 20 2005 Kevin McBride <kevin at planetsaphire.com> 1.4.4
-- modified rpm spec file for Fedora Core acceptance criteria.
-
-* Sun Aug 7 2005 Kevin McBride <kevin at planetsaphire.com> 1.4.4
-- created initial rpm spec file for doxygen-1.4.4
-
diff --git a/packages/rpm/doxygen.spec.in b/packages/rpm/doxygen.spec.in
deleted file mode 100644
index f78322a..0000000
--- a/packages/rpm/doxygen.spec.in
+++ /dev/null
@@ -1,126 +0,0 @@
-%define name doxygen
-
-# optionally pass --with-doxywizard to rpmbuild
-
-%define contentdir /var/www
-%define suexec_caller doxygen
-%define buildroot /var/tmp/%{name}-%{version}-%{revision}root
-
-Summary: A documentation system for C/C++.
-Name: doxygen
-Version: %{version}
-Release: %{revision}
-URL: http://www.stack.nl/~dimitri/doxygen/index.html
-Vendor: Dimitri van Heesch
-License: GNU General Public License
-Group: Development/Tools
-Source: %{name}-%{version}.src.tar.gz
-BuildRoot: %{buildroot}
-BuildRequires: libstdc++-devel >= 2.96, /usr/bin/perl, /usr/bin/latex, /usr/bin/dvips, /usr/bin/gs
-Requires: /sbin/chkconfig, /bin/mktemp, /bin/rm, /bin/mv, libstdc++ >= 2.96
-Provides: doxygen = %{mmn}
-
-%description
-Doxygen can generate an online class browser (in HTML) and/or a
-reference manual (in LaTeX) from a set of documented source files. The
-documentation is extracted directly from the sources. Doxygen can
-also be configured to extract the code structure from undocumented
-source files.
-
-%if %{?_with_doxywizard:1}%{!?_with_doxywizard:0}
-%package doxywizard
-Group: Development/Libraries
-Summary: GUI Interface for doxygen.
-Requires: doxygen = %{mmn}
-Requires: qt >= 3.3
-Provides: doxywizard = %{mmn}
-# Obsoletes:
-
-%description doxywizard
-Doxygen can generate an online class browser (in HTML) and/or a
-reference manual (in LaTeX) from a set of documented source files. The
-documentation is extracted directly from the sources. Doxygen can
-also be configured to extract the code structure from undocumented
-source files.
-
-This is the GUI interface for doxygen.  It requires qt and X11 to
-install.
-%endif
-
-%if %{?_with_doxysearch:1}%{!?_with_doxysearch:0}
-%package doxysearch
-Group: Development/Libraries
-Summary: external indexer and search engine for doxygen.
-Requires: doxygen = %{mmn}
-Requires: libxapian-devel >= 1.2
-Provides: doxysearch.cgi = %{mmn}
-Provides: doxyindexer = %{mmn}
-# Obsoletes:
-
-%description doxysearch
-External indexing and search tools for searching through doxygen
-generated HTML documentation.
-%endif
-
-%prep
-%setup -q -n %{name}-%{version}
-./configure %{?_with_doxywizard} %{?_with_doxysearch} --prefix $RPM_BUILD_ROOT/usr
-
-%build
-make %{?_smp_mflags}
-make %{?_smp_mflags} pdf
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make install
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-
-%doc README.md LICENSE LANGUAGE.HOWTO examples ./latex/*.pdf
-%doc /usr/man/man1/doxygen.1.gz
-
-%{_bindir}/doxygen
-
-%if %{?_with_doxywizard:1}%{!?_with_doxywizard:0}
-%files doxywizard
-%defattr(-,root,root)
-%{_bindir}/doxywizard
-%doc /usr/man/man1/doxywizard.1.gz
-%endif
-
-%if %{?_with_doxysearch:1}%{!?_with_doxysearch:0}
-%files doxysearch
-%defattr(-,root,root)
-%{_bindir}/doxyindexer
-%{_bindir}/doxysearch.cgi
-%doc /usr/man/man1/doxyindexer.1.gz
-%doc /usr/man/man1/doxysearch.1.gz
-%endif
-
-%changelog
-* Tue Dec 25 2012 Dimitri van Heesch <dimitri at stack.nl> 1.8.3
-- added doxyindexer and doxysearch
-
-* Fri Apr 18 2008 Kenneth Porter <shiva+doxygenspec at sewingwitch.com> 1.5.5-1
-- consolidate with and without doxywizard spec files with rpm macro
-- add gs BuildPrereq
-
-* Sun Nov 18 2007 Kevin McBride <kevin at planetsaphire.com> 1.5.4
-- consolidated manual package in lieu of --excludedocs flag for rpm --install
-
-* Mon Oct 10 2005 Kevin McBride <kevin at planetsaphire.com> 1.4.5
-- fixed versioning bugs.
-
-* Tue Oct 4 2005 Kevin McBride <kevin at planetsaphire.com> 1.4.5
-- added obsoletes and proides sections.
-
-* Sun Sep 20 2005 Kevin McBride <kevin at planetsaphire.com> 1.4.4
-- modified rpm spec file for Fedora Core acceptance criteria.
-
-* Sun Aug 7 2005 Kevin McBride <kevin at planetsaphire.com> 1.4.4
-- created initial rpm spec file for doxygen-1.4.4
-
diff --git a/qtools/CMakeLists.txt b/qtools/CMakeLists.txt
new file mode 100644
index 0000000..17f8eb4
--- /dev/null
+++ b/qtools/CMakeLists.txt
@@ -0,0 +1,57 @@
+include_directories(.)
+
+list(APPEND qtools_src
+qbuffer.cpp
+qcollection.cpp
+qcstring.cpp
+qdatastream.cpp
+qdatetime.cpp
+qdir.cpp
+qfile.cpp
+qfileinfo.cpp
+qgarray.cpp
+qgcache.cpp
+qgdict.cpp
+qglist.cpp
+qglobal.cpp
+qgstring.cpp
+qgvector.cpp
+qiodevice.cpp
+qregexp.cpp
+qstring.cpp
+qtextstream.cpp
+qtextcodec.cpp
+qstringlist.cpp
+qxml.cpp
+qmap.cpp
+qthread.cpp
+qmutex.cpp
+qutfcodec.cpp
+)
+
+if (UNIX)
+list(APPEND qtools_src
+qfile_unix.cpp
+qdir_unix.cpp
+qfileinfo_unix.cpp
+qthread_unix.cpp
+qmutex_unix.cpp
+qwaitcondition_unix.cpp
+)
+endif()
+
+if (WIN32)
+list(APPEND qtools_src
+qfile_win32.cpp
+qdir_win32.cpp
+qfileinfo_win32.cpp
+qthread_win32.cpp
+qmutex_win32.cpp
+qwaitcondition_win32.cpp
+
+)
+endif()
+
+add_library(qtools STATIC
+${qtools_src}
+)
diff --git a/qtools/Doxyfile b/qtools/Doxyfile
index 644eee5..2943270 100644
--- a/qtools/Doxyfile
+++ b/qtools/Doxyfile
@@ -196,7 +196,7 @@ EXTRA_SEARCH_MAPPINGS  =
 #---------------------------------------------------------------------------
 # configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
-GENERATE_LATEX         = NO
+GENERATE_LATEX         = YES
 LATEX_OUTPUT           =
 LATEX_CMD_NAME         = latex
 MAKEINDEX_CMD_NAME     = makeindex
@@ -279,7 +279,7 @@ PERL_PATH              = /usr/bin/perl
 CLASS_DIAGRAMS         = YES
 MSCGEN_PATH            =
 HIDE_UNDOC_RELATIONS   = YES
-HAVE_DOT               = NO
+HAVE_DOT               = YES
 DOT_NUM_THREADS        = 0
 DOT_FONTNAME           =
 DOT_FONTSIZE           = 10
@@ -306,4 +306,4 @@ MAX_DOT_GRAPH_DEPTH    = 0
 DOT_TRANSPARENT        = YES
 DOT_MULTI_TARGETS      = NO
 GENERATE_LEGEND        = YES
-DOT_CLEANUP            = NO
+DOT_CLEANUP            = YES
diff --git a/qtools/qcstring.cpp b/qtools/qcstring.cpp
index 26df166..35b9bb8 100644
--- a/qtools/qcstring.cpp
+++ b/qtools/qcstring.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2004 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -460,6 +460,12 @@ ulong QCString::toULong(bool *ok) const
   return s.toULong(ok);
 }
 
+uint64 QCString::toUInt64(bool *ok) const
+{
+  QString s(data());
+  return s.toUInt64(ok);
+}
+
 QCString &QCString::setNum(short n)
 {
   return setNum((long)n);
diff --git a/qtools/qcstring.h b/qtools/qcstring.h
index 8854aa7..abf30b3 100644
--- a/qtools/qcstring.h
+++ b/qtools/qcstring.h
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 1997-2004 by Dimitri van Heesch.
+** Copyright (C) 1997-2015 by Dimitri van Heesch.
 **
 ** Permission to use, copy, modify, and distribute this software and its
 ** documentation under the terms of the GNU General Public License is hereby
@@ -149,7 +149,7 @@ public:
     /** creates a string with room for size characters
      *  @param[in] size the number of character to allocate (including the 0-terminator)
      */
-    QCString( int size ) : m_rep(size)
+    explicit QCString( int size ) : m_rep(size)
     {
     }
 
@@ -288,6 +288,7 @@ public:
     uint toUInt( bool *ok=0 ) const;
     long toLong( bool *ok=0 ) const;
     ulong toULong( bool *ok=0 )	const;
+    uint64 toUInt64( bool *ok=0 ) const;
     QCString &setNum(short n);
     QCString &setNum(ushort n);
     QCString &setNum(int n);
diff --git a/qtools/qfeatures.h b/qtools/qfeatures.h
index d6c2882..1042ce6 100644
--- a/qtools/qfeatures.h
+++ b/qtools/qfeatures.h
@@ -378,7 +378,7 @@
 */
 //#define QT_NO_QWS_DEPTH_1
 /*!
-    4-bit greyscale
+    4-bit grayscale
 */
 //#define QT_NO_QWS_DEPTH_4
 /*!
diff --git a/qtools/qfile_win32.cpp b/qtools/qfile_win32.cpp
index 80ad628..a4ab013 100644
--- a/qtools/qfile_win32.cpp
+++ b/qtools/qfile_win32.cpp
@@ -264,7 +264,7 @@ bool QFile::open( int m )
 	} else {
 	    length = (int)st.st_size;
 	    ioIndex  = (flags() & IO_Append) == 0 ? 0 : length;
-	    if ( (flags() & !IO_Truncate) && length == 0 && isReadable() ) {
+	    if ( !(flags()&IO_Truncate) && length == 0 && isReadable() ) {
 		// try if you can read from it (if you can, it's a sequential
 		// device; e.g. a file in the /proc filesystem)
 		int c = getch();
diff --git a/qtools/qgdict.cpp b/qtools/qgdict.cpp
index 2530986..4fe1a26 100644
--- a/qtools/qgdict.cpp
+++ b/qtools/qgdict.cpp
@@ -154,6 +154,32 @@ int QGDict::hashKeyAscii( const char *key )
     return index;
 }
 
+#if 0
+int QGDict::hashKeyAscii( const char *key )
+{
+#if defined(CHECK_NULL)
+    if ( key == 0 )
+    {
+	qWarning( "QGDict::hashAsciiKey: Invalid null key" );
+        return 0;
+    }
+#endif
+    unsigned int hash = 5381;
+    int c;
+    // use djb2 by Dan Bernstein
+    if (cases)
+    {
+      while ((c=*key++)) hash = ((hash<<5)+hash)+c;
+    }
+    else
+    {
+      while ((c=*key++)) hash = ((hash<<5)+hash)+tolower(c);
+    }
+    int index = hash;
+    return index<0 ? -index : index;
+}
+#endif
+
 #ifndef QT_NO_DATASTREAM
 
 /*!
diff --git a/qtools/qglobal.h b/qtools/qglobal.h
index aa11f01..c3f7594 100644
--- a/qtools/qglobal.h
+++ b/qtools/qglobal.h
@@ -76,34 +76,6 @@
 #    undef MAC_OS_X_VERSION_MIN_REQUIRED
 #  endif
 #  define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_3
-#  include <AvailabilityMacros.h>
-#  if !defined(MAC_OS_X_VERSION_10_3)
-#     define MAC_OS_X_VERSION_10_3 MAC_OS_X_VERSION_10_2 + 10
-#  endif
-#  if !defined(MAC_OS_X_VERSION_10_4)
-#       define MAC_OS_X_VERSION_10_4 MAC_OS_X_VERSION_10_3 + 10
-#  endif
-#  if !defined(MAC_OS_X_VERSION_10_5)
-#       define MAC_OS_X_VERSION_10_5 MAC_OS_X_VERSION_10_4 + 10
-#  endif
-#  if !defined(MAC_OS_X_VERSION_10_6)
-#       define MAC_OS_X_VERSION_10_6 MAC_OS_X_VERSION_10_5 + 10
-#  endif
-#  if !defined(MAC_OS_X_VERSION_10_7)
-#       define MAC_OS_X_VERSION_10_7 MAC_OS_X_VERSION_10_6 + 10
-#  endif
-#  if !defined(MAC_OS_X_VERSION_10_8)
-#       define MAC_OS_X_VERSION_10_8 MAC_OS_X_VERSION_10_7 + 10
-#  endif
-#  if !defined(MAC_OS_X_VERSION_10_9)
-#       define MAC_OS_X_VERSION_10_9 MAC_OS_X_VERSION_10_8 + 10
-#  endif
-#  if !defined(MAC_OS_X_VERSION_10_10)
-#       define MAC_OS_X_VERSION_10_10 MAC_OS_X_VERSION_10_9 + 10
-#  endif
-#  if (MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_10)
-#    warning "This version of Mac OS X is unsupported"
-#  endif
 #elif defined(MSDOS) || defined(_MSDOS) || defined(__MSDOS__)
 #define _OS_MSDOS_
 #elif defined(OS2) || defined(_OS2) || defined(__OS2__)
diff --git a/qtools/qstring.cpp b/qtools/qstring.cpp
index f51c0d4..d831cb1 100644
--- a/qtools/qstring.cpp
+++ b/qtools/qstring.cpp
@@ -11957,7 +11957,8 @@ QString QString::visual(int index, int len)
 QChar* QString::asciiToUnicode( const QByteArray& ba, uint* len )
 {
     if ( ba.isNull() ) {
-	*len = 0;
+	if ( len )
+          *len = 0;
 	return 0;
     }
     int l = 0;
@@ -11976,7 +11977,8 @@ QChar* QString::asciiToUnicode( const QByteArray& ba, uint* len )
 static QChar* internalAsciiToUnicode( const QByteArray& ba, uint* len )
 {
     if ( ba.isNull() ) {
-	*len = 0;
+        if ( len )
+  	    *len = 0;
 	return 0;
     }
     int l = 0;
@@ -13935,6 +13937,60 @@ bye:
 }
 
 /*!
+  Returns the string converted to an <code>unsigned long</code>
+  value.
+
+  If \a ok is non-null, \a *ok is set to TRUE if there are no
+  conceivable errors, and FALSE if the string is not a number at all,
+  or if it has trailing garbage.
+*/
+
+uint64 QString::toUInt64( bool *ok, int base ) const
+{
+    const QChar *p = unicode();
+    uint64 val=0;
+    int l = length();
+    const uint64 max_mult = 1844674407370955161ULL;  // ULLONG_MAX/10, rounded down
+    bool is_ok = FALSE;
+    if ( !p )
+	goto bye;
+    while ( l && p->isSpace() )			// skip leading space
+	l--,p++;
+    if ( *p == '+' )
+	l--,p++;
+
+    // NOTE: toULong() code is similar
+    if ( !l || !ok_in_base(*p,base) )
+	goto bye;
+    while ( l && ok_in_base(*p,base) ) {
+	l--;
+	uint dv;
+	if ( p->isDigit() ) {
+	    dv = p->digitValue();
+	} else {
+	    if ( *p >= 'a' && *p <= 'z' )
+		dv = *p - 'a' + 10;
+	    else
+		dv = *p - 'A' + 10;
+	}
+	if ( val > max_mult || (val == max_mult && dv > (ULLONG_MAX%base)) )
+	    goto bye;
+	val = base*val + dv;
+	p++;
+    }
+
+    while ( l && p->isSpace() )			// skip trailing space
+	l--,p++;
+    if ( !l )
+	is_ok = TRUE;
+bye:
+    if ( ok )
+	*ok = is_ok;
+    return is_ok ? val : 0;
+}
+
+
+/*!
   Returns the string converted to a <code>short</code> value.
 
   If \a ok is non-null, \a *ok is set to TRUE if there are no
diff --git a/qtools/qstring.h b/qtools/qstring.h
index a64fabf..df3873d 100644
--- a/qtools/qstring.h
+++ b/qtools/qstring.h
@@ -463,6 +463,7 @@ public:
     uint	toUInt( bool *ok=0, int base=10 )	const;
     long	toLong( bool *ok=0, int base=10 )	const;
     ulong	toULong( bool *ok=0, int base=10 )	const;
+    uint64	toUInt64( bool *ok=0, int base=10 )	const;
     float	toFloat( bool *ok=0 )	const;
     double	toDouble( bool *ok=0 )	const;
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..6763cf5
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,242 @@
+# vim:ts=4:sw=4:expandtab:autoindent:
+
+include_directories(
+    ${CMAKE_SOURCE_DIR}/qtools
+    ${CMAKE_SOURCE_DIR}/libmd5
+    ${CMAKE_SOURCE_DIR}/vhdlparser/
+    ${CMAKE_SOURCE_DIR}/src
+    ${CLANG_INCLUDEDIR}
+    ${GENERATED_SRC}
+)
+
+
+file(MAKE_DIRECTORY ${GENERATED_SRC})
+file(GLOB LANGUAGE_FILES "${CMAKE_SOURCE_DIR}/src/translator_??.h")
+
+# instead of increasebuffer.py
+add_definitions(-DYY_BUF_SIZE=262144 -DYY_READ_BUF_SIZE=262144)
+
+# generate settings.h
+file(GENERATE OUTPUT ${GENERATED_SRC}/settings.h
+CONTENT "#ifndef SETTINGS_H
+#define SETTINGS_H
+#define USE_SQLITE3 ${sqlite3}
+#define USE_LIBCLANG ${clang}
+#define IS_SUPPORTED(x) \\
+  ((USE_SQLITE3  && strcmp(\"USE_SQLITE3\",(x))==0)  || \\
+   (USE_LIBCLANG && strcmp(\"USE_LIBCLANG\",(x))==0) || \\
+  0)
+#endif" )
+set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1)
+
+
+# generate version.cpp
+file(GENERATE OUTPUT ${GENERATED_SRC}/version.cpp
+    CONTENT "char versionString[]=\"${VERSION}\";"
+)
+set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1)
+
+
+# configoptions.cpp
+add_custom_command(
+    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -cpp ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configoptions.cpp
+    DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
+    OUTPUT ${GENERATED_SRC}/configoptions.cpp
+)
+set_source_files_properties(${GENERATED_SRC}/configoptions.cpp PROPERTIES GENERATED 1)
+
+
+# ce_parse.h
+add_custom_command(
+    COMMAND ${BISON_EXECUTABLE} -l -d -p ce_parsexpYY ${CMAKE_SOURCE_DIR}/src/constexp.y -o ce_parse.c
+    DEPENDS ${CMAKE_SOURCE_DIR}/src/constexp.y
+    OUTPUT ${GENERATED_SRC}/ce_parse.h
+    WORKING_DIRECTORY ${GENERATED_SRC}
+)
+set_source_files_properties(${GENERATED_SRC}/ce_parse.h PROPERTIES GENERATED 1)
+
+# lang_cfg.h
+add_custom_command(
+    COMMENT  "Generating ${GENERATED_SRC}/lang_cfg.h"
+    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${LANG_CODES} 2> ${GENERATED_SRC}/lang_cfg.h
+    DEPENDS ${LANGUAGE_FILES}
+    OUTPUT ${GENERATED_SRC}/lang_cfg.h
+)
+set_source_files_properties(${GENERATED_SRC}/lang_cfg.h PROPERTIES GENERATED 1)
+
+# all resource files
+file(GLOB RESOURCES ${CMAKE_SOURCE_DIR}/templates/*/*)
+
+# resources.cpp
+add_custom_command(
+    COMMENT  "Generating ${GENERATED_SRC}/resources.cpp"
+    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp
+    DEPENDS ${RESOURCES}
+    OUTPUT ${GENERATED_SRC}/resources.cpp
+)
+set_source_files_properties(${GENERATED_SRC}/resources.cpp PROPERTIES GENERATED 1)
+
+# layout_default.xml
+add_custom_command(
+    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/to_c_cmd.py < ${CMAKE_SOURCE_DIR}/src/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h
+    DEPENDS ${CMAKE_SOURCE_DIR}/src/layout_default.xml
+    OUTPUT  ${GENERATED_SRC}/layout_default.xml.h
+)
+set_source_files_properties(${GENERATED_SRC}/layout_default.xml.h PROPERTIES GENERATED 1)
+
+# Targets for flex/bison   generated files
+FLEX_TARGET(scanner        scanner.l        ${GENERATED_SRC}/scanner.cpp        COMPILE_FLAGS "$(LEX_FLAGS) -PscannerYY")
+FLEX_TARGET(code           code.l           ${GENERATED_SRC}/code.cpp           COMPILE_FLAGS "$(LEX_FLAGS) -PcodeYY")
+FLEX_TARGET(pyscanner      pyscanner.l      ${GENERATED_SRC}/pyscanner.cpp      COMPILE_FLAGS "$(LEX_FLAGS) -PpyscannerYY")
+FLEX_TARGET(pycode         pycode.l         ${GENERATED_SRC}/pycode.cpp         COMPILE_FLAGS "$(LEX_FLAGS) -PpycodeYY")
+FLEX_TARGET(fortranscanner fortranscanner.l ${GENERATED_SRC}/fortranscanner.cpp COMPILE_FLAGS "$(LEX_FLAGS) -PfortranscannerYY -i")
+FLEX_TARGET(fortrancode    fortrancode.l    ${GENERATED_SRC}/fortrancode.cpp    COMPILE_FLAGS "$(LEX_FLAGS) -PfortrancodeYY -i")
+FLEX_TARGET(vhdlcode       vhdlcode.l       ${GENERATED_SRC}/vhdlcode.cpp       COMPILE_FLAGS "$(LEX_FLAGS) -PvhdlcodeYY -i")
+FLEX_TARGET(tclscanner     tclscanner.l     ${GENERATED_SRC}/tclscanner.cpp     COMPILE_FLAGS "$(LEX_FLAGS) -PtclscannerYY -i")
+FLEX_TARGET(pre            pre.l            ${GENERATED_SRC}/pre.cpp            COMPILE_FLAGS "$(LEX_FLAGS) -PpreYY")
+FLEX_TARGET(declinfo       declinfo.l       ${GENERATED_SRC}/declinfo.cpp       COMPILE_FLAGS "$(LEX_FLAGS) -PdeclinfoYY")
+FLEX_TARGET(defargs        defargs.l        ${GENERATED_SRC}/defargs.cpp        COMPILE_FLAGS "$(LEX_FLAGS) -PdefargsYY")
+FLEX_TARGET(doctokenizer   doctokenizer.l   ${GENERATED_SRC}/doctokenizer.cpp   COMPILE_FLAGS "$(LEX_FLAGS) -PdoctokenizerYY")
+FLEX_TARGET(commentcnv     commentcnv.l     ${GENERATED_SRC}/commentcnv.cpp     COMPILE_FLAGS "$(LEX_FLAGS) -PcommentcnvYY")
+FLEX_TARGET(commentscan    commentscan.l    ${GENERATED_SRC}/commentscan.cpp    COMPILE_FLAGS "$(LEX_FLAGS) -PcommentscanYY")
+FLEX_TARGET(constexp       constexp.l       ${GENERATED_SRC}/constexp.cpp       COMPILE_FLAGS "$(LEX_FLAGS) -PconstexpYY")
+FLEX_TARGET(xmlcode        xmlcode.l        ${GENERATED_SRC}/xmlcode.cpp        COMPILE_FLAGS "$(LEX_FLAGS) -PxmlcodeYY")
+FLEX_TARGET(config         config.l         ${GENERATED_SRC}/config.cpp         COMPILE_FLAGS "$(LEX_FLAGS) -PconfigYY")
+
+BISON_TARGET(vhdlparser    vhdlparser.y     ${GENERATED_SRC}/vhdlparser.cpp     COMPILE_FLAGS "$(YACC_FLAGS) -l -p vhdlscannerYY")
+BISON_TARGET(constexp      constexp.y       ${GENERATED_SRC}/ce_parse.cpp       COMPILE_FLAGS "$(YACC_FLAGS) -l -p constexpYY")
+
+add_library(doxycfg STATIC
+    ${GENERATED_SRC}/lang_cfg.h
+    ${GENERATED_SRC}/config.cpp
+    ${GENERATED_SRC}/configoptions.cpp
+    portable.cpp
+    portable_c.c
+)
+
+add_library(_doxygen STATIC
+    # custom generated files
+    ${GENERATED_SRC}/lang_cfg.h
+    ${GENERATED_SRC}/settings.h
+    ${GENERATED_SRC}/layout_default.xml.h
+    ${GENERATED_SRC}/version.cpp
+    ${GENERATED_SRC}/ce_parse.h
+    ${GENERATED_SRC}/resources.cpp
+    # generated by flex/bison
+    ${GENERATED_SRC}/scanner.cpp
+    ${GENERATED_SRC}/code.cpp
+    ${GENERATED_SRC}/pyscanner.cpp
+    ${GENERATED_SRC}/pycode.cpp
+    ${GENERATED_SRC}/fortranscanner.cpp
+    ${GENERATED_SRC}/fortrancode.cpp
+    ${GENERATED_SRC}/vhdlcode.cpp
+    ${GENERATED_SRC}/tclscanner.cpp
+    ${GENERATED_SRC}/pre.cpp
+    ${GENERATED_SRC}/declinfo.cpp
+    ${GENERATED_SRC}/defargs.cpp
+    ${GENERATED_SRC}/doctokenizer.cpp
+    ${GENERATED_SRC}/commentcnv.cpp
+    ${GENERATED_SRC}/commentscan.cpp
+    ${GENERATED_SRC}/constexp.cpp
+    ${GENERATED_SRC}/xmlcode.cpp
+    #
+    ${GENERATED_SRC}/ce_parse.cpp
+    #
+    plantuml.cpp
+    arguments.cpp
+    cite.cpp
+    clangparser.cpp
+    fileparser.cpp
+    classdef.cpp
+    classlist.cpp
+    cmdmapper.cpp
+    condparser.cpp
+    context.cpp
+    cppvalue.cpp
+    debug.cpp
+    defgen.cpp
+    define.cpp
+    definition.cpp
+    diagram.cpp
+    dirdef.cpp
+    docparser.cpp
+    docsets.cpp
+    dot.cpp
+    doxygen.cpp
+    eclipsehelp.cpp
+    entry.cpp
+    filedef.cpp
+    filename.cpp
+    formula.cpp
+    ftextstream.cpp
+    ftvhelp.cpp
+    groupdef.cpp
+    htags.cpp
+    htmldocvisitor.cpp
+    htmlentity.cpp
+    resourcemgr.cpp
+    htmlgen.cpp
+    htmlhelp.cpp
+    image.cpp
+    index.cpp
+    language.cpp
+    latexdocvisitor.cpp
+    latexgen.cpp
+    layout.cpp
+    lodepng.cpp
+    logos.cpp
+    mandocvisitor.cpp
+    mangen.cpp
+    sqlite3gen.cpp
+    markdown.cpp
+    marshal.cpp
+    memberdef.cpp
+    membergroup.cpp
+    memberlist.cpp
+    membername.cpp
+    message.cpp
+    msc.cpp
+    dia.cpp
+    namespacedef.cpp
+    objcache.cpp
+    outputgen.cpp
+    outputlist.cpp
+    pagedef.cpp
+    perlmodgen.cpp
+    qhp.cpp
+    qhpxmlwriter.cpp
+    reflist.cpp
+    rtfdocvisitor.cpp
+    rtfgen.cpp
+    rtfstyle.cpp
+    searchindex.cpp
+    store.cpp
+    tagreader.cpp
+    template.cpp
+    textdocvisitor.cpp
+    tooltip.cpp
+    util.cpp
+    vhdldocgen.cpp
+    vhdljjparser.cpp
+    xmldocvisitor.cpp
+    xmlgen.cpp
+    docbookvisitor.cpp
+    docbookgen.cpp
+)
+
+add_executable(doxygen main.cpp)
+target_link_libraries(doxygen
+    _doxygen
+    doxycfg
+    qtools
+    md5
+    vhdlparser
+    ${SQLITE3_LIBRARIES}
+    ${ICONV_LIBRARIES}
+    ${CMAKE_THREAD_LIBS_INIT}
+    ${EXTRA_LIBS}
+    ${CLANG_LIBS}
+)
+
+install(TARGETS doxygen DESTINATION bin)
+
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100644
index ffe7c16..0000000
--- a/src/Makefile.in
+++ /dev/null
@@ -1,53 +0,0 @@
-
-#
-#
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby
-# granted. No representations are made about the suitability of this software
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-#
-
-GENERATED_SRC = ../generated_src/doxygen
-
-all: Makefile.libdoxygen Makefile.libdoxycfg Makefile.doxygen Makefile
-	$(MAKE) -f Makefile.libdoxycfg $@
-	$(MAKE) -f Makefile.libdoxygen $@
-	$(MAKE) -f Makefile.doxygen    $@
-
-Makefile.libdoxygen: libdoxygen.pro libdoxygen.t
-	$(ENV) $(PERL) "$(TMAKE)" libdoxygen.pro >Makefile.libdoxygen
-	echo 'HEADERS += ' `ls -1 translator_??.h`  >>Makefile.libdoxygen
-
-Makefile.libdoxycfg: libdoxycfg.pro libdoxycfg.t
-	$(ENV) $(PERL) "$(TMAKE)" libdoxycfg.pro >Makefile.libdoxycfg
-
-Makefile.doxygen: doxygen.pro
-	$(ENV) $(PERL) "$(TMAKE)" doxygen.pro >Makefile.doxygen
-
-tmake:
-	$(ENV) $(PERL) "$(TMAKE)" libdoxygen.pro >Makefile.libdoxygen
-	$(ENV) $(PERL) "$(TMAKE)" libdoxycfg.pro >Makefile.libdoxycfg
-	$(ENV) $(PERL) "$(TMAKE)" doxygen.pro >Makefile.doxygen
-
-# clean objects
-clean: Makefile.libdoxygen Makefile.libdoxycfg Makefile.doxygen
-	$(MAKE) -f Makefile.libdoxygen clean
-	$(MAKE) -f Makefile.libdoxycfg clean
-	$(MAKE) -f Makefile.doxygen    clean
-
-# also clean flex/bison generated files
-distclean: clean
-	-cd $(GENERATED_SRC) && $(RM) scanner.cpp code.cpp config.cpp pre.cpp constexp.cpp \
-	       ce_parse.cpp ce_parse.h tag.cpp commentscan.cpp \
-	       declinfo.cpp defargs.cpp commentcnv.cpp doctokenizer.cpp \
-	       pycode.cpp pyscanner.cpp fortrancode.cpp fortranscanner.cpp \
-	       vhdlscanner.cpp vhdlcode.cpp tclscanner.cpp
-
-FORCE:
diff --git a/src/arguments.cpp b/src/arguments.cpp
index 2acf855..095aa96 100644
--- a/src/arguments.cpp
+++ b/src/arguments.cpp
@@ -32,6 +32,7 @@ ArgumentList *ArgumentList::deepCopy() const
   argList->volatileSpecifier  = volatileSpecifier;
   argList->pureSpecifier      = pureSpecifier;
   argList->trailingReturnType = trailingReturnType;
+  argList->isDeleted          = isDeleted;
 
   return argList;
 }
@@ -54,12 +55,14 @@ ArgumentList *ArgumentList::unmarshal(StorageIntf *s)
     a->array   = unmarshalQCString(s);
     a->defval  = unmarshalQCString(s);
     a->docs    = unmarshalQCString(s);
+    a->typeConstraint = unmarshalQCString(s);
     result->append(a);
   }
   result->constSpecifier     = unmarshalBool(s);
   result->volatileSpecifier  = unmarshalBool(s);
   result->pureSpecifier      = unmarshalBool(s);
   result->trailingReturnType = unmarshalQCString(s);
+  result->isDeleted          = unmarshalBool(s);
   return result;
 }
 
@@ -85,12 +88,14 @@ void ArgumentList::marshal(StorageIntf *s,ArgumentList *argList)
         marshalQCString(s,a->array);    
         marshalQCString(s,a->defval);    
         marshalQCString(s,a->docs);    
+        marshalQCString(s,a->typeConstraint);
       }
     }
     marshalBool(s,argList->constSpecifier);
     marshalBool(s,argList->volatileSpecifier);
     marshalBool(s,argList->pureSpecifier);
     marshalQCString(s,argList->trailingReturnType);
+    marshalBool(s,argList->isDeleted);
   }
 }
 
diff --git a/src/arguments.h b/src/arguments.h
index ed09869..555b573 100644
--- a/src/arguments.h
+++ b/src/arguments.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -30,37 +30,39 @@ struct Argument
   /*! Construct a new argument. */
   Argument() {}
   /*! Copy an argument (does a deep copy of all strings). */
-  Argument(const Argument &a) 
-  { 
-    attrib=a.attrib.copy();
-    type=a.type.copy(); 
-    name=a.name.copy(); 
-    defval=a.defval.copy(); 
-    docs=a.docs.copy();
-    array=a.array.copy();
+  Argument(const Argument &a)
+  {
+    attrib=a.attrib;
+    type=a.type;
+    name=a.name;
+    array=a.array;
+    defval=a.defval;
+    docs=a.docs;
+    typeConstraint=a.typeConstraint;
   }
   /*! Assignment of an argument (does a deep copy of all strings). */
   Argument &operator=(const Argument &a)
   {
     if (this!=&a)
     {
-      attrib=a.attrib.copy();
-      type=a.type.copy(); 
-      name=a.name.copy(); 
-      defval=a.defval.copy(); 
-      docs=a.docs.copy();
-      array=a.array.copy();
+      attrib=a.attrib;
+      type=a.type;
+      name=a.name;
+      array=a.array;
+      defval=a.defval;
+      docs=a.docs;
+      typeConstraint=a.typeConstraint;
     }
     return *this;
   }
   /*! return TRUE if this argument is documentation and the argument has a
    *  non empty name.
    */
-  bool hasDocumentation() const 
-  { 
-    return !name.isEmpty() && !docs.isEmpty(); 
+  bool hasDocumentation() const
+  {
+    return !name.isEmpty() && !docs.isEmpty();
   }
-  
+
   QCString attrib;   /*!< Argument's attribute (IDL only) */
   QCString type;     /*!< Argument's type */
   QCString canType;  /*!< Cached value of canonical type (after type resolution). Empty initially. */
@@ -68,6 +70,7 @@ struct Argument
   QCString array;    /*!< Argument's array specifier (may be empty) */
   QCString defval;   /*!< Argument's default value (may be empty) */
   QCString docs;     /*!< Argument's documentation (may be empty) */
+  QCString typeConstraint;  /*!< Used for Java generics: \<T extends C\> */
 };
 
 /*! \brief This class represents an function or template argument list. 
@@ -83,7 +86,8 @@ class ArgumentList : public QList<Argument>
     ArgumentList() : QList<Argument>(), 
                      constSpecifier(FALSE),
                      volatileSpecifier(FALSE),
-                     pureSpecifier(FALSE)
+                     pureSpecifier(FALSE),
+                     isDeleted(FALSE)
                      { setAutoDelete(TRUE); }
     /*! Destroys the argument list */
    ~ArgumentList() {}
@@ -99,7 +103,8 @@ class ArgumentList : public QList<Argument>
     bool pureSpecifier;
     /*! C++11 style Trailing return type? */
     QCString trailingReturnType;
-    /*! C++11 defaulted method */
+    /*! method with =delete */
+    bool isDeleted;
 
     static ArgumentList *unmarshal(StorageIntf *s);
     static void marshal(StorageIntf *s,ArgumentList *argList);
diff --git a/src/bufstr.h b/src/bufstr.h
index 7fb7d40..331def2 100644
--- a/src/bufstr.h
+++ b/src/bufstr.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/cite.cpp b/src/cite.cpp
index 2ea6300..3125f35 100644
--- a/src/cite.cpp
+++ b/src/cite.cpp
@@ -226,13 +226,13 @@ void CiteDict::generatePage() const
     else if (insideBib) doc+=line+"\n";
     int i;
     // determine text to use at the location of the @cite command
-    if (insideBib && (i=line.find("<a name=\"CITEREF_"))!=-1)
+    if (insideBib && (i=line.find("name=\"CITEREF_"))!=-1)
     {
       int j=line.find("\">[");
       int k=line.find("]</a>");
       if (j!=-1 && k!=-1)
       {
-        QCString label = line.mid(i+17,j-i-17);
+        QCString label = line.mid(i+14,j-i-14);
         QCString number = line.mid(j+2,k-j-1);
         CiteInfo *ci = m_entries.find(label);
         //printf("label='%s' number='%s' => %p\n",label.data(),number.data(),ci);
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 3a103af..88f9a70 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -118,6 +118,8 @@ class ClassDefImpl
     UsesClassDict *usedByImplClassDict;
     UsesClassDict *usesIntfClassDict;
 
+    ConstraintClassDict *constraintClassDict;
+
     /*! Template instances that exists of this class, the key in the
      *  dictionary is the template argument list.
      */
@@ -216,6 +218,7 @@ void ClassDefImpl::init(const char *defFileName, const char *name,
   usesImplClassDict=0;
   usedByImplClassDict=0;
   usesIntfClassDict=0;
+  constraintClassDict=0;
   memberGroupSDict = 0;
   innerClasses = 0;
   subGrouping=Config_getBool("SUBGROUPING");
@@ -267,6 +270,7 @@ ClassDefImpl::~ClassDefImpl()
   delete usesImplClassDict;
   delete usedByImplClassDict;
   delete usesIntfClassDict;
+  delete constraintClassDict;
   delete incInfo;
   delete memberGroupSDict;
   delete innerClasses;
@@ -921,10 +925,7 @@ static void writeTemplateSpec(OutputList &ol,Definition *d,
         if (a) ol.docify(", ");
       }
       ol.docify(">");
-      ol.pushGeneratorState();
-      ol.disableAllBut(OutputGenerator::Html);
       ol.lineBreak();
-      ol.popGeneratorState();
     }
     ol.docify(type.lower()+" "+name);
     ol.endSubsubsection();
@@ -1956,7 +1957,6 @@ void ClassDef::writeDocumentationContents(OutputList &ol,const QCString & /*page
 
   QCString pageType = " ";
   pageType += compoundTypeString();
-  toupper(pageType.at(1));
 
   Doxygen::indexList->addIndexItem(this,0);
 
@@ -2526,20 +2526,67 @@ bool ClassDef::hasExamples() const
   return result;
 }
 
+void ClassDef::addTypeConstraint(const QCString &typeConstraint,const QCString &type)
+{
+  //printf("addTypeContraint(%s,%s)\n",type.data(),typeConstraint.data());
+  static bool hideUndocRelation = Config_getBool("HIDE_UNDOC_RELATIONS");
+  if (typeConstraint.isEmpty() || type.isEmpty()) return;
+  ClassDef *cd = getResolvedClass(this,getFileDef(),typeConstraint);
+  if (cd==0 && !hideUndocRelation)
+  {
+    cd = new ClassDef(getDefFileName(),getDefLine(),getDefColumn(),typeConstraint,ClassDef::Class);
+    cd->setUsedOnly(TRUE);
+    cd->setLanguage(getLanguage());
+    Doxygen::hiddenClasses->append(typeConstraint,cd);
+    //printf("Adding undocumented constraint '%s' to class %s on type %s\n",
+    //       typeConstraint.data(),name().data(),type.data());
+  }
+  if (cd)
+  {
+    if (m_impl->constraintClassDict==0)
+    {
+      m_impl->constraintClassDict = new ConstraintClassDict(17);
+      m_impl->constraintClassDict->setAutoDelete(TRUE);
+    }
+    ConstraintClassDef *ccd=m_impl->constraintClassDict->find(typeConstraint);
+    if (ccd==0)
+    {
+      ccd = new ConstraintClassDef(cd);
+      m_impl->constraintClassDict->insert(typeConstraint,ccd);
+    }
+    ccd->addAccessor(type);
+    //printf("Adding constraint '%s' to class %s on type %s\n",
+    //       typeConstraint.data(),name().data(),type.data());
+  }
+}
 
-void ClassDef::setTemplateArguments(ArgumentList *al)
+// Java Type Constrains: A<T extends C & I>
+void ClassDef::addTypeConstraints()
 {
-  if (al==0) return;
-  if (!m_impl->tempArgs) delete m_impl->tempArgs; // delete old list if needed
-  m_impl->tempArgs=new ArgumentList;
-  ArgumentListIterator ali(*al);
-  Argument *a;
-  for (;(a=ali.current());++ali)
+  if (m_impl->tempArgs)
   {
-    m_impl->tempArgs->append(new Argument(*a));
+    ArgumentListIterator ali(*m_impl->tempArgs);
+    Argument *a;
+    for (;(a=ali.current());++ali)
+    {
+      if (!a->typeConstraint.isEmpty())
+      {
+        QCString typeConstraint;
+        int i=0,p=0;
+        while ((i=a->typeConstraint.find('&',p))!=-1) // typeConstraint="A &I" for C<T extends A & I>
+        {
+          typeConstraint = a->typeConstraint.mid(p,i-p).stripWhiteSpace();
+          addTypeConstraint(typeConstraint,a->type);
+          p=i+1;
+        }
+        typeConstraint = a->typeConstraint.right(a->typeConstraint.length()-p).stripWhiteSpace();
+        addTypeConstraint(typeConstraint,a->type);
+      }
+    }
   }
 }
 
+// C# Type Constraints: D<T> where T : C, I
 void ClassDef::setTypeConstraints(ArgumentList *al)
 {
   if (al==0) return;
@@ -2553,6 +2600,20 @@ void ClassDef::setTypeConstraints(ArgumentList *al)
   }
 }
 
+void ClassDef::setTemplateArguments(ArgumentList *al)
+{
+  if (al==0) return;
+  if (m_impl->tempArgs) delete m_impl->tempArgs; // delete old list if needed
+  //printf("setting template args '%s' for '%s'\n",tempArgListToString(al,getLanguage()).data(),name().data());
+  m_impl->tempArgs=new ArgumentList;
+  ArgumentListIterator ali(*al);
+  Argument *a;
+  for (;(a=ali.current());++ali)
+  {
+    m_impl->tempArgs->append(new Argument(*a));
+  }
+}
+
 /*! Returns \c TRUE iff this class or a class inheriting from this class
  *  is \e not defined in an external tag file.
  */
@@ -3649,7 +3710,7 @@ ClassDef *ClassDef::insertTemplateInstance(const QCString &fileName,
   ClassDef *templateClass=m_impl->templateInstances->find(templSpec);
   if (templateClass==0)
   {
-    Debug::print(Debug::Classes,0,"      New template instance class `%s'`%s'\n",name().data(),templSpec.data());
+    Debug::print(Debug::Classes,0,"      New template instance class `%s'`%s'\n",qPrint(name()),qPrint(templSpec));
     QCString tcname = removeRedundantWhiteSpace(localName()+templSpec);
     templateClass = new ClassDef(
         fileName,startLine,startColumn,tcname,ClassDef::Class);
@@ -4405,6 +4466,11 @@ UsesClassDict *ClassDef::usedInterfaceClasses() const
   return m_impl->usesIntfClassDict;
 }
 
+ConstraintClassDict *ClassDef::templateTypeConstraints() const
+{
+  return m_impl->constraintClassDict;
+}
+
 bool ClassDef::isTemplateArgument() const
 {
   return m_impl->isTemplArg;
diff --git a/src/classdef.h b/src/classdef.h
index 0729d20..6cdd491 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -24,6 +24,7 @@
 
 #include "definition.h"
 
+struct Argument;
 class MemberDef;
 class MemberList;
 class MemberDict;
@@ -38,6 +39,7 @@ class MemberDef;
 class ExampleSDict;
 class MemberNameInfoSDict;
 class UsesClassDict;
+class ConstraintClassDict;
 class MemberGroupSDict;
 class QTextStream;
 class PackageDef;
@@ -229,6 +231,8 @@ class ClassDef : public Definition
 
     UsesClassDict *usedInterfaceClasses() const;
 
+    ConstraintClassDict *templateTypeConstraints() const;
+
     bool isTemplateArgument() const;
 
     /** Returns the definition of a nested compound if
@@ -371,6 +375,7 @@ class ClassDef : public Definition
     void findSectionsInDocumentation();
     void addMembersToMemberGroup();
     void addListReferences();
+    void addTypeConstraints();
     void computeAnchors();
     void mergeMembers();
     void sortMemberLists();
@@ -441,12 +446,13 @@ class ClassDef : public Definition
     void getTitleForMemberListType(MemberListType type,
                QCString &title,QCString &subtitle);
     QCString includeStatement() const;
+    void addTypeConstraint(const QCString &typeConstraint,const QCString &type);
 
-    
     ClassDefImpl *m_impl;
-
 };
 
+//------------------------------------------------------------------------
+
 /** Class that contains information about a usage relation. 
  */
 struct UsesClassDef
@@ -500,6 +506,8 @@ class UsesClassDictIterator : public QDictIterator<UsesClassDef>
    ~UsesClassDictIterator() {}
 };
 
+//------------------------------------------------------------------------
+
 /** Class that contains information about an inheritance relation. 
  */
 struct BaseClassDef
@@ -558,4 +566,56 @@ class BaseClassListIterator : public QListIterator<BaseClassDef>
       QListIterator<BaseClassDef>(bcl) {}
 };
 
+//------------------------------------------------------------------------
+
+
+/** Class that contains information about a type constraint relations.
+ */
+struct ConstraintClassDef
+{
+  ConstraintClassDef(ClassDef *cd) : classDef(cd)
+  {
+    accessors = new QDict<void>(17);
+  }
+ ~ConstraintClassDef()
+  {
+    delete accessors;
+  }
+  void addAccessor(const char *s)
+  {
+    if (accessors->find(s)==0)
+    {
+      accessors->insert(s,(void *)666);
+    }
+  }
+  /** Class definition that this relation uses. */
+  ClassDef *classDef;
+
+  /** Dictionary of member types names that form the edge labels of the
+   *  constraint relation.
+   */
+  QDict<void> *accessors;
+};
+
+/** Dictionary of constraint relations.
+ */
+class ConstraintClassDict : public QDict<ConstraintClassDef>
+{
+  public:
+    ConstraintClassDict(int size) : QDict<ConstraintClassDef>(size) {}
+   ~ConstraintClassDict() {}
+};
+
+/** Iterator class to iterate over a dictionary of constraint relations.
+ */
+class ConstraintClassDictIterator : public QDictIterator<ConstraintClassDef>
+{
+  public:
+    ConstraintClassDictIterator(const QDict<ConstraintClassDef> &d)
+      : QDictIterator<ConstraintClassDef>(d) {}
+   ~ConstraintClassDictIterator() {}
+};
+
+//------------------------------------------------------------------------
+
 #endif
diff --git a/src/classlist.cpp b/src/classlist.cpp
index 6615a99..81b7d26 100644
--- a/src/classlist.cpp
+++ b/src/classlist.cpp
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/classlist.h b/src/classlist.h
index 3f15b3e..2ae7de8 100644
--- a/src/classlist.h
+++ b/src/classlist.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/cmdmapper.cpp b/src/cmdmapper.cpp
index eeb7f78..6784b3e 100644
--- a/src/cmdmapper.cpp
+++ b/src/cmdmapper.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -115,6 +115,9 @@ CommandMap cmdMap[] =
   { "#",             CMD_HASH },
   { "%",             CMD_PERCENT },
   { "|",             CMD_PIPE },
+  { ".",             CMD_PUNT },
+  { "+",             CMD_PLUS },
+  { "-",             CMD_MINUS },
   { "::",            CMD_DCOLON },
   { "\"",            CMD_QUOTE },
   { "_internalref",  CMD_INTERNALREF },
diff --git a/src/cmdmapper.h b/src/cmdmapper.h
index fd33b10..92c906a 100644
--- a/src/cmdmapper.h
+++ b/src/cmdmapper.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -130,7 +130,10 @@ enum CommandType
   CMD_MDASH        = 100,
   CMD_STARTUML     = 101,
   CMD_ENDUML       = 102,
-  CMD_SETSCOPE     = 103
+  CMD_SETSCOPE     = 103,
+  CMD_PUNT         = 104,
+  CMD_PLUS         = 105,
+  CMD_MINUS        = 106
 };
 
 enum HtmlTagType
diff --git a/src/code.h b/src/code.h
index 72a906c..1b4c0ac 100644
--- a/src/code.h
+++ b/src/code.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/code.l b/src/code.l
index 09f1177..ddf37d0 100644
--- a/src/code.l
+++ b/src/code.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -14,7 +14,7 @@
  * input used in their production; they are not affected by this license.
  *
  */
-
+%option never-interactive
 %{
 
 /*
@@ -46,7 +46,7 @@
 //#define DBG_CTX(x) fprintf x
 #define DBG_CTX(x) do { } while(0)
 
-#define YY_NEVER_INTERACTIVE 1
+#define YY_NO_UNISTD_H 1
 
 #define CLASSBLOCK (int *)4
 #define SCOPEBLOCK (int *)8
@@ -1781,7 +1781,7 @@ TEMPLIST "<"[^\"\}\{\(\)\/\n\>]*">"
 SCOPETNAME (((({ID}{TEMPLIST}?){BN}*)?{SEP}{BN}*)*)((~{BN}*)?{ID})
 SCOPEPREFIX ({ID}{TEMPLIST}?{BN}*{SEP}{BN}*)+
 KEYWORD_OBJC ("@public"|"@private"|"@protected"|"@class"|"@implementation"|"@interface"|"@end"|"@selector"|"@protocol"|"@optional"|"@required"|"@throw"|"@synthesize"|"@property")
-KEYWORD ("asm"|"__assume"|"auto"|"class"|"const"|"delete"|"enum"|"explicit"|"extern"|"false"|"friend"|"gcnew"|"gcroot"|"get"|"inline"|"internal"|"mutable"|"namespace"|"new"|"nullptr"|"override"|"operator"|"pin_ptr"|"private"|"protected"|"public"|"raise"|"register"|"remove"|"self"|"sizeof"|"static"|"struct"|"__super"|"function"|"template"|"generic"|"this"|"true"|"typedef"|"typeid"|"typename"|"union"|"using"|"virtual"|"volatile"|"abstract"|"final"|"import"|"synchronized"|"transient"|"align [...]
+KEYWORD ("asm"|"__assume"|"auto"|"class"|"const"|"delete"|"enum"|"explicit"|"extern"|"false"|"friend"|"gcnew"|"gcroot"|"set"|"get"|"inline"|"internal"|"mutable"|"namespace"|"new"|"nullptr"|"override"|"operator"|"pin_ptr"|"private"|"protected"|"public"|"raise"|"register"|"remove"|"self"|"sizeof"|"static"|"struct"|"__super"|"function"|"template"|"generic"|"this"|"true"|"typedef"|"typeid"|"typename"|"union"|"using"|"virtual"|"volatile"|"abstract"|"final"|"import"|"synchronized"|"transient"| [...]
 FLOWKW  ("break"|"case"|"catch"|"continue"|"default"|"do"|"else"|"finally"|"for"|"foreach"|"for each"|"goto"|"if"|"return"|"switch"|"throw"|"throws"|"try"|"while"|"@try"|"@catch"|"@finally")
 TYPEKW  ("bool"|"char"|"double"|"float"|"int"|"long"|"object"|"short"|"signed"|"unsigned"|"void"|"wchar_t"|"size_t"|"boolean"|"id"|"SEL"|"string"|"nullptr")
 CASTKW ("const_cast"|"dynamic_cast"|"reinterpret_cast"|"static_cast")
@@ -2026,6 +2026,11 @@ RAWEND    ")"[^ \t\(\)\\]{0,16}\"
 <SkipCPP>"//"				{ 
   					  g_code->codify(yytext);
 					}
+<Body,FuncCall>"}"			{ 
+                                          g_theVarContext.popScope();
+					  g_yyColNr++;
+					  g_code->codify(yytext);
+					}
 <Body,FuncCall>"{"			{ 
                                           g_theVarContext.pushScope();
 
@@ -3695,7 +3700,7 @@ void codeFreeScanner()
 extern "C" { // some bogus code to keep the compiler happy
   void codeYYdummy() { yy_flex_realloc(0,0); } 
 }
-#elif YY_FLEX_SUBMINOR_VERSION<33
-#error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
+#elif YY_FLEX_MAJOR_VERSION<=2 && YY_FLEX_MINOR_VERSION<=5 && YY_FLEX_SUBMINOR_VERSION<33
+#error "You seem to be using a version of flex newer than 2.5.4. These are currently incompatible with 2.5.4, and do NOT work with doxygen! Please use version 2.5.4 or expect things to be parsed wrongly! A bug report has been submitted (#732132)."
 #endif
 
diff --git a/src/commentcnv.h b/src/commentcnv.h
index 6255a73..a45d29c 100644
--- a/src/commentcnv.h
+++ b/src/commentcnv.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/commentcnv.l b/src/commentcnv.l
index 64e18be..f65c073 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -14,11 +14,9 @@
  * input used in their production; they are not affected by this license.
  *
  */
-
+%option never-interactive
 %{
 
-#define YY_NEVER_INTERACTIVE 1
-
   
 #include <stdio.h>
 #include <stdlib.h>
@@ -39,6 +37,7 @@
 #include <assert.h>
 
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 #define ADDCHAR(c)    g_outBuf->addChar(c)
 #define ADDARRAY(a,s) g_outBuf->addArray(a,s)
@@ -705,6 +704,14 @@ void replaceComment(int offset);
 				     g_readLineCtx=YY_START;
 				     BEGIN(ReadLine);
   				   }
+<SComment>\n[ \t]*"//"[\/!]("<")?[ \t]*[\\@]"}".*\n {   
+                                     /* See Bug 752712: end the multiline comment when finding a @} or \} command */
+                                     copyToOutput(" */",3); 
+				     copyToOutput(yytext,(int)yyleng); 
+				     g_inSpecialComment=FALSE;
+				     g_inRoseComment=FALSE;
+				     BEGIN(Scan); 
+                                   }
 <SComment>\n[ \t]*"///"[^\/\n]/.*\n  { 
                                      replaceComment(1); 
 				     g_readLineCtx=YY_START;
@@ -774,6 +781,7 @@ void replaceComment(int offset);
 				       //printf("** Adding start of comment!\n");
 				       if (g_lang!=SrcLangExt_Python &&
 					   g_lang!=SrcLangExt_VHDL &&
+					   g_lang!=SrcLangExt_Markdown &&
 					   g_lang!=SrcLangExt_Fortran)
 				       {
  				         ADDCHAR('/');
@@ -793,6 +801,7 @@ void replaceComment(int offset);
     			             {
 				       if (g_lang!=SrcLangExt_Python &&
 					   g_lang!=SrcLangExt_VHDL &&
+					   g_lang!=SrcLangExt_Markdown &&
 					   g_lang!=SrcLangExt_Fortran)
 				       {
  				         ADDCHAR('*');
@@ -1028,6 +1037,7 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf,const char *fileName)
         "Nesting level %d %s",g_nestingCount+1,tmp.data()); // add one for "normal" expected end of comment
   }
   g_commentStack.clear();
+  g_nestingCount = 0;
   if (Debug::isFlagSet(Debug::CommentCnv))
   {
     g_outBuf->at(g_outBuf->curPos())='\0';
diff --git a/src/commentscan.h b/src/commentscan.h
index ce28ea2..e202f0a 100644
--- a/src/commentscan.h
+++ b/src/commentscan.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/commentscan.l b/src/commentscan.l
index 702a616..ffed075 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -1,6 +1,6 @@
 /*****************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -12,7 +12,8 @@
  * input used in their production; they are not affected by this license.
  *
  */
-  
+
+%option never-interactive
 %{
 
 /*
@@ -26,7 +27,6 @@
 #include <qarray.h>
 #include <qstack.h>
 #include <qregexp.h>
-#include <unistd.h>
 #include <qfile.h>
   
 #include "scanner.h"
@@ -49,6 +49,7 @@
 #include "formula.h"
 
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 // forward declarations
 static bool handleBrief(const QCString &);
@@ -101,7 +102,9 @@ static bool handleNoSubGrouping(const QCString &);
 static bool handleShowInitializer(const QCString &);
 static bool handleHideInitializer(const QCString &);
 static bool handleCallgraph(const QCString &);
+static bool handleHideCallgraph(const QCString &);
 static bool handleCallergraph(const QCString &);
+static bool handleHideCallergraph(const QCString &);
 static bool handleInternal(const QCString &);
 static bool handleLineBr(const QCString &);
 static bool handleStatic(const QCString &);
@@ -204,7 +207,9 @@ static DocCmdMap docCmdMap[] =
   { "showinitializer", &handleShowInitializer,  FALSE },
   { "hideinitializer", &handleHideInitializer,  FALSE },
   { "callgraph",       &handleCallgraph,        FALSE },
+  { "hidecallgraph",   &handleHideCallgraph,    FALSE },
   { "callergraph",     &handleCallergraph,      FALSE },
+  { "hidecallergraph", &handleHideCallergraph,  FALSE },
   { "internal",        &handleInternal,         TRUE  },
   { "_linebr",         &handleLineBr,           FALSE },
   { "static",          &handleStatic,           FALSE },
@@ -369,7 +374,7 @@ class GuardedSection
 void openGroup(Entry *e,const char *file,int line);
 void closeGroup(Entry *e,const char *file,int line,bool foundInline=FALSE);
 void initGroupInfo(Entry *e);
-static void groupAddDocs(Entry *e,const char *fileName);
+static void groupAddDocs(Entry *e);
 
 /* -----------------------------------------------------------------
  *
@@ -829,6 +834,29 @@ static inline void setOutput(OutputContext ctx)
   }
 }
 
+
+static void addAnchor(const char *anchor)
+{
+  SectionInfo *si = Doxygen::sectionDict->find(anchor);
+  if (si)
+  {
+    if (si->lineNr != -1)
+    {
+      warn(yyFileName,yyLineNr,"multiple use of section label '%s' while adding anchor, (first occurrence: %s, line %d)",anchor,si->fileName.data(),si->lineNr);
+    }
+    else
+    {
+      warn(yyFileName,yyLineNr,"multiple use of section label '%s' while adding anchor, (first occurrence: %s)",anchor,si->fileName.data());
+    }
+  }
+  else
+  {
+    si = new SectionInfo(yyFileName,yyLineNr,anchor,0,SectionInfo::Anchor,0);
+    Doxygen::sectionDict->append(anchor,si);
+    current->anchors->append(si);
+  }
+}
+
 // add a string to the output
 static inline void addOutput(const char *s)
 {
@@ -900,6 +928,7 @@ IMG       [iI][mM][gG]
 HR        [hH][rR]
 PARA      [pP][aA][rR][aA]
 CODE      [cC][oO][dD][eE]
+CAPTION   [cC][aA][pP][tT][iI][oO][nN]
 DETAILEDHTML {PRE}|{UL}|{TABLE}|{OL}|{DL}|{P}|[Hh][1-6]|{IMG}|{HR}|{PARA}
 DETAILEDHTMLOPT {CODE}
 BN        [ \t\n\r]
@@ -915,7 +944,7 @@ FILEECHAR [a-z_A-Z0-9\x80-\xFF\-\+@&#]
 FILE      ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]*"\"")
 ID        "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
 LABELID   [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
-CITESCHAR [a-z_A-Z\x80-\xFF]
+CITESCHAR [a-z_A-Z0-9\x80-\xFF]
 CITEECHAR [a-z_A-Z0-9\x80-\xFF\-\+:\/]*
 CITEID    {CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*
 SCOPEID   {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
@@ -1003,23 +1032,6 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
 <Comment>("\\"[a-z_A-Z]+)+"\\"		{ // directory (or chain of commands!)
   					  addOutput(yytext);
   					}
-<Comment>{XREFCMD}/[^a-z_A-Z]*		{ // xref command 
-					  if (inContext!=OutputXRef) 
-					  {
-					    briefEndsAtDot=FALSE;
-					    setOutput(OutputDoc);
-					  }
-					  // continue with the same input
-                                          REJECT;
-					}
-   /*
-<Comment>{DETAILEDCMD}/[^a-z_A-Z]*	{ // command that can end a brief description
-				          briefEndsAtDot=FALSE;
-				          setOutput(OutputDoc);
-					  // continue with the same input
-                                          REJECT;
-					}
-   */
 <Comment>"<"{DETAILEDHTML}{ATTR}">"	{ // HTML command that ends a brief description
 					  setOutput(OutputDoc);
 					  // continue with the same input
@@ -1048,6 +1060,24 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
 <Comment>"</remarks>"			{ // end of a brief or detailed description
                                           addOutput(yytext);
   					}
+<Comment>"<"{CAPTION}{ATTR}">"          {
+                                          QCString tag=yytext;
+                                          int s=tag.find("id=");
+                                          if (s!=-1) // command has id attribute
+                                          {
+                                            char c=tag[s+3];
+                                            if (c=='\'' || c=='"') // valid start
+                                            {
+                                              int e=tag.find(c,s+4);
+                                              if (e!=-1) // found matching end
+                                              {
+                                                QCString id=tag.mid(s+4,e-s-4); // extract id
+                                                addAnchor(id);
+                                              }
+                                            }
+                                          }
+                                          addOutput(yytext);
+                                        }
 <Comment>"<"{PRE}{ATTR}">"              {
                                           insidePre=TRUE;
                                           addOutput(yytext);
@@ -1080,8 +1110,8 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
                                             int i=0;
                                             while (yytext[i]==' ' || yytext[i]=='\t') i++;
 					    g_spaceBeforeCmd = QCString(yytext).left(i);
-					    if (cmdPtr->endsBrief && inContext!=OutputXRef) 
-					    { 
+					    if (cmdPtr->endsBrief && !(inContext==OutputXRef && cmdName=="parblock"))
+					    {
 					      briefEndsAtDot=FALSE;
 					      // this command forces the end of brief description
 					      setOutput(OutputDoc);
@@ -1098,7 +1128,7 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
 					      // but we need to know the position in the input buffer where this 
 					      // rule matched.
 					      // for flex 2.5.33+ we should use YY_CURRENT_BUFFER_LVALUE
-#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
+#if YY_FLEX_MAJOR_VERSION>=2 && (YY_FLEX_MINOR_VERSION>5 || (YY_FLEX_MINOR_VERSION==5 && YY_FLEX_SUBMINOR_VERSION>=33))
 					      inputPosition=prevPosition + (int)(yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);
 #else
 					      inputPosition=prevPosition + (int)(yy_bp - yy_current_buffer->yy_ch_buf);
@@ -1160,7 +1190,7 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
                                           g_memberGroupHeader.resize(0);
 					  parseMore=TRUE;
                                           needNewEntry = TRUE;
-#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
+#if YY_FLEX_MAJOR_VERSION>=2 && (YY_FLEX_MINOR_VERSION>5 || (YY_FLEX_MINOR_VERSION==5 && YY_FLEX_SUBMINOR_VERSION>=33))
 				          inputPosition=prevPosition + (int)(yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + strlen(yytext);
 #else
 				          inputPosition=prevPosition + (int)(yy_bp - yy_current_buffer->yy_ch_buf) + strlen(yytext);
@@ -1740,24 +1770,7 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
   /* ----- handle arguments of the anchor command ------- */
 
 <AnchorLabel>{LABELID}			{ // found argument
-                                          SectionInfo *si = Doxygen::sectionDict->find(yytext);
-                                          if (si)
-                                          {
-                                            if (si->lineNr != -1)
-                                            {
-                                              warn(yyFileName,yyLineNr,"multiple use of section label '%s' while adding anchor, (first occurrence: %s, line %d)",yytext,si->fileName.data(),si->lineNr);
-                                            }
-                                            else
-                                            {
-                                              warn(yyFileName,yyLineNr,"multiple use of section label '%s' while adding anchor, (first occurrence: %s)",yytext,si->fileName.data());
-                                            }
-                                          }
-                                          else
-                                          {
-                                            si = new SectionInfo(yyFileName,yyLineNr,yytext,0,SectionInfo::Anchor,0);
-                                            Doxygen::sectionDict->append(yytext,si);
-  					    current->anchors->append(si);
-                                          }
+                                          addAnchor(yytext);
 					  addOutput(yytext);
 					  BEGIN( Comment );
   					}
@@ -2689,12 +2702,24 @@ static bool handleCallgraph(const QCString &)
   return FALSE;
 }
 
+static bool handleHideCallgraph(const QCString &)
+{
+  current->callGraph = FALSE; // OFF
+  return FALSE;
+}
+
 static bool handleCallergraph(const QCString &)
 {
   current->callerGraph = TRUE; // ON
   return FALSE;
 }
 
+static bool handleHideCallergraph(const QCString &)
+{
+  current->callerGraph = FALSE; // OFF
+  return FALSE;
+}
+
 static bool handleInternal(const QCString &)
 {
   if (!Config_getBool("INTERNAL_DOCS"))
@@ -2899,7 +2924,7 @@ bool parseCommentBlock(/* in */     ParserInterface *parser,
   }
 
   Debug::print(Debug::CommentScan,0,"-----------\nCommentScanner: %s:%d\n"
-               "input=[\n%s]\n",fileName.data(),lineNr,comment.data()
+               "input=[\n%s]\n",qPrint(fileName),lineNr,qPrint(comment)
               );
   
   commentscanYYrestart( commentscanYYin );
@@ -2946,15 +2971,15 @@ bool parseCommentBlock(/* in */     ParserInterface *parser,
 
   Debug::print(Debug::CommentScan,0,
                "brief=[line=%d\n%s]\ndocs=[line=%d\n%s]\ninbody=[line=%d\n%s]\n===========\n",
-	       current->briefLine,current->brief.data(),
-               current->docLine,current->doc.data(),
-               current->inbodyLine,current->inbodyDocs.data()
+	       current->briefLine,qPrint(current->brief),
+               current->docLine,qPrint(current->doc),
+               current->inbodyLine,qPrint(current->inbodyDocs)
               );
   
   checkFormula();
   prot = protection;
   
-  groupAddDocs(curEntry,fileName);
+  groupAddDocs(curEntry);
 
   newEntryNeeded = needNewEntry;
 
@@ -3083,10 +3108,10 @@ void openGroup(Entry *e,const char *,int)
   }
 }
 
-void closeGroup(Entry *e,const char *fileName,int,bool foundInline)
+void closeGroup(Entry *e,const char *fileName,int line,bool foundInline)
 {
-  //printf("==> closeGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
-  //    e->name.data(),e->section,g_autoGroupStack.count());
+  //printf("==> closeGroup(name=%s,sec=%x,file=%s,line=%d) g_autoGroupStack=%d\n",
+  //    e->name.data(),e->section,fileName,line,g_autoGroupStack.count());
   if (g_memberGroupId!=DOX_NOGROUP) // end of member group
   {
     MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId);
@@ -3094,11 +3119,12 @@ void closeGroup(Entry *e,const char *fileName,int,bool foundInline)
     {
       info->doc = g_memberGroupDocs;
       info->docFile = fileName;
+      info->docLine = line;
     }
     g_memberGroupId=DOX_NOGROUP;
     g_memberGroupRelates.resize(0);
     g_memberGroupDocs.resize(0);
-    e->mGrpId=DOX_NOGROUP;
+    if (!foundInline) e->mGrpId=DOX_NOGROUP;
     //printf("new group id=%d\n",g_memberGroupId);
   }
   else if (!g_autoGroupStack.isEmpty()) // end of auto group
@@ -3127,7 +3153,7 @@ void initGroupInfo(Entry *e)
   }
 }
 
-static void groupAddDocs(Entry *e,const char *fileName)
+static void groupAddDocs(Entry *e)
 {
   if (e->section==Entry::MEMBERGRP_SEC)
   {
@@ -3142,7 +3168,8 @@ static void groupAddDocs(Entry *e,const char *fileName)
     if (info) 
     {
       info->doc = g_memberGroupDocs;
-      info->docFile = fileName;
+      info->docFile = e->docFile;
+      info->docLine = e->docLine;
       info->setRefItems(e->sli);
     }
     e->doc.resize(0);
diff --git a/src/condparser.cpp b/src/condparser.cpp
index 67da1e3..b3bea3a 100644
--- a/src/condparser.cpp
+++ b/src/condparser.cpp
@@ -1,5 +1,5 @@
 /**
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/condparser.h b/src/condparser.h
index 7c65411..09a4f74 100644
--- a/src/condparser.h
+++ b/src/condparser.h
@@ -2,7 +2,7 @@
 #define CONDPARSER_H
 
 /**
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/config.h b/src/config.h
index 981f6fe..344e007 100644
--- a/src/config.h
+++ b/src/config.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -69,7 +69,7 @@ class ConfigOption
     QCString dependsOn() const { return m_dependency; }
     void addDependency(const char *dep) { m_dependency = dep; }
     void setEncoding(const QCString &e) { m_encoding = e; }
-    void setUserComment(const QCString &u) { m_userComment = u; }
+    void setUserComment(const QCString &u) { m_userComment += u; }
 
   protected:
     virtual void writeTemplate(FTextStream &t,bool sl,bool upd) = 0;
@@ -507,12 +507,27 @@ class Config
      */
     void create();
 
+    /*! Append user start comment
+     */
+    void appendStartComment(const QCString &u)
+    {
+      m_startComment += u;
+    }
     /*! Append user comment
      */
     void appendUserComment(const QCString &u)
     {
       m_userComment += u;
     }
+    /*! Take the user start comment and reset it internally
+     *  \returns user start comment
+     */
+    QCString takeStartComment()
+    {
+      QCString result=m_startComment;
+      m_startComment.resize(0);
+      return result.replace(QRegExp("\r"),"");
+    }
     /*! Take the user comment and reset it internally
      *  \returns user comment
      */
@@ -552,6 +567,7 @@ class Config
     QList<ConfigOption> *m_disabled;
     QDict<ConfigOption> *m_dict;
     static Config *m_instance;
+    QCString m_startComment;
     QCString m_userComment;
     bool m_initialized;
     QCString m_header;
diff --git a/src/config.l b/src/config.l
index a10626e..26e0283 100644
--- a/src/config.l
+++ b/src/config.l
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -9,7 +9,7 @@
  * See the GNU General Public License for more details.
  *
  */
-
+%option never-interactive
 %{
 
 /*
@@ -45,6 +45,7 @@
 #undef Config_getBool
 
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 // use in-class definitions
 #define Config_getString(val)  getString(__FILE__,__LINE__,val)
@@ -53,18 +54,21 @@
 #define Config_getEnum(val)    getEnum(__FILE__,__LINE__,val)
 #define Config_getBool(val)    getBool(__FILE__,__LINE__,val)
   
+static const char *warning_str = "warning: ";
+static const char *error_str = "error: ";
+
 void config_err(const char *fmt, ...)
 {
   va_list args;
   va_start(args, fmt);
-  vfprintf(stderr, fmt, args);
+  vfprintf(stderr, (QCString(error_str) + fmt).data(), args);
   va_end(args); 
 }
 void config_warn(const char *fmt, ...)
 {
   va_list args;
   va_start(args, fmt);
-  vfprintf(stderr, fmt, args);
+  vfprintf(stderr, (QCString(warning_str) + fmt).data(), args);
   va_end(args);
 }
 
@@ -181,7 +185,7 @@ void ConfigInt::convertStrToVal()
     int val = m_valueString.toInt(&ok);
     if (!ok || val<m_minVal || val>m_maxVal)
     {
-      config_warn("Warning: argument `%s' for option %s is not a valid number in the range [%d..%d]!\n"
+      config_warn("argument `%s' for option %s is not a valid number in the range [%d..%d]!\n"
                 "Using the default: %d!\n",m_valueString.data(),m_name.data(),m_minVal,m_maxVal,m_value);
     }
     else
@@ -206,7 +210,7 @@ void ConfigBool::convertStrToVal()
     }
     else
     {
-      config_warn("Warning: argument `%s' for option %s is not a valid boolean value\n"
+      config_warn("argument `%s' for option %s is not a valid boolean value\n"
                 "Using the default: %s!\n",m_valueString.data(),m_name.data(),m_value?"YES":"NO");
     }
   }
@@ -238,7 +242,7 @@ QStrList &Config::getList(const char *fileName,int num,const char *name) const
   }
   else if (opt->kind()!=ConfigOption::O_List)
   {
-    config_err("%d<%d>: Internal error: Requested option %s not of list type!\n",fileName,num,name);
+    config_err("%s<%d>: Internal error: Requested option %s not of list type!\n",fileName,num,name);
     exit(1);
   }
   return *((ConfigList *)opt)->valueRef();
@@ -519,7 +523,7 @@ static FILE *tryPath(const char *path,const char *fileName)
   if (fi.exists() && fi.isFile())
   {
     FILE *f=portable_fopen(absName,"r");
-    if (!f) config_err("Error: could not open file %s for reading\n",absName.data());
+    if (!f) config_err("could not open file %s for reading\n",absName.data());
     return f;
   }
   return 0;
@@ -553,7 +557,7 @@ static FILE *findFile(const char *fileName)
 static void readIncludeFile(const char *incName)
 {
   if (includeDepth==MAX_INCLUDE_DEPTH) {
-    config_err("Error: maximum include depth (%d) reached, %s is not included. Aborting...\n",
+    config_err("maximum include depth (%d) reached, %s is not included. Aborting...\n",
 	MAX_INCLUDE_DEPTH,incName);
     exit(1);
   } 
@@ -593,7 +597,7 @@ static void readIncludeFile(const char *incName)
   } 
   else
   {
-    config_err("Error: @INCLUDE = %s: not found!\n",inc.data());
+    config_err("@INCLUDE = %s: not found!\n",inc.data());
     exit(1);
   }
 }
@@ -601,9 +605,9 @@ static void readIncludeFile(const char *incName)
 
 %}
 
-%option nounput
 %option noyywrap
 
+%x      PreStart
 %x      Start
 %x	SkipComment
 %x      SkipInvalid
@@ -617,6 +621,11 @@ static void readIncludeFile(const char *incName)
 %%
 
 <*>\0x0d
+<PreStart>"##".*"\n" { config->appendStartComment(yytext);}
+<PreStart>. {
+              BEGIN(Start);
+              unput(*yytext);
+            }
 <Start,GetString,GetStrList,GetBool,SkipInvalid>"##".*"\n" { config->appendUserComment(yytext);}
 <Start,GetString,GetStrList,GetBool,SkipInvalid>"#"	   { BEGIN(SkipComment); }
 <Start>[a-z_A-Z][a-z_A-Z0-9]*[ \t]*"="	 { QCString cmd=yytext;
@@ -624,7 +633,7 @@ static void readIncludeFile(const char *incName)
 					   ConfigOption *option = config->get(cmd);
 					   if (option==0) // oops not known
 					   {
-					     config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n",
+					     config_warn("ignoring unsupported tag `%s' at line %d, file %s\n",
 						 yytext,yyLineNr,yyFileName.data()); 
 					     BEGIN(SkipInvalid);
 					   }
@@ -667,12 +676,12 @@ static void readIncludeFile(const char *incName)
 					       case ConfigOption::O_Obsolete:
                                                  if (config_upd)
                                                  {
-					           config_err("Warning: Tag `%s' at line %d of file `%s' has become obsolete.\n"
+					           config_warn("Tag `%s' at line %d of file `%s' has become obsolete.\n"
 						              "         This tag has been removed.\n", cmd.data(),yyLineNr,yyFileName.data());
                                                  }
                                                  else
                                                  {
-					           config_err("Warning: Tag `%s' at line %d of file `%s' has become obsolete.\n"
+					           config_warn("Tag `%s' at line %d of file `%s' has become obsolete.\n"
 						              "         To avoid this warning please remove this line from your configuration "
 							      "file or upgrade it using \"doxygen -u\"\n", cmd.data(),yyLineNr,yyFileName.data()); 
                                                  }
@@ -681,12 +690,12 @@ static void readIncludeFile(const char *incName)
 					       case ConfigOption::O_Disabled:
                                                  if (config_upd)
                                                  {
-					           config_err("Warning: Tag `%s' at line %d of file `%s' belongs to an option that was not enabled at compile time.\n"
+					           config_warn("Tag `%s' at line %d of file `%s' belongs to an option that was not enabled at compile time.\n"
 						              "         This tag has been removed.\n", cmd.data(),yyLineNr,yyFileName.data());
                                                  }
                                                  else
                                                  {
-					           config_err("Warning: Tag `%s' at line %d of file `%s' belongs to an option that was not enabled at compile time.\n"
+					           config_warn("Tag `%s' at line %d of file `%s' belongs to an option that was not enabled at compile time.\n"
 						              "         To avoid this warning please remove this line from your configuration "
 							    "file or upgrade it using \"doxygen -u\", or recompile doxygen with this feature enabled.\n", cmd.data(),yyLineNr,yyFileName.data()); 
                                                  }
@@ -700,7 +709,7 @@ static void readIncludeFile(const char *incName)
 					  ConfigOption *option = config->get(cmd);
 					  if (option==0) // oops not known
 					  {
-					    config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n",
+					    config_warn("ignoring unsupported tag `%s' at line %d, file %s\n",
 						yytext,yyLineNr,yyFileName.data()); 
 					    BEGIN(SkipInvalid);
 					  }
@@ -722,18 +731,18 @@ static void readIncludeFile(const char *incName)
 					      case ConfigOption::O_String:
 					      case ConfigOption::O_Int:
 					      case ConfigOption::O_Bool:
-					        config_err("Warning: operator += not supported for `%s'. Ignoring line at line %d, file %s\n",
+					        config_warn("operator += not supported for `%s'. Ignoring line at line %d, file %s\n",
 						    yytext,yyLineNr,yyFileName.data()); 
 					        BEGIN(SkipInvalid);
 						break;
 					       case ConfigOption::O_Obsolete:
-					         config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n"
+					         config_warn("Tag `%s' at line %d of file %s has become obsolete.\n"
 						            "To avoid this warning please update your configuration "
 							    "file using \"doxygen -u\"\n", cmd.data(),yyLineNr,yyFileName.data()); 
 					         BEGIN(SkipInvalid);
 						 break;
 					       case ConfigOption::O_Disabled:
-					         config_err("Warning: Tag `%s' at line %d of file %s belongs to an option that was not enabled at compile time.\n"
+					         config_warn("Tag `%s' at line %d of file %s belongs to an option that was not enabled at compile time.\n"
 						            "To avoid this warning please remove this line from your configuration "
 							    "file, upgrade it using \"doxygen -u\", or recompile doxygen with this feature enabled.\n", cmd.data(),yyLineNr,yyFileName.data()); 
 					         BEGIN(SkipInvalid);
@@ -770,7 +779,7 @@ static void readIncludeFile(const char *incName)
 					  }
   					}
 
-<Start>[a-z_A-Z0-9]+			{ config_err("Warning: ignoring unknown tag `%s' at line %d, file %s\n",yytext,yyLineNr,yyFileName.data()); }
+<Start>[a-z_A-Z0-9]+			{ config_warn("ignoring unknown tag `%s' at line %d, file %s\n",yytext,yyLineNr,yyFileName.data()); }
 <GetString,GetBool,SkipInvalid>\n	{ yyLineNr++; BEGIN(Start); }
 <GetStrList>\n				{ 
   					  yyLineNr++; 
@@ -811,7 +820,7 @@ static void readIncludeFile(const char *incName)
 					  }
 					  if (*yytext=='\n')
 					  {
-					    config_err("Warning: Missing end quote (\") on line %d, file %s\n",yyLineNr,yyFileName.data());
+					    config_warn("Missing end quote (\") on line %d, file %s\n",yyLineNr,yyFileName.data());
 					    yyLineNr++;
 					  }
 					  BEGIN(lastState);
@@ -830,7 +839,7 @@ static void readIncludeFile(const char *incName)
 					  else 
 					  {
 					    *b=FALSE; 
-					    config_warn("Warning: Invalid value `%s' for "
+					    config_warn("Invalid value `%s' for "
 						 "boolean tag in line %d, file %s; use YES or NO\n",
 						 bs.data(),yyLineNr,yyFileName.data());
 					  }
@@ -851,6 +860,11 @@ static void readIncludeFile(const char *incName)
 
 void Config::writeTemplate(FTextStream &t,bool sl,bool upd)
 {
+  /* print first lines of user comment that were at the beginning of the file, might have special meaning for editors */
+  if (m_startComment)
+  {
+    t << takeStartComment() << endl; 
+  }
   t << "# Doxyfile " << versionString << endl << endl;
   if (!sl)
   {
@@ -1062,8 +1076,8 @@ void Config::checkFileName(const char *optionName)
   if ((val=="yes" || val=="true"  || val=="1" || val=="all") ||
       (val=="no"  || val=="false" || val=="0" || val=="none")) 
   {
-    config_err("Error: file name expected for option %s, got %s instead. Ignoring...\n",optionName,s.data());
-    s=""; // note tihe use of &s above: this will change the option value!
+    config_err("file name expected for option %s, got %s instead. Ignoring...\n",optionName,s.data());
+    s=""; // note the use of &s above: this will change the option value!
   }
 }
 
@@ -1083,15 +1097,15 @@ void Config::check()
   {
     if (warnFormat.find("$file")==-1)
     {
-      config_err("Warning: warning format does not contain a $file tag!\n");
+      config_warn("warning format does not contain a $file tag!\n");
     }
     if (warnFormat.find("$line")==-1)
     {
-      config_err("Warning: warning format does not contain a $line tag!\n");
+      config_warn("warning format does not contain a $line tag!\n");
     }
     if (warnFormat.find("$text")==-1)
     {
-      config_err("Warning: warning format foes not contain a $text tag!\n");
+      config_warn("warning format foes not contain a $text tag!\n");
     }
   }
 
@@ -1105,14 +1119,15 @@ void Config::check()
   
   QCString &paperType = Config_getEnum("PAPER_TYPE");
   paperType=paperType.lower().stripWhiteSpace(); 
-  if (paperType.isEmpty())
+  if (paperType.isEmpty() || paperType=="a4wide")
   {
     paperType = "a4";
   }
-  if (paperType!="a4" && paperType!="a4wide" && paperType!="letter" && 
+  if (paperType!="a4" && paperType!="letter" && 
       paperType!="legal" && paperType!="executive")
   {
-    config_err("Error: Unknown page type specified\n");
+    config_err("Unknown page type specified\n");
+    paperType="a4";
   }
   
   QCString &outputLanguage=Config_getEnum("OUTPUT_LANGUAGE");
@@ -1152,7 +1167,7 @@ void Config::check()
     QFileInfo fi(headerFile);
     if (!fi.exists())
     {
-      config_err("Error: tag HTML_HEADER: header file `%s' "
+      config_err("tag HTML_HEADER: header file `%s' "
 	  "does not exist\n",headerFile.data());
       exit(1);
     }
@@ -1164,11 +1179,12 @@ void Config::check()
     QFileInfo fi(footerFile);
     if (!fi.exists())
     {
-      config_err("Error: tag HTML_FOOTER: footer file `%s' "
+      config_err("tag HTML_FOOTER: footer file `%s' "
 	  "does not exist\n",footerFile.data());
       exit(1);
     }
   }
+
   // Test to see if MathJax code file is valid
   if (Config_getBool("USE_MATHJAX"))
   {
@@ -1178,12 +1194,19 @@ void Config::check()
       QFileInfo fi(MathJaxCodefile);
       if (!fi.exists())
       {
-        config_err("Error: tag MATHJAX_CODEFILE file `%s' "
+        config_err("tag MATHJAX_CODEFILE file `%s' "
 	    "does not exist\n",MathJaxCodefile.data());
         exit(1);
       }
     }
+    QCString &path = Config_getString("MATHJAX_RELPATH");
+    if (!path.isEmpty() && path.at(path.length()-1)!='/')
+    {
+      path+="/";
+    }
+
   }
+
   // Test to see if LaTeX header is valid
   QCString &latexHeaderFile = Config_getString("LATEX_HEADER");
   if (!latexHeaderFile.isEmpty())
@@ -1191,18 +1214,31 @@ void Config::check()
     QFileInfo fi(latexHeaderFile);
     if (!fi.exists())
     {
-      config_err("Error: tag LATEX_HEADER: header file `%s' "
+      config_err("tag LATEX_HEADER: header file `%s' "
 	  "does not exist\n",latexHeaderFile.data());
       exit(1);
     }
   }
+  // Test to see if LaTeX footer is valid
+  QCString &latexFooterFile = Config_getString("LATEX_FOOTER");
+  if (!latexFooterFile.isEmpty())
+  {
+    QFileInfo fi(latexFooterFile);
+    if (!fi.exists())
+    {
+      config_err("tag LATEX_FOOTER: footer file `%s' "
+	  "does not exist\n",latexFooterFile.data());
+      exit(1);
+    }
+  }
+
   // check include path
   QStrList &includePath = Config_getList("INCLUDE_PATH");
   char *s=includePath.first();
   while (s)
   {
     QFileInfo fi(s);
-    if (!fi.exists()) config_err("Warning: tag INCLUDE_PATH: include path `%s' "
+    if (!fi.exists()) config_warn("tag INCLUDE_PATH: include path `%s' "
 	                  "does not exist\n",s);
     s=includePath.next();
   }
@@ -1218,7 +1254,7 @@ void Config::check()
     alias=alias.stripWhiteSpace();
     if (alias.find(re1)!=0 && alias.find(re2)!=0)
     {
-      config_err("Error: Illegal alias format `%s'. Use \"name=value\" or \"name(n)=value\", where n is the number of arguments\n",
+      config_err("Illegal alias format `%s'. Use \"name=value\" or \"name(n)=value\", where n is the number of arguments\n",
 	  alias.data());
     }
     s=aliasList.next();
@@ -1227,19 +1263,19 @@ void Config::check()
   // check if GENERATE_TREEVIEW and GENERATE_HTMLHELP are both enabled
   if (Config_getBool("GENERATE_TREEVIEW") && Config_getBool("GENERATE_HTMLHELP"))
   {
-    config_err("Error: When enabling GENERATE_HTMLHELP the tree view (GENERATE_TREEVIEW) should be disabled. I'll do it for you.\n");
+    config_err("When enabling GENERATE_HTMLHELP the tree view (GENERATE_TREEVIEW) should be disabled. I'll do it for you.\n");
     Config_getBool("GENERATE_TREEVIEW")=FALSE;
   }
   if (Config_getBool("SEARCHENGINE") && Config_getBool("GENERATE_HTMLHELP"))
   {
-    config_err("Error: When enabling GENERATE_HTMLHELP the search engine (SEARCHENGINE) should be disabled. I'll do it for you.\n");
+    config_err("When enabling GENERATE_HTMLHELP the search engine (SEARCHENGINE) should be disabled. I'll do it for you.\n");
     Config_getBool("SEARCHENGINE")=FALSE;
   }
 
   // check if SEPARATE_MEMBER_PAGES and INLINE_GROUPED_CLASSES are both enabled
   if (Config_getBool("SEPARATE_MEMBER_PAGES") && Config_getBool("INLINE_GROUPED_CLASSES"))
   {
-    config_err("Error: When enabling INLINE_GROUPED_CLASSES the SEPARATE_MEMBER_PAGES option should be disabled. I'll do it for you.\n");
+    config_err("When enabling INLINE_GROUPED_CLASSES the SEPARATE_MEMBER_PAGES option should be disabled. I'll do it for you.\n");
     Config_getBool("SEPARATE_MEMBER_PAGES")=FALSE;
   }
     
@@ -1259,7 +1295,7 @@ void Config::check()
   QCString &dotFontName=Config_getString("DOT_FONTNAME");
   if (dotFontName=="FreeSans" || dotFontName=="FreeSans.ttf")
   {
-    config_err("Warning: doxygen no longer ships with the FreeSans font.\n"
+    config_warn("doxygen no longer ships with the FreeSans font.\n"
                "You may want to clear or change DOT_FONTNAME.\n"
                "Otherwise you run the risk that the wrong font is being used for dot generated graphs.\n");
   }
@@ -1279,7 +1315,7 @@ void Config::check()
       QFileInfo dp(dotPath+"/dot"+portable_commandExtension());
       if (!dp.exists() || !dp.isFile())
       {
-	config_err("Warning: the dot tool could not be found at %s\n",dotPath.data());
+	config_warn("the dot tool could not be found at %s\n",dotPath.data());
 	dotPath="";
       }
       else
@@ -1304,7 +1340,7 @@ void Config::check()
     QFileInfo dp(mscgenPath+"/mscgen"+portable_commandExtension());
     if (!dp.exists() || !dp.isFile())
     {
-      config_err("Warning: the mscgen tool could not be found at %s\n",mscgenPath.data());
+      config_warn("the mscgen tool could not be found at %s\n",mscgenPath.data());
       mscgenPath="";
     }
     else
@@ -1359,7 +1395,7 @@ void Config::check()
     QFileInfo dp(diaPath+"/dia"+portable_commandExtension());
     if (!dp.exists() || !dp.isFile())
     {
-      config_err("Warning: dia could not be found at %s\n",diaPath.data());
+      config_warn("dia could not be found at %s\n",diaPath.data());
       diaPath="";
     }
     else
@@ -1391,77 +1427,13 @@ void Config::check()
       QFileInfo fi(s);
       if (!fi.exists())
       {
-	config_err("Warning: tag INPUT: input source `%s' does not exist\n",s);
+	config_warn("tag INPUT: input source `%s' does not exist\n",s);
       }
       s=inputSources.next();
     }
   }
 
-  // add default pattern if needed
-  QStrList &filePatternList = Config_getList("FILE_PATTERNS");
-  if (filePatternList.isEmpty())
-  {
-    filePatternList.append("*.c");
-    filePatternList.append("*.cc"); 
-    filePatternList.append("*.cxx");
-    filePatternList.append("*.cpp");
-    filePatternList.append("*.c++");
-    //filePatternList.append("*.d");
-    filePatternList.append("*.java");
-    filePatternList.append("*.ii");
-    filePatternList.append("*.ixx");
-    filePatternList.append("*.ipp");
-    filePatternList.append("*.i++");
-    filePatternList.append("*.inl");
-    filePatternList.append("*.h");
-    filePatternList.append("*.hh");
-    filePatternList.append("*.hxx");
-    filePatternList.append("*.hpp");
-    filePatternList.append("*.h++");
-    filePatternList.append("*.idl");
-    filePatternList.append("*.odl");
-    filePatternList.append("*.cs");
-    filePatternList.append("*.php");
-    filePatternList.append("*.php3");
-    filePatternList.append("*.inc");
-    filePatternList.append("*.m");
-    filePatternList.append("*.mm");
-    filePatternList.append("*.dox");
-    filePatternList.append("*.py");
-    filePatternList.append("*.f90");
-    filePatternList.append("*.f");
-    filePatternList.append("*.for");
-    filePatternList.append("*.vhd");
-    filePatternList.append("*.vhdl");
-    filePatternList.append("*.tcl");
-    filePatternList.append("*.md");
-    filePatternList.append("*.markdown");
-    if (portable_fileSystemIsCaseSensitive())
-    {
-      // unix => case sensitive match => also include useful uppercase versions
-      filePatternList.append("*.C");
-      filePatternList.append("*.CC"); 
-      filePatternList.append("*.C++");
-      filePatternList.append("*.II");
-      filePatternList.append("*.I++");
-      filePatternList.append("*.H");
-      filePatternList.append("*.HH");
-      filePatternList.append("*.H++");
-      filePatternList.append("*.CS");
-      filePatternList.append("*.PHP");
-      filePatternList.append("*.PHP3");
-      filePatternList.append("*.M");
-      filePatternList.append("*.MM");
-      filePatternList.append("*.PY");
-      filePatternList.append("*.F90");
-      filePatternList.append("*.F");
-      filePatternList.append("*.VHD");
-      filePatternList.append("*.VHDL");
-      filePatternList.append("*.TCL");
-      filePatternList.append("*.MD");
-      filePatternList.append("*.MARKDOWN");
-    }
-  }
+  initFilePattern();
 
   // add default pattern if needed
   QStrList &examplePatternList = Config_getList("EXAMPLE_PATTERNS");
@@ -1478,18 +1450,19 @@ void Config::check()
       !Config_getBool("GENERATE_XML")     &&
       !Config_getBool("GENERATE_PERLMOD") &&
       !Config_getBool("GENERATE_RTF")     &&
+      !Config_getBool("GENERATE_DOCBOOK") &&
       !Config_getBool("GENERATE_AUTOGEN_DEF") &&
       Config_getString("GENERATE_TAGFILE").isEmpty()
      )
   {
-    config_err("Warning: No output formats selected! Set at least one of the main GENERATE_* options to YES.\n");
+    config_warn("No output formats selected! Set at least one of the main GENERATE_* options to YES.\n");
   }
 
   // check HTMLHELP creation requirements
   if (!Config_getBool("GENERATE_HTML") && 
       Config_getBool("GENERATE_HTMLHELP"))
   {
-    config_err("Warning: GENERATE_HTMLHELP=YES requires GENERATE_HTML=YES.\n");
+    config_warn("GENERATE_HTMLHELP=YES requires GENERATE_HTML=YES.\n");
   }
 
   // check QHP creation requirements
@@ -1497,13 +1470,13 @@ void Config::check()
   {
     if (Config_getString("QHP_NAMESPACE").isEmpty())
     {
-      config_err("Error: GENERATE_QHP=YES requires QHP_NAMESPACE to be set. Using 'org.doxygen.doc' as default!.\n");
+      config_err("GENERATE_QHP=YES requires QHP_NAMESPACE to be set. Using 'org.doxygen.doc' as default!.\n");
       Config_getString("QHP_NAMESPACE")="org.doxygen.doc";
     }
 
     if (Config_getString("QHP_VIRTUAL_FOLDER").isEmpty())
     {
-      config_err("Error: GENERATE_QHP=YES requires QHP_VIRTUAL_FOLDER to be set. Using 'doc' as default!\n");
+      config_err("GENERATE_QHP=YES requires QHP_VIRTUAL_FOLDER to be set. Using 'doc' as default!\n");
       Config_getString("QHP_VIRTUAL_FOLDER")="doc";
     }
   }
@@ -1554,7 +1527,7 @@ void Config::check()
   if (!mathJaxFormat.isEmpty() && mathJaxFormat!="HTML-CSS" &&
        mathJaxFormat!="NativeMML" && mathJaxFormat!="SVG")
   {
-    config_err("Error: Unsupported value for MATHJAX_FORMAT: Should be one of HTML-CSS, NativeMML, or SVG\n");
+    config_err("Unsupported value for MATHJAX_FORMAT: Should be one of HTML-CSS, NativeMML, or SVG\n");
     Config_getEnum("MATHJAX_FORMAT")="HTML-CSS";
   }
 
@@ -1600,7 +1573,7 @@ void Config::check()
     if (!b6) s6="  EXTRACT_PACKAGE        = YES (was NO)\n"; else s6="";
 
 
-    config_err("Warning: enabling OPTIMIZE_OUTPUT_VHDL assumes the following settings:\n"
+    config_warn("enabling OPTIMIZE_OUTPUT_VHDL assumes the following settings:\n"
 	       "%s%s%s%s%s%s",s1,s2,s3,s4,s5,s6
 	      );
 
@@ -1657,7 +1630,7 @@ void Config::init()
       ConfigOption * opt = Config::instance()->get(depName);
       if (opt==0)
       {
-        config_err("Warning: Config option '%s' has invalid depends relation on unknown option '%s'\n",
+        config_warn("Config option '%s' has invalid depends relation on unknown option '%s'\n",
             option->name().data(),depName.data());
         exit(1);
       }
@@ -1704,7 +1677,7 @@ static QCString configFileToString(const char *name)
     QFileInfo fi(name);
     if (!fi.exists() || !fi.isFile())
     {
-      config_err("Error: file `%s' not found\n",name);
+      config_err("file `%s' not found\n",name);
       return "";
     }
     f.setName(name);
@@ -1725,7 +1698,8 @@ static QCString configFileToString(const char *name)
   }
   if (!fileOpened)  
   {
-    config_err("Error: cannot open file `%s' for reading\n",name);
+    config_err("cannot open file `%s' for reading\n",name);
+    exit(1);
   }
   return "";
 }
@@ -1741,7 +1715,7 @@ bool Config::parseString(const char *fn,const char *str,bool update)
   includeStack.clear();
   includeDepth  = 0;
   configYYrestart( configYYin );
-  BEGIN( Start );
+  BEGIN( PreStart );
   config_upd = update;
   configYYlex();
   config_upd = FALSE;
diff --git a/src/config.xml b/src/config.xml
index 994190d..0aa8fda 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -6,7 +6,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -29,7 +29,9 @@ parsed by \c doxygen. The file may contain tabs and newlines for
 formatting purposes. The statements in the file are case-sensitive.
 Comments may be placed anywhere within the file (except within quotes).
 Comments beginning with two hash characters (\c \#\#) are kept when updating
-the configuration file and are placed in front of the TAG are in front of.
+the configuration file and are placed in front of the TAG they are in front of.
+Comments beginning with two hash characters (\c \#\#) at the beginning of the
+configuration file are also kept and placed at the beginning of the file.
 Comments beginning with two hash characters (\c \#\#) at the end of the
 configuration file are also kept and placed at the end of the file.
 Comments begin with the hash character (\c \#) and ends at the end of the line.
@@ -677,6 +679,15 @@ Go to the <a href="commands.html">next</a> section or return to the
 ]]>
       </docs>
     </option>
+    <option type='bool' id='GROUP_NESTED_COMPOUNDS' defval='0'>
+      <docs>
+<![CDATA[
+ If one adds a struct or class to a group and this option is enabled, then also
+ any nested class or struct is added to the same group. By default this option
+ is disabled and one has to add nested compounds explicitly via \ref cmdingroup "\\ingroup".
+]]>
+      </docs>
+    </option>
     <option type='bool' id='SUBGROUPING' defval='1'>
       <docs>
 <![CDATA[
@@ -1210,6 +1221,14 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
 ]]>
       </docs>
     </option>
+    <option type='bool' id='WARN_AS_ERROR' defval='0'>
+      <docs>
+<![CDATA[
+ If the \c WARN_AS_ERROR tag is set to \c YES then doxygen will immediately stop
+ when a warning is encountered.
+]]>
+      </docs>
+    </option>
     <option type='string' id='WARN_FORMAT' format='string' defval='$file:$line: $text'>
       <docs>
 <![CDATA[
@@ -1241,7 +1260,9 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
  The \c INPUT tag is used to specify the files and/or directories that contain 
  documented source files. You may enter file names like 
  \c myfile.cpp or directories like \c /usr/src/myproject. 
- Separate the files or directories with spaces.
+ Separate the files or directories with spaces. See also
+ \ref cfg_file_patterns "FILE_PATTERNS"  and
+ \ref cfg_extension_mapping "EXTENSION_MAPPING"
 
  \note If this tag is empty the current directory is searched.
 ]]>
@@ -1265,7 +1286,11 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
  If the value of the \ref cfg_input "INPUT" tag contains directories, you can use the 
  \c FILE_PATTERNS tag to specify one or more wildcard patterns 
  (like `*.cpp` and `*.h`) to filter out the source-files 
- in the directories. If left blank the following patterns are tested:
+ in the directories.<br>
+ Note that for custom extensions or not directly supported extensions you also
+ need to set \ref cfg_extension_mapping "EXTENSION_MAPPING" for the extension
+ otherwise the files are not read by doxygen.<br>
+ If left blank the following patterns are tested:
 ]]>
       </docs>
       <value name='*.c'/>
@@ -1300,6 +1325,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
       <value name='*.mm'/>
       <value name='*.dox'/>
       <value name='*.py'/>
+      <value name='*.pyw'/>
       <value name='*.f90'/>
       <value name='*.f'/>
       <value name='*.for'/>
@@ -1419,6 +1445,10 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
  <br>Note that the filter must not add or remove lines; it is applied before the 
  code is scanned, but not when the output code is generated. If lines are added 
  or removed, the anchors will not be placed correctly.
+ <br>Note that for custom extensions or not directly supported extensions you also
+ need to set \ref cfg_extension_mapping "EXTENSION_MAPPING" for the extension
+ otherwise the files are not properly processed by doxygen.<br>
+
 ]]>
       </docs>
     </option>
@@ -1432,6 +1462,9 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
  information on how filters are used. If the \c FILTER_PATTERNS tag is empty or if
  none of the patterns match the file name, \ref cfg_input_filter "INPUT_FILTER" is 
  applied.
+ <br>Note that for custom extensions or not directly supported extensions you also
+ need to set \ref cfg_extension_mapping "EXTENSION_MAPPING" for the extension
+ otherwise the files are not properly processed by doxygen.<br>
 ]]>
       </docs>
     </option>
@@ -1579,7 +1612,7 @@ to disable this feature.
   necessary type information.
 
   @note The availability of this option depends on whether or not doxygen
-  was compiled with the `--with-libclang` option.
+  was generated with the `-Duse-libclang=ON` option for CMake.
 ]]>
       </docs>
     </option>
@@ -1887,13 +1920,13 @@ hr.footer {
 ]]>
       </docs>
     </option>
-    <option type='bool' id='HTML_TIMESTAMP' defval='1' depends='GENERATE_HTML'>
+    <option type='bool' id='HTML_TIMESTAMP' defval='0' depends='GENERATE_HTML'>
       <docs>
 <![CDATA[
  If the \c HTML_TIMESTAMP tag is set to \c YES then the footer of 
  each generated HTML page will contain the date and time when the page 
- was generated. Setting this to \c NO can help when comparing the output of 
- multiple runs.
+ was generated. Setting this to \c YES can help to show when doxygen was last run 
+ and thus if the documentation is up to date.
 ]]>
       </docs>
     </option>
@@ -2490,10 +2523,19 @@ EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
       <docs>
 <![CDATA[
  The \c EXTRA_PACKAGES tag can be used to specify one or more \f$\mbox{\LaTeX}\f$ 
- package names that should be included in the \f$\mbox{\LaTeX}\f$ output.
- To get the times font for instance you can specify 
+ package names that should be included in the \f$\mbox{\LaTeX}\f$ output. The package
+ can be specified just by its name or with the correct syntax as to be used with the
+ \f$\mbox{\LaTeX}\f$ `\usepackage` command.
+
+ To get the `times` font for instance you can specify :
 \verbatim
-EXTRA_PACKAGES=times
+  EXTRA_PACKAGES=times
+or 
+  EXTRA_PACKAGES={times}
+\endverbatim
+ To use the option `intlimits` with the `amsmath` package you can specify:
+\verbatim
+   EXTRA_PACKAGES=[intlimits]{amsmath}
 \endverbatim
  If left blank no extra packages will be included.
 ]]>
@@ -2621,6 +2663,16 @@ EXTRA_PACKAGES=times
 ]]>
       </docs>
     </option>
+    <option type='bool' id='LATEX_TIMESTAMP' defval='0' depends='GENERATE_LATEX'>
+      <docs>
+<![CDATA[
+ If the \c LATEX_TIMESTAMP tag is set to \c YES then the footer of
+ each generated page will contain the date and time when the page
+ was generated. Setting this to \c NO can help when comparing the output of
+ multiple runs.
+]]>
+      </docs>
+    </option>
   </group>
   <group name='RTF' docs='Configuration options related to the RTF output'>
     <option type='bool' id='GENERATE_RTF' defval='0'>
@@ -3232,7 +3284,9 @@ to be found in the default search path.
  generate a call dependency graph for every global function or class method. 
  <br>Note that enabling this option will significantly increase the time of a run.
  So in most cases it will be better to enable call graphs for selected 
- functions only using the \ref cmdcallgraph "\\callgraph" command.
+ functions only using the \ref cmdcallgraph "\\callgraph" command. 
+ Disabling a call graph can be accomplished by means of the command 
+ \ref cmdhidecallgraph "\\hidecallgraph".
 ]]>
       </docs>
     </option>
@@ -3243,7 +3297,9 @@ to be found in the default search path.
  generate a caller dependency graph for every global function or class method. 
  <br>Note that enabling this option will significantly increase the time of a run.
  So in most cases it will be better to enable caller graphs for selected 
- functions only using the \ref cmdcallergraph "\\callergraph" command.
+ functions only using the \ref cmdcallergraph "\\callergraph" command. 
+ Disabling a caller graph can be accomplished by means of the command 
+ \ref cmdhidecallergraph "\\hidecallergraph".
 ]]>
       </docs>
     </option>
@@ -3269,7 +3325,9 @@ to be found in the default search path.
       <docs>
 <![CDATA[
  The \c DOT_IMAGE_FORMAT tag can be used to set the image format of the images
- generated by \c dot.
+ generated by \c dot. For an explanation of the image formats see the section output formats
+ in the documentation of the \c dot tool
+ (<a href="http://www.graphviz.org/">Graphviz</a>).
  \note If you choose \c svg you need to set 
  \ref cfg_html_file_extension "HTML_FILE_EXTENSION" to \c xhtml in order to make the SVG files
  visible in IE 9+ (other browsers do not have this requirement).
@@ -3279,6 +3337,14 @@ to be found in the default search path.
       <value name='jpg'/>
       <value name='gif'/>
       <value name='svg'/>
+      <value name='png:gd'/>
+      <value name='png:gd:gd'/>
+      <value name='png:cairo'/>
+      <value name='png:cairo:gd'/>
+      <value name='png:cairo:cairo'/>
+      <value name='png:cairo:gdiplus'/>
+      <value name='png:gdiplus'/>
+      <value name='png:gdiplus:gdiplus'/>
     </option>
     <option type='bool' id='INTERACTIVE_SVG' defval='0' depends='HAVE_DOT'>
       <docs>
diff --git a/src/configgen.py b/src/configgen.py
index 7115dba..1647fa2 100755
--- a/src/configgen.py
+++ b/src/configgen.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 # python script to generate configoptions.cpp and config.doc from config.xml
 #
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
+# Copyright (C) 1997-2015 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby
diff --git a/src/configoptions.h b/src/configoptions.h
index be8ecf6..3979f7a 100644
--- a/src/configoptions.h
+++ b/src/configoptions.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/constexp.h b/src/constexp.h
index 27ca039..d84e94e 100644
--- a/src/constexp.h
+++ b/src/constexp.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/constexp.l b/src/constexp.l
index bb4f842..e3ff3f1 100644
--- a/src/constexp.l
+++ b/src/constexp.l
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -15,7 +15,7 @@
  * input used in their production; they are not affected by this license.
  *
  */
-
+%option never-interactive
 %{
 
 #include "constexp.h"  
@@ -23,8 +23,8 @@
 #include "ce_parse.h" // generated header file
 #include "message.h"
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
   
 QCString    g_strToken;  
 CPPValue    g_resultValue;
diff --git a/src/constexp.y b/src/constexp.y
index 1475c1c..c63fa5e 100644
--- a/src/constexp.y
+++ b/src/constexp.y
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/context.cpp b/src/context.cpp
index 551db1a..2412010 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -35,6 +35,8 @@
 #include "docparser.h"
 #include "htmlgen.h"
 #include "htmldocvisitor.h"
+#include "latexgen.h"
+#include "latexdocvisitor.h"
 #include "dot.h"
 #include "diagram.h"
 #include "example.h"
@@ -43,27 +45,30 @@
 #include "portable.h"
 #include "arguments.h"
 #include "groupdef.h"
+#include "searchindex.h"
 
 // TODO: pass the current file to Dot*::writeGraph, so the user can put dot graphs in other
 //       files as well
 
 #define ADD_PROPERTY(name) addProperty(#name,this,&Private::name);
 
+enum ContextOutputFormat
+{
+  ContextOutputFormat_Unspecified=0,
+  ContextOutputFormat_Html,
+  ContextOutputFormat_Latex,
+  ContextOutputFormat_Rtf,
+  ContextOutputFormat_ManPage,
+  ContextOutputFormat_DocBook,
+  ContextOutputFormat_Xml,
+  ContextOutputFormat_TagFile
+};
+
 struct ContextGlobals
 {
-  enum OutputFormat
-  {
-    Html,
-    LateX,
-    Rtf,
-    ManPage,
-    DocBook,
-    Xml,
-    TagFile
-  };
-  int          dynSectionId;
-  QCString     outputDir;
-  OutputFormat outputFormat;
+  int                 dynSectionId;
+  QCString            outputDir;
+  ContextOutputFormat outputFormat;
 } g_globals;
 
 /** @brief Scoped smart pointer */
@@ -216,38 +221,35 @@ class GenericNodeListContext : public TemplateListIntf
 //------------------------------------------------------------------------
 
 /** @brief Helper class to map a property name to a handler member function */
-class PropertyMapper 
+template<typename T>
+class PropertyMapper
 {
   private:
     struct PropertyFuncIntf
     {
       virtual ~PropertyFuncIntf() {}
-      virtual TemplateVariant operator()() const = 0;
+      virtual TemplateVariant operator()(const T *obj) const = 0;
     };
-    template<typename T>
     struct PropertyFunc : public PropertyFuncIntf
     {
       typedef TemplateVariant (T::*Handler)() const;
-      PropertyFunc(const T *o,Handler h) : obj(o), handler(h) {}
-      TemplateVariant operator()() const
+      PropertyFunc(Handler h) : handler(h) {}
+      TemplateVariant operator()(const T *obj) const
       {
         return (obj->*handler)();
       }
-      const T *obj;
       Handler handler;
     };
 
   public:
-    PropertyMapper() { m_map.setAutoDelete(TRUE); }
+    PropertyMapper() : m_map(63) { m_map.setAutoDelete(TRUE); }
 
     /** Add a property to the map
      *  @param[in] name   The name of the property to add.
      *  @param[in] obj    The object handling access to the property.
      *  @param[in] handle The method to call when the property is accessed.
      */
-    template<typename T>
-    void addProperty(const char *name,const T* obj,
-                     typename PropertyFunc<T>::Handler handle)
+    void addProperty(const char *name,typename PropertyFunc::Handler handle)
     {
       if (m_map.find(name))
       {
@@ -255,7 +257,7 @@ class PropertyMapper
       }
       else
       {
-        m_map.insert(name,new PropertyFunc<T>(obj,handle));
+        m_map.insert(name,new PropertyFunc(handle));
       }
     }
 
@@ -264,14 +266,14 @@ class PropertyMapper
      *  @returns A variant representing the properties value or an
      *  invalid variant if it was not found.
      */
-    TemplateVariant get(const char *name) const
+    TemplateVariant get(const T *obj,const char *name) const
     {
       //printf("PropertyMapper::get(%s)\n",name);
       TemplateVariant result;
       PropertyFuncIntf *func = m_map.find(name);
       if (func)
       {
-        result = (*func)();
+        result = (*func)(obj);
       }
       return result;
     }
@@ -358,7 +360,7 @@ TemplateVariant ConfigContext::get(const char *name) const
 
 //%% struct Doxygen: global information
 //%% {
-class DoxygenContext::Private : public PropertyMapper
+class DoxygenContext::Private
 {
   public:
     TemplateVariant version() const
@@ -367,18 +369,44 @@ class DoxygenContext::Private : public PropertyMapper
     }
     TemplateVariant date() const
     {
-      return TemplateVariant(dateToString(TRUE));
+      return dateToString(TRUE);
+    }
+    TemplateVariant maxJaxCodeFile() const
+    {
+      return m_cache.maxJaxCodeFile;
     }
     Private()
     {
-      //%% string version
-      addProperty("version",this,&Private::version); //makeProperty(this,&Private::version));
-      //%% string date
-      addProperty("date",   this,&Private::date);
+      static bool init=FALSE;
+      if (!init)
+      {
+        //%% string version
+        s_inst.addProperty("version",         &Private::version);
+        //%% string date
+        s_inst.addProperty("date",            &Private::date);
+        //%% string maxJaxCodeFile
+        s_inst.addProperty("mathJaxCodeFile", &Private::maxJaxCodeFile);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
+  private:
+    struct Cachable
+    {
+      Cachable() { maxJaxCodeFile=fileToString(Config_getString("MATHJAX_CODEFILE")); }
+      QCString maxJaxCodeFile;
+    };
+    mutable Cachable m_cache;
+    static PropertyMapper<DoxygenContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<DoxygenContext::Private> DoxygenContext::Private::s_inst;
+//                                (PropertyMapper<DoxygenContext::Private>::instance());
+
 DoxygenContext::DoxygenContext() : RefCountedContext("DoxygenContext")
 {
   p = new Private;
@@ -398,7 +426,7 @@ TemplateVariant DoxygenContext::get(const char *n) const
 
 //%% struct Translator: translation methods
 //%% {
-class TranslateContext::Private : public PropertyMapper
+class TranslateContext::Private
 {
   public:
 
@@ -438,6 +466,18 @@ class TranslateContext::Private : public PropertyMapper
       }
       return TemplateVariant();
     }
+    TemplateVariant handleDirDependencyGraphFor(const QValueList<TemplateVariant> &args) const
+    {
+      if (args.count()==1)
+      {
+        return theTranslator->trDirDepGraph(args[0].toString());
+      }
+      else
+      {
+        err("tr.dirDependencyGraphFor should take one argument, got %d!\n",args.count());
+      }
+      return TemplateVariant();
+    }
     TemplateVariant handleInheritsList(const QValueList<TemplateVariant> &args) const
     {
       if (args.count()==1)
@@ -553,6 +593,10 @@ class TranslateContext::Private : public PropertyMapper
     {
       return TemplateVariant::Delegate::fromMethod<Private,&Private::handleCollaborationDiagramFor>(this);
     }
+    TemplateVariant dirDependencyGraphFor() const
+    {
+      return TemplateVariant::Delegate::fromMethod<Private,&Private::handleDirDependencyGraphFor>(this);
+    }
     TemplateVariant search() const
     {
       return theTranslator->trSearch();
@@ -579,6 +623,10 @@ class TranslateContext::Private : public PropertyMapper
     {
       return theTranslator->trCompoundIndex();
     }
+    TemplateVariant namespaceIndex() const
+    {
+      return theTranslator->trNamespaceIndex();
+    }
     TemplateVariant classHierarchy() const
     {
       return theTranslator->trClassHierarchy();
@@ -591,6 +639,10 @@ class TranslateContext::Private : public PropertyMapper
     {
       return theTranslator->trModules();
     }
+    TemplateVariant moduleIndex() const
+    {
+      return theTranslator->trModuleIndex();
+    }
     TemplateVariant namespaces() const
     {
       if (m_javaOpt || m_vhdlOpt)
@@ -610,6 +662,10 @@ class TranslateContext::Private : public PropertyMapper
     {
       return theTranslator->trFile(TRUE,FALSE);
     }
+    TemplateVariant fileIndex() const
+    {
+      return theTranslator->trFileIndex();
+    }
     TemplateVariant pages() const
     {
       return theTranslator->trRelatedPages();
@@ -648,6 +704,14 @@ class TranslateContext::Private : public PropertyMapper
         return theTranslator->trNamespaceMembers();
       }
     }
+    TemplateVariant moduleDocumentation() const
+    {
+      return theTranslator->trModuleDocumentation();
+    }
+    TemplateVariant fileDocumentation() const
+    {
+      return theTranslator->trFileDocumentation();
+    }
     TemplateVariant fileList() const
     {
       return theTranslator->trFileList();
@@ -815,6 +879,10 @@ class TranslateContext::Private : public PropertyMapper
     {
       return theTranslator->trClassDocumentation();
     }
+    TemplateVariant namespaceDocumentation() const
+    {
+      return theTranslator->trNamespaceDocumentation();
+    }
     TemplateVariant compoundMembers() const
     {
       return theTranslator->trCompoundMembers();
@@ -882,166 +950,265 @@ class TranslateContext::Private : public PropertyMapper
     {
       return theTranslator->trDefines();
     }
+    TemplateVariant loading() const
+    {
+      return theTranslator->trLoading();
+    }
+    TemplateVariant searching() const
+    {
+      return theTranslator->trSearching();
+    }
+    TemplateVariant noMatches() const
+    {
+      return theTranslator->trNoMatches();
+    }
+    TemplateVariant enumName() const
+    {
+      return theTranslator->trEnumName();
+    }
+    TemplateVariant enumValue() const
+    {
+      return theTranslator->trEnumValue();
+    }
+    TemplateVariant referenceManual() const
+    {
+      return theTranslator->trReferenceManual();
+    }
+    TemplateVariant index() const
+    {
+      return theTranslator->trRTFGeneralIndex();
+    }
+    TemplateVariant panelSyncOn() const
+    {
+      return theTranslator->trPanelSynchronisationTooltip(FALSE);
+    }
+    TemplateVariant panelSyncOff() const
+    {
+      return theTranslator->trPanelSynchronisationTooltip(TRUE);
+    }
+    TemplateVariant providedByCategory() const
+    {
+      return theTranslator->trProvidedByCategory();
+    }
+    TemplateVariant extendsClass() const
+    {
+      return theTranslator->trExtendsClass();
+    }
+    TemplateVariant examplesDescription() const
+    {
+      return theTranslator->trExamplesDescription();
+    }
     Private()
     {
-      //%% string generatedBy
-      addProperty("generatedby",       this,&Private::generatedBy);
-      //%% string generatedAt
-      addProperty("generatedAt",       this,&Private::generatedAt);
-      //%% string search
-      addProperty("search",            this,&Private::search);
-      //%% string mainPage
-      addProperty("mainPage",          this,&Private::mainPage);
-      //%% string classes
-      addProperty("classes",           this,&Private::classes);
-      //%% string classList
-      addProperty("classList",         this,&Private::classList);
-      //%% string classListDescription
-      addProperty("classListDescription", this,&Private::classListDescription);
-      //%% string classIndex
-      addProperty("classIndex",        this,&Private::classIndex);
-      //%% string classHierarchy
-      addProperty("classHierarchy",    this,&Private::classHierarchy);
-      //%% string classMembers
-      addProperty("classMembers",      this,&Private::classMembers);
-      //%% string classMembersDescription
-      addProperty("classMembersDescription",this,&Private::classMembersDescription);
-      //%% string modules
-      addProperty("modules",           this,&Private::modules);
-      //%% string namespaces
-      addProperty("namespaces",        this,&Private::namespaces);
-      //%% string files
-      addProperty("files",             this,&Private::files);
-      //%% string pages
-      addProperty("pages",             this,&Private::pages);
-      //%% string examples
-      addProperty("examples",          this,&Private::examples);
-      //%% string namespaceList
-      addProperty("namespaceList",     this,&Private::namespaceList);
-      //%% string namespaceMembers
-      addProperty("namespaceMembers",  this,&Private::namespaceMembers);
-      //%% srting fileList
-      addProperty("fileList",          this,&Private::fileList);
-      //%% string fileMembers
-      addProperty("fileMembers",       this,&Private::fileMembers);
-      //%% string fileMembersDescription
-      addProperty("fileMembersDescription", this,&Private::fileMembersDescription);
-      //%% string relatedPagesDescripiton
-      addProperty("relatedPagesDesc",  this,&Private::relatedPagesDesc);
-      //%% string more
-      addProperty("more",              this,&Private::more);
-      //%% string detailedDescription
-      addProperty("detailedDesc",      this,&Private::detailedDesc);
-      //%% string inheritanceDiagramFor
-      addProperty("inheritanceDiagramFor", this,&Private::inheritanceDiagramFor);
-      //%% string collaborationDiagramFor
-      addProperty("collaborationDiagramFor", this,&Private::collaborationDiagramFor);
-      //%% markerstring inheritsList
-      addProperty("inheritsList",      this,&Private::inheritsList);
-      //%% markerstring inheritedByList
-      addProperty("inheritedByList",   this,&Private::inheritedByList);
-      //%% markerstring definedAtLineInSourceFile
-      addProperty("definedAtLineInSourceFile", this,&Private::definedAtLineInSourceFile);
-      //%% string typeConstraints
-      addProperty("typeConstraints",   this,&Private::typeConstraints);
-      //%% string exampleList
-      addProperty("exampleList",       this,&Private::exampleList);
-      //%% string listOfAllMembers
-      addProperty("listOfAllMembers",  this,&Private::listOfAllMembers);
-      //%% string memberList
-      addProperty("memberList",        this,&Private::memberList);
-      //%% string theListOfAllMembers
-      addProperty("theListOfAllMembers",this,&Private::theListOfAllMembers);
-      //%% string incInheritedMembers
-      addProperty("incInheritedMembers",this,&Private::incInheritedMembers);
-      //%% string defineValue
-      addProperty("defineValue",        this,&Private::defineValue);
-      //%% string initialValue
-      addProperty("initialValue",       this,&Private::initialValue);
-      //%% markerstring implements
-      addProperty("implements",         this,&Private::implements);
-      //%% markerstring reimplements
-      addProperty("reimplements",       this,&Private::reimplements);
-      //%% markerstring implementedBy
-      addProperty("implementedBy",      this,&Private::implementedBy);
-      //%% markerstring reimplementedBy
-      addProperty("reimplementedBy",    this,&Private::reimplementedBy);
-      //%% markerstring sourceRefs
-      addProperty("sourceRefs",         this,&Private::sourceRefs);
-      //%% markerstring sourceRefBys
-      addProperty("sourceRefBys",       this,&Private::sourceRefBys);
-      //%% string callGraph
-      addProperty("callGraph",          this,&Private::callGraph);
-      //%% string callerGraph
-      addProperty("callerGraph",        this,&Private::callerGraph);
-      //%% markerstring inheritedFrom
-      addProperty("inheritedFrom",      this,&Private::inheritedFrom);
-      //%% string addtionalInheritedMembers
-      addProperty("additionalInheritedMembers",this,&Private::additionalInheritedMembers);
-      //%% string includeDependencyGraph:container_name
-      addProperty("includeDependencyGraph",this,&Private::includeDependencyGraph);
-      //%% string includedByDependencyGraph
-      addProperty("includedByDependencyGraph",this,&Private::includedByDependencyGraph);
-      //%% string gotoSourceCode
-      addProperty("gotoSourceCode",     this,&Private::gotoSourceCode);
-      //%% string gotoDocumentation
-      addProperty("gotoDocumentation",  this,&Private::gotoDocumentation);
-      //%% string constantgroups
-      addProperty("constantgroups",     this,&Private::constantgroups);
-      //%% string classDocumentation
-      addProperty("classDocumentation", this,&Private::classDocumentation);
-      //%% string compoundMembers
-      addProperty("compoundMembers",    this,&Private::compoundMembers);
-      //%% string detailLevel
-      addProperty("detailLevel",        this,&Private::detailLevel);
-      //%% string fileListDescription
-      addProperty("fileListDescription",this,&Private::fileListDescription);
-      //%% string namespaceListDescription
-      addProperty("namespaceListDescription",this,&Private::namespaceListDescription);
-      //%% string directories
-      addProperty("directories",        this,&Private::directories);
-      //%% string moduleDescript
-      addProperty("modulesDescription", this,&Private::modulesDescription);
-      //%% string all
-      addProperty("all",                this,&Private::all);
-      //%% string functions
-      addProperty("functions",          this,&Private::functions);
-      //%% string variables
-      addProperty("variables",          this,&Private::variables);
-      //%% string typedefs
-      addProperty("typedefs",           this,&Private::typedefs);
-      //%% string enums
-      addProperty("enums",              this,&Private::enums);
-      //%% string enumValues
-      addProperty("enumValues",         this,&Private::enumerationValues);
-      //%% string properties
-      addProperty("properties",         this,&Private::properties);
-      //%% string events
-      addProperty("events",             this,&Private::events);
-      //%% string related
-      addProperty("related",            this,&Private::related);
-      //%% string macros
-      addProperty("macros",             this,&Private::macros);
-      //%% string namespaceMembersDescription
-      addProperty("namespaceMembersDescription",this,&Private::namespaceMembersDescription);
-      //%% string classHierarchyDescription
-      addProperty("classHierarchyDescription",this,&Private::classHierarchyDescription);
-      //%% string gotoGraphicalHierarchy
-      addProperty("gotoGraphicalHierarchy",this,&Private::gotoGraphicalHierarchy);
-      //%% string gotoTextualHierarchy
-      addProperty("gotoTextualHierarchy",this,&Private::gotoTextualHierarchy);
+      static bool init=FALSE;
+      if (!init)
+      {
+        //%% string generatedBy
+        s_inst.addProperty("generatedBy",       &Private::generatedBy);
+        //%% string generatedAt
+        s_inst.addProperty("generatedAt",       &Private::generatedAt);
+        //%% string search
+        s_inst.addProperty("search",            &Private::search);
+        //%% string mainPage
+        s_inst.addProperty("mainPage",          &Private::mainPage);
+        //%% string classes
+        s_inst.addProperty("classes",           &Private::classes);
+        //%% string classList
+        s_inst.addProperty("classList",         &Private::classList);
+        //%% string classListDescription
+        s_inst.addProperty("classListDescription", &Private::classListDescription);
+        //%% string classIndex
+        s_inst.addProperty("classIndex",        &Private::classIndex);
+        //%% string namespaceIndex
+        s_inst.addProperty("namespaceIndex",    &Private::namespaceIndex);
+        //%% string classHierarchy
+        s_inst.addProperty("classHierarchy",    &Private::classHierarchy);
+        //%% string classMembers
+        s_inst.addProperty("classMembers",      &Private::classMembers);
+        //%% string classMembersDescription
+        s_inst.addProperty("classMembersDescription",&Private::classMembersDescription);
+        //%% string modules
+        s_inst.addProperty("modules",           &Private::modules);
+        //%% string moduleIndex
+        s_inst.addProperty("moduleIndex",       &Private::moduleIndex);
+        //%% string namespaces
+        s_inst.addProperty("namespaces",        &Private::namespaces);
+        //%% string fileIndex
+        s_inst.addProperty("fileIndex",         &Private::fileIndex);
+        //%% string files
+        s_inst.addProperty("files",             &Private::files);
+        //%% string pages
+        s_inst.addProperty("pages",             &Private::pages);
+        //%% string examples
+        s_inst.addProperty("examples",          &Private::examples);
+        //%% string namespaceList
+        s_inst.addProperty("namespaceList",     &Private::namespaceList);
+        //%% string namespaceMembers
+        s_inst.addProperty("namespaceMembers",  &Private::namespaceMembers);
+        //%% srting fileList
+        s_inst.addProperty("fileList",          &Private::fileList);
+        //%% string fileMembers
+        s_inst.addProperty("fileMembers",       &Private::fileMembers);
+        //%% string fileMembersDescription
+        s_inst.addProperty("fileMembersDescription", &Private::fileMembersDescription);
+        //%% string relatedPagesDescripiton
+        s_inst.addProperty("relatedPagesDesc",  &Private::relatedPagesDesc);
+        //%% string more
+        s_inst.addProperty("more",              &Private::more);
+        //%% string detailedDescription
+        s_inst.addProperty("detailedDesc",      &Private::detailedDesc);
+        //%% string inheritanceDiagramFor
+        s_inst.addProperty("inheritanceDiagramFor", &Private::inheritanceDiagramFor);
+        //%% string collaborationDiagramFor
+        s_inst.addProperty("collaborationDiagramFor", &Private::collaborationDiagramFor);
+        //%% markerstring inheritsList
+        s_inst.addProperty("inheritsList",      &Private::inheritsList);
+        //%% markerstring inheritedByList
+        s_inst.addProperty("inheritedByList",   &Private::inheritedByList);
+        //%% markerstring definedAtLineInSourceFile
+        s_inst.addProperty("definedAtLineInSourceFile", &Private::definedAtLineInSourceFile);
+        //%% string typeConstraints
+        s_inst.addProperty("typeConstraints",   &Private::typeConstraints);
+        //%% string exampleList
+        s_inst.addProperty("exampleList",       &Private::exampleList);
+        //%% string listOfAllMembers
+        s_inst.addProperty("listOfAllMembers",  &Private::listOfAllMembers);
+        //%% string memberList
+        s_inst.addProperty("memberList",        &Private::memberList);
+        //%% string theListOfAllMembers
+        s_inst.addProperty("theListOfAllMembers",&Private::theListOfAllMembers);
+        //%% string incInheritedMembers
+        s_inst.addProperty("incInheritedMembers",&Private::incInheritedMembers);
+        //%% string defineValue
+        s_inst.addProperty("defineValue",        &Private::defineValue);
+        //%% string initialValue
+        s_inst.addProperty("initialValue",       &Private::initialValue);
+        //%% markerstring implements
+        s_inst.addProperty("implements",         &Private::implements);
+        //%% markerstring reimplements
+        s_inst.addProperty("reimplements",       &Private::reimplements);
+        //%% markerstring implementedBy
+        s_inst.addProperty("implementedBy",      &Private::implementedBy);
+        //%% markerstring reimplementedBy
+        s_inst.addProperty("reimplementedBy",    &Private::reimplementedBy);
+        //%% markerstring sourceRefs
+        s_inst.addProperty("sourceRefs",         &Private::sourceRefs);
+        //%% markerstring sourceRefBys
+        s_inst.addProperty("sourceRefBys",       &Private::sourceRefBys);
+        //%% string callGraph
+        s_inst.addProperty("callGraph",          &Private::callGraph);
+        //%% string callerGraph
+        s_inst.addProperty("callerGraph",        &Private::callerGraph);
+        //%% markerstring inheritedFrom
+        s_inst.addProperty("inheritedFrom",      &Private::inheritedFrom);
+        //%% string addtionalInheritedMembers
+        s_inst.addProperty("additionalInheritedMembers",&Private::additionalInheritedMembers);
+        //%% string includeDependencyGraph:container_name
+        s_inst.addProperty("includeDependencyGraph",&Private::includeDependencyGraph);
+        //%% string includedByDependencyGraph
+        s_inst.addProperty("includedByDependencyGraph",&Private::includedByDependencyGraph);
+        //%% string gotoSourceCode
+        s_inst.addProperty("gotoSourceCode",     &Private::gotoSourceCode);
+        //%% string gotoDocumentation
+        s_inst.addProperty("gotoDocumentation",  &Private::gotoDocumentation);
+        //%% string constantgroups
+        s_inst.addProperty("constantgroups",     &Private::constantgroups);
+        //%% string classDocumentation
+        s_inst.addProperty("classDocumentation", &Private::classDocumentation);
+        //%% string namespaceDocumentation
+        s_inst.addProperty("namespaceDocumentation", &Private::namespaceDocumentation);
+        //%% string moduleDocumentation
+        s_inst.addProperty("moduleDocumentation",&Private::moduleDocumentation);
+        //%% string fileDocumentation
+        s_inst.addProperty("fileDocumentation",  &Private::fileDocumentation);
+        //%% string compoundMembers
+        s_inst.addProperty("compoundMembers",    &Private::compoundMembers);
+        //%% string detailLevel
+        s_inst.addProperty("detailLevel",        &Private::detailLevel);
+        //%% string fileListDescription
+        s_inst.addProperty("fileListDescription",&Private::fileListDescription);
+        //%% string namespaceListDescription
+        s_inst.addProperty("namespaceListDescription",&Private::namespaceListDescription);
+        //%% string directories
+        s_inst.addProperty("directories",        &Private::directories);
+        //%% string moduleDescription
+        s_inst.addProperty("modulesDescription", &Private::modulesDescription);
+        //%% string all
+        s_inst.addProperty("all",                &Private::all);
+        //%% string functions
+        s_inst.addProperty("functions",          &Private::functions);
+        //%% string variables
+        s_inst.addProperty("variables",          &Private::variables);
+        //%% string typedefs
+        s_inst.addProperty("typedefs",           &Private::typedefs);
+        //%% string enums
+        s_inst.addProperty("enums",              &Private::enums);
+        //%% string enumValues
+        s_inst.addProperty("enumValues",         &Private::enumerationValues);
+        //%% string properties
+        s_inst.addProperty("properties",         &Private::properties);
+        //%% string events
+        s_inst.addProperty("events",             &Private::events);
+        //%% string related
+        s_inst.addProperty("related",            &Private::related);
+        //%% string macros
+        s_inst.addProperty("macros",             &Private::macros);
+        //%% string namespaceMembersDescription
+        s_inst.addProperty("namespaceMembersDescription",&Private::namespaceMembersDescription);
+        //%% string classHierarchyDescription
+        s_inst.addProperty("classHierarchyDescription",&Private::classHierarchyDescription);
+        //%% string gotoGraphicalHierarchy
+        s_inst.addProperty("gotoGraphicalHierarchy",&Private::gotoGraphicalHierarchy);
+        //%% string gotoTextualHierarchy
+        s_inst.addProperty("gotoTextualHierarchy",&Private::gotoTextualHierarchy);
+        //%% string loading
+        s_inst.addProperty("loading",            &Private::loading);
+        //%% string searching
+        s_inst.addProperty("searching",          &Private::searching);
+        //%% string noMatches
+        s_inst.addProperty("noMatches",          &Private::noMatches);
+        //%% string enumValue
+        s_inst.addProperty("enumValue",          &Private::enumValue);
+        //%% string enumName
+        s_inst.addProperty("enumName",           &Private::enumName);
+        //%% string referenceManual
+        s_inst.addProperty("referenceManual",    &Private::referenceManual);
+        //%% string index
+        s_inst.addProperty("index",              &Private::index);
+        //%% string panelSyncOn
+        s_inst.addProperty("panelSyncOn",        &Private::panelSyncOn);
+        //%% string panelSyncOff
+        s_inst.addProperty("panelSyncOff",       &Private::panelSyncOff);
+        //%% string dirDependencyGraph
+        s_inst.addProperty("dirDependencyGraphFor", &Private::dirDependencyGraphFor);
+        //%% string providedByCategory
+        s_inst.addProperty("providedByCategory", &Private::providedByCategory);
+        //%% string extendsClass
+        s_inst.addProperty("extendsClass",       &Private::extendsClass);
+        //%% string examplesDescription
+        s_inst.addProperty("examplesDescription",&Private::examplesDescription);
+
+        init=TRUE;
+      }
 
       m_javaOpt    = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
       m_fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
       m_vhdlOpt    = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
     }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
   private:
     bool m_javaOpt;
     bool m_fortranOpt;
     bool m_vhdlOpt;
+    static PropertyMapper<TranslateContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<TranslateContext::Private> TranslateContext::Private::s_inst;
+
 TranslateContext::TranslateContext() : RefCountedContext("TranslateContext")
 {
   p = new Private;
@@ -1065,10 +1232,27 @@ static TemplateVariant parseDoc(Definition *def,const QCString &file,int line,
   QGString docs;
   {
     FTextStream ts(&docs);
-    // TODO: support other generators
-    HtmlCodeGenerator codeGen(ts,relPath);
-    HtmlDocVisitor visitor(ts,codeGen,def);
-    root->accept(&visitor);
+    switch (g_globals.outputFormat)
+    {
+      case ContextOutputFormat_Html:
+        {
+          HtmlCodeGenerator codeGen(ts,relPath);
+          HtmlDocVisitor visitor(ts,codeGen,def);
+          root->accept(&visitor);
+        }
+        break;
+      case ContextOutputFormat_Latex:
+        {
+          LatexCodeGenerator codeGen(ts,relPath,file);
+          LatexDocVisitor visitor(ts,codeGen,def->getDefFileExtension(),FALSE);
+          root->accept(&visitor);
+        }
+        break;
+      // TODO: support other generators
+      default:
+        err("context.cpp: output format not yet supported");
+        break;
+    }
   }
   bool isEmpty = root->isEmpty();
   if (isEmpty)
@@ -1086,9 +1270,27 @@ static TemplateVariant parseCode(MemberDef *md,const QCString &scopeName,const Q
   pIntf->resetCodeParserState();
   QGString s;
   FTextStream t(&s);
-  HtmlCodeGenerator codeGen(t,relPath);
-  pIntf->parseCode(codeGen,scopeName,code,md->getLanguage(),FALSE,0,md->getBodyDef(),
-                   startLine,endLine,TRUE,md,showLineNumbers,md);
+  switch (g_globals.outputFormat)
+  {
+    case ContextOutputFormat_Html:
+      {
+        HtmlCodeGenerator codeGen(t,relPath);
+        pIntf->parseCode(codeGen,scopeName,code,md->getLanguage(),FALSE,0,md->getBodyDef(),
+            startLine,endLine,TRUE,md,showLineNumbers,md);
+      }
+      break;
+    case ContextOutputFormat_Latex:
+      {
+        LatexCodeGenerator codeGen(t,relPath,md->docFile());
+        pIntf->parseCode(codeGen,scopeName,code,md->getLanguage(),FALSE,0,md->getBodyDef(),
+            startLine,endLine,TRUE,md,showLineNumbers,md);
+      }
+      break;
+    // TODO: support other generators
+    default:
+      err("context.cpp: output format not yet supported");
+      break;
+  }
   return TemplateVariant(s.data(),TRUE);
 }
 
@@ -1099,21 +1301,51 @@ static TemplateVariant parseCode(FileDef *fd,const QCString &relPath)
   pIntf->resetCodeParserState();
   QGString s;
   FTextStream t(&s);
-  HtmlCodeGenerator codeGen(t,relPath);
-  pIntf->parseCode(codeGen,0,
-        fileToString(fd->absFilePath(),filterSourceFiles,TRUE), // the sources
-        fd->getLanguage(),  // lang
-        FALSE,              // isExampleBlock
-        0,                  // exampleName
-        fd,                 // fileDef
-        -1,                 // startLine
-        -1,                 // endLine
-        FALSE,              // inlineFragment
-        0,                  // memberDef
-        TRUE,               // showLineNumbers
-        0,                  // searchCtx
-        TRUE                // collectXRefs, TODO: should become FALSE
-        );
+  switch (g_globals.outputFormat)
+  {
+    case ContextOutputFormat_Html:
+      {
+        HtmlCodeGenerator codeGen(t,relPath);
+        pIntf->parseCode(codeGen,0,
+              fileToString(fd->absFilePath(),filterSourceFiles,TRUE), // the sources
+              fd->getLanguage(),  // lang
+              FALSE,              // isExampleBlock
+              0,                  // exampleName
+              fd,                 // fileDef
+              -1,                 // startLine
+              -1,                 // endLine
+              FALSE,              // inlineFragment
+              0,                  // memberDef
+              TRUE,               // showLineNumbers
+              0,                  // searchCtx
+              TRUE                // collectXRefs, TODO: should become FALSE
+              );
+      }
+      break;
+    case ContextOutputFormat_Latex:
+      {
+        LatexCodeGenerator codeGen(t,relPath,fd->docFile());
+        pIntf->parseCode(codeGen,0,
+              fileToString(fd->absFilePath(),filterSourceFiles,TRUE), // the sources
+              fd->getLanguage(),  // lang
+              FALSE,              // isExampleBlock
+              0,                  // exampleName
+              fd,                 // fileDef
+              -1,                 // startLine
+              -1,                 // endLine
+              FALSE,              // inlineFragment
+              0,                  // memberDef
+              TRUE,               // showLineNumbers
+              0,                  // searchCtx
+              TRUE                // collectXRefs, TODO: should become FALSE
+              );
+      }
+      break;
+    // TODO: support other generators
+    default:
+      err("context.cpp: output format not yet supported");
+      break;
+  }
   return TemplateVariant(s.data(),TRUE);
 }
 
@@ -1122,71 +1354,51 @@ static TemplateVariant parseCode(FileDef *fd,const QCString &relPath)
 //%% struct Symbol: shared info for all symbols
 //%% {
 template<typename T>
-class DefinitionContext : public PropertyMapper
+class DefinitionContext
 {
   public:
     DefinitionContext(Definition *d) : m_def(d)
     {
       assert(d!=0);
+    }
+    void addBaseProperties(PropertyMapper<T> &inst)
+    {
       //%% string name: the name of the symbol
-      addProperty("name",this,&DefinitionContext::name);
+      inst.addProperty("name",&DefinitionContext::name);
       //%% string bareName: the bare name of the symbol with scope info
-      addProperty("bareName",this,&DefinitionContext::bareName);
+      inst.addProperty("bareName",&DefinitionContext::bareName);
       //%% string relPath: the relative path to the root of the output (CREATE_SUBDIRS)
-      addProperty("relPath",this,&DefinitionContext::relPath);
+      inst.addProperty("relPath",&DefinitionContext::relPath);
       //%% string fileName: the file name of the output file associated with the symbol (without extension)
-      addProperty("fileName",this,&DefinitionContext::fileName);
+      inst.addProperty("fileName",&DefinitionContext::fileName);
       //%% string anchor: anchor within the page
-      addProperty("anchor",this,&DefinitionContext::anchor);
+      inst.addProperty("anchor",&DefinitionContext::anchor);
       //%% string details: the detailed documentation for this symbol
-      addProperty("details",this,&DefinitionContext::details);
+      inst.addProperty("details",&DefinitionContext::details);
       //%% string brief: the brief description for this symbol
-      addProperty("brief",this,&DefinitionContext::brief);
+      inst.addProperty("brief",&DefinitionContext::brief);
       //%% string inbodyDocs: the documentation found in the body
-      addProperty("inbodyDocs",this,&DefinitionContext::inbodyDocs);
+      inst.addProperty("inbodyDocs",&DefinitionContext::inbodyDocs);
       //%% string sourceFileName: the file name of the source file (without extension)
-      addProperty("sourceFileName",this,&DefinitionContext::sourceFileName);
+      inst.addProperty("sourceFileName",&DefinitionContext::sourceFileName);
       //%% bool isLinkable: can the symbol be linked to?
-      addProperty("isLinkable",this,&DefinitionContext::isLinkable);
+      inst.addProperty("isLinkable",&DefinitionContext::isLinkable);
       //%% bool isLinkableInProject: can the symbol be linked within this project?
-      addProperty("isLinkableInProject",this,&DefinitionContext::isLinkableInProject);
+      inst.addProperty("isLinkableInProject",&DefinitionContext::isLinkableInProject);
       //%% int dynSectionId: identifier that can be used for collapsable sections
-      addProperty("dynSectionId",this,&DefinitionContext::dynSectionId);
+      inst.addProperty("dynSectionId",&DefinitionContext::dynSectionId);
       //%% string language: the programming language in which the symbol is written
-      addProperty("language",this,&DefinitionContext::language);
+      inst.addProperty("language",&DefinitionContext::language);
       //%% string sourceDef: A link to the source definition
-      addProperty("sourceDef",this,&DefinitionContext::sourceDef);
+      inst.addProperty("sourceDef",&DefinitionContext::sourceDef);
       //%% list[Definition] navigationPath: Breadcrumb navigation path to this item
-      addProperty("navigationPath",this,&DefinitionContext::navigationPath);
-
-      m_cache.sourceDef.reset(TemplateList::alloc());
-      m_cache.lineLink.reset(TemplateStruct::alloc());
-      m_cache.fileLink.reset(TemplateStruct::alloc());
-
-      if (m_def && !m_def->getSourceFileBase().isEmpty())
-      {
-        m_cache.lineLink->set("text",m_def->getStartBodyLine());
-        m_cache.lineLink->set("isLinkable",TRUE);
-        m_cache.lineLink->set("fileName",m_def->getSourceFileBase());
-        m_cache.lineLink->set("anchor",m_def->getSourceAnchor());
-        if (m_def->definitionType()==Definition::TypeFile)
-        {
-          m_cache.fileLink->set("text",m_def->name());
-        }
-        else if (m_def->getBodyDef())
-        {
-          m_cache.fileLink->set("text",m_def->getBodyDef()->name());
-        }
-        else
-        {
-          m_cache.fileLink->set("text",name());
-        }
-        m_cache.fileLink->set("isLinkable",TRUE);
-        m_cache.fileLink->set("fileName",m_def->getSourceFileBase());
-        m_cache.fileLink->set("anchor",QCString());
-        m_cache.sourceDef->append(m_cache.lineLink.get());
-        m_cache.sourceDef->append(m_cache.fileLink.get());
-      }
+      inst.addProperty("navigationPath",&DefinitionContext::navigationPath);
+      //%% string kind: Kind of compound object: class, namespace, module, package, page, dir
+      inst.addProperty("compoundKind",&DefinitionContext::compoundKind);
+      //%% bool isReference: is this definition imported via a tag file
+      inst.addProperty("isReference",&DefinitionContext::isReference);
+      //%% string externalReference: the link to the element in the remote documentation
+      inst.addProperty("externalReference",&DefinitionContext::externalReference);
     }
     TemplateVariant fileName() const
     {
@@ -1227,44 +1439,50 @@ class DefinitionContext : public PropertyMapper
     }
     TemplateVariant details() const
     {
-      if (!m_cache.details)
+      Cachable &cache = getCache();
+      if (!cache.details || g_globals.outputFormat!=cache.detailsOutputFormat)
       {
-        m_cache.details.reset(new TemplateVariant(parseDoc(m_def,m_def->docFile(),m_def->docLine(),
+        cache.details.reset(new TemplateVariant(parseDoc(m_def,m_def->docFile(),m_def->docLine(),
                                             relPathAsString(),m_def->documentation(),FALSE)));
+        cache.detailsOutputFormat = g_globals.outputFormat;
       }
-      return *m_cache.details;
+      return *cache.details;
     }
     TemplateVariant brief() const
     {
-      if (!m_cache.brief)
+      Cachable &cache = getCache();
+      if (!cache.brief || g_globals.outputFormat!=cache.briefOutputFormat)
       {
         if (m_def->hasBriefDescription())
         {
-          m_cache.brief.reset(new TemplateVariant(parseDoc(m_def,m_def->briefFile(),m_def->briefLine(),
+          cache.brief.reset(new TemplateVariant(parseDoc(m_def,m_def->briefFile(),m_def->briefLine(),
                              relPathAsString(),m_def->briefDescription(),TRUE)));
+          cache.briefOutputFormat = g_globals.outputFormat;
         }
         else
         {
-          m_cache.brief.reset(new TemplateVariant(""));
+          cache.brief.reset(new TemplateVariant(""));
         }
       }
-      return *m_cache.brief;
+      return *cache.brief;
     }
     TemplateVariant inbodyDocs() const
     {
-      if (!m_cache.inbodyDocs)
+      Cachable &cache = getCache();
+      if (!cache.inbodyDocs || g_globals.outputFormat!=cache.inbodyDocsOutputFormat)
       {
         if (!m_def->inbodyDocumentation().isEmpty())
         {
-          m_cache.inbodyDocs.reset(new TemplateVariant(parseDoc(m_def,m_def->inbodyFile(),m_def->inbodyLine(),
+          cache.inbodyDocs.reset(new TemplateVariant(parseDoc(m_def,m_def->inbodyFile(),m_def->inbodyLine(),
                                            relPathAsString(),m_def->inbodyDocumentation(),FALSE)));
+          cache.inbodyDocsOutputFormat = g_globals.outputFormat;
         }
         else
         {
-          m_cache.inbodyDocs.reset(new TemplateVariant(""));
+          cache.inbodyDocs.reset(new TemplateVariant(""));
         }
       }
-      return *m_cache.inbodyDocs;
+      return *cache.inbodyDocs;
     }
     TemplateVariant dynSectionId() const
     {
@@ -1294,11 +1512,30 @@ class DefinitionContext : public PropertyMapper
       }
       return result;
     }
+    TemplateVariant compoundKind() const
+    {
+      QCString result = "unspecified";
+      switch (m_def->definitionType())
+      {
+        case DefinitionIntf::TypeClass:     result="class";     break;
+        case DefinitionIntf::TypeFile:      result="file";      break;
+        case DefinitionIntf::TypeNamespace: result="namespace"; break;
+        case DefinitionIntf::TypeGroup:     result="module";    break;
+        case DefinitionIntf::TypePackage:   result="package";   break;
+        case DefinitionIntf::TypePage:      result="page";      break;
+        case DefinitionIntf::TypeDir:       result="dir";       break;
+        case DefinitionIntf::TypeMember: // fall through
+        case DefinitionIntf::TypeSymbolList:
+                break;
+      }
+      return result;
+    }
     TemplateVariant sourceDef() const
     {
-      if (m_cache.sourceDef->count()==2)
+      Cachable &cache = getCache();
+      if (cache.sourceDef->count()==2)
       {
-        return m_cache.sourceDef.get();
+        return cache.sourceDef.get();
       }
       else
       {
@@ -1321,7 +1558,8 @@ class DefinitionContext : public PropertyMapper
     }
     TemplateVariant navigationPath() const
     {
-      if (!m_cache.navPath)
+      Cachable &cache = getCache();
+      if (!cache.navPath)
       {
         TemplateList *list = TemplateList::alloc();
         if (m_def->getOuterScope() && m_def->getOuterScope()!=Doxygen::globalScope)
@@ -1332,25 +1570,80 @@ class DefinitionContext : public PropertyMapper
         {
           fillPath(((const FileDef *)m_def)->getDirDef(),list);
         }
-        m_cache.navPath.reset(list);
+        cache.navPath.reset(list);
       }
-      return m_cache.navPath.get();
+      return cache.navPath.get();
+    }
+    TemplateVariant isReference() const
+    {
+      return m_def->isReference();
+    }
+    TemplateVariant externalReference() const
+    {
+      return m_def->externalReference(relPathAsString());
     }
 
-  private:
-    Definition      *m_def;
-    struct Cachable
+  protected:
+    struct Cachable : public Definition::Cookie
     {
-      Cachable() { }
+      Cachable(Definition *def) : detailsOutputFormat(ContextOutputFormat_Unspecified),
+                                  briefOutputFormat(ContextOutputFormat_Unspecified),
+                                  inbodyDocsOutputFormat(ContextOutputFormat_Unspecified)
+      {
+        sourceDef.reset(TemplateList::alloc());
+        lineLink.reset(TemplateStruct::alloc());
+        fileLink.reset(TemplateStruct::alloc());
+
+        if (def && !def->getSourceFileBase().isEmpty())
+        {
+          lineLink->set("text",def->getStartBodyLine());
+          lineLink->set("isLinkable",TRUE);
+          lineLink->set("fileName",def->getSourceFileBase());
+          lineLink->set("anchor",def->getSourceAnchor());
+          lineLink->set("isReference",FALSE);
+          lineLink->set("externalReference","");
+          if (def->definitionType()==Definition::TypeFile)
+          {
+            fileLink->set("text",def->name());
+          }
+          else if (def->getBodyDef())
+          {
+            fileLink->set("text",def->getBodyDef()->name());
+          }
+          else
+          {
+            fileLink->set("text",def->displayName(TRUE));
+          }
+          fileLink->set("isLinkable",TRUE);
+          fileLink->set("fileName",def->getSourceFileBase());
+          fileLink->set("anchor",QCString());
+          fileLink->set("isReference",FALSE);
+          fileLink->set("externalReference","");
+          sourceDef->append(lineLink.get());
+          sourceDef->append(fileLink.get());
+        }
+      }
       ScopedPtr<TemplateVariant> details;
+      ContextOutputFormat        detailsOutputFormat;
       ScopedPtr<TemplateVariant> brief;
+      ContextOutputFormat        briefOutputFormat;
       ScopedPtr<TemplateVariant> inbodyDocs;
+      ContextOutputFormat        inbodyDocsOutputFormat;
       SharedPtr<TemplateList>    navPath;
       SharedPtr<TemplateList>    sourceDef;
       SharedPtr<TemplateStruct>  fileLink;
       SharedPtr<TemplateStruct>  lineLink;
     };
-    mutable Cachable m_cache;
+
+
+  private:
+    Cachable &getCache() const
+    {
+      Cachable *c = static_cast<Cachable*>(m_def->cookie());
+      assert(c!=0);
+      return *c;
+    }
+    Definition      *m_def;
 };
 //%% }
 
@@ -1358,21 +1651,27 @@ class DefinitionContext : public PropertyMapper
 
 //%% struct IncludeInfo: include file information
 //%% {
-class IncludeInfoContext::Private : public PropertyMapper
+class IncludeInfoContext::Private
 {
   public:
     Private(const IncludeInfo *info,SrcLangExt lang) :
       m_info(info),
       m_lang(lang)
     {
-      if (m_info)
+      static bool init=FALSE;
+      if (!init)
       {
-        addProperty("file",this,&Private::file);
-        addProperty("name",this,&Private::name);
-        addProperty("isImport",this,&Private::isImport);
-        addProperty("isLocal",this,&Private::isLocal);
+        s_inst.addProperty("file",&Private::file);
+        s_inst.addProperty("name",&Private::name);
+        s_inst.addProperty("isImport",&Private::isImport);
+        s_inst.addProperty("isLocal",&Private::isLocal);
+        init=TRUE;
       }
     }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant isLocal() const
     {
       bool isIDLorJava = m_lang==SrcLangExt_IDL || m_lang==SrcLangExt_Java;
@@ -1380,7 +1679,7 @@ class IncludeInfoContext::Private : public PropertyMapper
     }
     TemplateVariant isImport() const
     {
-      return m_info->imported;
+      return m_info->imported || m_lang==SrcLangExt_ObjC;
     }
     TemplateVariant file() const
     {
@@ -1405,8 +1704,11 @@ class IncludeInfoContext::Private : public PropertyMapper
     const IncludeInfo *m_info;
     mutable SharedPtr<FileContext> m_fileContext;
     SrcLangExt m_lang;
+    static PropertyMapper<IncludeInfoContext::Private> s_inst;
 };
 
+PropertyMapper<IncludeInfoContext::Private> IncludeInfoContext::Private::s_inst;
+
 IncludeInfoContext::IncludeInfoContext(const IncludeInfo *info,SrcLangExt lang) : RefCountedContext("IncludeContext")
 {
   p = new Private(info,lang);
@@ -1479,71 +1781,85 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
     Private(ClassDef *cd) : DefinitionContext<ClassContext::Private>(cd),
        m_classDef(cd)
     {
-      addProperty("title",                     this,&Private::title);
-      addProperty("highlight",                 this,&Private::highlight);
-      addProperty("subhighlight",              this,&Private::subHighlight);
-      addProperty("hasDetails",                this,&Private::hasDetails);
-      addProperty("generatedFromFiles",        this,&Private::generatedFromFiles);
-      addProperty("usedFiles",                 this,&Private::usedFiles);
-      addProperty("hasInheritanceDiagram",     this,&Private::hasInheritanceDiagram);
-      addProperty("inheritanceDiagram",        this,&Private::inheritanceDiagram);
-      addProperty("hasCollaborationDiagram",   this,&Private::hasCollaborationDiagram);
-      addProperty("collaborationDiagram",      this,&Private::collaborationDiagram);
-      addProperty("includeInfo",               this,&Private::includeInfo);
-      addProperty("inherits",                  this,&Private::inherits);
-      addProperty("inheritedBy",               this,&Private::inheritedBy);
-      addProperty("unoIDLServices",            this,&Private::unoIDLServices);
-      addProperty("unoIDLInterfaces",          this,&Private::unoIDLInterfaces);
-      addProperty("signals",                   this,&Private::signals);
-      addProperty("publicTypes",               this,&Private::publicTypes);
-      addProperty("publicMethods",             this,&Private::publicMethods);
-      addProperty("publicStaticMethods",       this,&Private::publicStaticMethods);
-      addProperty("publicAttributes",          this,&Private::publicAttributes);
-      addProperty("publicStaticAttributes",    this,&Private::publicStaticAttributes);
-      addProperty("publicSlots",               this,&Private::publicSlots);
-      addProperty("protectedTypes",            this,&Private::protectedTypes);
-      addProperty("protectedMethods",          this,&Private::protectedMethods);
-      addProperty("protectedStaticMethods",    this,&Private::protectedStaticMethods);
-      addProperty("protectedAttributes",       this,&Private::protectedAttributes);
-      addProperty("protectedStaticAttributes", this,&Private::protectedStaticAttributes);
-      addProperty("protectedSlots",            this,&Private::protectedSlots);
-      addProperty("privateTypes",              this,&Private::privateTypes);
-      addProperty("privateMethods",            this,&Private::privateMethods);
-      addProperty("privateStaticMethods",      this,&Private::privateStaticMethods);
-      addProperty("privateAttributes",         this,&Private::privateAttributes);
-      addProperty("privateStaticAttributes",   this,&Private::privateStaticAttributes);
-      addProperty("privateSlots",              this,&Private::privateSlots);
-      addProperty("packageTypes",              this,&Private::packageTypes);
-      addProperty("packageMethods",            this,&Private::packageMethods);
-      addProperty("packageStaticMethods",      this,&Private::packageStaticMethods);
-      addProperty("packageAttributes",         this,&Private::packageAttributes);
-      addProperty("packageStaticAttributes",   this,&Private::packageStaticAttributes);
-      addProperty("properties",                this,&Private::properties);
-      addProperty("events",                    this,&Private::events);
-      addProperty("friends",                   this,&Private::friends);
-      addProperty("related",                   this,&Private::related);
-      addProperty("detailedTypedefs",          this,&Private::detailedTypedefs);
-      addProperty("detailedEnums",             this,&Private::detailedEnums);
-      addProperty("detailedServices",          this,&Private::detailedServices);
-      addProperty("detailedInterfaces",        this,&Private::detailedInterfaces);
-      addProperty("detailedConstructors",      this,&Private::detailedConstructors);
-      addProperty("detailedMethods",           this,&Private::detailedMethods);
-      addProperty("detailedRelated",           this,&Private::detailedRelated);
-      addProperty("detailedVariables",         this,&Private::detailedVariables);
-      addProperty("detailedProperties",        this,&Private::detailedProperties);
-      addProperty("detailedEvents",            this,&Private::detailedEvents);
-      addProperty("classes",                   this,&Private::classes);
-      addProperty("compoundType",              this,&Private::compoundType);
-      addProperty("templateDecls",             this,&Private::templateDecls);
-      addProperty("typeConstraints",           this,&Private::typeConstraints);
-      addProperty("examples",                  this,&Private::examples);
-      addProperty("members",                   this,&Private::members);
-      addProperty("allMembersList",            this,&Private::allMembersList);
-      addProperty("allMembersFileName",        this,&Private::allMembersFileName);
-      addProperty("memberGroups",              this,&Private::memberGroups);
-      addProperty("additionalInheritedMembers",this,&Private::additionalInheritedMembers);
+      static bool init=FALSE;
+      if (!init)
+      {
+        addBaseProperties(s_inst);
+        s_inst.addProperty("title",                     &Private::title);
+        s_inst.addProperty("highlight",                 &Private::highlight);
+        s_inst.addProperty("subhighlight",              &Private::subHighlight);
+        s_inst.addProperty("hasDetails",                &Private::hasDetails);
+        s_inst.addProperty("generatedFromFiles",        &Private::generatedFromFiles);
+        s_inst.addProperty("usedFiles",                 &Private::usedFiles);
+        s_inst.addProperty("hasInheritanceDiagram",     &Private::hasInheritanceDiagram);
+        s_inst.addProperty("inheritanceDiagram",        &Private::inheritanceDiagram);
+        s_inst.addProperty("hasCollaborationDiagram",   &Private::hasCollaborationDiagram);
+        s_inst.addProperty("collaborationDiagram",      &Private::collaborationDiagram);
+        s_inst.addProperty("includeInfo",               &Private::includeInfo);
+        s_inst.addProperty("inherits",                  &Private::inherits);
+        s_inst.addProperty("inheritedBy",               &Private::inheritedBy);
+        s_inst.addProperty("unoIDLServices",            &Private::unoIDLServices);
+        s_inst.addProperty("unoIDLInterfaces",          &Private::unoIDLInterfaces);
+        s_inst.addProperty("signals",                   &Private::signals);
+        s_inst.addProperty("publicTypes",               &Private::publicTypes);
+        s_inst.addProperty("publicMethods",             &Private::publicMethods);
+        s_inst.addProperty("publicStaticMethods",       &Private::publicStaticMethods);
+        s_inst.addProperty("publicAttributes",          &Private::publicAttributes);
+        s_inst.addProperty("publicStaticAttributes",    &Private::publicStaticAttributes);
+        s_inst.addProperty("publicSlots",               &Private::publicSlots);
+        s_inst.addProperty("protectedTypes",            &Private::protectedTypes);
+        s_inst.addProperty("protectedMethods",          &Private::protectedMethods);
+        s_inst.addProperty("protectedStaticMethods",    &Private::protectedStaticMethods);
+        s_inst.addProperty("protectedAttributes",       &Private::protectedAttributes);
+        s_inst.addProperty("protectedStaticAttributes", &Private::protectedStaticAttributes);
+        s_inst.addProperty("protectedSlots",            &Private::protectedSlots);
+        s_inst.addProperty("privateTypes",              &Private::privateTypes);
+        s_inst.addProperty("privateMethods",            &Private::privateMethods);
+        s_inst.addProperty("privateStaticMethods",      &Private::privateStaticMethods);
+        s_inst.addProperty("privateAttributes",         &Private::privateAttributes);
+        s_inst.addProperty("privateStaticAttributes",   &Private::privateStaticAttributes);
+        s_inst.addProperty("privateSlots",              &Private::privateSlots);
+        s_inst.addProperty("packageTypes",              &Private::packageTypes);
+        s_inst.addProperty("packageMethods",            &Private::packageMethods);
+        s_inst.addProperty("packageStaticMethods",      &Private::packageStaticMethods);
+        s_inst.addProperty("packageAttributes",         &Private::packageAttributes);
+        s_inst.addProperty("packageStaticAttributes",   &Private::packageStaticAttributes);
+        s_inst.addProperty("properties",                &Private::properties);
+        s_inst.addProperty("events",                    &Private::events);
+        s_inst.addProperty("friends",                   &Private::friends);
+        s_inst.addProperty("related",                   &Private::related);
+        s_inst.addProperty("detailedTypedefs",          &Private::detailedTypedefs);
+        s_inst.addProperty("detailedEnums",             &Private::detailedEnums);
+        s_inst.addProperty("detailedServices",          &Private::detailedServices);
+        s_inst.addProperty("detailedInterfaces",        &Private::detailedInterfaces);
+        s_inst.addProperty("detailedConstructors",      &Private::detailedConstructors);
+        s_inst.addProperty("detailedMethods",           &Private::detailedMethods);
+        s_inst.addProperty("detailedRelated",           &Private::detailedRelated);
+        s_inst.addProperty("detailedVariables",         &Private::detailedVariables);
+        s_inst.addProperty("detailedProperties",        &Private::detailedProperties);
+        s_inst.addProperty("detailedEvents",            &Private::detailedEvents);
+        s_inst.addProperty("classes",                   &Private::classes);
+        s_inst.addProperty("innerClasses",              &Private::innerClasses);
+        s_inst.addProperty("compoundType",              &Private::compoundType);
+        s_inst.addProperty("templateDecls",             &Private::templateDecls);
+        s_inst.addProperty("typeConstraints",           &Private::typeConstraints);
+        s_inst.addProperty("examples",                  &Private::examples);
+        s_inst.addProperty("members",                   &Private::members);
+        s_inst.addProperty("allMembersList",            &Private::allMembersList);
+        s_inst.addProperty("allMembersFileName",        &Private::allMembersFileName);
+        s_inst.addProperty("memberGroups",              &Private::memberGroups);
+        s_inst.addProperty("additionalInheritedMembers",&Private::additionalInheritedMembers);
+        s_inst.addProperty("isSimple",                  &Private::isSimple);
+        s_inst.addProperty("categoryOf",                &Private::categoryOf);
+        init=TRUE;
+      }
+      if (!cd->cookie()) { cd->setCookie(new ClassContext::Private::Cachable(cd)); }
     }
     virtual ~Private() {}
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant title() const
     {
       return TemplateVariant(m_classDef->title());
@@ -1566,27 +1882,30 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
     }
     TemplateVariant usedFiles() const
     {
-      if (!m_cache.usedFiles)
+      Cachable &cache = getCache();
+      if (!cache.usedFiles)
       {
-        m_cache.usedFiles.reset(UsedFilesContext::alloc(m_classDef));
+        cache.usedFiles.reset(UsedFilesContext::alloc(m_classDef));
       }
-      return m_cache.usedFiles.get();
+      return cache.usedFiles.get();
     }
     DotClassGraph *getClassGraph() const
     {
-      if (!m_cache.classGraph)
+      Cachable &cache = getCache();
+      if (!cache.classGraph)
       {
-        m_cache.classGraph.reset(new DotClassGraph(m_classDef,DotNode::Inheritance));
+        cache.classGraph.reset(new DotClassGraph(m_classDef,DotNode::Inheritance));
       }
-      return m_cache.classGraph.get();
+      return cache.classGraph.get();
     }
     int numInheritanceNodes() const
     {
-      if (m_cache.inheritanceNodes==-1)
+      Cachable &cache = getCache();
+      if (cache.inheritanceNodes==-1)
       {
-        m_cache.inheritanceNodes=m_classDef->countInheritanceNodes();
+        cache.inheritanceNodes=m_classDef->countInheritanceNodes();
       }
-      return m_cache.inheritanceNodes>0;
+      return cache.inheritanceNodes>0;
     }
     TemplateVariant hasInheritanceDiagram() const
     {
@@ -1615,37 +1934,75 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
       {
         DotClassGraph *cg = getClassGraph();
         FTextStream t(&result);
-        cg->writeGraph(t,GOF_BITMAP,EOF_Html,
-                       g_globals.outputDir,
-                       g_globals.outputDir+portable_pathSeparator()+m_classDef->getOutputFileBase()+Doxygen::htmlFileExtension,
-                       relPathAsString(),TRUE,TRUE,g_globals.dynSectionId
-                      );
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              cg->writeGraph(t,GOF_BITMAP,EOF_Html,
+                             g_globals.outputDir,
+                             g_globals.outputDir+portable_pathSeparator()+m_classDef->getOutputFileBase()+Doxygen::htmlFileExtension,
+                             relPathAsString(),TRUE,TRUE,g_globals.dynSectionId
+                            );
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              cg->writeGraph(t,GOF_EPS,EOF_LaTeX,
+                             g_globals.outputDir,
+                             g_globals.outputDir+portable_pathSeparator()+m_classDef->getOutputFileBase()+".tex",
+                             relPathAsString(),TRUE,TRUE,g_globals.dynSectionId
+                            );
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
+        g_globals.dynSectionId++;
       }
       else if (classDiagrams)
       {
         ClassDiagram d(m_classDef);
         FTextStream t(&result);
-        QCString name = convertToHtml(m_classDef->displayName());
-        t << "<div class=\"center\">" << endl;
-        t << "<img src=\"";
-        t << relPathAsString() << m_classDef->getOutputFileBase();
-        t << ".png\" usemap=\"#" << name << "_map\" alt=\"\"/>" << endl;
-        t << "<map id=\"" << name << "_map\" name=\"" << name << "_map\">" << endl;
-        d.writeImage(t,g_globals.outputDir,
-                     relPathAsString(),
-                     m_classDef->getOutputFileBase());
-        t << "</div>";
-      }
-      g_globals.dynSectionId++;
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              QCString name = convertToHtml(m_classDef->displayName());
+              t << "<div class=\"center\">" << endl;
+              t << "<img src=\"";
+              t << relPathAsString() << m_classDef->getOutputFileBase();
+              t << ".png\" usemap=\"#" << convertToId(name) << "_map\" alt=\"\"/>" << endl;
+              t << "<map id=\"" << convertToId(name) << "_map\" name=\"" << name << "_map\">" << endl;
+              d.writeImage(t,g_globals.outputDir,
+                           relPathAsString(),
+                           m_classDef->getOutputFileBase());
+              t << "</div>";
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              d.writeFigure(t,g_globals.outputDir,m_classDef->getOutputFileBase());
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
+        g_globals.dynSectionId++;
+      }
       return TemplateVariant(result.data(),TRUE);
     }
     DotClassGraph *getCollaborationGraph() const
     {
-      if (!m_cache.collaborationGraph)
+      Cachable &cache = getCache();
+      if (!cache.collaborationGraph)
       {
-        m_cache.collaborationGraph.reset(new DotClassGraph(m_classDef,DotNode::Collaboration));
+        cache.collaborationGraph.reset(new DotClassGraph(m_classDef,DotNode::Collaboration));
       }
-      return m_cache.collaborationGraph.get();
+      return cache.collaborationGraph.get();
     }
     TemplateVariant hasCollaborationDiagram() const
     {
@@ -1660,25 +2017,46 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
       {
         DotClassGraph *cg = getCollaborationGraph();
         FTextStream t(&result);
-        cg->writeGraph(t,GOF_BITMAP,EOF_Html,
-            g_globals.outputDir,
-            g_globals.outputDir+portable_pathSeparator()+m_classDef->getOutputFileBase()+Doxygen::htmlFileExtension,
-            relPathAsString(),TRUE,TRUE,g_globals.dynSectionId
-            );
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              cg->writeGraph(t,GOF_BITMAP,EOF_Html,
+                             g_globals.outputDir,
+                             g_globals.outputDir+portable_pathSeparator()+m_classDef->getOutputFileBase()+Doxygen::htmlFileExtension,
+                             relPathAsString(),TRUE,TRUE,g_globals.dynSectionId
+                            );
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              cg->writeGraph(t,GOF_EPS,EOF_LaTeX,
+                             g_globals.outputDir,
+                             g_globals.outputDir+portable_pathSeparator()+m_classDef->getOutputFileBase()+".tex",
+                             relPathAsString(),TRUE,TRUE,g_globals.dynSectionId
+                            );
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
+        g_globals.dynSectionId++;
       }
-      g_globals.dynSectionId++;
       return TemplateVariant(result.data(),TRUE);
     }
 
     TemplateVariant includeInfo() const
     {
-      if (!m_cache.includeInfo && m_classDef->includeInfo())
+      Cachable &cache = getCache();
+      if (!cache.includeInfo && m_classDef->includeInfo())
       {
-        m_cache.includeInfo.reset(IncludeInfoContext::alloc(m_classDef->includeInfo(),m_classDef->getLanguage()));
+        cache.includeInfo.reset(IncludeInfoContext::alloc(m_classDef->includeInfo(),m_classDef->getLanguage()));
       }
-      if (m_cache.includeInfo)
+      if (cache.includeInfo)
       {
-        return m_cache.includeInfo.get();
+        return cache.includeInfo.get();
       }
       else
       {
@@ -1687,19 +2065,21 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
     }
     TemplateVariant inherits() const
     {
-      if (!m_cache.inheritsList)
+      Cachable &cache = getCache();
+      if (!cache.inheritsList)
       {
-        m_cache.inheritsList.reset(InheritanceListContext::alloc(m_classDef->baseClasses(),TRUE));
+        cache.inheritsList.reset(InheritanceListContext::alloc(m_classDef->baseClasses(),TRUE));
       }
-      return m_cache.inheritsList.get();
+      return cache.inheritsList.get();
     }
     TemplateVariant inheritedBy() const
     {
-      if (!m_cache.inheritedByList)
+      Cachable &cache = getCache();
+      if (!cache.inheritedByList)
       {
-        m_cache.inheritedByList.reset(InheritanceListContext::alloc(m_classDef->subClasses(),FALSE));
+        cache.inheritedByList.reset(InheritanceListContext::alloc(m_classDef->subClasses(),FALSE));
       }
-      return m_cache.inheritedByList.get();
+      return cache.inheritedByList.get();
     }
     TemplateVariant getMemberList(SharedPtr<MemberListInfoContext> &list,
                                   MemberListType type,const char *title,bool detailed=FALSE) const
@@ -1709,7 +2089,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
         MemberList *ml = m_classDef->getMemberList(type);
         if (ml)
         {
-          list.reset(MemberListInfoContext::alloc(m_classDef,relPathAsString(),ml,title,detailed));
+          list.reset(MemberListInfoContext::alloc(m_classDef,relPathAsString(),ml,title,""));
         }
       }
       if (list)
@@ -1723,171 +2103,172 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
     }
     TemplateVariant unoIDLServices() const
     {
-      return getMemberList(m_cache.unoIDLServices,MemberListType_services,theTranslator->trServices());
+      return getMemberList(getCache().unoIDLServices,MemberListType_services,theTranslator->trServices());
     }
     TemplateVariant unoIDLInterfaces() const
     {
-      return getMemberList(m_cache.unoIDLInterfaces,MemberListType_interfaces,theTranslator->trInterfaces());
+      return getMemberList(getCache().unoIDLInterfaces,MemberListType_interfaces,theTranslator->trInterfaces());
     }
     TemplateVariant signals() const
     {
-      return getMemberList(m_cache.signals,MemberListType_signals,theTranslator->trSignals());
+      return getMemberList(getCache().signals,MemberListType_signals,theTranslator->trSignals());
     }
     TemplateVariant publicTypes() const
     {
-      return getMemberList(m_cache.publicTypes,MemberListType_pubTypes,theTranslator->trPublicTypes());
+      return getMemberList(getCache().publicTypes,MemberListType_pubTypes,theTranslator->trPublicTypes());
     }
     TemplateVariant publicMethods() const
     {
-      return getMemberList(m_cache.publicMethods,MemberListType_pubMethods,
+      return getMemberList(getCache().publicMethods,MemberListType_pubMethods,
           m_classDef->getLanguage()==SrcLangExt_ObjC ? theTranslator->trInstanceMethods()
                                                      : theTranslator->trPublicMembers());
     }
     TemplateVariant publicStaticMethods() const
     {
-      return getMemberList(m_cache.publicStaticMethods,MemberListType_pubStaticMethods,
+      return getMemberList(getCache().publicStaticMethods,MemberListType_pubStaticMethods,
           m_classDef->getLanguage()==SrcLangExt_ObjC ? theTranslator->trClassMethods()
                                                      : theTranslator->trStaticPublicMembers());
     }
     TemplateVariant publicAttributes() const
     {
-      return getMemberList(m_cache.publicAttributes,MemberListType_pubAttribs,theTranslator->trPublicAttribs());
+      return getMemberList(getCache().publicAttributes,MemberListType_pubAttribs,theTranslator->trPublicAttribs());
     }
     TemplateVariant publicStaticAttributes() const
     {
-      return getMemberList(m_cache.publicStaticAttributes,MemberListType_pubStaticAttribs,theTranslator->trStaticPublicAttribs());
+      return getMemberList(getCache().publicStaticAttributes,MemberListType_pubStaticAttribs,theTranslator->trStaticPublicAttribs());
     }
     TemplateVariant publicSlots() const
     {
-      return getMemberList(m_cache.publicSlots,MemberListType_pubSlots,theTranslator->trPublicSlots());
+      return getMemberList(getCache().publicSlots,MemberListType_pubSlots,theTranslator->trPublicSlots());
     }
     TemplateVariant protectedTypes() const
     {
-      return getMemberList(m_cache.protectedTypes,MemberListType_proTypes,theTranslator->trProtectedTypes());
+      return getMemberList(getCache().protectedTypes,MemberListType_proTypes,theTranslator->trProtectedTypes());
     }
     TemplateVariant protectedMethods() const
     {
-      return getMemberList(m_cache.protectedMethods,MemberListType_proMethods,theTranslator->trProtectedMembers());
+      return getMemberList(getCache().protectedMethods,MemberListType_proMethods,theTranslator->trProtectedMembers());
     }
     TemplateVariant protectedStaticMethods() const
     {
-      return getMemberList(m_cache.protectedStaticMethods,MemberListType_proStaticMethods,theTranslator->trStaticProtectedMembers());
+      return getMemberList(getCache().protectedStaticMethods,MemberListType_proStaticMethods,theTranslator->trStaticProtectedMembers());
     }
     TemplateVariant protectedAttributes() const
     {
-      return getMemberList(m_cache.protectedAttributes,MemberListType_proAttribs,theTranslator->trProtectedAttribs());
+      return getMemberList(getCache().protectedAttributes,MemberListType_proAttribs,theTranslator->trProtectedAttribs());
     }
     TemplateVariant protectedStaticAttributes() const
     {
-      return getMemberList(m_cache.protectedStaticAttributes,MemberListType_proStaticAttribs,theTranslator->trStaticProtectedAttribs());
+      return getMemberList(getCache().protectedStaticAttributes,MemberListType_proStaticAttribs,theTranslator->trStaticProtectedAttribs());
     }
     TemplateVariant protectedSlots() const
     {
-      return getMemberList(m_cache.protectedSlots,MemberListType_proSlots,theTranslator->trProtectedSlots());
+      return getMemberList(getCache().protectedSlots,MemberListType_proSlots,theTranslator->trProtectedSlots());
     }
     TemplateVariant privateTypes() const
     {
-      return getMemberList(m_cache.privateTypes,MemberListType_priTypes,theTranslator->trPrivateTypes());
+      return getMemberList(getCache().privateTypes,MemberListType_priTypes,theTranslator->trPrivateTypes());
     }
     TemplateVariant privateSlots() const
     {
-      return getMemberList(m_cache.privateSlots,MemberListType_priSlots,theTranslator->trPrivateSlots());
+      return getMemberList(getCache().privateSlots,MemberListType_priSlots,theTranslator->trPrivateSlots());
     }
     TemplateVariant privateMethods() const
     {
-      return getMemberList(m_cache.privateMethods,MemberListType_priMethods,theTranslator->trPrivateMembers());
+      return getMemberList(getCache().privateMethods,MemberListType_priMethods,theTranslator->trPrivateMembers());
     }
     TemplateVariant privateStaticMethods() const
     {
-      return getMemberList(m_cache.privateStaticMethods,MemberListType_priStaticMethods,theTranslator->trStaticPrivateMembers());
+      return getMemberList(getCache().privateStaticMethods,MemberListType_priStaticMethods,theTranslator->trStaticPrivateMembers());
     }
     TemplateVariant privateAttributes() const
     {
-      return getMemberList(m_cache.privateAttributes,MemberListType_priAttribs,theTranslator->trPrivateAttribs());
+      return getMemberList(getCache().privateAttributes,MemberListType_priAttribs,theTranslator->trPrivateAttribs());
     }
     TemplateVariant privateStaticAttributes() const
     {
-      return getMemberList(m_cache.privateStaticAttributes,MemberListType_priStaticAttribs,theTranslator->trStaticPrivateAttribs());
+      return getMemberList(getCache().privateStaticAttributes,MemberListType_priStaticAttribs,theTranslator->trStaticPrivateAttribs());
     }
     TemplateVariant packageTypes() const
     {
-      return getMemberList(m_cache.packageTypes,MemberListType_pacTypes,theTranslator->trPackageTypes());
+      return getMemberList(getCache().packageTypes,MemberListType_pacTypes,theTranslator->trPackageTypes());
     }
     TemplateVariant packageMethods() const
     {
-      return getMemberList(m_cache.packageMethods,MemberListType_pacMethods,theTranslator->trPackageMembers());
+      return getMemberList(getCache().packageMethods,MemberListType_pacMethods,theTranslator->trPackageMembers());
     }
     TemplateVariant packageStaticMethods() const
     {
-      return getMemberList(m_cache.packageStaticMethods,MemberListType_pacStaticMethods,theTranslator->trStaticPackageMembers());
+      return getMemberList(getCache().packageStaticMethods,MemberListType_pacStaticMethods,theTranslator->trStaticPackageMembers());
     }
     TemplateVariant packageAttributes() const
     {
-      return getMemberList(m_cache.packageAttributes,MemberListType_pacAttribs,theTranslator->trPackageAttribs());
+      return getMemberList(getCache().packageAttributes,MemberListType_pacAttribs,theTranslator->trPackageAttribs());
     }
     TemplateVariant packageStaticAttributes() const
     {
-      return getMemberList(m_cache.packageStaticAttributes,MemberListType_pacStaticAttribs,theTranslator->trStaticPackageAttribs());
+      return getMemberList(getCache().packageStaticAttributes,MemberListType_pacStaticAttribs,theTranslator->trStaticPackageAttribs());
     }
     TemplateVariant properties() const
     {
-      return getMemberList(m_cache.properties,MemberListType_properties,theTranslator->trProperties());
+      return getMemberList(getCache().properties,MemberListType_properties,theTranslator->trProperties());
     }
     TemplateVariant events() const
     {
-      return getMemberList(m_cache.events,MemberListType_events,theTranslator->trEvents());
+      return getMemberList(getCache().events,MemberListType_events,theTranslator->trEvents());
     }
     TemplateVariant friends() const
     {
-      return getMemberList(m_cache.friends,MemberListType_friends,theTranslator->trFriends());
+      return getMemberList(getCache().friends,MemberListType_friends,theTranslator->trFriends());
     }
     TemplateVariant related() const
     {
-      return getMemberList(m_cache.related,MemberListType_related,theTranslator->trRelatedFunctions());
+      return getMemberList(getCache().related,MemberListType_related,theTranslator->trRelatedFunctions());
     }
     TemplateVariant detailedTypedefs() const
     {
-      return getMemberList(m_cache.detailedTypedefs,MemberListType_typedefMembers,theTranslator->trMemberTypedefDocumentation(),TRUE);
+      return getMemberList(getCache().detailedTypedefs,MemberListType_typedefMembers,theTranslator->trMemberTypedefDocumentation(),TRUE);
     }
     TemplateVariant detailedEnums() const
     {
-      return getMemberList(m_cache.detailedEnums,MemberListType_enumMembers,theTranslator->trMemberEnumerationDocumentation(),TRUE);
+      return getMemberList(getCache().detailedEnums,MemberListType_enumMembers,theTranslator->trMemberEnumerationDocumentation(),TRUE);
     }
     TemplateVariant detailedServices() const
     {
-      return getMemberList(m_cache.detailedServices,MemberListType_serviceMembers,theTranslator->trServices(),TRUE);
+      return getMemberList(getCache().detailedServices,MemberListType_serviceMembers,theTranslator->trServices(),TRUE);
     }
     TemplateVariant detailedInterfaces() const
     {
-      return getMemberList(m_cache.detailedInterfaces,MemberListType_interfaceMembers,theTranslator->trInterfaces(),TRUE);
+      return getMemberList(getCache().detailedInterfaces,MemberListType_interfaceMembers,theTranslator->trInterfaces(),TRUE);
     }
     TemplateVariant detailedConstructors() const
     {
-      return getMemberList(m_cache.detailedConstructors,MemberListType_constructors,theTranslator->trConstructorDocumentation(),TRUE);
+      return getMemberList(getCache().detailedConstructors,MemberListType_constructors,theTranslator->trConstructorDocumentation(),TRUE);
     }
     TemplateVariant detailedMethods() const
     {
-      return getMemberList(m_cache.detailedMethods,MemberListType_functionMembers,theTranslator->trMemberFunctionDocumentation(),TRUE);
+      return getMemberList(getCache().detailedMethods,MemberListType_functionMembers,theTranslator->trMemberFunctionDocumentation(),TRUE);
     }
     TemplateVariant detailedRelated() const
     {
-      return getMemberList(m_cache.detailedRelated,MemberListType_relatedMembers,theTranslator->trRelatedFunctionDocumentation(),TRUE);
+      return getMemberList(getCache().detailedRelated,MemberListType_relatedMembers,theTranslator->trRelatedFunctionDocumentation(),TRUE);
     }
     TemplateVariant detailedVariables() const
     {
-      return getMemberList(m_cache.detailedVariables,MemberListType_variableMembers,theTranslator->trMemberDataDocumentation(),TRUE);
+      return getMemberList(getCache().detailedVariables,MemberListType_variableMembers,theTranslator->trMemberDataDocumentation(),TRUE);
     }
     TemplateVariant detailedProperties() const
     {
-      return getMemberList(m_cache.detailedProperties,MemberListType_propertyMembers,theTranslator->trPropertyDocumentation(),TRUE);
+      return getMemberList(getCache().detailedProperties,MemberListType_propertyMembers,theTranslator->trPropertyDocumentation(),TRUE);
     }
     TemplateVariant detailedEvents() const
     {
-      return getMemberList(m_cache.detailedEvents,MemberListType_eventMembers,theTranslator->trEventDocumentation(),TRUE);
+      return getMemberList(getCache().detailedEvents,MemberListType_eventMembers,theTranslator->trEventDocumentation(),TRUE);
     }
     TemplateVariant classes() const
     {
-      if (!m_cache.classes)
+      Cachable &cache = getCache();
+      if (!cache.classes)
       {
         TemplateList *classList = TemplateList::alloc();
         if (m_classDef->getClassSDict())
@@ -1902,9 +2283,35 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
             }
           }
         }
-        m_cache.classes.reset(classList);
+        cache.classes.reset(classList);
       }
-      return m_cache.classes.get();
+      return cache.classes.get();
+    }
+    TemplateVariant innerClasses() const
+    {
+      Cachable &cache = getCache();
+      if (!cache.innerClasses)
+      {
+        TemplateList *classList = TemplateList::alloc();
+        if (m_classDef->getClassSDict())
+        {
+          ClassSDict::Iterator sdi(*m_classDef->getClassSDict());
+          ClassDef *cd;
+          for (sdi.toFirst();(cd=sdi.current());++sdi)
+          {
+            if (cd->name().find('@')==-1 &&
+                cd->isLinkableInProject() &&
+                cd->isEmbeddedInOuterScope() &&
+                cd->partOfGroups()==0
+               )
+            {
+              classList->append(ClassContext::alloc(cd));
+            }
+          }
+        }
+        cache.innerClasses.reset(classList);
+      }
+      return cache.innerClasses.get();
     }
     TemplateVariant compoundType() const
     {
@@ -1942,61 +2349,68 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
           s->set("isLinkable",TRUE);
           s->set("anchor",ex->anchor);
           s->set("fileName",ex->file);
+          s->set("isReference",FALSE);
+          s->set("externalReference","");
           list->append(s);
         }
       }
     }
     TemplateVariant templateDecls() const
     {
-      if (!m_cache.templateDecls)
+      Cachable &cache = getCache();
+      if (!cache.templateDecls)
       {
         TemplateList *tl = TemplateList::alloc();
         addTemplateDecls(m_classDef,tl);
-        m_cache.templateDecls.reset(tl);
+        cache.templateDecls.reset(tl);
       }
-      return m_cache.templateDecls.get();
+      return cache.templateDecls.get();
     }
     TemplateVariant typeConstraints() const
     {
-      if (!m_cache.typeConstraints && m_classDef->typeConstraints())
-      {
-        m_cache.typeConstraints.reset(ArgumentListContext::alloc(m_classDef->typeConstraints(),m_classDef,relPathAsString()));
-      }
-      else
+      if (m_classDef->typeConstraints())
       {
-        m_cache.typeConstraints.reset(ArgumentListContext::alloc());
+        Cachable &cache = getCache();
+        if (!cache.typeConstraints && m_classDef->typeConstraints())
+        {
+          cache.typeConstraints.reset(ArgumentListContext::alloc(m_classDef->typeConstraints(),m_classDef,relPathAsString()));
+        }
+        return cache.typeConstraints.get();
       }
-      return m_cache.typeConstraints.get();
+      return FALSE;
     }
     TemplateVariant examples() const
     {
-      if (!m_cache.examples)
+      Cachable &cache = getCache();
+      if (!cache.examples)
       {
         TemplateList *exampleList = TemplateList::alloc();
         addExamples(exampleList);
-        m_cache.examples.reset(exampleList);
+        cache.examples.reset(exampleList);
       }
-      return m_cache.examples.get();
+      return cache.examples.get();
     }
     void addMembers(ClassDef *cd,MemberListType lt) const
     {
       MemberList *ml = cd->getMemberList(lt);
       if (ml)
       {
+        Cachable &cache = getCache();
         MemberListIterator li(*ml);
         const MemberDef *md;
         for (li.toFirst();(md=li.current());++li)
         {
           if (md->isBriefSectionVisible())
           {
-            m_cache.allMembers.append(md);
+            cache.allMembers.append(md);
           }
         }
       }
     }
     TemplateVariant members() const
     {
-      if (!m_cache.members)
+      Cachable &cache = getCache();
+      if (!cache.members)
       {
         addMembers(m_classDef,MemberListType_pubTypes);
         addMembers(m_classDef,MemberListType_services);
@@ -2027,25 +2441,26 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
         addMembers(m_classDef,MemberListType_priAttribs);
         addMembers(m_classDef,MemberListType_priStaticAttribs);
         addMembers(m_classDef,MemberListType_related);
-        m_cache.members.reset(MemberListContext::alloc(&m_cache.allMembers));
+        cache.members.reset(MemberListContext::alloc(&cache.allMembers));
       }
-      return m_cache.members.get();
+      return cache.members.get();
     }
     TemplateVariant allMembersList() const
     {
-      if (!m_cache.allMembersList)
+      Cachable &cache = getCache();
+      if (!cache.allMembersList)
       {
         if (m_classDef->memberNameInfoSDict())
         {
           AllMembersListContext *ml = AllMembersListContext::alloc(m_classDef->memberNameInfoSDict());
-          m_cache.allMembersList.reset(ml);
+          cache.allMembersList.reset(ml);
         }
         else
         {
-          m_cache.allMembersList.reset(AllMembersListContext::alloc());
+          cache.allMembersList.reset(AllMembersListContext::alloc());
         }
       }
-      return m_cache.allMembersList.get();
+      return cache.allMembersList.get();
     }
     TemplateVariant allMembersFileName() const
     {
@@ -2053,22 +2468,24 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
     }
     TemplateVariant memberGroups() const
     {
-      if (!m_cache.memberGroups)
+      Cachable &cache = getCache();
+      if (!cache.memberGroups)
       {
         if (m_classDef->getMemberGroupSDict())
         {
-          m_cache.memberGroups.reset(MemberGroupListContext::alloc(m_classDef,relPathAsString(),m_classDef->getMemberGroupSDict(),m_classDef->subGrouping()));
+          cache.memberGroups.reset(MemberGroupListContext::alloc(m_classDef,relPathAsString(),m_classDef->getMemberGroupSDict(),m_classDef->subGrouping()));
         }
         else
         {
-          m_cache.memberGroups.reset(MemberGroupListContext::alloc());
+          cache.memberGroups.reset(MemberGroupListContext::alloc());
         }
       }
-      return m_cache.memberGroups.get();
+      return cache.memberGroups.get();
     }
     TemplateVariant additionalInheritedMembers() const
     {
-      if (!m_cache.additionalInheritedMembers)
+      Cachable &cache = getCache();
+      if (!cache.additionalInheritedMembers)
       {
         InheritedMemberInfoListContext *ctx = InheritedMemberInfoListContext::alloc();
         ctx->addMemberList(m_classDef,MemberListType_pubTypes,theTranslator->trPublicTypes());
@@ -2104,22 +2521,44 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
         ctx->addMemberList(m_classDef,MemberListType_priAttribs,theTranslator->trPrivateAttribs());
         ctx->addMemberList(m_classDef,MemberListType_priStaticAttribs,theTranslator->trStaticPrivateAttribs());
         ctx->addMemberList(m_classDef,MemberListType_related,theTranslator->trRelatedFunctions());
-        m_cache.additionalInheritedMembers.reset(ctx);
+        cache.additionalInheritedMembers.reset(ctx);
+      }
+      return cache.additionalInheritedMembers.get();
+    }
+    TemplateVariant isSimple() const
+    {
+      return m_classDef->isSimple();
+    }
+    TemplateVariant categoryOf() const
+    {
+      Cachable &cache = getCache();
+      if (!cache.categoryOf && m_classDef->categoryOf())
+      {
+        cache.categoryOf.reset(ClassContext::alloc(m_classDef->categoryOf()));
+      }
+      if (cache.categoryOf)
+      {
+        return cache.categoryOf.get();
+      }
+      else
+      {
+        return TemplateVariant(FALSE);
       }
-      return m_cache.additionalInheritedMembers.get();
     }
 
   private:
     ClassDef *m_classDef;
-    struct Cachable
+    struct Cachable : public DefinitionContext<ClassContext::Private>::Cachable
     {
-      Cachable() : inheritanceNodes(-1) { }
+      Cachable(ClassDef *cd) : DefinitionContext<ClassContext::Private>::Cachable(cd),
+                               inheritanceNodes(-1) { }
       SharedPtr<IncludeInfoContext>     includeInfo;
       SharedPtr<InheritanceListContext> inheritsList;
       SharedPtr<InheritanceListContext> inheritedByList;
       ScopedPtr<DotClassGraph>          classGraph;
       ScopedPtr<DotClassGraph>          collaborationGraph;
       SharedPtr<TemplateList>           classes;
+      SharedPtr<TemplateList>           innerClasses;
       SharedPtr<MemberListInfoContext>  publicTypes;
       SharedPtr<MemberListInfoContext>  publicMethods;
       SharedPtr<MemberListInfoContext>  publicStaticMethods;
@@ -2169,13 +2608,22 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
       SharedPtr<MemberListContext>      members;
       SharedPtr<UsedFilesContext>       usedFiles;
       SharedPtr<TemplateList>           exampleList;
+      SharedPtr<ClassContext>           categoryOf;
       int                               inheritanceNodes;
       MemberList                        allMembers;
     };
-    mutable Cachable m_cache;
+    Cachable &getCache() const
+    {
+      Cachable *c = static_cast<Cachable*>(m_classDef->cookie());
+      assert(c!=0);
+      return *c;
+    }
+    static PropertyMapper<ClassContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<ClassContext::Private> ClassContext::Private::s_inst;
+
 ClassContext::ClassContext(ClassDef *cd) : RefCountedContext("ClassContext")
 {
   //printf("ClassContext::ClassContext(%s)\n",cd?cd->name().data():"<none>");
@@ -2199,28 +2647,40 @@ TemplateVariant ClassContext::get(const char *n) const
 class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Private>
 {
   public:
-    Private(NamespaceDef *nd) : DefinitionContext<NamespaceContext::Private>(nd) , m_namespaceDef(nd)
-    {
-      addProperty("title",             this,&Private::title);
-      addProperty("highlight",         this,&Private::highlight);
-      addProperty("subhighlight",      this,&Private::subHighlight);
-      addProperty("compoundType",      this,&Private::compoundType);
-      addProperty("hasDetails",        this,&Private::hasDetails);
-      addProperty("classes",           this,&Private::classes);
-      addProperty("namespaces",        this,&Private::namespaces);
-      addProperty("constantgroups",    this,&Private::constantgroups);
-      addProperty("typedefs",          this,&Private::typedefs);
-      addProperty("enums",             this,&Private::enums);
-      addProperty("functions",         this,&Private::functions);
-      addProperty("variables",         this,&Private::variables);
-      addProperty("memberGroups",      this,&Private::memberGroups);
-      addProperty("detailedTypedefs",  this,&Private::detailedTypedefs);
-      addProperty("detailedEnums",     this,&Private::detailedEnums);
-      addProperty("detailedFunctions", this,&Private::detailedFunctions);
-      addProperty("detailedVariables", this,&Private::detailedVariables);
-      addProperty("inlineClasses",     this,&Private::inlineClasses);
+    Private(NamespaceDef *nd) : DefinitionContext<NamespaceContext::Private>(nd),
+                                m_namespaceDef(nd)
+    {
+      static bool init=FALSE;
+      if (!init)
+      {
+        addBaseProperties(s_inst);
+        s_inst.addProperty("title",             &Private::title);
+        s_inst.addProperty("highlight",         &Private::highlight);
+        s_inst.addProperty("subhighlight",      &Private::subHighlight);
+        s_inst.addProperty("compoundType",      &Private::compoundType);
+        s_inst.addProperty("hasDetails",        &Private::hasDetails);
+        s_inst.addProperty("classes",           &Private::classes);
+        s_inst.addProperty("namespaces",        &Private::namespaces);
+        s_inst.addProperty("constantgroups",    &Private::constantgroups);
+        s_inst.addProperty("typedefs",          &Private::typedefs);
+        s_inst.addProperty("enums",             &Private::enums);
+        s_inst.addProperty("functions",         &Private::functions);
+        s_inst.addProperty("variables",         &Private::variables);
+        s_inst.addProperty("memberGroups",      &Private::memberGroups);
+        s_inst.addProperty("detailedTypedefs",  &Private::detailedTypedefs);
+        s_inst.addProperty("detailedEnums",     &Private::detailedEnums);
+        s_inst.addProperty("detailedFunctions", &Private::detailedFunctions);
+        s_inst.addProperty("detailedVariables", &Private::detailedVariables);
+        s_inst.addProperty("inlineClasses",     &Private::inlineClasses);
+        init=TRUE;
+      }
+      if (!nd->cookie()) { nd->setCookie(new NamespaceContext::Private::Cachable(nd)); }
     }
     virtual ~Private() {}
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant title() const
     {
       return TemplateVariant(m_namespaceDef->title());
@@ -2243,7 +2703,8 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
     }
     TemplateVariant classes() const
     {
-      if (!m_cache.classes)
+      Cachable &cache = getCache();
+      if (!cache.classes)
       {
         TemplateList *classList = TemplateList::alloc();
         if (m_namespaceDef->getClassSDict())
@@ -2258,13 +2719,14 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
             }
           }
         }
-        m_cache.classes.reset(classList);
+        cache.classes.reset(classList);
       }
-      return m_cache.classes.get();
+      return cache.classes.get();
     }
     TemplateVariant namespaces() const
     {
-      if (!m_cache.namespaces)
+      Cachable &cache = getCache();
+      if (!cache.namespaces)
       {
         TemplateList *namespaceList = TemplateList::alloc();
         if (m_namespaceDef->getNamespaceSDict())
@@ -2279,13 +2741,14 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
             }
           }
         }
-        m_cache.namespaces.reset(namespaceList);
+        cache.namespaces.reset(namespaceList);
       }
-      return m_cache.namespaces.get();
+      return cache.namespaces.get();
     }
     TemplateVariant constantgroups() const
     {
-      if (!m_cache.constantgroups)
+      Cachable &cache = getCache();
+      if (!cache.constantgroups)
       {
         TemplateList *namespaceList = TemplateList::alloc();
         if (m_namespaceDef->getNamespaceSDict())
@@ -2300,9 +2763,9 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
             }
           }
         }
-        m_cache.constantgroups.reset(namespaceList);
+        cache.constantgroups.reset(namespaceList);
       }
-      return m_cache.constantgroups.get();
+      return cache.constantgroups.get();
     }
     TemplateVariant getMemberList(SharedPtr<MemberListInfoContext> &list,
                                   MemberListType type,const char *title,bool detailed=FALSE) const
@@ -2312,7 +2775,7 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
         MemberList *ml = m_namespaceDef->getMemberList(type);
         if (ml)
         {
-          list.reset(MemberListInfoContext::alloc(m_namespaceDef,relPathAsString(),ml,title,detailed));
+          list.reset(MemberListInfoContext::alloc(m_namespaceDef,relPathAsString(),ml,title,""));
         }
       }
       if (list)
@@ -2326,11 +2789,11 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
     }
     TemplateVariant typedefs() const
     {
-      return getMemberList(m_cache.typedefs,MemberListType_decTypedefMembers,theTranslator->trTypedefs());
+      return getMemberList(getCache().typedefs,MemberListType_decTypedefMembers,theTranslator->trTypedefs());
     }
     TemplateVariant enums() const
     {
-      return getMemberList(m_cache.enums,MemberListType_decEnumMembers,theTranslator->trEnumerations());
+      return getMemberList(getCache().enums,MemberListType_decEnumMembers,theTranslator->trEnumerations());
     }
     TemplateVariant functions() const
     {
@@ -2338,49 +2801,51 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
       SrcLangExt lang = m_namespaceDef->getLanguage();
       if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprograms();
       else if (lang==SrcLangExt_VHDL) title=VhdlDocGen::trFunctionAndProc();
-      return getMemberList(m_cache.functions,MemberListType_decFuncMembers,title);
+      return getMemberList(getCache().functions,MemberListType_decFuncMembers,title);
     }
     TemplateVariant variables() const
     {
-      return getMemberList(m_cache.variables,MemberListType_decVarMembers,theTranslator->trVariables());
+      return getMemberList(getCache().variables,MemberListType_decVarMembers,theTranslator->trVariables());
     }
     TemplateVariant memberGroups() const
     {
-      if (!m_cache.memberGroups)
+      Cachable &cache = getCache();
+      if (!cache.memberGroups)
       {
         if (m_namespaceDef->getMemberGroupSDict())
         {
-          m_cache.memberGroups.reset(MemberGroupListContext::alloc(m_namespaceDef,relPathAsString(),m_namespaceDef->getMemberGroupSDict(),m_namespaceDef->subGrouping()));
+          cache.memberGroups.reset(MemberGroupListContext::alloc(m_namespaceDef,relPathAsString(),m_namespaceDef->getMemberGroupSDict(),m_namespaceDef->subGrouping()));
         }
         else
         {
-          m_cache.memberGroups.reset(MemberGroupListContext::alloc());
+          cache.memberGroups.reset(MemberGroupListContext::alloc());
         }
       }
-      return m_cache.memberGroups.get();
+      return cache.memberGroups.get();
     }
     TemplateVariant detailedTypedefs() const
     {
-      return getMemberList(m_cache.detailedTypedefs,MemberListType_docTypedefMembers,theTranslator->trTypedefDocumentation());
+      return getMemberList(getCache().detailedTypedefs,MemberListType_docTypedefMembers,theTranslator->trTypedefDocumentation());
     }
     TemplateVariant detailedEnums() const
     {
-      return getMemberList(m_cache.detailedEnums,MemberListType_docEnumMembers,theTranslator->trEnumerationTypeDocumentation());
+      return getMemberList(getCache().detailedEnums,MemberListType_docEnumMembers,theTranslator->trEnumerationTypeDocumentation());
     }
     TemplateVariant detailedFunctions() const
     {
       QCString title = theTranslator->trFunctionDocumentation();
       SrcLangExt lang = m_namespaceDef->getLanguage();
       if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprogramDocumentation();
-      return getMemberList(m_cache.detailedFunctions,MemberListType_docFuncMembers,title);
+      return getMemberList(getCache().detailedFunctions,MemberListType_docFuncMembers,title);
     }
     TemplateVariant detailedVariables() const
     {
-      return getMemberList(m_cache.detailedVariables,MemberListType_docVarMembers,theTranslator->trVariableDocumentation());
+      return getMemberList(getCache().detailedVariables,MemberListType_docVarMembers,theTranslator->trVariableDocumentation());
     }
     TemplateVariant inlineClasses() const
     {
-      if (!m_cache.inlineClasses)
+      Cachable &cache = getCache();
+      if (!cache.inlineClasses)
       {
         TemplateList *classList = TemplateList::alloc();
         if (m_namespaceDef->getClassSDict())
@@ -2398,14 +2863,15 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
             }
           }
         }
-        m_cache.inlineClasses.reset(classList);
+        cache.inlineClasses.reset(classList);
       }
-      return m_cache.inlineClasses.get();
+      return cache.inlineClasses.get();
     }
   private:
     NamespaceDef *m_namespaceDef;
-    struct Cachable
+    struct Cachable : public DefinitionContext<NamespaceContext::Private>::Cachable
     {
+      Cachable(NamespaceDef *nd) : DefinitionContext<NamespaceContext::Private>::Cachable(nd) {}
       SharedPtr<TemplateList>               classes;
       SharedPtr<TemplateList>               namespaces;
       SharedPtr<TemplateList>               constantgroups;
@@ -2420,10 +2886,18 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
       SharedPtr<MemberListInfoContext>      detailedVariables;
       SharedPtr<TemplateList>               inlineClasses;
     };
-    mutable Cachable m_cache;
+    Cachable &getCache() const
+    {
+      Cachable *c = static_cast<Cachable*>(m_namespaceDef->cookie());
+      assert(c!=0);
+      return *c;
+    }
+    static PropertyMapper<NamespaceContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<NamespaceContext::Private> NamespaceContext::Private::s_inst;
+
 NamespaceContext::NamespaceContext(NamespaceDef *nd) : RefCountedContext("NamespaceContext")
 {
   p = new Private(nd);
@@ -2449,37 +2923,48 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
     Private(FileDef *fd) : DefinitionContext<FileContext::Private>(fd) , m_fileDef(fd)
     {
       if (fd==0) abort();
-      addProperty("title",                     this,&Private::title);
-      addProperty("highlight",                 this,&Private::highlight);
-      addProperty("subhighlight",              this,&Private::subHighlight);
-      addProperty("versionInfo",               this,&Private::versionInfo);
-      addProperty("includeList",               this,&Private::includeList);
-      addProperty("hasIncludeGraph",           this,&Private::hasIncludeGraph);
-      addProperty("hasIncludedByGraph",        this,&Private::hasIncludedByGraph);
-      addProperty("includeGraph",              this,&Private::includeGraph);
-      addProperty("includedByGraph",           this,&Private::includedByGraph);
-      addProperty("hasDetails",                this,&Private::hasDetails);
-      addProperty("hasSourceFile",             this,&Private::hasSourceFile);
-      addProperty("sources",                   this,&Private::sources);
-      addProperty("version",                   this,&Private::version);
-      addProperty("classes",                   this,&Private::classes);
-      addProperty("namespaces",                this,&Private::namespaces);
-      addProperty("constantgroups",            this,&Private::constantgroups);
-      addProperty("macros",                    this,&Private::macros);
-      addProperty("typedefs",                  this,&Private::typedefs);
-      addProperty("enums",                     this,&Private::enums);
-      addProperty("functions",                 this,&Private::functions);
-      addProperty("variables",                 this,&Private::variables);
-      addProperty("memberGroups",              this,&Private::memberGroups);
-      addProperty("detailedMacros",            this,&Private::detailedMacros);
-      addProperty("detailedTypedefs",          this,&Private::detailedTypedefs);
-      addProperty("detailedEnums",             this,&Private::detailedEnums);
-      addProperty("detailedFunctions",         this,&Private::detailedFunctions);
-      addProperty("detailedVariables",         this,&Private::detailedVariables);
-      addProperty("inlineClasses",             this,&Private::inlineClasses);
-      addProperty("compoundType",              this,&Private::compoundType);
+      static bool init=FALSE;
+      if (!init)
+      {
+        addBaseProperties(s_inst);
+        s_inst.addProperty("title",                     &Private::title);
+        s_inst.addProperty("highlight",                 &Private::highlight);
+        s_inst.addProperty("subhighlight",              &Private::subHighlight);
+        s_inst.addProperty("versionInfo",               &Private::versionInfo);
+        s_inst.addProperty("includeList",               &Private::includeList);
+        s_inst.addProperty("hasIncludeGraph",           &Private::hasIncludeGraph);
+        s_inst.addProperty("hasIncludedByGraph",        &Private::hasIncludedByGraph);
+        s_inst.addProperty("includeGraph",              &Private::includeGraph);
+        s_inst.addProperty("includedByGraph",           &Private::includedByGraph);
+        s_inst.addProperty("hasDetails",                &Private::hasDetails);
+        s_inst.addProperty("hasSourceFile",             &Private::hasSourceFile);
+        s_inst.addProperty("sources",                   &Private::sources);
+        s_inst.addProperty("version",                   &Private::version);
+        s_inst.addProperty("classes",                   &Private::classes);
+        s_inst.addProperty("namespaces",                &Private::namespaces);
+        s_inst.addProperty("constantgroups",            &Private::constantgroups);
+        s_inst.addProperty("macros",                    &Private::macros);
+        s_inst.addProperty("typedefs",                  &Private::typedefs);
+        s_inst.addProperty("enums",                     &Private::enums);
+        s_inst.addProperty("functions",                 &Private::functions);
+        s_inst.addProperty("variables",                 &Private::variables);
+        s_inst.addProperty("memberGroups",              &Private::memberGroups);
+        s_inst.addProperty("detailedMacros",            &Private::detailedMacros);
+        s_inst.addProperty("detailedTypedefs",          &Private::detailedTypedefs);
+        s_inst.addProperty("detailedEnums",             &Private::detailedEnums);
+        s_inst.addProperty("detailedFunctions",         &Private::detailedFunctions);
+        s_inst.addProperty("detailedVariables",         &Private::detailedVariables);
+        s_inst.addProperty("inlineClasses",             &Private::inlineClasses);
+        s_inst.addProperty("compoundType",              &Private::compoundType);
+        init=TRUE;
+      }
+      if (!fd->cookie()) { fd->setCookie(new FileContext::Private::Cachable(fd)); }
     }
     virtual ~Private() {}
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant title() const
     {
       return m_fileDef->title();
@@ -2498,14 +2983,15 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
     }
     TemplateVariant includeList() const
     {
-      if (!m_cache.includeInfoList && m_fileDef->includeFileList())
+      Cachable &cache = getCache();
+      if (!cache.includeInfoList && m_fileDef->includeFileList())
       {
-        m_cache.includeInfoList.reset(IncludeInfoListContext::alloc(
+        cache.includeInfoList.reset(IncludeInfoListContext::alloc(
               *m_fileDef->includeFileList(),m_fileDef->getLanguage()));
       }
-      if (m_cache.includeInfoList)
+      if (cache.includeInfoList)
       {
-        return m_cache.includeInfoList.get();
+        return cache.includeInfoList.get();
       }
       else
       {
@@ -2514,11 +3000,12 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
     }
     DotInclDepGraph *getIncludeGraph() const
     {
-      if (!m_cache.includeGraph)
+      Cachable &cache = getCache();
+      if (!cache.includeGraph)
       {
-        m_cache.includeGraph.reset(new DotInclDepGraph(m_fileDef,FALSE));
+        cache.includeGraph.reset(new DotInclDepGraph(m_fileDef,FALSE));
       }
-      return m_cache.includeGraph.get();
+      return cache.includeGraph.get();
     }
     TemplateVariant hasIncludeGraph() const
     {
@@ -2534,22 +3021,43 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
       {
         DotInclDepGraph *cg = getIncludeGraph();
         FTextStream t(&result);
-        cg->writeGraph(t,GOF_BITMAP,EOF_Html,
-            g_globals.outputDir,
-            g_globals.outputDir+portable_pathSeparator()+m_fileDef->getOutputFileBase()+Doxygen::htmlFileExtension,
-            relPathAsString(),TRUE,g_globals.dynSectionId
-            );
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              cg->writeGraph(t,GOF_BITMAP,EOF_Html,
+                  g_globals.outputDir,
+                  g_globals.outputDir+portable_pathSeparator()+m_fileDef->getOutputFileBase()+Doxygen::htmlFileExtension,
+                  relPathAsString(),TRUE,g_globals.dynSectionId
+                  );
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              cg->writeGraph(t,GOF_EPS,EOF_LaTeX,
+                  g_globals.outputDir,
+                  g_globals.outputDir+portable_pathSeparator()+m_fileDef->getOutputFileBase()+".tex",
+                  relPathAsString(),TRUE,g_globals.dynSectionId
+                  );
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
+        g_globals.dynSectionId++;
       }
-      g_globals.dynSectionId++;
       return TemplateVariant(result.data(),TRUE);
     }
     DotInclDepGraph *getIncludedByGraph() const
     {
-      if (!m_cache.includedByGraph)
+      Cachable &cache = getCache();
+      if (!cache.includedByGraph)
       {
-        m_cache.includedByGraph.reset(new DotInclDepGraph(m_fileDef,TRUE));
+        cache.includedByGraph.reset(new DotInclDepGraph(m_fileDef,TRUE));
       }
-      return m_cache.includedByGraph.get();
+      return cache.includedByGraph.get();
     }
     TemplateVariant hasIncludedByGraph() const
     {
@@ -2565,37 +3073,58 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
       {
         DotInclDepGraph *cg = getIncludedByGraph();
         FTextStream t(&result);
-        cg->writeGraph(t,GOF_BITMAP,EOF_Html,
-            g_globals.outputDir,
-            g_globals.outputDir+portable_pathSeparator()+m_fileDef->getOutputFileBase()+Doxygen::htmlFileExtension,
-            relPathAsString(),TRUE,g_globals.dynSectionId
-            );
-      }
-      g_globals.dynSectionId++;
-      return TemplateVariant(result.data(),TRUE);
-    }
-    TemplateVariant hasDetails() const
-    {
-      return m_fileDef->hasDetailedDescription();
-    }
-    TemplateVariant hasSourceFile() const
-    {
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              cg->writeGraph(t,GOF_BITMAP,EOF_Html,
+                  g_globals.outputDir,
+                  g_globals.outputDir+portable_pathSeparator()+m_fileDef->getOutputFileBase()+Doxygen::htmlFileExtension,
+                  relPathAsString(),TRUE,g_globals.dynSectionId
+                  );
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              cg->writeGraph(t,GOF_EPS,EOF_LaTeX,
+                  g_globals.outputDir,
+                  g_globals.outputDir+portable_pathSeparator()+m_fileDef->getOutputFileBase()+".tex",
+                  relPathAsString(),TRUE,g_globals.dynSectionId
+                  );
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
+        g_globals.dynSectionId++;
+      }
+      return TemplateVariant(result.data(),TRUE);
+    }
+    TemplateVariant hasDetails() const
+    {
+      return m_fileDef->hasDetailedDescription();
+    }
+    TemplateVariant hasSourceFile() const
+    {
       return m_fileDef->generateSourceFile();
     }
     TemplateVariant sources() const
     {
-      if (!m_cache.sources)
+      Cachable &cache = getCache();
+      if (!cache.sources)
       {
         if (m_fileDef->generateSourceFile())
         {
-          m_cache.sources.reset(new TemplateVariant(parseCode(m_fileDef,relPathAsString())));
+          cache.sources.reset(new TemplateVariant(parseCode(m_fileDef,relPathAsString())));
         }
         else
         {
-          m_cache.sources.reset(new TemplateVariant(""));
+          cache.sources.reset(new TemplateVariant(""));
         }
       }
-      return *m_cache.sources;
+      return *cache.sources;
     }
     TemplateVariant version() const
     {
@@ -2603,7 +3132,8 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
     }
     TemplateVariant classes() const
     {
-      if (!m_cache.classes)
+      Cachable &cache = getCache();
+      if (!cache.classes)
       {
         TemplateList *classList = TemplateList::alloc();
         if (m_fileDef->getClassSDict())
@@ -2618,13 +3148,14 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
             }
           }
         }
-        m_cache.classes.reset(classList);
+        cache.classes.reset(classList);
       }
-      return m_cache.classes.get();
+      return cache.classes.get();
     }
     TemplateVariant namespaces() const
     {
-      if (!m_cache.namespaces)
+      Cachable &cache = getCache();
+      if (!cache.namespaces)
       {
         TemplateList *namespaceList = TemplateList::alloc();
         if (m_fileDef->getNamespaceSDict())
@@ -2639,13 +3170,14 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
             }
           }
         }
-        m_cache.namespaces.reset(namespaceList);
+        cache.namespaces.reset(namespaceList);
       }
-      return m_cache.namespaces.get();
+      return cache.namespaces.get();
     }
     TemplateVariant constantgroups() const
     {
-      if (!m_cache.constantgroups)
+      Cachable &cache = getCache();
+      if (!cache.constantgroups)
       {
         TemplateList *namespaceList = TemplateList::alloc();
         if (m_fileDef->getNamespaceSDict())
@@ -2660,9 +3192,9 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
             }
           }
         }
-        m_cache.constantgroups.reset(namespaceList);
+        cache.constantgroups.reset(namespaceList);
       }
-      return m_cache.constantgroups.get();
+      return cache.constantgroups.get();
     }
     TemplateVariant getMemberList(SharedPtr<MemberListInfoContext> &list,
                                   MemberListType type,const char *title,bool detailed=FALSE) const
@@ -2672,7 +3204,7 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
         MemberList *ml = m_fileDef->getMemberList(type);
         if (ml)
         {
-          list.reset(MemberListInfoContext::alloc(m_fileDef,relPathAsString(),ml,title,detailed));
+          list.reset(MemberListInfoContext::alloc(m_fileDef,relPathAsString(),ml,title,""));
         }
       }
       if (list)
@@ -2686,15 +3218,15 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
     }
     TemplateVariant macros() const
     {
-      return getMemberList(m_cache.macros,MemberListType_decDefineMembers,theTranslator->trDefines());
+      return getMemberList(getCache().macros,MemberListType_decDefineMembers,theTranslator->trDefines());
     }
     TemplateVariant typedefs() const
     {
-      return getMemberList(m_cache.typedefs,MemberListType_decTypedefMembers,theTranslator->trTypedefs());
+      return getMemberList(getCache().typedefs,MemberListType_decTypedefMembers,theTranslator->trTypedefs());
     }
     TemplateVariant enums() const
     {
-      return getMemberList(m_cache.enums,MemberListType_decEnumMembers,theTranslator->trEnumerations());
+      return getMemberList(getCache().enums,MemberListType_decEnumMembers,theTranslator->trEnumerations());
     }
     TemplateVariant functions() const
     {
@@ -2702,53 +3234,55 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
       SrcLangExt lang = m_fileDef->getLanguage();
       if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprograms();
       else if (lang==SrcLangExt_VHDL) title=VhdlDocGen::trFunctionAndProc();
-      return getMemberList(m_cache.functions,MemberListType_decFuncMembers,title);
+      return getMemberList(getCache().functions,MemberListType_decFuncMembers,title);
     }
     TemplateVariant variables() const
     {
-      return getMemberList(m_cache.variables,MemberListType_decVarMembers,theTranslator->trVariables());
+      return getMemberList(getCache().variables,MemberListType_decVarMembers,theTranslator->trVariables());
     }
     TemplateVariant memberGroups() const
     {
-      if (!m_cache.memberGroups)
+      Cachable &cache = getCache();
+      if (!cache.memberGroups)
       {
         if (m_fileDef->getMemberGroupSDict())
         {
-          m_cache.memberGroups.reset(MemberGroupListContext::alloc(m_fileDef,relPathAsString(),m_fileDef->getMemberGroupSDict(),m_fileDef->subGrouping()));
+          cache.memberGroups.reset(MemberGroupListContext::alloc(m_fileDef,relPathAsString(),m_fileDef->getMemberGroupSDict(),m_fileDef->subGrouping()));
         }
         else
         {
-          m_cache.memberGroups.reset(MemberGroupListContext::alloc());
+          cache.memberGroups.reset(MemberGroupListContext::alloc());
         }
       }
-      return m_cache.memberGroups.get();
+      return cache.memberGroups.get();
     }
     TemplateVariant detailedMacros() const
     {
-      return getMemberList(m_cache.detailedMacros,MemberListType_docDefineMembers,theTranslator->trDefineDocumentation());
+      return getMemberList(getCache().detailedMacros,MemberListType_docDefineMembers,theTranslator->trDefineDocumentation());
     }
     TemplateVariant detailedTypedefs() const
     {
-      return getMemberList(m_cache.detailedTypedefs,MemberListType_docTypedefMembers,theTranslator->trTypedefDocumentation());
+      return getMemberList(getCache().detailedTypedefs,MemberListType_docTypedefMembers,theTranslator->trTypedefDocumentation());
     }
     TemplateVariant detailedEnums() const
     {
-      return getMemberList(m_cache.detailedEnums,MemberListType_docEnumMembers,theTranslator->trEnumerationTypeDocumentation());
+      return getMemberList(getCache().detailedEnums,MemberListType_docEnumMembers,theTranslator->trEnumerationTypeDocumentation());
     }
     TemplateVariant detailedFunctions() const
     {
       QCString title = theTranslator->trFunctionDocumentation();
       SrcLangExt lang = m_fileDef->getLanguage();
       if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprogramDocumentation();
-      return getMemberList(m_cache.detailedFunctions,MemberListType_docFuncMembers,title);
+      return getMemberList(getCache().detailedFunctions,MemberListType_docFuncMembers,title);
     }
     TemplateVariant detailedVariables() const
     {
-      return getMemberList(m_cache.detailedVariables,MemberListType_docVarMembers,theTranslator->trVariableDocumentation());
+      return getMemberList(getCache().detailedVariables,MemberListType_docVarMembers,theTranslator->trVariableDocumentation());
     }
     TemplateVariant inlineClasses() const
     {
-      if (!m_cache.inlineClasses)
+      Cachable &cache = getCache();
+      if (!cache.inlineClasses)
       {
         TemplateList *classList = TemplateList::alloc();
         if (m_fileDef->getClassSDict())
@@ -2766,9 +3300,9 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
             }
           }
         }
-        m_cache.inlineClasses.reset(classList);
+        cache.inlineClasses.reset(classList);
       }
-      return m_cache.inlineClasses.get();
+      return cache.inlineClasses.get();
     }
     TemplateVariant compoundType() const
     {
@@ -2777,8 +3311,9 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
 
   private:
     FileDef *m_fileDef;
-    struct Cachable
+    struct Cachable : public DefinitionContext<FileContext::Private>::Cachable
     {
+      Cachable(FileDef *fd) : DefinitionContext<FileContext::Private>::Cachable(fd) {}
       SharedPtr<IncludeInfoListContext>     includeInfoList;
       ScopedPtr<DotInclDepGraph>            includeGraph;
       ScopedPtr<DotInclDepGraph>            includedByGraph;
@@ -2799,10 +3334,18 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
       SharedPtr<MemberListInfoContext>      detailedVariables;
       SharedPtr<TemplateList>               inlineClasses;
     };
-    mutable Cachable m_cache;
+    Cachable &getCache() const
+    {
+      Cachable *c = static_cast<Cachable*>(m_fileDef->cookie());
+      assert(c!=0);
+      return *c;
+    }
+    static PropertyMapper<FileContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<FileContext::Private> FileContext::Private::s_inst;
+
 FileContext::FileContext(FileDef *fd) : RefCountedContext("FileContext")
 {
   p = new Private(fd);
@@ -2827,16 +3370,29 @@ class DirContext::Private : public DefinitionContext<DirContext::Private>
   public:
     Private(DirDef *dd) : DefinitionContext<DirContext::Private>(dd) , m_dirDef(dd)
     {
-      addProperty("title",         this,&Private::title);
-      addProperty("highlight",     this,&Private::highlight);
-      addProperty("subhighlight",  this,&Private::subHighlight);
-      addProperty("dirName",       this,&Private::dirName);
-      addProperty("dirs",          this,&Private::dirs);
-      addProperty("files",         this,&Private::files);
-      addProperty("hasDetails",    this,&Private::hasDetails);
-      addProperty("compoundType",  this,&Private::compoundType);
+      static bool init=FALSE;
+      if (!init)
+      {
+        addBaseProperties(s_inst);
+        s_inst.addProperty("title",         &Private::title);
+        s_inst.addProperty("highlight",     &Private::highlight);
+        s_inst.addProperty("subhighlight",  &Private::subHighlight);
+        s_inst.addProperty("dirName",       &Private::dirName);
+        s_inst.addProperty("dirs",          &Private::dirs);
+        s_inst.addProperty("files",         &Private::files);
+        s_inst.addProperty("hasDetails",    &Private::hasDetails);
+        s_inst.addProperty("hasDirGraph",   &Private::hasDirGraph);
+        s_inst.addProperty("dirGraph",      &Private::dirGraph);
+        s_inst.addProperty("compoundType",  &Private::compoundType);
+        init=TRUE;
+      }
+      if (!dd->cookie()) { dd->setCookie(new DirContext::Private::Cachable(dd)); }
     }
     virtual ~Private() {}
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant title() const
     {
       return TemplateVariant(m_dirDef->shortTitle());
@@ -2855,26 +3411,27 @@ class DirContext::Private : public DefinitionContext<DirContext::Private>
     }
     TemplateVariant dirs() const
     {
-      if (!m_cache.dirs)
+      Cachable &cache = getCache();
+      if (!cache.dirs)
       {
-        m_cache.dirs.reset(TemplateList::alloc());
+        cache.dirs.reset(TemplateList::alloc());
         const DirList &subDirs = m_dirDef->subDirs();
         QListIterator<DirDef> it(subDirs);
         DirDef *dd;
         for (it.toFirst();(dd=it.current());++it)
         {
           DirContext *dc = new DirContext(dd);
-          m_cache.dirs->append(dc);
+          cache.dirs->append(dc);
         }
       }
-      return m_cache.dirs.get();
+      return cache.dirs.get();
     }
     TemplateVariant files() const
     {
-      // FileList *list = m_dirDef->getFiles();
-      if (!m_cache.files)
+      Cachable &cache = getCache();
+      if (!cache.files)
       {
-        m_cache.files.reset(TemplateList::alloc());
+        cache.files.reset(TemplateList::alloc());
         FileList *files = m_dirDef->getFiles();
         if (files)
         {
@@ -2883,11 +3440,11 @@ class DirContext::Private : public DefinitionContext<DirContext::Private>
           for (it.toFirst();(fd=it.current());++it)
           {
             FileContext *fc = FileContext::alloc(fd);
-            m_cache.files->append(fc);
+            cache.files->append(fc);
           }
         }
       }
-      return m_cache.files.get();
+      return cache.files.get();
     }
     TemplateVariant hasDetails() const
     {
@@ -2901,19 +3458,93 @@ class DirContext::Private : public DefinitionContext<DirContext::Private>
     {
       return "";
     }
+    DotDirDeps *getDirDepsGraph() const
+    {
+      Cachable &cache = getCache();
+      if (!cache.dirDepsGraph)
+      {
+        cache.dirDepsGraph.reset(new DotDirDeps(m_dirDef));
+      }
+      return cache.dirDepsGraph.get();
+    }
+    TemplateVariant hasDirGraph() const
+    {
+      bool result=FALSE;
+      static bool haveDot  = Config_getBool("HAVE_DOT");
+      static bool dirGraph = Config_getBool("DIRECTORY_GRAPH");
+      if (haveDot && dirGraph)
+      {
+        DotDirDeps *graph = getDirDepsGraph();
+        result = !graph->isTrivial();
+      }
+      return result;
+    }
+    TemplateVariant dirGraph() const
+    {
+      QGString result;
+      static bool haveDot  = Config_getBool("HAVE_DOT");
+      static bool dirGraph = Config_getBool("DIRECTORY_GRAPH");
+      if (haveDot && dirGraph)
+      {
+        DotDirDeps *graph = getDirDepsGraph();
+        FTextStream t(&result);
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              graph->writeGraph(t,GOF_BITMAP,
+                                EOF_Html,
+                                g_globals.outputDir,
+                                g_globals.outputDir+portable_pathSeparator()+m_dirDef->getOutputFileBase()+Doxygen::htmlFileExtension,
+                                relPathAsString(),
+                                TRUE,
+                                g_globals.dynSectionId,
+                                FALSE);
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              graph->writeGraph(t,GOF_EPS,
+                                EOF_LaTeX,
+                                g_globals.outputDir,
+                                g_globals.outputDir+portable_pathSeparator()+m_dirDef->getOutputFileBase()+".tex",
+                                relPathAsString(),
+                                TRUE,
+                                g_globals.dynSectionId,
+                                FALSE);
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
+        g_globals.dynSectionId++;
+      }
+      return TemplateVariant(result.data(),TRUE);
+    }
 
   private:
     DirDef *m_dirDef;
-    struct Cachable
+    struct Cachable : public DefinitionContext<DirContext::Private>::Cachable
     {
-      Cachable() {}
+      Cachable(DirDef *dd) : DefinitionContext<DirContext::Private>::Cachable(dd) {}
       SharedPtr<TemplateList>  dirs;
       SharedPtr<TemplateList>  files;
+      ScopedPtr<DotDirDeps>    dirDepsGraph;
     };
-    mutable Cachable m_cache;
+    Cachable &getCache() const
+    {
+      Cachable *c = static_cast<Cachable*>(m_dirDef->cookie());
+      assert(c!=0);
+      return *c;
+    }
+    static PropertyMapper<DirContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<DirContext::Private> DirContext::Private::s_inst;
+
 DirContext::DirContext(DirDef *fd) : RefCountedContext("DirContext")
 {
   p = new Private(fd);
@@ -2936,14 +3567,27 @@ TemplateVariant DirContext::get(const char *n) const
 class PageContext::Private : public DefinitionContext<PageContext::Private>
 {
   public:
-    Private(PageDef *pd,bool isMainPage)
-      : DefinitionContext<PageContext::Private>(pd) , m_pageDef(pd), m_isMainPage(isMainPage)
+    Private(PageDef *pd,bool isMainPage,bool isExample)
+      : DefinitionContext<PageContext::Private>(pd) , m_pageDef(pd), m_isMainPage(isMainPage),
+        m_isExample(isExample)
     {
-      addProperty("title",this,&Private::title);
-      addProperty("highlight",this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subHighlight);
+      static bool init=FALSE;
+      if (!init)
+      {
+        addBaseProperties(s_inst);
+        s_inst.addProperty("title",       &Private::title);
+        s_inst.addProperty("highlight",   &Private::highlight);
+        s_inst.addProperty("subhighlight",&Private::subHighlight);
+        s_inst.addProperty("example",     &Private::example);
+        init=TRUE;
+      }
+      if (!pd->cookie()) { pd->setCookie(new PageContext::Private::Cachable(pd)); }
     }
     virtual ~Private() {}
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant title() const
     {
       if (m_isMainPage)
@@ -2957,6 +3601,10 @@ class PageContext::Private : public DefinitionContext<PageContext::Private>
           return theTranslator->trMainPage();
         }
       }
+      else if (m_isExample)
+      {
+        return m_pageDef->name();
+      }
       else
       {
         return m_pageDef->title();
@@ -2988,15 +3636,51 @@ class PageContext::Private : public DefinitionContext<PageContext::Private>
     {
       return "";
     }
+    TemplateVariant example() const
+    {
+      if (m_isExample)
+      {
+        Cachable &cache = getCache();
+        if (!cache.example || g_globals.outputFormat!=cache.exampleOutputFormat)
+        {
+          cache.example.reset(new TemplateVariant(
+                parseDoc(m_pageDef,m_pageDef->docFile(),m_pageDef->docLine(),
+                  relPathAsString(),"\\include "+m_pageDef->name(),FALSE)));
+          cache.exampleOutputFormat = g_globals.outputFormat;
+        }
+        return *cache.example;
+      }
+      else
+      {
+        return TemplateVariant("");
+      }
+    }
   private:
     PageDef *m_pageDef;
+    struct Cachable : public DefinitionContext<PageContext::Private>::Cachable
+    {
+      Cachable(PageDef *pd) : DefinitionContext<PageContext::Private>::Cachable(pd),
+                              exampleOutputFormat(ContextOutputFormat_Unspecified) { }
+      ScopedPtr<TemplateVariant> example;
+      ContextOutputFormat        exampleOutputFormat;
+    };
+    Cachable &getCache() const
+    {
+      Cachable *c = static_cast<Cachable*>(m_pageDef->cookie());
+      assert(c!=0);
+      return *c;
+    }
     bool m_isMainPage;
+    bool m_isExample;
+    static PropertyMapper<PageContext::Private> s_inst;
 };
 //%% }
 
-PageContext::PageContext(PageDef *pd,bool isMainPage) : RefCountedContext("PageContext")
+PropertyMapper<PageContext::Private> PageContext::Private::s_inst;
+
+PageContext::PageContext(PageDef *pd,bool isMainPage,bool isExample) : RefCountedContext("PageContext")
 {
-  p = new Private(pd,isMainPage);
+  p = new Private(pd,isMainPage,isExample);
 }
 
 PageContext::~PageContext()
@@ -3019,7 +3703,6 @@ class TextGeneratorHtml : public TextGeneratorIntf
     void writeString(const char *s,bool keepSpaces) const
     {
       if (s==0) return;
-      //printf("TextGeneratorOlImpl::writeString('%s',%d)\n",s,keepSpaces);
       if (keepSpaces)
       {
         const char *p=s;
@@ -3079,6 +3762,54 @@ class TextGeneratorHtml : public TextGeneratorIntf
     QCString m_relPath;
 };
 
+//------------------------------------------------------------------------
+
+class TextGeneratorLatex : public TextGeneratorIntf
+{
+  public:
+    TextGeneratorLatex(FTextStream &ts) : m_ts(ts) {}
+    void writeString(const char *s,bool keepSpaces) const
+    {
+      if (s==0) return;
+      m_ts << convertToLaTeX(s,FALSE,keepSpaces);
+    }
+    void writeBreak(int indent) const
+    {
+      m_ts << "\\\\*\n";
+      for (int i=0;i<indent;i++)
+      {
+        m_ts << "~";
+      }
+    }
+    void writeLink(const char *ref,const char *f,
+                   const char *anchor,const char *text
+                  ) const
+    {
+      static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
+      if (!ref && pdfHyperlinks)
+      {
+        m_ts << "\\hyperlink{";
+        if (f) m_ts << stripPath(f);
+        if (f && anchor) m_ts << "_";
+        if (anchor) m_ts << anchor;
+        m_ts << "}{";
+        filterLatexString(m_ts,text);
+        m_ts << "}";
+      }
+      else
+      {
+        m_ts << "{\\bf ";
+        filterLatexString(m_ts,text);
+        m_ts << "}";
+      }
+    }
+
+  private:
+    FTextStream &m_ts;
+};
+
+//------------------------------------------------------------------------
+
 class TextGeneratorFactory
 {
   public:
@@ -3092,9 +3823,10 @@ class TextGeneratorFactory
     {
       switch (g_globals.outputFormat)
       {
-        case ContextGlobals::Html:
+        case ContextOutputFormat_Html:
           return new TextGeneratorHtml(ts,relPath);
-          break;
+        case ContextOutputFormat_Latex:
+          return new TextGeneratorLatex(ts);
         default:
           break;
       }
@@ -3113,6 +3845,7 @@ TemplateVariant createLinkedText(Definition *def,const QCString &relPath,const Q
   if (tg)
   {
     linkifyText(*tg,def->getOuterScope(),def->getBodyDef(),def,text);
+    delete tg;
     return TemplateVariant(s.data(),TRUE);
   }
   else
@@ -3128,147 +3861,184 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
   public:
     Private(MemberDef *md) : DefinitionContext<MemberContext::Private>(md) , m_memberDef(md)
     {
-      addProperty("isSignal",            this,&Private::isSignal);
-      addProperty("isSlot",              this,&Private::isSlot);
-      addProperty("isVariable",          this,&Private::isVariable);
-      addProperty("isEnumeration",       this,&Private::isEnumeration);
-      addProperty("isEnumValue",         this,&Private::isEnumValue);
-      addProperty("isTypedef",           this,&Private::isTypedef);
-      addProperty("isFunction",          this,&Private::isFunction);
-      addProperty("isFunctionPtr",       this,&Private::isFunctionPtr);
-      addProperty("isDefine",            this,&Private::isDefine);
-      addProperty("isFriend",            this,&Private::isFriend);
-      addProperty("isProperty",          this,&Private::isProperty);
-      addProperty("isEvent",             this,&Private::isEvent);
-      addProperty("isRelated",           this,&Private::isRelated);
-      addProperty("isForeign",           this,&Private::isForeign);
-      addProperty("isStatic",            this,&Private::isStatic);
-      addProperty("isInline",            this,&Private::isInline);
-      addProperty("isExplicit",          this,&Private::isExplicit);
-      addProperty("isMutable",           this,&Private::isMutable);
-      addProperty("isGettable",          this,&Private::isGettable);
-      addProperty("isPrivateGettable",   this,&Private::isPrivateGettable);
-      addProperty("isProtectedGettable", this,&Private::isProtectedGettable);
-      addProperty("isSettable",          this,&Private::isSettable);
-      addProperty("isPrivateSettable",   this,&Private::isPrivateSettable);
-      addProperty("isProtectedSettable", this,&Private::isProtectedSettable);
-      addProperty("isReadable",          this,&Private::isReadable);
-      addProperty("isWritable",          this,&Private::isWritable);
-      addProperty("isAddable",           this,&Private::isAddable);
-      addProperty("isRemovable",         this,&Private::isRemovable);
-      addProperty("isRaisable",          this,&Private::isRaisable);
-      addProperty("isFinal",             this,&Private::isFinal);
-      addProperty("isAbstract",          this,&Private::isAbstract);
-      addProperty("isOverride",          this,&Private::isOverride);
-      addProperty("isInitonly",          this,&Private::isInitonly);
-      addProperty("isOptional",          this,&Private::isOptional);
-      addProperty("isRequired",          this,&Private::isRequired);
-      addProperty("isNonAtomic",         this,&Private::isNonAtomic);
-      addProperty("isCopy",              this,&Private::isCopy);
-      addProperty("isAssign",            this,&Private::isAssign);
-      addProperty("isRetain",            this,&Private::isRetain);
-      addProperty("isWeak",              this,&Private::isWeak);
-      addProperty("isStrong",            this,&Private::isStrong);
-      addProperty("isUnretained",        this,&Private::isUnretained);
-      addProperty("isNew",               this,&Private::isNew);
-      addProperty("isSealed",            this,&Private::isSealed);
-      addProperty("isImplementation",    this,&Private::isImplementation);
-      addProperty("isExternal",          this,&Private::isExternal);
-      addProperty("isAlias",             this,&Private::isAlias);
-      addProperty("isDefault",           this,&Private::isDefault);
-      addProperty("isDelete",            this,&Private::isDelete);
-      addProperty("isNoExcept",          this,&Private::isNoExcept);
-      addProperty("isAttribute",         this,&Private::isAttribute);
-      addProperty("isUNOProperty",       this,&Private::isUNOProperty);
-      addProperty("isReadonly",          this,&Private::isReadonly);
-      addProperty("isBound",             this,&Private::isBound);
-      addProperty("isConstrained",       this,&Private::isConstrained);
-      addProperty("isTransient",         this,&Private::isTransient);
-      addProperty("isMaybeVoid",         this,&Private::isMaybeVoid);
-      addProperty("isMaybeDefault",      this,&Private::isMaybeDefault);
-      addProperty("isMaybeAmbiguous",    this,&Private::isMaybeAmbiguous);
-      addProperty("isPublished",         this,&Private::isPublished);
-      addProperty("isTemplateSpecialization",this,&Private::isTemplateSpecialization);
-      addProperty("isObjCMethod",        this,&Private::isObjCMethod);
-      addProperty("isObjCProperty",      this,&Private::isObjCProperty);
-      addProperty("isAnonymous",         this,&Private::isAnonymous);
-      addProperty("declType",            this,&Private::declType);
-      addProperty("declArgs",            this,&Private::declArgs);
-      addProperty("anonymousType",       this,&Private::anonymousType);
-      addProperty("anonymousMember",     this,&Private::anonymousMember);
-      addProperty("hasDetails",          this,&Private::hasDetails);
-      addProperty("exception",           this,&Private::exception);
-      addProperty("bitfields",           this,&Private::bitfields);
-      addProperty("initializer",         this,&Private::initializer);
-      addProperty("initializerAsCode",   this,&Private::initializerAsCode);
-      addProperty("hasOneLineInitializer",   this,&Private::hasOneLineInitializer);
-      addProperty("hasMultiLineInitializer", this,&Private::hasMultiLineInitializer);
-      addProperty("templateArgs",        this,&Private::templateArgs);
-      addProperty("templateAlias",       this,&Private::templateAlias);
-      addProperty("propertyAttrs",       this,&Private::propertyAttrs);
-      addProperty("eventAttrs",          this,&Private::eventAttrs);
-      addProperty("class",               this,&Private::getClass);
-      addProperty("file",                this,&Private::getFile);
-      addProperty("namespace",           this,&Private::getNamespace);
-      addProperty("definition",          this,&Private::definition);
-      addProperty("parameters",          this,&Private::parameters);
-      addProperty("hasParameterList",    this,&Private::hasParameterList);
-      addProperty("hasConstQualifier",   this,&Private::hasConstQualifier);
-      addProperty("hasVolatileQualifier",this,&Private::hasVolatileQualifier);
-      addProperty("trailingReturnType",  this,&Private::trailingReturnType);
-      addProperty("extraTypeChars",      this,&Private::extraTypeChars);
-      addProperty("templateDecls",       this,&Private::templateDecls);
-      addProperty("labels",              this,&Private::labels);
-      addProperty("enumBaseType",        this,&Private::enumBaseType);
-      addProperty("enumValues",          this,&Private::enumValues);
-      addProperty("paramDocs",           this,&Private::paramDocs);
-      addProperty("reimplements",        this,&Private::reimplements);
-      addProperty("implements",          this,&Private::implements);
-      addProperty("reimplementedBy",     this,&Private::reimplementedBy);
-      addProperty("implementedBy",       this,&Private::implementedBy);
-      addProperty("examples",            this,&Private::examples);
-      addProperty("typeConstraints",     this,&Private::typeConstraints);
-      addProperty("functionQualifier",   this,&Private::functionQualifier);
-      addProperty("sourceRefs",          this,&Private::sourceRefs);
-      addProperty("sourceRefBys",        this,&Private::sourceRefBys);
-      addProperty("hasSources",          this,&Private::hasSources);
-      addProperty("sourceCode",          this,&Private::sourceCode);
-      addProperty("hasCallGraph",        this,&Private::hasCallGraph);
-      addProperty("callGraph",           this,&Private::callGraph);
-      addProperty("hasCallerGraph",      this,&Private::hasCallerGraph);
-      addProperty("callerGraph",         this,&Private::callerGraph);
-      addProperty("fieldType",           this,&Private::fieldType);
-
-      m_cache.propertyAttrs.reset(TemplateList::alloc());
+      static bool init=FALSE;
+      if (!init)
+      {
+        addBaseProperties(s_inst);
+        s_inst.addProperty("isSignal",            &Private::isSignal);
+        s_inst.addProperty("isSlot",              &Private::isSlot);
+        s_inst.addProperty("isVariable",          &Private::isVariable);
+        s_inst.addProperty("isEnumeration",       &Private::isEnumeration);
+        s_inst.addProperty("isEnumValue",         &Private::isEnumValue);
+        s_inst.addProperty("isTypedef",           &Private::isTypedef);
+        s_inst.addProperty("isFunction",          &Private::isFunction);
+        s_inst.addProperty("isFunctionPtr",       &Private::isFunctionPtr);
+        s_inst.addProperty("isDefine",            &Private::isDefine);
+        s_inst.addProperty("isFriend",            &Private::isFriend);
+        s_inst.addProperty("isProperty",          &Private::isProperty);
+        s_inst.addProperty("isEvent",             &Private::isEvent);
+        s_inst.addProperty("isRelated",           &Private::isRelated);
+        s_inst.addProperty("isForeign",           &Private::isForeign);
+        s_inst.addProperty("isStatic",            &Private::isStatic);
+        s_inst.addProperty("isInline",            &Private::isInline);
+        s_inst.addProperty("isExplicit",          &Private::isExplicit);
+        s_inst.addProperty("isMutable",           &Private::isMutable);
+        s_inst.addProperty("isGettable",          &Private::isGettable);
+        s_inst.addProperty("isPrivateGettable",   &Private::isPrivateGettable);
+        s_inst.addProperty("isProtectedGettable", &Private::isProtectedGettable);
+        s_inst.addProperty("isSettable",          &Private::isSettable);
+        s_inst.addProperty("isPrivateSettable",   &Private::isPrivateSettable);
+        s_inst.addProperty("isProtectedSettable", &Private::isProtectedSettable);
+        s_inst.addProperty("isReadable",          &Private::isReadable);
+        s_inst.addProperty("isWritable",          &Private::isWritable);
+        s_inst.addProperty("isAddable",           &Private::isAddable);
+        s_inst.addProperty("isRemovable",         &Private::isRemovable);
+        s_inst.addProperty("isRaisable",          &Private::isRaisable);
+        s_inst.addProperty("isFinal",             &Private::isFinal);
+        s_inst.addProperty("isAbstract",          &Private::isAbstract);
+        s_inst.addProperty("isOverride",          &Private::isOverride);
+        s_inst.addProperty("isInitonly",          &Private::isInitonly);
+        s_inst.addProperty("isOptional",          &Private::isOptional);
+        s_inst.addProperty("isRequired",          &Private::isRequired);
+        s_inst.addProperty("isNonAtomic",         &Private::isNonAtomic);
+        s_inst.addProperty("isCopy",              &Private::isCopy);
+        s_inst.addProperty("isAssign",            &Private::isAssign);
+        s_inst.addProperty("isRetain",            &Private::isRetain);
+        s_inst.addProperty("isWeak",              &Private::isWeak);
+        s_inst.addProperty("isStrong",            &Private::isStrong);
+        s_inst.addProperty("isUnretained",        &Private::isUnretained);
+        s_inst.addProperty("isNew",               &Private::isNew);
+        s_inst.addProperty("isSealed",            &Private::isSealed);
+        s_inst.addProperty("isImplementation",    &Private::isImplementation);
+        s_inst.addProperty("isExternal",          &Private::isExternal);
+        s_inst.addProperty("isAlias",             &Private::isAlias);
+        s_inst.addProperty("isDefault",           &Private::isDefault);
+        s_inst.addProperty("isDelete",            &Private::isDelete);
+        s_inst.addProperty("isNoExcept",          &Private::isNoExcept);
+        s_inst.addProperty("isAttribute",         &Private::isAttribute);
+        s_inst.addProperty("isUNOProperty",       &Private::isUNOProperty);
+        s_inst.addProperty("isReadonly",          &Private::isReadonly);
+        s_inst.addProperty("isBound",             &Private::isBound);
+        s_inst.addProperty("isConstrained",       &Private::isConstrained);
+        s_inst.addProperty("isTransient",         &Private::isTransient);
+        s_inst.addProperty("isMaybeVoid",         &Private::isMaybeVoid);
+        s_inst.addProperty("isMaybeDefault",      &Private::isMaybeDefault);
+        s_inst.addProperty("isMaybeAmbiguous",    &Private::isMaybeAmbiguous);
+        s_inst.addProperty("isPublished",         &Private::isPublished);
+        s_inst.addProperty("isTemplateSpecialization",&Private::isTemplateSpecialization);
+        s_inst.addProperty("isObjCMethod",        &Private::isObjCMethod);
+        s_inst.addProperty("isObjCProperty",      &Private::isObjCProperty);
+        s_inst.addProperty("isAnonymous",         &Private::isAnonymous);
+        s_inst.addProperty("hasParameters",       &Private::hasParameters);
+        s_inst.addProperty("declType",            &Private::declType);
+        s_inst.addProperty("declArgs",            &Private::declArgs);
+        s_inst.addProperty("anonymousType",       &Private::anonymousType);
+        s_inst.addProperty("anonymousMember",     &Private::anonymousMember);
+        s_inst.addProperty("hasDetails",          &Private::hasDetails);
+        s_inst.addProperty("exception",           &Private::exception);
+        s_inst.addProperty("bitfields",           &Private::bitfields);
+        s_inst.addProperty("initializer",         &Private::initializer);
+        s_inst.addProperty("initializerAsCode",   &Private::initializerAsCode);
+        s_inst.addProperty("hasOneLineInitializer",   &Private::hasOneLineInitializer);
+        s_inst.addProperty("hasMultiLineInitializer", &Private::hasMultiLineInitializer);
+        s_inst.addProperty("templateArgs",        &Private::templateArgs);
+        s_inst.addProperty("templateAlias",       &Private::templateAlias);
+        s_inst.addProperty("propertyAttrs",       &Private::propertyAttrs);
+        s_inst.addProperty("eventAttrs",          &Private::eventAttrs);
+        s_inst.addProperty("category",            &Private::category);
+        s_inst.addProperty("categoryRelation",    &Private::categoryRelation);
+        s_inst.addProperty("class",               &Private::getClass);
+        s_inst.addProperty("file",                &Private::getFile);
+        s_inst.addProperty("namespace",           &Private::getNamespace);
+        s_inst.addProperty("definition",          &Private::definition);
+        s_inst.addProperty("parameters",          &Private::parameters);
+        s_inst.addProperty("hasConstQualifier",   &Private::hasConstQualifier);
+        s_inst.addProperty("hasVolatileQualifier",&Private::hasVolatileQualifier);
+        s_inst.addProperty("trailingReturnType",  &Private::trailingReturnType);
+        s_inst.addProperty("extraTypeChars",      &Private::extraTypeChars);
+        s_inst.addProperty("templateDecls",       &Private::templateDecls);
+        s_inst.addProperty("labels",              &Private::labels);
+        s_inst.addProperty("enumBaseType",        &Private::enumBaseType);
+        s_inst.addProperty("enumValues",          &Private::enumValues);
+        s_inst.addProperty("paramDocs",           &Private::paramDocs);
+        s_inst.addProperty("reimplements",        &Private::reimplements);
+        s_inst.addProperty("implements",          &Private::implements);
+        s_inst.addProperty("reimplementedBy",     &Private::reimplementedBy);
+        s_inst.addProperty("implementedBy",       &Private::implementedBy);
+        s_inst.addProperty("examples",            &Private::examples);
+        s_inst.addProperty("typeConstraints",     &Private::typeConstraints);
+        s_inst.addProperty("functionQualifier",   &Private::functionQualifier);
+        s_inst.addProperty("sourceRefs",          &Private::sourceRefs);
+        s_inst.addProperty("sourceRefBys",        &Private::sourceRefBys);
+        s_inst.addProperty("hasSources",          &Private::hasSources);
+        s_inst.addProperty("sourceCode",          &Private::sourceCode);
+        s_inst.addProperty("hasCallGraph",        &Private::hasCallGraph);
+        s_inst.addProperty("callGraph",           &Private::callGraph);
+        s_inst.addProperty("hasCallerGraph",      &Private::hasCallerGraph);
+        s_inst.addProperty("callerGraph",         &Private::callerGraph);
+        s_inst.addProperty("fieldType",           &Private::fieldType);
+        s_inst.addProperty("type",                &Private::type);
+        s_inst.addProperty("detailsVisibleFor",   &Private::detailsVisibleFor);
+        s_inst.addProperty("nameWithContextFor",  &Private::nameWithContextFor);
+        init=TRUE;
+      }
+      if (!md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); }
+
+      Cachable &cache = getCache();
+      cache.propertyAttrs.reset(TemplateList::alloc());
       if (md && md->isProperty())
       {
-        if (md->isGettable())           m_cache.propertyAttrs->append("get");
-        if (md->isPrivateGettable())    m_cache.propertyAttrs->append("private get");
-        if (md->isProtectedGettable())  m_cache.propertyAttrs->append("protected get");
-        if (md->isSettable())           m_cache.propertyAttrs->append("set");
-        if (md->isPrivateSettable())    m_cache.propertyAttrs->append("private set");
-        if (md->isProtectedSettable())  m_cache.propertyAttrs->append("protected set");
+        if (md->isGettable())           cache.propertyAttrs->append("get");
+        if (md->isPrivateGettable())    cache.propertyAttrs->append("private get");
+        if (md->isProtectedGettable())  cache.propertyAttrs->append("protected get");
+        if (md->isSettable())           cache.propertyAttrs->append("set");
+        if (md->isPrivateSettable())    cache.propertyAttrs->append("private set");
+        if (md->isProtectedSettable())  cache.propertyAttrs->append("protected set");
       }
-      m_cache.eventAttrs.reset(TemplateList::alloc());
+      cache.eventAttrs.reset(TemplateList::alloc());
       if (md && md->isEvent())
       {
-        if (md->isAddable())   m_cache.eventAttrs->append("add");
-        if (md->isRemovable()) m_cache.eventAttrs->append("remove");
-        if (md->isRaisable())  m_cache.eventAttrs->append("raise");
+        if (md->isAddable())   cache.eventAttrs->append("add");
+        if (md->isRemovable()) cache.eventAttrs->append("remove");
+        if (md->isRaisable())  cache.eventAttrs->append("raise");
       }
     }
     virtual ~Private() {}
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant fieldType() const
     {
       return createLinkedText(m_memberDef,relPathAsString(),m_memberDef->fieldType());
     }
     TemplateVariant declType() const
     {
-      return createLinkedText(m_memberDef,relPathAsString(),m_memberDef->getDeclType());
+      Cachable &cache = getCache();
+      if (!cache.declTypeParsed)
+      {
+        cache.declType=createLinkedText(m_memberDef,relPathAsString(),m_memberDef->getDeclType());
+        cache.declTypeParsed = TRUE;
+        return cache.declType;
+      }
+      else
+      {
+        return cache.declType;
+      }
     }
     TemplateVariant declArgs() const
     {
-      return createLinkedText(m_memberDef,relPathAsString(),m_memberDef->argsString());
+      Cachable &cache = getCache();
+      if (!cache.declArgsParsed)
+      {
+        cache.declArgs=createLinkedText(m_memberDef,relPathAsString(),m_memberDef->argsString());
+        cache.declArgsParsed = TRUE;
+        return cache.declArgs;
+      }
+      else
+      {
+        return cache.declArgs;
+      }
     }
     TemplateVariant exception() const
     {
@@ -3532,7 +4302,8 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant initializerAsCode() const
     {
-      if (!m_cache.initializerParsed)
+      Cachable &cache = getCache();
+      if (!cache.initializerParsed)
       {
         QCString scopeName;
         if (m_memberDef->getClassDef())
@@ -3543,11 +4314,11 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
         {
           scopeName = m_memberDef->getNamespaceDef()->name();
         }
-        m_cache.initializer = parseCode(m_memberDef,scopeName,relPathAsString(),
+        cache.initializer = parseCode(m_memberDef,scopeName,relPathAsString(),
                                         m_memberDef->initializer());
-        m_cache.initializerParsed = TRUE;
+        cache.initializerParsed = TRUE;
       }
-      return m_cache.initializer;
+      return cache.initializer;
     }
     TemplateVariant isDefine() const
     {
@@ -3560,17 +4331,18 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant anonymousType() const
     {
-      if (!m_cache.anonymousType)
+      Cachable &cache = getCache();
+      if (!cache.anonymousType)
       {
         ClassDef *cd = m_memberDef->getClassDefOfAnonymousType();
         if (cd)
         {
-          m_cache.anonymousType.reset(ClassContext::alloc(cd));
+          cache.anonymousType.reset(ClassContext::alloc(cd));
         }
       }
-      if (m_cache.anonymousType)
+      if (cache.anonymousType)
       {
-        return m_cache.anonymousType.get();
+        return cache.anonymousType.get();
       }
       else
       {
@@ -3579,17 +4351,18 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant anonymousMember() const
     {
-      if (!m_cache.anonymousMember)
+      Cachable &cache = getCache();
+      if (!cache.anonymousMember)
       {
         MemberDef *md = m_memberDef->fromAnonymousMember();
         if (md)
         {
-          m_cache.anonymousMember.reset(MemberContext::alloc(md));
+          cache.anonymousMember.reset(MemberContext::alloc(md));
         }
       }
-      if (m_cache.anonymousMember)
+      if (cache.anonymousMember)
       {
-        return m_cache.anonymousMember.get();
+        return cache.anonymousMember.get();
       }
       else
       {
@@ -3614,29 +4387,31 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant enumValues() const
     {
-      if (!m_cache.enumValues)
+      Cachable &cache = getCache();
+      if (!cache.enumValues)
       {
         MemberList *ml = m_memberDef->enumFieldList();
         if (ml)
         {
-          m_cache.enumValues.reset(MemberListContext::alloc(ml));
+          cache.enumValues.reset(MemberListContext::alloc(ml));
         }
         else
         {
-          m_cache.enumValues.reset(MemberListContext::alloc());
+          cache.enumValues.reset(MemberListContext::alloc());
         }
       }
-      return m_cache.enumValues.get();
+      return cache.enumValues.get();
     }
     TemplateVariant templateArgs() const
     {
-      if (!m_cache.templateArgs && m_memberDef->templateArguments())
+      Cachable &cache = getCache();
+      if (!cache.templateArgs && m_memberDef->templateArguments())
       {
-        m_cache.templateArgs.reset(ArgumentListContext::alloc(m_memberDef->templateArguments(),m_memberDef,relPathAsString()));
+        cache.templateArgs.reset(ArgumentListContext::alloc(m_memberDef->templateArguments(),m_memberDef,relPathAsString()));
       }
-      if (m_cache.templateArgs)
+      if (cache.templateArgs)
       {
-        return m_cache.templateArgs.get();
+        return cache.templateArgs.get();
       }
       else
       {
@@ -3654,21 +4429,54 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant propertyAttrs() const
     {
-      return m_cache.propertyAttrs.get();
+      return getCache().propertyAttrs.get();
     }
     TemplateVariant eventAttrs() const
     {
-      return m_cache.eventAttrs.get();
+      return getCache().eventAttrs.get();
     }
     TemplateVariant getClass() const
     {
-      if (!m_cache.classDef && m_memberDef->getClassDef())
+      Cachable &cache = getCache();
+      if (!cache.classDef && m_memberDef->getClassDef())
+      {
+        cache.classDef.reset(ClassContext::alloc(m_memberDef->getClassDef()));
+      }
+      if (cache.classDef)
+      {
+        return cache.classDef.get();
+      }
+      else
+      {
+        return TemplateVariant(FALSE);
+      }
+    }
+    TemplateVariant category() const
+    {
+      Cachable &cache = getCache();
+      if (!cache.category && m_memberDef->category())
+      {
+        cache.category.reset(ClassContext::alloc(m_memberDef->category()));
+      }
+      if (cache.category)
+      {
+        return cache.category.get();
+      }
+      else
+      {
+        return TemplateVariant(FALSE);
+      }
+    }
+    TemplateVariant categoryRelation() const
+    {
+      Cachable &cache = getCache();
+      if (!cache.categoryRelation && m_memberDef->categoryRelation())
       {
-        m_cache.classDef.reset(ClassContext::alloc(m_memberDef->getClassDef()));
+        cache.categoryRelation.reset(MemberContext::alloc(m_memberDef->categoryRelation()));
       }
-      if (m_cache.classDef)
+      if (cache.categoryRelation)
       {
-        return m_cache.classDef.get();
+        return cache.categoryRelation.get();
       }
       else
       {
@@ -3677,13 +4485,14 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant getFile() const
     {
-      if (!m_cache.fileDef && m_memberDef->getFileDef())
+      Cachable &cache = getCache();
+      if (!cache.fileDef && m_memberDef->getFileDef())
       {
-        m_cache.fileDef.reset(FileContext::alloc(m_memberDef->getFileDef()));
+        cache.fileDef.reset(FileContext::alloc(m_memberDef->getFileDef()));
       }
-      if (m_cache.fileDef)
+      if (cache.fileDef)
       {
-        return m_cache.fileDef.get();
+        return cache.fileDef.get();
       }
       else
       {
@@ -3692,13 +4501,14 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant getNamespace() const
     {
-      if (!m_cache.namespaceDef && m_memberDef->getNamespaceDef())
+      Cachable &cache = getCache();
+      if (!cache.namespaceDef && m_memberDef->getNamespaceDef())
       {
-        m_cache.namespaceDef.reset(NamespaceContext::alloc(m_memberDef->getNamespaceDef()));
+        cache.namespaceDef.reset(NamespaceContext::alloc(m_memberDef->getNamespaceDef()));
       }
-      if (m_cache.namespaceDef)
+      if (cache.namespaceDef)
       {
-        return m_cache.namespaceDef.get();
+        return cache.namespaceDef.get();
       }
       else
       {
@@ -3717,21 +4527,22 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant parameters() const
     {
-      if (!m_cache.arguments)
+      Cachable &cache = getCache();
+      if (!cache.arguments)
       {
         ArgumentList *defArgList = getDefArgList();
         if (defArgList && !m_memberDef->isProperty())
         {
-          m_cache.arguments.reset(ArgumentListContext::alloc(defArgList,m_memberDef,relPathAsString()));
+          cache.arguments.reset(ArgumentListContext::alloc(defArgList,m_memberDef,relPathAsString()));
         }
         else
         {
-          m_cache.arguments.reset(ArgumentListContext::alloc());
+          cache.arguments.reset(ArgumentListContext::alloc());
         }
       }
-      return m_cache.arguments.get();
+      return cache.arguments.get();
     }
-    TemplateVariant hasParameterList() const
+    TemplateVariant hasParameters() const
     {
       return getDefArgList()!=0;
     }
@@ -3806,17 +4617,19 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant templateDecls() const
     {
-      if (!m_cache.templateDecls)
+      Cachable &cache = getCache();
+      if (!cache.templateDecls)
       {
         TemplateList *tl = TemplateList::alloc();
         addTemplateDecls(tl);
-        m_cache.templateDecls.reset(tl);
+        cache.templateDecls.reset(tl);
       }
-      return m_cache.templateDecls.get();
+      return cache.templateDecls.get();
     }
     TemplateVariant labels() const
     {
-      if (!m_cache.labels)
+      Cachable &cache = getCache();
+      if (!cache.labels)
       {
         QStrList sl;
         m_memberDef->getLabels(sl,m_memberDef->getOuterScope());
@@ -3829,13 +4642,14 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
             tl->append(*it);
           }
         }
-        m_cache.labels.reset(tl);
+        cache.labels.reset(tl);
       }
-      return m_cache.labels.get();
+      return cache.labels.get();
     }
     TemplateVariant paramDocs() const
     {
-      if (!m_cache.paramDocs)
+      Cachable &cache = getCache();
+      if (!cache.paramDocs)
       {
         if (m_memberDef->argumentList() && m_memberDef->argumentList()->hasDocumentation())
         {
@@ -3851,59 +4665,62 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
               paramDocs+="@param"+direction+" "+a->name+" "+a->docs;
             }
           }
-          m_cache.paramDocs.reset(new TemplateVariant(parseDoc(m_memberDef,
+          cache.paramDocs.reset(new TemplateVariant(parseDoc(m_memberDef,
                                            m_memberDef->docFile(),m_memberDef->docLine(),
                                            relPathAsString(),paramDocs,FALSE)));
         }
         else
         {
-          m_cache.paramDocs.reset(new TemplateVariant(""));
+          cache.paramDocs.reset(new TemplateVariant(""));
         }
       }
-      return *m_cache.paramDocs;
+      return *cache.paramDocs;
     }
     TemplateVariant implements() const
     {
-      if (!m_cache.implements)
+      Cachable &cache = getCache();
+      if (!cache.implements)
       {
         MemberDef *md = m_memberDef->reimplements();
-        m_cache.implements.reset(TemplateList::alloc());
+        cache.implements.reset(TemplateList::alloc());
         if (md)
         {
           ClassDef *cd = md->getClassDef();
           if (cd && (md->virtualness()==Pure || cd->compoundType()==ClassDef::Interface))
           {
             MemberContext *mc = MemberContext::alloc(md);
-            m_cache.implements->append(mc);
+            cache.implements->append(mc);
           }
         }
       }
-      return m_cache.implements.get();
+      return cache.implements.get();
     }
     TemplateVariant reimplements() const
     {
-      if (!m_cache.reimplements)
+      Cachable &cache = getCache();
+      if (!cache.reimplements)
       {
         MemberDef *md = m_memberDef->reimplements();
-        m_cache.reimplements.reset(TemplateList::alloc());
+        cache.reimplements.reset(TemplateList::alloc());
         if (md)
         {
           ClassDef *cd = md->getClassDef();
           if (cd && md->virtualness()!=Pure && cd->compoundType()!=ClassDef::Interface)
           {
             MemberContext *mc = MemberContext::alloc(md);
-            m_cache.reimplements->append(mc);
+            cache.reimplements->append(mc);
           }
         }
       }
-      return m_cache.reimplements.get();
+      return cache.reimplements.get();
     }
     TemplateVariant implementedBy() const
     {
-      if (!m_cache.implementedBy)
+      Cachable &cache = getCache();
+      if (!cache.implementedBy)
       {
         MemberList *ml = m_memberDef->reimplementedBy();
-        m_cache.implementedBy.reset(TemplateList::alloc());
+        cache.implementedBy.reset(TemplateList::alloc());
         if (ml)
         {
           MemberListIterator mli(*ml);
@@ -3914,18 +4731,19 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
             if (cd && (md->virtualness()==Pure || cd->compoundType()==ClassDef::Interface))
             {
               MemberContext *mc = new MemberContext(md);
-              m_cache.implementedBy->append(mc);
+              cache.implementedBy->append(mc);
             }
           }
         }
       }
-      return m_cache.implementedBy.get();
+      return cache.implementedBy.get();
     }
     TemplateVariant reimplementedBy() const
     {
-      if (!m_cache.reimplementedBy)
+      Cachable &cache = getCache();
+      if (!cache.reimplementedBy)
       {
-        m_cache.reimplementedBy.reset(TemplateList::alloc());
+        cache.reimplementedBy.reset(TemplateList::alloc());
         MemberList *ml = m_memberDef->reimplementedBy();
         if (ml)
         {
@@ -3937,12 +4755,12 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
             if (cd && md->virtualness()!=Pure && cd->compoundType()!=ClassDef::Interface)
             {
               MemberContext *mc = new MemberContext(md);
-              m_cache.reimplementedBy->append(mc);
+              cache.reimplementedBy->append(mc);
             }
           }
         }
       }
-      return m_cache.reimplementedBy.get();
+      return cache.reimplementedBy.get();
     }
     void addExamples(TemplateList *list) const
     {
@@ -3957,31 +4775,35 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
           s->set("isLinkable",TRUE);
           s->set("anchor",ex->anchor);
           s->set("fileName",ex->file);
+          s->set("isReference",FALSE);
+          s->set("externalReference","");
           list->append(s);
         }
       }
     }
     TemplateVariant examples() const
     {
-      if (!m_cache.examples)
+      Cachable &cache = getCache();
+      if (!cache.examples)
       {
         TemplateList *exampleList = TemplateList::alloc();
         addExamples(exampleList);
-        m_cache.examples.reset(exampleList);
+        cache.examples.reset(exampleList);
       }
-      return m_cache.examples.get();
+      return cache.examples.get();
     }
     TemplateVariant typeConstraints() const
     {
-      if (!m_cache.typeConstraints && m_memberDef->typeConstraints())
+      Cachable &cache = getCache();
+      if (!cache.typeConstraints && m_memberDef->typeConstraints())
       {
-        m_cache.typeConstraints.reset(ArgumentListContext::alloc(m_memberDef->typeConstraints(),m_memberDef,relPathAsString()));
+        cache.typeConstraints.reset(ArgumentListContext::alloc(m_memberDef->typeConstraints(),m_memberDef,relPathAsString()));
       }
       else
       {
-        m_cache.typeConstraints.reset(ArgumentListContext::alloc());
+        cache.typeConstraints.reset(ArgumentListContext::alloc());
       }
-      return m_cache.typeConstraints.get();
+      return cache.typeConstraints.get();
     }
     TemplateVariant functionQualifier() const
     {
@@ -4000,19 +4822,21 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant sourceRefs() const
     {
-      if (!m_cache.sourceRefs)
+      Cachable &cache = getCache();
+      if (!cache.sourceRefs)
       {
-        m_cache.sourceRefs.reset(MemberListContext::alloc(m_memberDef->getReferencesMembers(),TRUE));
+        cache.sourceRefs.reset(MemberListContext::alloc(m_memberDef->getReferencesMembers(),TRUE));
       }
-      return m_cache.sourceRefs.get();
+      return cache.sourceRefs.get();
     }
     TemplateVariant sourceRefBys() const
     {
-      if (!m_cache.sourceRefBys)
+      Cachable &cache = getCache();
+      if (!cache.sourceRefBys)
       {
-        m_cache.sourceRefBys.reset(MemberListContext::alloc(m_memberDef->getReferencedByMembers(),TRUE));
+        cache.sourceRefBys.reset(MemberListContext::alloc(m_memberDef->getReferencedByMembers(),TRUE));
       }
-      return m_cache.sourceRefBys.get();
+      return cache.sourceRefBys.get();
     }
     TemplateVariant hasSources() const
     {
@@ -4020,7 +4844,8 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     TemplateVariant sourceCode() const
     {
-      if (!m_cache.sourceCodeParsed)
+      Cachable &cache = getCache();
+      if (!cache.sourceCodeParsed)
       {
         QCString codeFragment;
         FileDef *fd   = m_memberDef->getBodyDef();
@@ -4039,25 +4864,25 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
           {
             scopeName = m_memberDef->getNamespaceDef()->name();
           }
-          m_cache.sourceCode = parseCode(m_memberDef,scopeName,relPathAsString(),codeFragment,startLine,endLine,TRUE);
-          m_cache.sourceCodeParsed = TRUE;
+          cache.sourceCode = parseCode(m_memberDef,scopeName,relPathAsString(),codeFragment,startLine,endLine,TRUE);
+          cache.sourceCodeParsed = TRUE;
         }
       }
-      return m_cache.sourceCode;
+      return cache.sourceCode;
     }
     DotCallGraph *getCallGraph() const
     {
-      if (!m_cache.callGraph)
+      Cachable &cache = getCache();
+      if (!cache.callGraph)
       {
-        m_cache.callGraph.reset(new DotCallGraph(m_memberDef,FALSE));
+        cache.callGraph.reset(new DotCallGraph(m_memberDef,FALSE));
       }
-      return m_cache.callGraph.get();
+      return cache.callGraph.get();
     }
     TemplateVariant hasCallGraph() const
     {
       static bool haveDot = Config_getBool("HAVE_DOT");
-      static bool callGraph = Config_getBool("CALL_GRAPH");
-      if ((callGraph || m_memberDef->hasCallGraph()) && haveDot &&
+      if (m_memberDef->hasCallGraph() && haveDot &&
           (m_memberDef->isFunction() || m_memberDef->isSlot() || m_memberDef->isSignal()))
       {
         DotCallGraph *cg = getCallGraph();
@@ -4072,11 +4897,31 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
         DotCallGraph *cg = getCallGraph();
         QGString result;
         FTextStream t(&result);
-        cg->writeGraph(t,GOF_BITMAP,EOF_Html,
-            g_globals.outputDir,
-            g_globals.outputDir+portable_pathSeparator()+m_memberDef->getOutputFileBase()+Doxygen::htmlFileExtension,
-            relPathAsString(),TRUE,g_globals.dynSectionId
-            );
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              cg->writeGraph(t,GOF_BITMAP,EOF_Html,
+                  g_globals.outputDir,
+                  g_globals.outputDir+portable_pathSeparator()+m_memberDef->getOutputFileBase()+Doxygen::htmlFileExtension,
+                  relPathAsString(),TRUE,g_globals.dynSectionId
+                  );
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              cg->writeGraph(t,GOF_EPS,EOF_LaTeX,
+                  g_globals.outputDir,
+                  g_globals.outputDir+portable_pathSeparator()+m_memberDef->getOutputFileBase()+".tex",
+                  relPathAsString(),TRUE,g_globals.dynSectionId
+                  );
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
         g_globals.dynSectionId++;
         return TemplateVariant(result.data(),TRUE);
       }
@@ -4087,17 +4932,17 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
     }
     DotCallGraph *getCallerGraph() const
     {
-      if (!m_cache.callerGraph)
+      Cachable &cache = getCache();
+      if (!cache.callerGraph)
       {
-        m_cache.callerGraph.reset(new DotCallGraph(m_memberDef,TRUE));
+        cache.callerGraph.reset(new DotCallGraph(m_memberDef,TRUE));
       }
-      return m_cache.callerGraph.get();
+      return cache.callerGraph.get();
     }
     TemplateVariant hasCallerGraph() const
     {
       static bool haveDot = Config_getBool("HAVE_DOT");
-      static bool callerGraph = Config_getBool("CALLER_GRAPH");
-      if ((callerGraph || m_memberDef->hasCallerGraph()) && haveDot &&
+      if (m_memberDef->hasCallerGraph() && haveDot &&
           (m_memberDef->isFunction() || m_memberDef->isSlot() || m_memberDef->isSignal()))
       {
         DotCallGraph *cg = getCallerGraph();
@@ -4112,11 +4957,31 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
         DotCallGraph *cg = getCallerGraph();
         QGString result;
         FTextStream t(&result);
-        cg->writeGraph(t,GOF_BITMAP,EOF_Html,
-            g_globals.outputDir,
-            g_globals.outputDir+portable_pathSeparator()+m_memberDef->getOutputFileBase()+Doxygen::htmlFileExtension,
-            relPathAsString(),TRUE,g_globals.dynSectionId
-            );
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              cg->writeGraph(t,GOF_BITMAP,EOF_Html,
+                  g_globals.outputDir,
+                  g_globals.outputDir+portable_pathSeparator()+m_memberDef->getOutputFileBase()+Doxygen::htmlFileExtension,
+                  relPathAsString(),TRUE,g_globals.dynSectionId
+                  );
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              cg->writeGraph(t,GOF_EPS,EOF_LaTeX,
+                  g_globals.outputDir,
+                  g_globals.outputDir+portable_pathSeparator()+m_memberDef->getOutputFileBase()+".tex",
+                  relPathAsString(),TRUE,g_globals.dynSectionId
+                  );
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
         g_globals.dynSectionId++;
         return TemplateVariant(result.data(),TRUE);
       }
@@ -4125,18 +4990,72 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
         return TemplateVariant("");
       }
     }
-  private:
-    MemberDef *m_memberDef;
-    struct Cachable
+    TemplateVariant type() const
+    {
+      return m_memberDef->typeString();
+    }
+    TemplateVariant handleDetailsVisibleFor(const QValueList<TemplateVariant> &args) const
+    {
+      if (args.count()==1)
+      {
+        return m_memberDef->isDetailedSectionVisible(args[0].toString()=="module",args[0].toString()=="file");
+      }
+      else
+      {
+        err(".detailsVisibleFor should take one string argument, got %d\n",args.count());
+      }
+      return TemplateVariant();
+    }
+    TemplateVariant detailsVisibleFor() const
     {
-      Cachable() : initializerParsed(FALSE), sourceCodeParsed(FALSE)
+      return TemplateVariant::Delegate::fromMethod<Private,&Private::handleDetailsVisibleFor>(this);
+    }
+    TemplateVariant handleNameWithContextFor(const QValueList<TemplateVariant> &args) const
+    {
+      if (args.count()==1)
+      {
+        SrcLangExt lang = m_memberDef->getLanguage();
+        QCString n = m_memberDef->name();
+        QCString ctx = args[0].toString();
+        QCString sep = getLanguageSpecificSeparator(lang,TRUE);
+        if (m_memberDef->getEnumScope() && m_memberDef->livesInsideEnum())
+        {
+          n.prepend(m_memberDef->getEnumScope()->displayName()+sep);
+        }
+        if (ctx=="module" && m_memberDef->getClassDef() && !m_memberDef->isRelated())
+        {
+          n.prepend(m_memberDef->getClassDef()->displayName()+sep);
+        }
+        else if ((ctx=="module" || ctx=="file") && m_memberDef->getNamespaceDef())
+        {
+          n.prepend(m_memberDef->getNamespaceDef()->displayName()+sep);
+        }
+        return n;
+      }
+      else
       {
+        err(".nameWithContextFor should take one string argument, got %d\n",args.count());
       }
+      return TemplateVariant();
+    }
+    TemplateVariant nameWithContextFor() const
+    {
+      return TemplateVariant::Delegate::fromMethod<Private,&Private::handleNameWithContextFor>(this);
+    }
+  private:
+    MemberDef *m_memberDef;
+    struct Cachable : public DefinitionContext<MemberContext::Private>::Cachable
+    {
+      Cachable(MemberDef *md) : DefinitionContext<MemberContext::Private>::Cachable(md),
+                                initializerParsed(FALSE), sourceCodeParsed(FALSE),
+                                declArgsParsed(FALSE), declTypeParsed(FALSE) { }
       SharedPtr<ArgumentListContext> templateArgs;
       SharedPtr<ArgumentListContext> arguments;
       SharedPtr<MemberListContext>   enumValues;
       SharedPtr<FileContext>         fileDef;
       SharedPtr<NamespaceContext>    namespaceDef;
+      SharedPtr<ClassContext>        category;
+      SharedPtr<MemberContext>       categoryRelation;
       SharedPtr<ClassContext>        classDef;
       SharedPtr<ClassContext>        anonymousType;
       SharedPtr<TemplateList>        templateDecls;
@@ -4155,16 +5074,28 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
       bool                           initializerParsed;
       TemplateVariant                sourceCode;
       bool                           sourceCodeParsed;
+      TemplateVariant                declArgs;
+      bool                           declArgsParsed;
+      TemplateVariant                declType;
+      bool                           declTypeParsed;
       SharedPtr<TemplateList>        examples;
       SharedPtr<TemplateList>        exampleList;
       SharedPtr<ArgumentListContext> typeConstraints;
       SharedPtr<TemplateList>        propertyAttrs;
       SharedPtr<TemplateList>        eventAttrs;
     };
-    mutable Cachable m_cache;
+    Cachable &getCache() const
+    {
+      Cachable *c = static_cast<Cachable*>(m_memberDef->cookie());
+      assert(c!=0);
+      return *c;
+    }
+    static PropertyMapper<MemberContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<MemberContext::Private> MemberContext::Private::s_inst;
+
 MemberContext::MemberContext(MemberDef *md) : RefCountedContext("MemberContext")
 {
   p = new Private(md);
@@ -4190,50 +5121,61 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
   public:
     Private(GroupDef *gd) : DefinitionContext<ModuleContext::Private>(gd) , m_groupDef(gd)
     {
-      addProperty("title",                     this,&Private::title);
-      addProperty("highlight",                 this,&Private::highlight);
-      addProperty("subhighlight",              this,&Private::subHighlight);
-      addProperty("hasGroupGraph",             this,&Private::hasGroupGraph);
-      addProperty("groupGraph",                this,&Private::groupGraph);
-      addProperty("hasDetails",                this,&Private::hasDetails);
-      addProperty("modules",                   this,&Private::modules);
-      addProperty("dirs",                      this,&Private::dirs);
-      addProperty("files",                     this,&Private::files);
-      addProperty("namespaces",                this,&Private::namespaces);
-      addProperty("classes",                   this,&Private::classes);
-      addProperty("constantgroups",            this,&Private::constantgroups);
-      addProperty("examples",                  this,&Private::examples);
-      addProperty("macros",                    this,&Private::macros);
-      addProperty("typedefs",                  this,&Private::typedefs);
-      addProperty("enums",                     this,&Private::enums);
-      addProperty("enumvalues",                this,&Private::enumValues);
-      addProperty("functions",                 this,&Private::functions);
-      addProperty("variables",                 this,&Private::variables);
-      addProperty("signals",                   this,&Private::signals);
-      addProperty("publicSlots",               this,&Private::publicSlots);
-      addProperty("protectedSlots",            this,&Private::protectedSlots);
-      addProperty("privateSlots",              this,&Private::privateSlots);
-      addProperty("events",                    this,&Private::events);
-      addProperty("properties",                this,&Private::properties);
-      addProperty("friends",                   this,&Private::friends);
-      addProperty("memberGroups",              this,&Private::memberGroups);
-      addProperty("detailedMacros",            this,&Private::detailedMacros);
-      addProperty("detailedTypedefs",          this,&Private::detailedTypedefs);
-      addProperty("detailedEnums",             this,&Private::detailedEnums);
-      addProperty("detailedEnumValues",        this,&Private::detailedEnumValues);
-      addProperty("detailedFunctions",         this,&Private::detailedFunctions);
-      addProperty("detailedVariables",         this,&Private::detailedVariables);
-      addProperty("detailedSignals",           this,&Private::detailedSignals);
-      addProperty("detailedPublicSlots",       this,&Private::detailedPublicSlots);
-      addProperty("detailedProtectedSlots",    this,&Private::detailedProtectedSlots);
-      addProperty("detailedPrivateSlots",      this,&Private::detailedPrivateSlots);
-      addProperty("detailedEvents",            this,&Private::detailedEvents);
-      addProperty("detailedProperties",        this,&Private::detailedProperties);
-      addProperty("detailedFriends",           this,&Private::detailedFriends);
-      addProperty("inlineClasses",             this,&Private::inlineClasses);
-      addProperty("compoundType",              this,&Private::compoundType);
+      static bool init=FALSE;
+      if (!init)
+      {
+        addBaseProperties(s_inst);
+        s_inst.addProperty("title",                     &Private::title);
+        s_inst.addProperty("highlight",                 &Private::highlight);
+        s_inst.addProperty("subhighlight",              &Private::subHighlight);
+        s_inst.addProperty("hasGroupGraph",             &Private::hasGroupGraph);
+        s_inst.addProperty("groupGraph",                &Private::groupGraph);
+        s_inst.addProperty("hasDetails",                &Private::hasDetails);
+        s_inst.addProperty("modules",                   &Private::modules);
+        s_inst.addProperty("dirs",                      &Private::dirs);
+        s_inst.addProperty("files",                     &Private::files);
+        s_inst.addProperty("namespaces",                &Private::namespaces);
+        s_inst.addProperty("classes",                   &Private::classes);
+        s_inst.addProperty("constantgroups",            &Private::constantgroups);
+        s_inst.addProperty("examples",                  &Private::examples);
+        s_inst.addProperty("macros",                    &Private::macros);
+        s_inst.addProperty("typedefs",                  &Private::typedefs);
+        s_inst.addProperty("enums",                     &Private::enums);
+        s_inst.addProperty("enumvalues",                &Private::enumValues);
+        s_inst.addProperty("functions",                 &Private::functions);
+        s_inst.addProperty("variables",                 &Private::variables);
+        s_inst.addProperty("signals",                   &Private::signals);
+        s_inst.addProperty("publicSlots",               &Private::publicSlots);
+        s_inst.addProperty("protectedSlots",            &Private::protectedSlots);
+        s_inst.addProperty("privateSlots",              &Private::privateSlots);
+        s_inst.addProperty("events",                    &Private::events);
+        s_inst.addProperty("properties",                &Private::properties);
+        s_inst.addProperty("friends",                   &Private::friends);
+        s_inst.addProperty("memberGroups",              &Private::memberGroups);
+        s_inst.addProperty("detailedMacros",            &Private::detailedMacros);
+        s_inst.addProperty("detailedTypedefs",          &Private::detailedTypedefs);
+        s_inst.addProperty("detailedEnums",             &Private::detailedEnums);
+        s_inst.addProperty("detailedEnumValues",        &Private::detailedEnumValues);
+        s_inst.addProperty("detailedFunctions",         &Private::detailedFunctions);
+        s_inst.addProperty("detailedVariables",         &Private::detailedVariables);
+        s_inst.addProperty("detailedSignals",           &Private::detailedSignals);
+        s_inst.addProperty("detailedPublicSlots",       &Private::detailedPublicSlots);
+        s_inst.addProperty("detailedProtectedSlots",    &Private::detailedProtectedSlots);
+        s_inst.addProperty("detailedPrivateSlots",      &Private::detailedPrivateSlots);
+        s_inst.addProperty("detailedEvents",            &Private::detailedEvents);
+        s_inst.addProperty("detailedProperties",        &Private::detailedProperties);
+        s_inst.addProperty("detailedFriends",           &Private::detailedFriends);
+        s_inst.addProperty("inlineClasses",             &Private::inlineClasses);
+        s_inst.addProperty("compoundType",              &Private::compoundType);
+        init=TRUE;
+      }
+      if (!gd->cookie()) { gd->setCookie(new ModuleContext::Private::Cachable(gd)); }
     }
     virtual ~Private() {}
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant title() const
     {
       return TemplateVariant(m_groupDef->groupTitle());
@@ -4248,11 +5190,12 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
     }
     DotGroupCollaboration *getGroupGraph() const
     {
-      if (!m_cache.groupGraph)
+      Cachable &cache = getCache();
+      if (!cache.groupGraph)
       {
-        m_cache.groupGraph.reset(new DotGroupCollaboration(m_groupDef));
+        cache.groupGraph.reset(new DotGroupCollaboration(m_groupDef));
       }
-      return m_cache.groupGraph.get();
+      return cache.groupGraph.get();
     }
     TemplateVariant hasGroupGraph() const
     {
@@ -4275,15 +5218,37 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
       {
         DotGroupCollaboration *graph = getGroupGraph();
         FTextStream t(&result);
-        graph->writeGraph(t,GOF_BITMAP,
-                          EOF_Html,
-                          g_globals.outputDir,
-                          g_globals.outputDir+portable_pathSeparator()+m_groupDef->getOutputFileBase()+Doxygen::htmlFileExtension,
-                          relPathAsString(),
-                          TRUE,
-                          g_globals.dynSectionId);
+        switch (g_globals.outputFormat)
+        {
+          case ContextOutputFormat_Html:
+            {
+              graph->writeGraph(t,GOF_BITMAP,
+                                EOF_Html,
+                                g_globals.outputDir,
+                                g_globals.outputDir+portable_pathSeparator()+m_groupDef->getOutputFileBase()+Doxygen::htmlFileExtension,
+                                relPathAsString(),
+                                TRUE,
+                                g_globals.dynSectionId);
+            }
+            break;
+          case ContextOutputFormat_Latex:
+            {
+              graph->writeGraph(t,GOF_EPS,
+                                EOF_LaTeX,
+                                g_globals.outputDir,
+                                g_globals.outputDir+portable_pathSeparator()+m_groupDef->getOutputFileBase()+".tex",
+                                relPathAsString(),
+                                TRUE,
+                                g_globals.dynSectionId);
+            }
+            break;
+            // TODO: support other generators
+          default:
+            err("context.cpp: output format not yet supported");
+            break;
+        }
+        g_globals.dynSectionId++;
       }
-      g_globals.dynSectionId++;
       return TemplateVariant(result.data(),TRUE);
     }
     TemplateVariant hasDetails() const
@@ -4292,7 +5257,8 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
     }
     TemplateVariant modules() const
     {
-      if (!m_cache.modules)
+      Cachable &cache = getCache();
+      if (!cache.modules)
       {
         TemplateList *moduleList = TemplateList::alloc();
         if (m_groupDef->getSubGroups())
@@ -4307,13 +5273,14 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
             }
           }
         }
-        m_cache.modules.reset(moduleList);
+        cache.modules.reset(moduleList);
       }
-      return m_cache.modules.get();
+      return cache.modules.get();
     }
     TemplateVariant examples() const
     {
-      if (!m_cache.examples)
+      Cachable &cache = getCache();
+      if (!cache.examples)
       {
         TemplateList *exampleList = TemplateList::alloc();
         if (m_groupDef->getExamples())
@@ -4322,16 +5289,17 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
           PageDef *ex;
           for (eli.toFirst();(ex=eli.current());++eli)
           {
-            exampleList->append(PageContext::alloc(ex));
+            exampleList->append(PageContext::alloc(ex,FALSE,TRUE));
           }
         }
-        m_cache.examples.reset(exampleList);
+        cache.examples.reset(exampleList);
       }
-      return m_cache.examples.get();
+      return cache.examples.get();
     }
     TemplateVariant pages() const
     {
-      if (!m_cache.pages)
+      Cachable &cache = getCache();
+      if (!cache.pages)
       {
         TemplateList *pageList = TemplateList::alloc();
         if (m_groupDef->getExamples())
@@ -4340,16 +5308,17 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
           PageDef *ex;
           for (eli.toFirst();(ex=eli.current());++eli)
           {
-            pageList->append(PageContext::alloc(ex));
+            pageList->append(PageContext::alloc(ex,FALSE,TRUE));
           }
         }
-        m_cache.pages.reset(pageList);
+        cache.pages.reset(pageList);
       }
-      return m_cache.pages.get();
+      return cache.pages.get();
     }
     TemplateVariant dirs() const
     {
-      if (!m_cache.dirs)
+      Cachable &cache = getCache();
+      if (!cache.dirs)
       {
         TemplateList *dirList = TemplateList::alloc();
         if (m_groupDef->getDirs())
@@ -4361,13 +5330,14 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
             dirList->append(DirContext::alloc(dd));
           }
         }
-        m_cache.dirs.reset(dirList);
+        cache.dirs.reset(dirList);
       }
-      return m_cache.dirs.get();
+      return cache.dirs.get();
     }
     TemplateVariant files() const
     {
-      if (!m_cache.files)
+      Cachable &cache = getCache();
+      if (!cache.files)
       {
         TemplateList *fileList = TemplateList::alloc();
         if (m_groupDef->getFiles())
@@ -4379,13 +5349,14 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
             fileList->append(FileContext::alloc(fd));
           }
         }
-        m_cache.files.reset(fileList);
+        cache.files.reset(fileList);
       }
-      return m_cache.files.get();
+      return cache.files.get();
     }
     TemplateVariant classes() const
     {
-      if (!m_cache.classes)
+      Cachable &cache = getCache();
+      if (!cache.classes)
       {
         TemplateList *classList = TemplateList::alloc();
         if (m_groupDef->getClasses())
@@ -4400,13 +5371,14 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
             }
           }
         }
-        m_cache.classes.reset(classList);
+        cache.classes.reset(classList);
       }
-      return m_cache.classes.get();
+      return cache.classes.get();
     }
     TemplateVariant namespaces() const
     {
-      if (!m_cache.namespaces)
+      Cachable &cache = getCache();
+      if (!cache.namespaces)
       {
         TemplateList *namespaceList = TemplateList::alloc();
         if (m_groupDef->getNamespaces())
@@ -4421,13 +5393,14 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
             }
           }
         }
-        m_cache.namespaces.reset(namespaceList);
+        cache.namespaces.reset(namespaceList);
       }
-      return m_cache.namespaces.get();
+      return cache.namespaces.get();
     }
     TemplateVariant constantgroups() const
     {
-      if (!m_cache.constantgroups)
+      Cachable &cache = getCache();
+      if (!cache.constantgroups)
       {
         TemplateList *namespaceList = TemplateList::alloc();
         if (m_groupDef->getNamespaces())
@@ -4442,9 +5415,9 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
             }
           }
         }
-        m_cache.constantgroups.reset(namespaceList);
+        cache.constantgroups.reset(namespaceList);
       }
-      return m_cache.constantgroups.get();
+      return cache.constantgroups.get();
     }
 
     TemplateVariant getMemberList(SharedPtr<MemberListInfoContext> &list,
@@ -4455,7 +5428,7 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
         MemberList *ml = m_groupDef->getMemberList(type);
         if (ml)
         {
-          list.reset(MemberListInfoContext::alloc(m_groupDef,relPathAsString(),ml,title,detailed));
+          list.reset(MemberListInfoContext::alloc(m_groupDef,relPathAsString(),ml,title,""));
         }
       }
       if (list)
@@ -4469,19 +5442,19 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
     }
     TemplateVariant macros() const
     {
-      return getMemberList(m_cache.macros,MemberListType_decDefineMembers,theTranslator->trDefines());
+      return getMemberList(getCache().macros,MemberListType_decDefineMembers,theTranslator->trDefines());
     }
     TemplateVariant typedefs() const
     {
-      return getMemberList(m_cache.typedefs,MemberListType_decTypedefMembers,theTranslator->trTypedefs());
+      return getMemberList(getCache().typedefs,MemberListType_decTypedefMembers,theTranslator->trTypedefs());
     }
     TemplateVariant enums() const
     {
-      return getMemberList(m_cache.enums,MemberListType_decEnumMembers,theTranslator->trEnumerations());
+      return getMemberList(getCache().enums,MemberListType_decEnumMembers,theTranslator->trEnumerations());
     }
     TemplateVariant enumValues() const
     {
-      return getMemberList(m_cache.enums,MemberListType_decEnumValMembers,theTranslator->trEnumerationValues());
+      return getMemberList(getCache().enums,MemberListType_decEnumValMembers,theTranslator->trEnumerationValues());
     }
     TemplateVariant functions() const
     {
@@ -4489,113 +5462,115 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
       SrcLangExt lang = m_groupDef->getLanguage();
       if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprograms();
       else if (lang==SrcLangExt_VHDL) title=VhdlDocGen::trFunctionAndProc();
-      return getMemberList(m_cache.functions,MemberListType_decFuncMembers,title);
+      return getMemberList(getCache().functions,MemberListType_decFuncMembers,title);
     }
     TemplateVariant variables() const
     {
-      return getMemberList(m_cache.variables,MemberListType_decVarMembers,theTranslator->trVariables());
+      return getMemberList(getCache().variables,MemberListType_decVarMembers,theTranslator->trVariables());
     }
     TemplateVariant signals() const
     {
-      return getMemberList(m_cache.signals,MemberListType_signals,theTranslator->trSignals());
+      return getMemberList(getCache().signals,MemberListType_signals,theTranslator->trSignals());
     }
     TemplateVariant publicSlots() const
     {
-      return getMemberList(m_cache.publicSlots,MemberListType_pubSlots,theTranslator->trPublicSlots());
+      return getMemberList(getCache().publicSlots,MemberListType_pubSlots,theTranslator->trPublicSlots());
     }
     TemplateVariant protectedSlots() const
     {
-      return getMemberList(m_cache.protectedSlots,MemberListType_proSlots,theTranslator->trProtectedSlots());
+      return getMemberList(getCache().protectedSlots,MemberListType_proSlots,theTranslator->trProtectedSlots());
     }
     TemplateVariant privateSlots() const
     {
-      return getMemberList(m_cache.privateSlots,MemberListType_priSlots,theTranslator->trPrivateSlots());
+      return getMemberList(getCache().privateSlots,MemberListType_priSlots,theTranslator->trPrivateSlots());
     }
     TemplateVariant events() const
     {
-      return getMemberList(m_cache.events,MemberListType_events,theTranslator->trEvents());
+      return getMemberList(getCache().events,MemberListType_events,theTranslator->trEvents());
     }
     TemplateVariant properties() const
     {
-      return getMemberList(m_cache.properties,MemberListType_properties,theTranslator->trProperties());
+      return getMemberList(getCache().properties,MemberListType_properties,theTranslator->trProperties());
     }
     TemplateVariant friends() const
     {
-      return getMemberList(m_cache.friends,MemberListType_friends,theTranslator->trFriends());
+      return getMemberList(getCache().friends,MemberListType_friends,theTranslator->trFriends());
     }
     TemplateVariant memberGroups() const
     {
-      if (!m_cache.memberGroups)
+      Cachable &cache = getCache();
+      if (!cache.memberGroups)
       {
         if (m_groupDef->getMemberGroupSDict())
         {
-          m_cache.memberGroups.reset(MemberGroupListContext::alloc(m_groupDef,relPathAsString(),m_groupDef->getMemberGroupSDict(),m_groupDef->subGrouping()));
+          cache.memberGroups.reset(MemberGroupListContext::alloc(m_groupDef,relPathAsString(),m_groupDef->getMemberGroupSDict(),m_groupDef->subGrouping()));
         }
         else
         {
-          m_cache.memberGroups.reset(MemberGroupListContext::alloc());
+          cache.memberGroups.reset(MemberGroupListContext::alloc());
         }
       }
-      return m_cache.memberGroups.get();
+      return cache.memberGroups.get();
     }
     TemplateVariant detailedMacros() const
     {
-      return getMemberList(m_cache.detailedMacros,MemberListType_docDefineMembers,theTranslator->trDefineDocumentation());
+      return getMemberList(getCache().detailedMacros,MemberListType_docDefineMembers,theTranslator->trDefineDocumentation());
     }
     TemplateVariant detailedTypedefs() const
     {
-      return getMemberList(m_cache.detailedTypedefs,MemberListType_docTypedefMembers,theTranslator->trTypedefDocumentation());
+      return getMemberList(getCache().detailedTypedefs,MemberListType_docTypedefMembers,theTranslator->trTypedefDocumentation());
     }
     TemplateVariant detailedEnums() const
     {
-      return getMemberList(m_cache.detailedEnums,MemberListType_docEnumMembers,theTranslator->trEnumerationTypeDocumentation());
+      return getMemberList(getCache().detailedEnums,MemberListType_docEnumMembers,theTranslator->trEnumerationTypeDocumentation());
     }
     TemplateVariant detailedEnumValues() const
     {
-      return getMemberList(m_cache.detailedEnumValues,MemberListType_docEnumValMembers,theTranslator->trEnumerationValueDocumentation());
+      return getMemberList(getCache().detailedEnumValues,MemberListType_docEnumValMembers,theTranslator->trEnumerationValueDocumentation());
     }
     TemplateVariant detailedFunctions() const
     {
       QCString title = theTranslator->trFunctionDocumentation();
       SrcLangExt lang = m_groupDef->getLanguage();
       if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprogramDocumentation();
-      return getMemberList(m_cache.detailedFunctions,MemberListType_docFuncMembers,title);
+      return getMemberList(getCache().detailedFunctions,MemberListType_docFuncMembers,title);
     }
     TemplateVariant detailedVariables() const
     {
-      return getMemberList(m_cache.detailedVariables,MemberListType_docVarMembers,theTranslator->trVariableDocumentation());
+      return getMemberList(getCache().detailedVariables,MemberListType_docVarMembers,theTranslator->trVariableDocumentation());
     }
     TemplateVariant detailedSignals() const
     {
-      return getMemberList(m_cache.detailedSignals,MemberListType_docSignalMembers,theTranslator->trSignals());
+      return getMemberList(getCache().detailedSignals,MemberListType_docSignalMembers,theTranslator->trSignals());
     }
     TemplateVariant detailedPublicSlots() const
     {
-      return getMemberList(m_cache.detailedPublicSlots,MemberListType_docPubSlotMembers,theTranslator->trPublicSlots());
+      return getMemberList(getCache().detailedPublicSlots,MemberListType_docPubSlotMembers,theTranslator->trPublicSlots());
     }
     TemplateVariant detailedProtectedSlots() const
     {
-      return getMemberList(m_cache.detailedProtectedSlots,MemberListType_docProSlotMembers,theTranslator->trProtectedSlots());
+      return getMemberList(getCache().detailedProtectedSlots,MemberListType_docProSlotMembers,theTranslator->trProtectedSlots());
     }
     TemplateVariant detailedPrivateSlots() const
     {
-      return getMemberList(m_cache.detailedPrivateSlots,MemberListType_docPriSlotMembers,theTranslator->trPrivateSlots());
+      return getMemberList(getCache().detailedPrivateSlots,MemberListType_docPriSlotMembers,theTranslator->trPrivateSlots());
     }
     TemplateVariant detailedEvents() const
     {
-      return getMemberList(m_cache.detailedEvents,MemberListType_docEventMembers,theTranslator->trEventDocumentation(),TRUE);
+      return getMemberList(getCache().detailedEvents,MemberListType_docEventMembers,theTranslator->trEventDocumentation(),TRUE);
     }
     TemplateVariant detailedProperties() const
     {
-      return getMemberList(m_cache.detailedProperties,MemberListType_docPropMembers,theTranslator->trPropertyDocumentation(),TRUE);
+      return getMemberList(getCache().detailedProperties,MemberListType_docPropMembers,theTranslator->trPropertyDocumentation(),TRUE);
     }
     TemplateVariant detailedFriends() const
     {
-      return getMemberList(m_cache.detailedFriends,MemberListType_docFriendMembers,theTranslator->trFriends(),TRUE);
+      return getMemberList(getCache().detailedFriends,MemberListType_docFriendMembers,theTranslator->trFriends(),TRUE);
     }
     TemplateVariant inlineClasses() const
     {
-      if (!m_cache.inlineClasses)
+      Cachable &cache = getCache();
+      if (!cache.inlineClasses)
       {
         TemplateList *classList = TemplateList::alloc();
         if (m_groupDef->getClasses())
@@ -4613,9 +5588,9 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
             }
           }
         }
-        m_cache.inlineClasses.reset(classList);
+        cache.inlineClasses.reset(classList);
       }
-      return m_cache.inlineClasses.get();
+      return cache.inlineClasses.get();
     }
     TemplateVariant compoundType() const
     {
@@ -4623,8 +5598,9 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
     }
   private:
     GroupDef *m_groupDef;
-    struct Cachable
+    struct Cachable : public DefinitionContext<ModuleContext::Private>::Cachable
     {
+      Cachable(GroupDef *gd) : DefinitionContext<ModuleContext::Private>::Cachable(gd) {}
       SharedPtr<TemplateList>               modules;
       SharedPtr<TemplateList>               dirs;
       SharedPtr<TemplateList>               files;
@@ -4663,10 +5639,18 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
       SharedPtr<TemplateList>               inlineClasses;
       ScopedPtr<DotGroupCollaboration>      groupGraph;
     };
-    mutable Cachable m_cache;
+    Cachable &getCache() const
+    {
+      Cachable *c = static_cast<Cachable*>(m_groupDef->cookie());
+      assert(c!=0);
+      return *c;
+    }
+    static PropertyMapper<ModuleContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<ModuleContext::Private> ModuleContext::Private::s_inst;
+
 ModuleContext::ModuleContext(GroupDef *gd) : RefCountedContext("ModuleContext")
 {
   p = new Private(gd);
@@ -4701,7 +5685,8 @@ class ClassListContext::Private : public GenericNodeListContext
         {
           continue;
         }
-        if (cd->isLinkableInProject() && cd->templateMaster()==0)
+        if (cd->isLinkableInProject() && cd->templateMaster()==0 &&
+            !cd->isHidden() && !cd->isEmbeddedInOuterScope())
         {
           append(ClassContext::alloc(cd));
         }
@@ -4740,17 +5725,26 @@ TemplateListIntf::ConstIterator *ClassListContext::createIterator() const
 //------------------------------------------------------------------------
 
 //%% list ClassIndex[Class] : list of classes
-class ClassIndexContext::Private : public PropertyMapper
+class ClassIndexContext::Private
 {
   public:
     Private()
     {
-      addProperty("list",        this,&Private::list);
-      addProperty("fileName",    this,&Private::fileName);
-      addProperty("relPath",     this,&Private::relPath);
-      addProperty("highlight",   this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",       this,&Private::title);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("list",        &Private::list);
+        s_inst.addProperty("fileName",    &Private::fileName);
+        s_inst.addProperty("relPath",     &Private::relPath);
+        s_inst.addProperty("highlight",   &Private::highlight);
+        s_inst.addProperty("subhighlight",&Private::subhighlight);
+        s_inst.addProperty("title",       &Private::title);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant list() const
     {
@@ -4819,8 +5813,11 @@ class ClassIndexContext::Private : public PropertyMapper
       SharedPtr<TemplateList> classes;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<ClassIndexContext::Private> s_inst;
 };
 
+PropertyMapper<ClassIndexContext::Private> ClassIndexContext::Private::s_inst;
+
 ClassIndexContext::ClassIndexContext() : RefCountedContext("ClassIndexContext")
 {
   p = new Private;
@@ -4914,7 +5911,7 @@ static int computePreferredDepth(const TemplateListIntf *list,int maxDepth)
 
 //%% struct ClassHierarchy: inheritance tree
 //%% {
-class ClassHierarchyContext::Private : public PropertyMapper
+class ClassHierarchyContext::Private
 {
   public:
     Private()
@@ -4925,15 +5922,24 @@ class ClassHierarchyContext::Private : public PropertyMapper
       m_classTree->addClassHierarchy(*Doxygen::classSDict,TRUE);
       m_classTree->addClassHierarchy(*Doxygen::hiddenClasses,TRUE);
       //%% ClassInheritance tree
-      addProperty("tree",            this,&Private::tree);
-      addProperty("fileName",        this,&Private::fileName);
-      addProperty("relPath",         this,&Private::relPath);
-      addProperty("highlight",       this,&Private::highlight);
-      addProperty("subhighlight",    this,&Private::subhighlight);
-      addProperty("title",           this,&Private::title);
-      addProperty("preferredDepth",  this,&Private::preferredDepth);
-      addProperty("maxDepth",        this,&Private::maxDepth);
-      addProperty("diagrams",        this,&Private::diagrams);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("tree",            &Private::tree);
+        s_inst.addProperty("fileName",        &Private::fileName);
+        s_inst.addProperty("relPath",         &Private::relPath);
+        s_inst.addProperty("highlight",       &Private::highlight);
+        s_inst.addProperty("subhighlight",    &Private::subhighlight);
+        s_inst.addProperty("title",           &Private::title);
+        s_inst.addProperty("preferredDepth",  &Private::preferredDepth);
+        s_inst.addProperty("maxDepth",        &Private::maxDepth);
+        s_inst.addProperty("diagrams",        &Private::diagrams);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant tree() const
     {
@@ -5027,9 +6033,12 @@ class ClassHierarchyContext::Private : public PropertyMapper
       ScopedPtr<DotGfxHierarchyTable> hierarchy;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<ClassHierarchyContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<ClassHierarchyContext::Private> ClassHierarchyContext::Private::s_inst;
+
 ClassHierarchyContext::ClassHierarchyContext() : RefCountedContext("ClassHierarchyContext")
 {
   p = new Private;
@@ -5049,7 +6058,7 @@ TemplateVariant ClassHierarchyContext::get(const char *name) const
 
 //%% struct NestingNode: node is a nesting relation tree
 //%% {
-class NestingNodeContext::Private : public PropertyMapper
+class NestingNodeContext::Private
 {
   public:
     Private(const NestingNodeContext *parent,const NestingNodeContext *thisNode,
@@ -5057,34 +6066,41 @@ class NestingNodeContext::Private : public PropertyMapper
       : m_parent(parent), m_def(d), m_level(level), m_index(index)
     {
       m_children.reset(NestingContext::alloc(thisNode,level+1));
-      //%% bool is_leaf_node: true if this node does not have any children
-      addProperty("is_leaf_node",this,&Private::isLeafNode);
-      //%% Nesting children: list of nested classes/namespaces
-      addProperty("children",this,&Private::children);
-      //%% [optional] Class class: class info (if this node represents a class)
-      addProperty("class",this,&Private::getClass);
-      //%% [optional] Namespace namespace: namespace info (if this node represents a namespace)
-      addProperty("namespace",this,&Private::getNamespace);
-      //%% [optional] File file: file info (if this node represents a file)
-      addProperty("file",this,&Private::getFile);
-      //%% [optional] Dir dir: directory info (if this node represents a directory)
-      addProperty("dir",this,&Private::getDir);
-      //%% [optional] Page page: page info (if this node represents a page)
-      addProperty("page",this,&Private::getPage);
-      //%% [optional] Module module: module info (if this node represents a module)
-      addProperty("module",this,&Private::getModule);
-      //%% int id
-      addProperty("id",this,&Private::id);
-      //%% string level
-      addProperty("level",this,&Private::level);
-      //%% string name
-      addProperty("name",this,&Private::name);
-      //%% string brief
-      addProperty("brief",this,&Private::brief);
-      //%% bool isLinkable
-      addProperty("isLinkable",this,&Private::isLinkable);
-      addProperty("anchor",this,&Private::anchor);
-      addProperty("fileName",this,&Private::fileName);
+      static bool init=FALSE;
+      if (!init)
+      {
+        //%% bool is_leaf_node: true if this node does not have any children
+        s_inst.addProperty("is_leaf_node",&Private::isLeafNode);
+        //%% Nesting children: list of nested classes/namespaces
+        s_inst.addProperty("children",&Private::children);
+        //%% [optional] Class class: class info (if this node represents a class)
+        s_inst.addProperty("class",&Private::getClass);
+        //%% [optional] Namespace namespace: namespace info (if this node represents a namespace)
+        s_inst.addProperty("namespace",&Private::getNamespace);
+        //%% [optional] File file: file info (if this node represents a file)
+        s_inst.addProperty("file",&Private::getFile);
+        //%% [optional] Dir dir: directory info (if this node represents a directory)
+        s_inst.addProperty("dir",&Private::getDir);
+        //%% [optional] Page page: page info (if this node represents a page)
+        s_inst.addProperty("page",&Private::getPage);
+        //%% [optional] Module module: module info (if this node represents a module)
+        s_inst.addProperty("module",&Private::getModule);
+        //%% int id
+        s_inst.addProperty("id",&Private::id);
+        //%% string level
+        s_inst.addProperty("level",&Private::level);
+        //%% string name
+        s_inst.addProperty("name",&Private::name);
+        //%% string brief
+        s_inst.addProperty("brief",&Private::brief);
+        //%% bool isLinkable
+        s_inst.addProperty("isLinkable",&Private::isLinkable);
+        s_inst.addProperty("anchor",&Private::anchor);
+        s_inst.addProperty("fileName",&Private::fileName);
+        s_inst.addProperty("isReference",&Private::isReference);
+        s_inst.addProperty("externalReference",&Private::externalReference);
+        init=TRUE;
+      }
 
       addNamespaces(addCls);
       addClasses(inherit,hideSuper);
@@ -5092,6 +6108,10 @@ class NestingNodeContext::Private : public PropertyMapper
       addPages();
       addModules();
     }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
     TemplateVariant isLeafNode() const
     {
       return m_children->count()==0;
@@ -5164,7 +6184,7 @@ class NestingNodeContext::Private : public PropertyMapper
     {
       if (!m_cache.pageContext && m_def->definitionType()==Definition::TypePage)
       {
-        m_cache.pageContext.reset(PageContext::alloc((PageDef*)m_def));
+        m_cache.pageContext.reset(PageContext::alloc((PageDef*)m_def,FALSE,FALSE));
       }
       if (m_cache.pageContext)
       {
@@ -5238,6 +6258,14 @@ class NestingNodeContext::Private : public PropertyMapper
     {
       return m_def->getOutputFileBase();
     }
+    TemplateVariant isReference() const
+    {
+      return m_def->isReference();
+    }
+    TemplateVariant externalReference() const
+    {
+      return m_def->externalReference(relPathAsString());
+    }
 
     //------------------------------------------------------------------
 
@@ -5326,9 +6354,12 @@ class NestingNodeContext::Private : public PropertyMapper
       ScopedPtr<TemplateVariant>  brief;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<NestingNodeContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<NestingNodeContext::Private> NestingNodeContext::Private::s_inst;
+
 NestingNodeContext::NestingNodeContext(const NestingNodeContext *parent,
                                        Definition *d,int index,int level,bool addClass,bool inherit,bool hideSuper)
    : RefCountedContext("NestingNodeContext")
@@ -5658,7 +6689,7 @@ void NestingContext::addDerivedClasses(const BaseClassList *bcl,bool hideSuper)
 
 //%% struct ClassTree: Class nesting relations
 //%% {
-class ClassTreeContext::Private : public PropertyMapper
+class ClassTreeContext::Private
 {
   public:
     Private()
@@ -5673,16 +6704,25 @@ class ClassTreeContext::Private : public PropertyMapper
         m_classTree->addClasses(*Doxygen::classSDict,TRUE);
       }
       //%% Nesting tree
-      addProperty("tree",this,&Private::tree);
-      addProperty("fileName",this,&Private::fileName);
-      addProperty("relPath",this,&Private::relPath);
-      addProperty("highlight",this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",this,&Private::title);
-      addProperty("preferredDepth",this,&Private::preferredDepth);
-      addProperty("maxDepth",this,&Private::maxDepth);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("tree",          &Private::tree);
+        s_inst.addProperty("fileName",      &Private::fileName);
+        s_inst.addProperty("relPath",       &Private::relPath);
+        s_inst.addProperty("highlight",     &Private::highlight);
+        s_inst.addProperty("subhighlight",  &Private::subhighlight);
+        s_inst.addProperty("title",         &Private::title);
+        s_inst.addProperty("preferredDepth",&Private::preferredDepth);
+        s_inst.addProperty("maxDepth",      &Private::maxDepth);
+        init=TRUE;
+      }
     }
-    TemplateVariant tree() const
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
+    TemplateVariant tree() const
     {
       return m_classTree.get();
     }
@@ -5749,9 +6789,12 @@ class ClassTreeContext::Private : public PropertyMapper
       bool  preferredDepthComputed;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<ClassTreeContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<ClassTreeContext::Private> ClassTreeContext::Private::s_inst;
+
 ClassTreeContext::ClassTreeContext() : RefCountedContext("ClassTreeContext")
 {
   p = new Private;
@@ -5818,7 +6861,7 @@ TemplateListIntf::ConstIterator *NamespaceListContext::createIterator() const
 
 //%% struct NamespaceTree: tree of nested namespace
 //%% {
-class NamespaceTreeContext::Private : public PropertyMapper
+class NamespaceTreeContext::Private
 {
   public:
     Private()
@@ -5829,14 +6872,23 @@ class NamespaceTreeContext::Private : public PropertyMapper
         m_namespaceTree->addNamespaces(*Doxygen::namespaceSDict,TRUE,FALSE);
       }
       //%% Nesting tree
-      addProperty("tree",this,&Private::tree);
-      addProperty("fileName",this,&Private::fileName);
-      addProperty("relPath",this,&Private::relPath);
-      addProperty("highlight",this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",this,&Private::title);
-      addProperty("preferredDepth",this,&Private::preferredDepth);
-      addProperty("maxDepth",this,&Private::maxDepth);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("tree",          &Private::tree);
+        s_inst.addProperty("fileName",      &Private::fileName);
+        s_inst.addProperty("relPath",       &Private::relPath);
+        s_inst.addProperty("highlight",     &Private::highlight);
+        s_inst.addProperty("subhighlight",  &Private::subhighlight);
+        s_inst.addProperty("title",         &Private::title);
+        s_inst.addProperty("preferredDepth",&Private::preferredDepth);
+        s_inst.addProperty("maxDepth",      &Private::maxDepth);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant tree() const
     {
@@ -5905,9 +6957,12 @@ class NamespaceTreeContext::Private : public PropertyMapper
       bool  preferredDepthComputed;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<NamespaceTreeContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<NamespaceTreeContext::Private> NamespaceTreeContext::Private::s_inst;
+
 NamespaceTreeContext::NamespaceTreeContext() : RefCountedContext("NamespaceTreeContext")
 {
   p = new Private;
@@ -6079,7 +7134,7 @@ void UsedFilesContext::addFile(FileDef *fd)
 
 //%% struct FileTree: tree of directories and files
 //%% {
-class FileTreeContext::Private : public PropertyMapper
+class FileTreeContext::Private
 {
   public:
     Private()
@@ -6095,14 +7150,23 @@ class FileTreeContext::Private : public PropertyMapper
         m_dirFileTree->addFiles(*Doxygen::inputNameList);
       }
       //%% DirFile tree:
-      addProperty("tree",this,&Private::tree);
-      addProperty("fileName",this,&Private::fileName);
-      addProperty("relPath",this,&Private::relPath);
-      addProperty("highlight",this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",this,&Private::title);
-      addProperty("preferredDepth",this,&Private::preferredDepth);
-      addProperty("maxDepth",this,&Private::maxDepth);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("tree",          &Private::tree);
+        s_inst.addProperty("fileName",      &Private::fileName);
+        s_inst.addProperty("relPath",       &Private::relPath);
+        s_inst.addProperty("highlight",     &Private::highlight);
+        s_inst.addProperty("subhighlight",  &Private::subhighlight);
+        s_inst.addProperty("title",         &Private::title);
+        s_inst.addProperty("preferredDepth",&Private::preferredDepth);
+        s_inst.addProperty("maxDepth",      &Private::maxDepth);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant tree() const
     {
@@ -6158,9 +7222,12 @@ class FileTreeContext::Private : public PropertyMapper
       bool  preferredDepthComputed;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<FileTreeContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<FileTreeContext::Private> FileTreeContext::Private::s_inst;
+
 FileTreeContext::FileTreeContext() : RefCountedContext("FileTreeContext")
 {
   p = new Private;
@@ -6180,27 +7247,36 @@ TemplateVariant FileTreeContext::get(const char *name) const
 
 //%% struct PageTree: tree of related pages
 //%% {
-class PageTreeContext::Private : public PropertyMapper
+class PageTreeContext::Private
 {
   public:
-    Private()
+    Private(const PageSDict *pages)
     {
       m_pageTree.reset(NestingContext::alloc(0,0));
       // Add pages
-      if (Doxygen::pageSDict)
+      if (pages)
       {
-        m_pageTree->addPages(*Doxygen::pageSDict,TRUE);
+        m_pageTree->addPages(*pages,TRUE);
       }
 
       //%% PageNodeList tree:
-      addProperty("tree",this,&Private::tree);
-      addProperty("fileName",this,&Private::fileName);
-      addProperty("relPath",this,&Private::relPath);
-      addProperty("highlight",this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",this,&Private::title);
-      addProperty("preferredDepth",this,&Private::preferredDepth);
-      addProperty("maxDepth",this,&Private::maxDepth);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("tree",          &Private::tree);
+        s_inst.addProperty("fileName",      &Private::fileName);
+        s_inst.addProperty("relPath",       &Private::relPath);
+        s_inst.addProperty("highlight",     &Private::highlight);
+        s_inst.addProperty("subhighlight",  &Private::subhighlight);
+        s_inst.addProperty("title",         &Private::title);
+        s_inst.addProperty("preferredDepth",&Private::preferredDepth);
+        s_inst.addProperty("maxDepth",      &Private::maxDepth);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant tree() const
     {
@@ -6255,12 +7331,15 @@ class PageTreeContext::Private : public PropertyMapper
       bool  preferredDepthComputed;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<PageTreeContext::Private> s_inst;
 };
 //%% }
 
-PageTreeContext::PageTreeContext() : RefCountedContext("PageTreeContext")
+PropertyMapper<PageTreeContext::Private> PageTreeContext::Private::s_inst;
+
+PageTreeContext::PageTreeContext(const PageSDict *pages) : RefCountedContext("PageTreeContext")
 {
-  p = new Private;
+  p = new Private(pages);
 }
 
 PageTreeContext::~PageTreeContext()
@@ -6287,7 +7366,7 @@ class PageListContext::Private : public GenericNodeListContext
       {
         if (!pd->getGroupDef() && !pd->isReference())
         {
-          append(PageContext::alloc(pd));
+          append(PageContext::alloc(pd,FALSE,FALSE));
         }
       }
     }
@@ -6322,6 +7401,55 @@ TemplateListIntf::ConstIterator *PageListContext::createIterator() const
 
 //------------------------------------------------------------------------
 
+//%% list ExampleList[Page]: list of pages
+class ExampleListContext::Private : public GenericNodeListContext
+{
+  public:
+    Private()
+    {
+      if (Doxygen::exampleSDict)
+      {
+        PageSDict::Iterator pdi(*Doxygen::exampleSDict);
+        PageDef *pd=0;
+        for (pdi.toFirst();(pd=pdi.current());++pdi)
+        {
+          if (!pd->getGroupDef() && !pd->isReference())
+          {
+            append(PageContext::alloc(pd,FALSE,TRUE));
+          }
+        }
+      }
+    }
+};
+
+ExampleListContext::ExampleListContext() : RefCountedContext("ExampleListContext")
+{
+  p = new Private;
+}
+
+ExampleListContext::~ExampleListContext()
+{
+  delete p;
+}
+
+// TemplateListIntf
+int ExampleListContext::count() const
+{
+  return p->count();
+}
+
+TemplateVariant ExampleListContext::at(int index) const
+{
+  return p->at(index);
+}
+
+TemplateListIntf::ConstIterator *ExampleListContext::createIterator() const
+{
+  return p->createIterator();
+}
+
+//------------------------------------------------------------------------
+
 //%% list ModuleList[ModuleNode]: list of directories and/or files
 class ModuleListContext::Private : public GenericNodeListContext
 {
@@ -6371,7 +7499,7 @@ TemplateListIntf::ConstIterator *ModuleListContext::createIterator() const
 
 //%% struct ModuleTree: tree of modules
 //%% {
-class ModuleTreeContext::Private : public PropertyMapper
+class ModuleTreeContext::Private
 {
   public:
     Private()
@@ -6384,14 +7512,23 @@ class ModuleTreeContext::Private : public PropertyMapper
       }
 
       //%% ModuleList tree:
-      addProperty("tree",this,&Private::tree);
-      addProperty("fileName",this,&Private::fileName);
-      addProperty("relPath",this,&Private::relPath);
-      addProperty("highlight",this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",this,&Private::title);
-      addProperty("preferredDepth",this,&Private::preferredDepth);
-      addProperty("maxDepth",this,&Private::maxDepth);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("tree",          &Private::tree);
+        s_inst.addProperty("fileName",      &Private::fileName);
+        s_inst.addProperty("relPath",       &Private::relPath);
+        s_inst.addProperty("highlight",     &Private::highlight);
+        s_inst.addProperty("subhighlight",  &Private::subhighlight);
+        s_inst.addProperty("title",         &Private::title);
+        s_inst.addProperty("preferredDepth",&Private::preferredDepth);
+        s_inst.addProperty("maxDepth",      &Private::maxDepth);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant tree() const
     {
@@ -6446,9 +7583,12 @@ class ModuleTreeContext::Private : public PropertyMapper
       bool  preferredDepthComputed;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<ModuleTreeContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<ModuleTreeContext::Private> ModuleTreeContext::Private::s_inst;
+
 ModuleTreeContext::ModuleTreeContext() : RefCountedContext("ModuleTreeContext")
 {
   p = new Private;
@@ -6468,15 +7608,26 @@ TemplateVariant ModuleTreeContext::get(const char *name) const
 
 //%% struct NavPathElem: list of examples page
 //%% {
-class NavPathElemContext::Private : public PropertyMapper
+class NavPathElemContext::Private
 {
   public:
     Private(Definition *def) : m_def(def)
     {
-      addProperty("isLinkable",this,&Private::isLinkable);
-      addProperty("fileName",this,&Private::fileName);
-      addProperty("anchor",this,&Private::anchor);
-      addProperty("text",this,&Private::text);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("isLinkable",       &Private::isLinkable);
+        s_inst.addProperty("fileName",         &Private::fileName);
+        s_inst.addProperty("anchor",           &Private::anchor);
+        s_inst.addProperty("text",             &Private::text);
+        s_inst.addProperty("isReference",      &Private::isReference);
+        s_inst.addProperty("externalReference",&Private::externalReference);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant isLinkable() const
     {
@@ -6511,11 +7662,27 @@ class NavPathElemContext::Private : public PropertyMapper
       }
       return text;
     }
+    TemplateVariant isReference() const
+    {
+      return m_def->isReference();
+    }
+    QCString relPathAsString() const
+    {
+      static bool createSubdirs = Config_getBool("CREATE_SUBDIRS");
+      return createSubdirs ? QCString("../../") : QCString("");
+    }
+    TemplateVariant externalReference() const
+    {
+      return m_def->externalReference(relPathAsString());
+    }
   private:
     Definition *m_def;
+    static PropertyMapper<NavPathElemContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<NavPathElemContext::Private> NavPathElemContext::Private::s_inst;
+
 NavPathElemContext::NavPathElemContext(Definition *def) : RefCountedContext("NavPathElemContext")
 {
   p = new Private(def);
@@ -6536,12 +7703,39 @@ TemplateVariant NavPathElemContext::get(const char *name) const
 
 //%% struct ExampleList: list of examples page
 //%% {
-class ExampleListContext::Private : public PropertyMapper
+class ExampleTreeContext::Private
 {
   public:
-    TemplateVariant items() const
+    Private()
+    {
+      m_exampleTree.reset(NestingContext::alloc(0,0));
+      // Add pages
+      if (Doxygen::exampleSDict)
+      {
+        m_exampleTree->addPages(*Doxygen::exampleSDict,TRUE);
+      }
+
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("tree",          &Private::tree);
+        s_inst.addProperty("fileName",      &Private::fileName);
+        s_inst.addProperty("relPath",       &Private::relPath);
+        s_inst.addProperty("highlight",     &Private::highlight);
+        s_inst.addProperty("subhighlight",  &Private::subhighlight);
+        s_inst.addProperty("title",         &Private::title);
+        s_inst.addProperty("preferredDepth",&Private::preferredDepth);
+        s_inst.addProperty("maxDepth",      &Private::maxDepth);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
+    TemplateVariant tree() const
     {
-      return m_pageList.get();
+      return m_exampleTree.get();
     }
     TemplateVariant fileName() const
     {
@@ -6563,33 +7757,52 @@ class ExampleListContext::Private : public PropertyMapper
     {
       return theTranslator->trExamples();
     }
-    Private()
+    TemplateVariant maxDepth() const
     {
-      m_pageList.reset(PageListContext::alloc(Doxygen::exampleSDict));
-
-      addProperty("items",this,&Private::items);
-      addProperty("fileName",this,&Private::fileName);
-      addProperty("relPath",this,&Private::relPath);
-      addProperty("highlight",this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",this,&Private::title);
+      if (!m_cache.maxDepthComputed)
+      {
+        m_cache.maxDepth = computeMaxDepth(m_exampleTree.get());
+        m_cache.maxDepthComputed=TRUE;
+      }
+      return m_cache.maxDepth;
+    }
+    TemplateVariant preferredDepth() const
+    {
+      if (!m_cache.preferredDepthComputed)
+      {
+        m_cache.preferredDepth = computePreferredDepth(m_exampleTree.get(),maxDepth().toInt());
+        m_cache.preferredDepthComputed=TRUE;
+      }
+      return m_cache.preferredDepth;
     }
   private:
-    SharedPtr<PageListContext> m_pageList;
+    SharedPtr<NestingContext> m_exampleTree;
+    struct Cachable
+    {
+      Cachable() : maxDepthComputed(FALSE), preferredDepthComputed(FALSE) {}
+      int   maxDepth;
+      bool  maxDepthComputed;
+      int   preferredDepth;
+      bool  preferredDepthComputed;
+    };
+    mutable Cachable m_cache;
+    static PropertyMapper<ExampleTreeContext::Private> s_inst;
 };
 //%% }
 
-ExampleListContext::ExampleListContext() : RefCountedContext("ExampleListContext")
+PropertyMapper<ExampleTreeContext::Private> ExampleTreeContext::Private::s_inst;
+
+ExampleTreeContext::ExampleTreeContext() : RefCountedContext("ExampleTreeContext")
 {
   p = new Private;
 }
 
-ExampleListContext::~ExampleListContext()
+ExampleTreeContext::~ExampleTreeContext()
 {
   delete p;
 }
 
-TemplateVariant ExampleListContext::get(const char *name) const
+TemplateVariant ExampleTreeContext::get(const char *name) const
 {
   return p->get(name);
 }
@@ -6598,26 +7811,35 @@ TemplateVariant ExampleListContext::get(const char *name) const
 
 //%% struct GlobalsIndex: list of examples page
 //%% {
-class GlobalsIndexContext::Private : public PropertyMapper
+class GlobalsIndexContext::Private
 {
   public:
     Private()
     {
-      addProperty("all",         this,&Private::all);
-      addProperty("functions",   this,&Private::functions);
-      addProperty("variables",   this,&Private::variables);
-      addProperty("typedefs",    this,&Private::typedefs);
-      addProperty("enums",       this,&Private::enums);
-      addProperty("enumValues",  this,&Private::enumValues);
-      addProperty("macros",      this,&Private::macros);
-      addProperty("properties",  this,&Private::properties);
-      addProperty("events",      this,&Private::events);
-      addProperty("related",     this,&Private::related);
-      addProperty("fileName",    this,&Private::fileName);
-      addProperty("relPath",     this,&Private::relPath);
-      addProperty("highlight",   this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",       this,&Private::title);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("all",         &Private::all);
+        s_inst.addProperty("functions",   &Private::functions);
+        s_inst.addProperty("variables",   &Private::variables);
+        s_inst.addProperty("typedefs",    &Private::typedefs);
+        s_inst.addProperty("enums",       &Private::enums);
+        s_inst.addProperty("enumValues",  &Private::enumValues);
+        s_inst.addProperty("macros",      &Private::macros);
+        s_inst.addProperty("properties",  &Private::properties);
+        s_inst.addProperty("events",      &Private::events);
+        s_inst.addProperty("related",     &Private::related);
+        s_inst.addProperty("fileName",    &Private::fileName);
+        s_inst.addProperty("relPath",     &Private::relPath);
+        s_inst.addProperty("highlight",   &Private::highlight);
+        s_inst.addProperty("subhighlight",&Private::subhighlight);
+        s_inst.addProperty("title",       &Private::title);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     typedef bool (MemberDef::*MemberFunc)() const;
     TemplateVariant getMembersFiltered(SharedPtr<TemplateList> &listRef,MemberFunc filter) const
@@ -6721,9 +7943,12 @@ class GlobalsIndexContext::Private : public PropertyMapper
       SharedPtr<TemplateList> macros;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<GlobalsIndexContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<GlobalsIndexContext::Private> GlobalsIndexContext::Private::s_inst;
+
 GlobalsIndexContext::GlobalsIndexContext() : RefCountedContext("GlobalsIndexContext")
 {
   p = new Private;
@@ -6743,26 +7968,35 @@ TemplateVariant GlobalsIndexContext::get(const char *name) const
 
 //%% struct ClassMembersIndex: list of examples page
 //%% {
-class ClassMembersIndexContext::Private : public PropertyMapper
+class ClassMembersIndexContext::Private
 {
   public:
     Private()
     {
-      addProperty("all",         this,&Private::all);
-      addProperty("functions",   this,&Private::functions);
-      addProperty("variables",   this,&Private::variables);
-      addProperty("typedefs",    this,&Private::typedefs);
-      addProperty("enums",       this,&Private::enums);
-      addProperty("enumValues",  this,&Private::enumValues);
-      addProperty("macros",      this,&Private::macros);
-      addProperty("properties",  this,&Private::properties);
-      addProperty("events",      this,&Private::events);
-      addProperty("related",     this,&Private::related);
-      addProperty("fileName",    this,&Private::fileName);
-      addProperty("relPath",     this,&Private::relPath);
-      addProperty("highlight",   this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",       this,&Private::title);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("all",         &Private::all);
+        s_inst.addProperty("functions",   &Private::functions);
+        s_inst.addProperty("variables",   &Private::variables);
+        s_inst.addProperty("typedefs",    &Private::typedefs);
+        s_inst.addProperty("enums",       &Private::enums);
+        s_inst.addProperty("enumValues",  &Private::enumValues);
+        s_inst.addProperty("macros",      &Private::macros);
+        s_inst.addProperty("properties",  &Private::properties);
+        s_inst.addProperty("events",      &Private::events);
+        s_inst.addProperty("related",     &Private::related);
+        s_inst.addProperty("fileName",    &Private::fileName);
+        s_inst.addProperty("relPath",     &Private::relPath);
+        s_inst.addProperty("highlight",   &Private::highlight);
+        s_inst.addProperty("subhighlight",&Private::subhighlight);
+        s_inst.addProperty("title",       &Private::title);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     typedef bool (MemberDef::*MemberFunc)() const;
     TemplateVariant getMembersFiltered(SharedPtr<TemplateList> &listRef,MemberFunc filter) const
@@ -6868,9 +8102,12 @@ class ClassMembersIndexContext::Private : public PropertyMapper
       SharedPtr<TemplateList> related;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<ClassMembersIndexContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<ClassMembersIndexContext::Private> ClassMembersIndexContext::Private::s_inst;
+
 ClassMembersIndexContext::ClassMembersIndexContext() : RefCountedContext("ClassMembersIndexContext")
 {
   p = new Private;
@@ -6890,26 +8127,35 @@ TemplateVariant ClassMembersIndexContext::get(const char *name) const
 
 //%% struct NamespaceMembersIndex: list of examples page
 //%% {
-class NamespaceMembersIndexContext::Private : public PropertyMapper
+class NamespaceMembersIndexContext::Private
 {
   public:
     Private()
     {
-      addProperty("all",         this,&Private::all);
-      addProperty("functions",   this,&Private::functions);
-      addProperty("variables",   this,&Private::variables);
-      addProperty("typedefs",    this,&Private::typedefs);
-      addProperty("enums",       this,&Private::enums);
-      addProperty("enumValues",  this,&Private::enumValues);
-      addProperty("macros",      this,&Private::macros);
-      addProperty("properties",  this,&Private::properties);
-      addProperty("events",      this,&Private::events);
-      addProperty("related",     this,&Private::related);
-      addProperty("fileName",    this,&Private::fileName);
-      addProperty("relPath",     this,&Private::relPath);
-      addProperty("highlight",   this,&Private::highlight);
-      addProperty("subhighlight",this,&Private::subhighlight);
-      addProperty("title",       this,&Private::title);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("all",         &Private::all);
+        s_inst.addProperty("functions",   &Private::functions);
+        s_inst.addProperty("variables",   &Private::variables);
+        s_inst.addProperty("typedefs",    &Private::typedefs);
+        s_inst.addProperty("enums",       &Private::enums);
+        s_inst.addProperty("enumValues",  &Private::enumValues);
+        s_inst.addProperty("macros",      &Private::macros);
+        s_inst.addProperty("properties",  &Private::properties);
+        s_inst.addProperty("events",      &Private::events);
+        s_inst.addProperty("related",     &Private::related);
+        s_inst.addProperty("fileName",    &Private::fileName);
+        s_inst.addProperty("relPath",     &Private::relPath);
+        s_inst.addProperty("highlight",   &Private::highlight);
+        s_inst.addProperty("subhighlight",&Private::subhighlight);
+        s_inst.addProperty("title",       &Private::title);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     typedef bool (MemberDef::*MemberFunc)() const;
     TemplateVariant getMembersFiltered(SharedPtr<TemplateList> &listRef,MemberFunc filter) const
@@ -7012,9 +8258,12 @@ class NamespaceMembersIndexContext::Private : public PropertyMapper
       SharedPtr<TemplateList> enumValues;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<NamespaceMembersIndexContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<NamespaceMembersIndexContext::Private> NamespaceMembersIndexContext::Private::s_inst;
+
 NamespaceMembersIndexContext::NamespaceMembersIndexContext() : RefCountedContext("NamespaceMembersIndexContext")
 {
   p = new Private;
@@ -7034,12 +8283,21 @@ TemplateVariant NamespaceMembersIndexContext::get(const char *name) const
 
 //%% struct InheritanceGraph: a connected graph reprenting part of the overall interitance tree
 //%% {
-class InheritanceGraphContext::Private : public PropertyMapper
+class InheritanceGraphContext::Private
 {
   public:
     Private(DotGfxHierarchyTable *hierarchy,DotNode *n,int id) : m_hierarchy(hierarchy), m_node(n), m_id(id)
     {
-      addProperty("graph",this,&Private::graph);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("graph",&Private::graph);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant graph() const
     {
@@ -7062,8 +8320,11 @@ class InheritanceGraphContext::Private : public PropertyMapper
     DotGfxHierarchyTable *m_hierarchy;
     DotNode *m_node;
     int m_id;
+    static PropertyMapper<InheritanceGraphContext::Private> s_inst;
 };
 
+PropertyMapper<InheritanceGraphContext::Private> InheritanceGraphContext::Private::s_inst;
+
 InheritanceGraphContext::InheritanceGraphContext(DotGfxHierarchyTable *hierarchy,DotNode *n,int id)
    : RefCountedContext("InheritanceGraphContext")
 {
@@ -7085,13 +8346,22 @@ TemplateVariant InheritanceGraphContext::get(const char *name) const
 
 //%% struct InheritanceNode: a class in the inheritance list
 //%% {
-class InheritanceNodeContext::Private : public PropertyMapper
+class InheritanceNodeContext::Private
 {
   public:
     Private(ClassDef *cd,const QCString &name) : m_classDef(cd), m_name(name)
     {
-      addProperty("class",this,&Private::getClass);
-      addProperty("name",this,&Private::name);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("class",&Private::getClass);
+        s_inst.addProperty("name", &Private::name);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant getClass() const
     {
@@ -7109,9 +8379,12 @@ class InheritanceNodeContext::Private : public PropertyMapper
     ClassDef *m_classDef;
     mutable SharedPtr<ClassContext> m_classContext;
     QCString m_name;
+    static PropertyMapper<InheritanceNodeContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<InheritanceNodeContext::Private> InheritanceNodeContext::Private::s_inst;
+
 InheritanceNodeContext::InheritanceNodeContext(ClassDef *cd,const QCString &name) : RefCountedContext("InheritanceNodeContext")
 {
   p = new Private(cd,name);
@@ -7266,19 +8539,28 @@ TemplateListIntf::ConstIterator *MemberListContext::createIterator() const
 
 //%% struct MemberInfo: member information
 //%% {
-class MemberInfoContext::Private : public PropertyMapper
+class MemberInfoContext::Private
 {
   public:
     Private(const MemberInfo *mi) : m_memberInfo(mi)
     {
-      //%% string protection
-      addProperty("protection",this,&Private::protection);
-      //%% string virtualness
-      addProperty("virtualness",this,&Private::virtualness);
-      //%% string ambiguityScope
-      addProperty("ambiguityScope",this,&Private::ambiguityScope);
-      //%% Member member
-      addProperty("member",this,&Private::member);
+      static bool init=FALSE;
+      if (!init)
+      {
+        //%% string protection
+        s_inst.addProperty("protection",    &Private::protection);
+        //%% string virtualness
+        s_inst.addProperty("virtualness",   &Private::virtualness);
+        //%% string ambiguityScope
+        s_inst.addProperty("ambiguityScope",&Private::ambiguityScope);
+        //%% Member member
+        s_inst.addProperty("member",        &Private::member);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant protection() const
     {
@@ -7323,9 +8605,12 @@ class MemberInfoContext::Private : public PropertyMapper
   private:
     const MemberInfo *m_memberInfo;
     mutable SharedPtr<MemberContext> m_member;
+    static PropertyMapper<MemberInfoContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<MemberInfoContext::Private> MemberInfoContext::Private::s_inst;
+
 MemberInfoContext::MemberInfoContext(const MemberInfo *mi) : RefCountedContext("MemberInfoContext")
 {
   p = new Private(mi);
@@ -7415,7 +8700,7 @@ TemplateListIntf::ConstIterator *AllMembersListContext::createIterator() const
 
 //%% struct MemberGroupInfo: member group information
 //%% {
-class MemberGroupInfoContext::Private : public PropertyMapper
+class MemberGroupInfoContext::Private
 {
   public:
     Private(Definition *def,const QCString &relPath,const MemberGroup *mg) :
@@ -7423,13 +8708,22 @@ class MemberGroupInfoContext::Private : public PropertyMapper
       m_relPath(relPath),
       m_memberGroup(mg)
     {
-      addProperty("members",      this,&Private::members);
-      addProperty("title",        this,&Private::groupTitle);
-      addProperty("subtitle",     this,&Private::groupSubtitle);
-      addProperty("anchor",       this,&Private::groupAnchor);
-      addProperty("memberGroups", this,&Private::memberGroups);
-      addProperty("docs",         this,&Private::docs);
-      addProperty("inherited",    this,&Private::inherited);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("members",      &Private::members);
+        s_inst.addProperty("title",        &Private::groupTitle);
+        s_inst.addProperty("subtitle",     &Private::groupSubtitle);
+        s_inst.addProperty("anchor",       &Private::groupAnchor);
+        s_inst.addProperty("memberGroups", &Private::memberGroups);
+        s_inst.addProperty("docs",         &Private::docs);
+        s_inst.addProperty("inherited",    &Private::inherited);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant members() const
     {
@@ -7493,9 +8787,12 @@ class MemberGroupInfoContext::Private : public PropertyMapper
       ScopedPtr<TemplateVariant>        docs;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<MemberGroupInfoContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<MemberGroupInfoContext::Private> MemberGroupInfoContext::Private::s_inst;
+
 MemberGroupInfoContext::MemberGroupInfoContext(Definition *def,
        const QCString &relPath,const MemberGroup *mg) : RefCountedContext("MemberGroupInfoContext")
 {
@@ -7586,7 +8883,7 @@ TemplateListIntf::ConstIterator *MemberGroupListContext::createIterator() const
 
 //%% struct MemberListInfo: member list information
 //%% {
-class MemberListInfoContext::Private : public PropertyMapper
+class MemberListInfoContext::Private
 {
   public:
     Private(Definition *def,const QCString &relPath,const MemberList *ml,const QCString &title,const QCString &subtitle) :
@@ -7596,12 +8893,21 @@ class MemberListInfoContext::Private : public PropertyMapper
       m_title(title),
       m_subtitle(subtitle)
     {
-      addProperty("members",      this,&Private::members);
-      addProperty("title",        this,&Private::title);
-      addProperty("subtitle",     this,&Private::subtitle);
-      addProperty("anchor",       this,&Private::anchor);
-      addProperty("memberGroups", this,&Private::memberGroups);
-      addProperty("inherited",    this,&Private::inherited);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("members",      &Private::members);
+        s_inst.addProperty("title",        &Private::title);
+        s_inst.addProperty("subtitle",     &Private::subtitle);
+        s_inst.addProperty("anchor",       &Private::anchor);
+        s_inst.addProperty("memberGroups", &Private::memberGroups);
+        s_inst.addProperty("inherited",    &Private::inherited);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant members() const
     {
@@ -7662,9 +8968,12 @@ class MemberListInfoContext::Private : public PropertyMapper
       SharedPtr<InheritedMemberInfoListContext> inherited;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<MemberListInfoContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<MemberListInfoContext::Private> MemberListInfoContext::Private::s_inst;
+
 MemberListInfoContext::MemberListInfoContext(
            Definition *def,const QCString &relPath,const MemberList *ml,
            const QCString &title,const QCString &subtitle) : RefCountedContext("MemberListInfoContext")
@@ -7686,17 +8995,26 @@ TemplateVariant MemberListInfoContext::get(const char *name) const
 
 //%% struct InheritedMemberInfo: inherited member information
 //%% {
-class InheritedMemberInfoContext::Private : public PropertyMapper
+class InheritedMemberInfoContext::Private
 {
   public:
     Private(ClassDef *cd,MemberList *ml,const QCString &title)
       : m_class(cd), m_memberList(ml), m_title(title)
     {
-      addProperty("class",         this,&Private::getClass);
-      addProperty("title",         this,&Private::title);
-      addProperty("members",       this,&Private::members);
-      addProperty("id",            this,&Private::id);
-      addProperty("inheritedFrom", this,&Private::inheritedFrom);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("class",         &Private::getClass);
+        s_inst.addProperty("title",         &Private::title);
+        s_inst.addProperty("members",       &Private::members);
+        s_inst.addProperty("id",            &Private::id);
+        s_inst.addProperty("inheritedFrom", &Private::inheritedFrom);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     virtual ~Private()
     {
@@ -7745,9 +9063,12 @@ class InheritedMemberInfoContext::Private : public PropertyMapper
     mutable SharedPtr<ClassContext> m_classCtx;
     mutable SharedPtr<MemberListContext> m_memberListCtx;
     mutable SharedPtr<TemplateList> m_inheritedFrom;
+    static PropertyMapper<InheritedMemberInfoContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<InheritedMemberInfoContext::Private> InheritedMemberInfoContext::Private::s_inst;
+
 InheritedMemberInfoContext::InheritedMemberInfoContext(ClassDef *cd,MemberList *ml,
                                                        const QCString &title) : RefCountedContext("InheritedMemberInfoContext")
 {
@@ -7924,19 +9245,28 @@ TemplateListIntf::ConstIterator *InheritedMemberInfoListContext::createIterator(
 
 //%% struct Argument: parameter information
 //%% {
-class ArgumentContext::Private : public PropertyMapper
+class ArgumentContext::Private
 {
   public:
     Private(const Argument *arg,Definition *def,const QCString &relPath) :
       m_argument(arg), m_def(def), m_relPath(relPath)
     {
-      addProperty("type",     this,&Private::type);
-      addProperty("name",     this,&Private::name);
-      addProperty("defVal",   this,&Private::defVal);
-      addProperty("docs",     this,&Private::docs);
-      addProperty("attrib",   this,&Private::attrib);
-      addProperty("array",    this,&Private::array);
-      addProperty("namePart", this,&Private::namePart);
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("type",     &Private::type);
+        s_inst.addProperty("name",     &Private::name);
+        s_inst.addProperty("defVal",   &Private::defVal);
+        s_inst.addProperty("docs",     &Private::docs);
+        s_inst.addProperty("attrib",   &Private::attrib);
+        s_inst.addProperty("array",    &Private::array);
+        s_inst.addProperty("namePart", &Private::namePart);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
     }
     TemplateVariant type() const
     {
@@ -7995,9 +9325,12 @@ class ArgumentContext::Private : public PropertyMapper
       ScopedPtr<TemplateVariant> docs;
     };
     mutable Cachable m_cache;
+    static PropertyMapper<ArgumentContext::Private> s_inst;
 };
 //%% }
 
+PropertyMapper<ArgumentContext::Private> ArgumentContext::Private::s_inst;
+
 ArgumentContext::ArgumentContext(const Argument *al,Definition *def,const QCString &relPath) : RefCountedContext("ArgumentContext")
 {
   p = new Private(al,def,relPath);
@@ -8068,81 +9401,639 @@ TemplateListIntf::ConstIterator *ArgumentListContext::createIterator() const
 
 //------------------------------------------------------------------------
 
-class HtmlEscaper : public TemplateEscapeIntf
-{
-  public:
-    QCString escape(const QCString &s)
-    {
-      return convertToHtml(s,TRUE);
-    }
-};
+// SymbolIndex
+//  - name: string
+//  - letter: string
+//  - symbolGroups: SymbolGroupList
+// SymbolGroupList: list of SymbolGroups
+// SymbolGroup
+//  - id
+//  - name
+//  - symbols: SymbolList
+// SymbolList: list of Symbols
+// Symbol
+//  - obj
+//  - scope
+//  - relPath
 
 //------------------------------------------------------------------------
 
-class HtmlSpaceless : public TemplateSpacelessIntf
+//%% struct SymbolGroup: search group of similar symbols
+//%% {
+class SymbolContext::Private
 {
   public:
-    HtmlSpaceless() { reset(); }
-    void reset()
+    Private(const Definition *d,const Definition *prev,
+            const Definition *next) : m_def(d), m_prevDef(prev), m_nextDef(next)
     {
-      m_insideTag = FALSE;
-      m_insideString = '\0';
-      m_removeSpaces = TRUE;
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("fileName",&Private::fileName);
+        s_inst.addProperty("anchor",  &Private::anchor);
+        s_inst.addProperty("scope",   &Private::scope);
+        s_inst.addProperty("relPath", &Private::relPath);
+        init=TRUE;
+      }
     }
-    QCString remove(const QCString &s)
+    TemplateVariant get(const char *n) const
     {
-      QGString result;
-      const char *p = s.data();
-      char c;
-      while ((c=*p++))
+      return s_inst.get(this,n);
+    }
+    TemplateVariant fileName() const
+    {
+      return m_def->getOutputFileBase();
+    }
+    TemplateVariant anchor() const
+    {
+      return m_def->anchor();
+    }
+    TemplateVariant scope() const
+    {
+      const Definition *scope     = m_def->getOuterScope();
+      const Definition *next      = m_nextDef;
+      const Definition *prev      = m_prevDef;
+      const Definition *nextScope = next ? next->getOuterScope() : 0;
+      const Definition *prevScope = prev ? prev->getOuterScope() : 0;
+      bool isMemberDef            = m_def->definitionType()==Definition::TypeMember;
+      const MemberDef  *md        = isMemberDef ? (const MemberDef*)m_def : 0;
+      bool isFunctionLike   = md && (md->isFunction() || md->isSlot() || md->isSignal());
+      bool overloadedFunction = isFunctionLike &&
+                                ((prevScope!=0 && scope==prevScope) || (scope && scope==nextScope));
+      QCString prefix;
+      if (md) prefix=md->localName();
+      if (overloadedFunction) // overloaded member function
       {
-        switch(c)
+        prefix+=md->argsString();
+        // show argument list to disambiguate overloaded functions
+      }
+      else if (md && isFunctionLike) // unique member function
+      {
+        prefix+="()"; // only to show it is a function
+      }
+      bool found=FALSE;
+      QCString name;
+      if (m_def->definitionType()==Definition::TypeClass)
+      {
+        name = m_def->displayName();
+        found = TRUE;
+      }
+      else if (m_def->definitionType()==Definition::TypeNamespace)
+      {
+        name = m_def->displayName();
+        found = TRUE;
+      }
+      else if (scope==0 || scope==Doxygen::globalScope) // in global scope
+      {
+        if (md)
         {
-          case '<': // start of a tag
-            if (!m_insideString) m_insideTag=TRUE,m_removeSpaces=FALSE;
-            result+=c;
-            break;
-          case '>': // end of a tag
-            if (!m_insideString) m_insideTag=FALSE,m_removeSpaces=TRUE;
-            result+=c;
-            break;
-          case '\\': // escaped character in a string
-            result+=c;
-            if (m_insideString && *p) result+=*p++;
-            break;
-          case '"': case '\'':
-            if (m_insideTag)
-            {
-              if (m_insideString==c) // end of string
-              {
-                m_insideString='\0';
-              }
-              else if (m_insideString=='\0') // start of string
-              {
-                m_insideString=c;
-              }
-            }
-            result+=c;
-            break;
-          case ' ': case '\t': case '\n': // whitespace
-            if (!m_insideTag) // outside tags strip consecutive whitespace
-            {
-              m_removeSpaces=TRUE;
-            }
-            else
-            {
-              result+=' ';
-            }
-            break;
-          default:
-            //if (m_removeSpaces) result+=' ';
-            result+=c;
-            m_removeSpaces=FALSE;
-            break;
+          FileDef *fd = md->getBodyDef();
+          if (fd==0) fd = md->getFileDef();
+          if (fd)
+          {
+            if (!prefix.isEmpty()) prefix+=": ";
+            name = prefix + convertToXML(fd->localName());
+            found = TRUE;
+          }
         }
       }
-      result+='\0';
-      //printf("HtmlSpaceless::remove({%s})={%s} m_insideTag=%d m_insideString=%c (%d) removeSpaces=%d\n",s.data(),result.data(),
+      else if (md && (md->getClassDef() || md->getNamespaceDef()))
+        // member in class or namespace scope
+      {
+        SrcLangExt lang = md->getLanguage();
+        name = m_def->getOuterScope()->qualifiedName()
+          + getLanguageSpecificSeparator(lang) + prefix;
+        found = TRUE;
+      }
+      else if (scope) // some thing else? -> show scope
+      {
+        name = prefix + convertToXML(scope->name());
+        found = TRUE;
+      }
+      if (!found) // fallback
+      {
+        name = prefix + "("+theTranslator->trGlobalNamespace()+")";
+      }
+      return name;
+    }
+    TemplateVariant relPath() const
+    {
+      return externalRef("../",m_def->getReference(),TRUE);
+    }
+  private:
+    const Definition *m_def;
+    const Definition *m_prevDef;
+    const Definition *m_nextDef;
+    static PropertyMapper<SymbolContext::Private> s_inst;
+};
+//%% }
+
+PropertyMapper<SymbolContext::Private> SymbolContext::Private::s_inst;
+
+SymbolContext::SymbolContext(const Definition *def,const Definition *prevDef,const Definition *nextDef)
+    : RefCountedContext("SymbolContext")
+{
+  p = new Private(def,prevDef,nextDef);
+}
+
+SymbolContext::~SymbolContext()
+{
+  delete p;
+}
+
+TemplateVariant SymbolContext::get(const char *name) const
+{
+  return p->get(name);
+}
+
+//------------------------------------------------------------------------
+
+//%% list SymbolList[Symbol] : list of search symbols with the same name
+class SymbolListContext::Private : public GenericNodeListContext
+{
+  public:
+    Private(const SearchDefinitionList *sdl)
+    {
+      QListIterator<Definition> li(*sdl);
+      Definition *def;
+      Definition *prev = 0;
+      for (li.toFirst();(def=li.current());)
+      {
+        ++li;
+        const Definition *next = li.current();
+        append(SymbolContext::alloc(def,prev,next));
+        prev = def;
+      }
+    }
+};
+
+SymbolListContext::SymbolListContext(const SearchDefinitionList *sdl)
+    : RefCountedContext("SymbolListContext")
+{
+  p = new Private(sdl);
+}
+
+SymbolListContext::~SymbolListContext()
+{
+  delete p;
+}
+
+// TemplateListIntf
+int SymbolListContext::count() const
+{
+  return p->count();
+}
+
+TemplateVariant SymbolListContext::at(int index) const
+{
+  return p->at(index);
+}
+
+TemplateListIntf::ConstIterator *SymbolListContext::createIterator() const
+{
+  return p->createIterator();
+}
+
+//------------------------------------------------------------------------
+
+//%% struct SymbolGroup: search group of similar symbols
+//%% {
+class SymbolGroupContext::Private
+{
+  public:
+    Private(const SearchDefinitionList *sdl) : m_sdl(sdl)
+    {
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("id",     &Private::id);
+        s_inst.addProperty("name",   &Private::name);
+        s_inst.addProperty("symbols",&Private::symbolList);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
+    TemplateVariant id() const
+    {
+      return m_sdl->id();
+    }
+    TemplateVariant name() const
+    {
+      return m_sdl->name();
+    }
+    TemplateVariant symbolList() const
+    {
+      if (!m_cache.symbolList)
+      {
+        m_cache.symbolList.reset(SymbolListContext::alloc(m_sdl));
+      }
+      return m_cache.symbolList.get();
+    }
+  private:
+    const SearchDefinitionList *m_sdl;
+    struct Cachable
+    {
+      SharedPtr<SymbolListContext> symbolList;
+    };
+    mutable Cachable m_cache;
+    static PropertyMapper<SymbolGroupContext::Private> s_inst;
+};
+//%% }
+
+PropertyMapper<SymbolGroupContext::Private> SymbolGroupContext::Private::s_inst;
+
+SymbolGroupContext::SymbolGroupContext(const SearchDefinitionList *sdl)
+    : RefCountedContext("SymbolGroupContext")
+{
+  p = new Private(sdl);
+}
+
+SymbolGroupContext::~SymbolGroupContext()
+{
+  delete p;
+}
+
+TemplateVariant SymbolGroupContext::get(const char *name) const
+{
+  return p->get(name);
+}
+
+//------------------------------------------------------------------------
+
+//%% list SymbolGroupList[SymbolGroup] : list of search groups one per by name
+class SymbolGroupListContext::Private : public GenericNodeListContext
+{
+  public:
+    Private(const SearchIndexList *sil)
+    {
+      SDict<SearchDefinitionList>::Iterator li(*sil);
+      SearchDefinitionList *dl;
+      for (li.toFirst();(dl=li.current());++li)
+      {
+        append(SymbolGroupContext::alloc(dl));
+      }
+    }
+};
+
+SymbolGroupListContext::SymbolGroupListContext(const SearchIndexList *sil) 
+    : RefCountedContext("SymbolGroupListContext")
+{
+  p = new Private(sil);
+}
+
+SymbolGroupListContext::~SymbolGroupListContext()
+{
+  delete p;
+}
+
+// TemplateListIntf
+int SymbolGroupListContext::count() const
+{
+  return p->count();
+}
+
+TemplateVariant SymbolGroupListContext::at(int index) const
+{
+  return p->at(index);
+}
+
+TemplateListIntf::ConstIterator *SymbolGroupListContext::createIterator() const
+{
+  return p->createIterator();
+}
+
+//------------------------------------------------------------------------
+
+//%% struct SymbolIndex: search index
+//%% {
+class SymbolIndexContext::Private
+{
+  public:
+    Private(const SearchIndexList *sl,const QCString &name) : m_searchList(sl), m_name(name)
+    {
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("name",        &Private::name);
+        s_inst.addProperty("letter",      &Private::letter);
+        s_inst.addProperty("symbolGroups",&Private::symbolGroups);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
+    TemplateVariant name() const
+    {
+      return m_name;
+    }
+    TemplateVariant letter() const
+    {
+      return QString(QChar(m_searchList->letter())).utf8();
+    }
+    TemplateVariant symbolGroups() const
+    {
+      if (!m_cache.symbolGroups)
+      {
+        m_cache.symbolGroups.reset(SymbolGroupListContext::alloc(m_searchList));
+      }
+      return m_cache.symbolGroups.get();
+    }
+  private:
+    const SearchIndexList *m_searchList;
+    QCString m_name;
+    struct Cachable
+    {
+      SharedPtr<SymbolGroupListContext> symbolGroups;
+    };
+    mutable Cachable m_cache;
+    static PropertyMapper<SymbolIndexContext::Private> s_inst;
+};
+//%% }
+
+PropertyMapper<SymbolIndexContext::Private> SymbolIndexContext::Private::s_inst;
+
+SymbolIndexContext::SymbolIndexContext(const SearchIndexList *sl,const QCString &name)
+    : RefCountedContext("SymbolIndexContext")
+{
+  p = new Private(sl,name);
+}
+
+SymbolIndexContext::~SymbolIndexContext()
+{
+  delete p;
+}
+
+TemplateVariant SymbolIndexContext::get(const char *name) const
+{
+  return p->get(name);
+}
+
+//------------------------------------------------------------------------
+
+//%% list SymbolIndices[SymbolIndex] : list of search indices one per by type
+class SymbolIndicesContext::Private : public GenericNodeListContext
+{
+  public:
+    Private(const SearchIndexInfo *info)
+    {
+      // use info->symbolList to populate the list
+      SIntDict<SearchIndexList>::Iterator it(info->symbolList);
+      const SearchIndexList *sl;
+      for (it.toFirst();(sl=it.current());++it) // for each letter
+      {
+        append(SymbolIndexContext::alloc(sl,info->name));
+      }
+    }
+};
+
+SymbolIndicesContext::SymbolIndicesContext(const SearchIndexInfo *info) : RefCountedContext("SymbolIndicesContext")
+{
+  p = new Private(info);
+}
+
+SymbolIndicesContext::~SymbolIndicesContext()
+{
+  delete p;
+}
+
+// TemplateListIntf
+int SymbolIndicesContext::count() const
+{
+  return p->count();
+}
+
+TemplateVariant SymbolIndicesContext::at(int index) const
+{
+  return p->at(index);
+}
+
+TemplateListIntf::ConstIterator *SymbolIndicesContext::createIterator() const
+{
+  return p->createIterator();
+}
+
+//------------------------------------------------------------------------
+
+//%% struct SearchIndex: search index
+//%% {
+class SearchIndexContext::Private
+{
+  public:
+    Private(const SearchIndexInfo *info) : m_info(info)
+    {
+      static bool init=FALSE;
+      if (!init)
+      {
+        s_inst.addProperty("name",         &Private::name);
+        s_inst.addProperty("text",         &Private::text);
+        s_inst.addProperty("symbolIndices",&Private::symbolIndices);
+        init=TRUE;
+      }
+    }
+    TemplateVariant get(const char *n) const
+    {
+      return s_inst.get(this,n);
+    }
+    TemplateVariant name() const
+    {
+      return m_info->name;
+    }
+    TemplateVariant text() const
+    {
+      return m_info->text;
+    }
+    TemplateVariant symbolIndices() const
+    {
+      if (!m_cache.symbolIndices)
+      {
+        m_cache.symbolIndices.reset(SymbolIndicesContext::alloc(m_info));
+      }
+      return m_cache.symbolIndices.get();
+    }
+  private:
+    const SearchIndexInfo *m_info;
+    struct Cachable
+    {
+      SharedPtr<SymbolIndicesContext> symbolIndices;
+    };
+    mutable Cachable m_cache;
+    static PropertyMapper<SearchIndexContext::Private> s_inst;
+};
+//%% }
+
+PropertyMapper<SearchIndexContext::Private> SearchIndexContext::Private::s_inst;
+
+SearchIndexContext::SearchIndexContext(const SearchIndexInfo *info)
+    : RefCountedContext("SearchIndexContext")
+{
+  p = new Private(info);
+}
+
+SearchIndexContext::~SearchIndexContext()
+{
+  delete p;
+}
+
+TemplateVariant SearchIndexContext::get(const char *name) const
+{
+  return p->get(name);
+}
+
+//------------------------------------------------------------------------
+
+//%% list SearchIndices[SearchIndex] : list of search indices one per by type
+class SearchIndicesContext::Private : public GenericNodeListContext
+{
+  public:
+    Private()
+    {
+      const SearchIndexInfo *indices = getSearchIndices();
+      for (int i=0;i<NUM_SEARCH_INDICES;i++)
+      {
+        append(SearchIndexContext::alloc(&indices[i]));
+      }
+    }
+};
+
+SearchIndicesContext::SearchIndicesContext() : RefCountedContext("SearchIndicesContext")
+{
+  p = new Private;
+}
+
+SearchIndicesContext::~SearchIndicesContext()
+{
+  delete p;
+}
+
+// TemplateListIntf
+int SearchIndicesContext::count() const
+{
+  return p->count();
+}
+
+TemplateVariant SearchIndicesContext::at(int index) const
+{
+  return p->at(index);
+}
+
+TemplateListIntf::ConstIterator *SearchIndicesContext::createIterator() const
+{
+  return p->createIterator();
+}
+
+
+//------------------------------------------------------------------------
+
+class HtmlEscaper : public TemplateEscapeIntf
+{
+  public:
+    QCString escape(const QCString &s)
+    {
+      return convertToHtml(s,TRUE);
+    }
+    void enableTabbing(bool) {}
+};
+
+//------------------------------------------------------------------------
+
+class LatexSpaceless : public TemplateSpacelessIntf
+{
+  public:
+    LatexSpaceless() { reset(); }
+    void reset() { }
+    QCString remove(const QCString &s)
+    {
+      QGString result;
+      const char *p = s.data();
+      char c;
+      while ((c=*p++))
+      {
+        switch(c)
+        {
+          case '\t': case ' ': case '\n':
+            break;
+          default:
+            result+=c;
+            break;
+        }
+      }
+      result+='\0';
+      return result.data();
+    }
+  private:
+};
+
+//------------------------------------------------------------------------
+
+class HtmlSpaceless : public TemplateSpacelessIntf
+{
+  public:
+    HtmlSpaceless() { reset(); }
+    void reset()
+    {
+      m_insideTag = FALSE;
+      m_insideString = '\0';
+      m_removeSpaces = TRUE;
+    }
+    QCString remove(const QCString &s)
+    {
+      QGString result;
+      const char *p = s.data();
+      char c;
+      while ((c=*p++))
+      {
+        switch(c)
+        {
+          case '<': // start of a tag
+            if (!m_insideString) m_insideTag=TRUE,m_removeSpaces=FALSE;
+            result+=c;
+            break;
+          case '>': // end of a tag
+            if (!m_insideString) m_insideTag=FALSE,m_removeSpaces=TRUE;
+            result+=c;
+            break;
+          case '\\': // escaped character in a string
+            result+=c;
+            if (m_insideString && *p) result+=*p++;
+            break;
+          case '"': case '\'':
+            if (m_insideTag)
+            {
+              if (m_insideString==c) // end of string
+              {
+                m_insideString='\0';
+              }
+              else if (m_insideString=='\0') // start of string
+              {
+                m_insideString=c;
+              }
+            }
+            result+=c;
+            break;
+          case ' ': case '\t': case '\n': // whitespace
+            if (!m_insideTag) // outside tags strip consecutive whitespace
+            {
+              m_removeSpaces=TRUE;
+            }
+            else
+            {
+              result+=' ';
+            }
+            break;
+          default:
+            //if (m_removeSpaces) result+=' ';
+            result+=c;
+            m_removeSpaces=FALSE;
+            break;
+        }
+      }
+      result+='\0';
+      //printf("HtmlSpaceless::remove({%s})={%s} m_insideTag=%d m_insideString=%c (%d) removeSpaces=%d\n",s.data(),result.data(),
       //    m_insideTag,m_insideString,m_insideString,m_removeSpaces);
       return result.data();
     }
@@ -8154,12 +10045,29 @@ class HtmlSpaceless : public TemplateSpacelessIntf
 
 //------------------------------------------------------------------------
 
+class LatexEscaper : public TemplateEscapeIntf
+{
+  public:
+    LatexEscaper() : m_tabbing(FALSE) {}
+    QCString escape(const QCString &s)
+    {
+      return convertToLaTeX(s,m_tabbing);
+    }
+    void enableTabbing(bool b) { m_tabbing=b; }
+  private:
+    bool m_tabbing;
+};
+
+
+//------------------------------------------------------------------------
+
 #if DEBUG_REF
 int RefCountedContext::s_totalCount;
 #endif
 
 void generateOutputViaTemplate()
 {
+  msg("Generating output via template engine...\n");
   {
     TemplateEngine e;
     TemplateContext *ctx = e.createContext();
@@ -8177,14 +10085,16 @@ void generateOutputViaTemplate()
       SharedPtr<DirListContext>               dirList              (DirListContext::alloc());
       SharedPtr<FileListContext>              fileList             (FileListContext::alloc());
       SharedPtr<FileTreeContext>              fileTree             (FileTreeContext::alloc());
-      SharedPtr<PageTreeContext>              pageTree             (PageTreeContext::alloc());
+      SharedPtr<PageTreeContext>              pageTree             (PageTreeContext::alloc(Doxygen::pageSDict));
       SharedPtr<PageListContext>              pageList             (PageListContext::alloc(Doxygen::pageSDict));
+      SharedPtr<ExampleTreeContext>           exampleTree          (ExampleTreeContext::alloc());
       SharedPtr<ExampleListContext>           exampleList          (ExampleListContext::alloc());
       SharedPtr<ModuleTreeContext>            moduleTree           (ModuleTreeContext::alloc());
       SharedPtr<ModuleListContext>            moduleList           (ModuleListContext::alloc());
       SharedPtr<GlobalsIndexContext>          globalsIndex         (GlobalsIndexContext::alloc());
       SharedPtr<ClassMembersIndexContext>     classMembersIndex    (ClassMembersIndexContext::alloc());
       SharedPtr<NamespaceMembersIndexContext> namespaceMembersIndex(NamespaceMembersIndexContext::alloc());
+      SharedPtr<SearchIndicesContext>         searchIndices        (SearchIndicesContext::alloc());
 
       //%% Doxygen doxygen:
       ctx->set("doxygen",doxygen.get());
@@ -8212,6 +10122,8 @@ void generateOutputViaTemplate()
       ctx->set("pageList",pageList.get());
       //%% PageTree pageTree
       ctx->set("pageTree",pageTree.get());
+      //%% ExampleTree exampleTree
+      ctx->set("exampleTree",exampleTree.get());
       //%% ExampleList exampleList
       ctx->set("exampleList",exampleList.get());
       //%% ModuleTree moduleTree
@@ -8223,15 +10135,15 @@ void generateOutputViaTemplate()
       //%% Page mainPage
       if (Doxygen::mainPage)
       {
-        SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE));
+        SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE,FALSE));
         ctx->set("mainPage",mainPage.get());
       }
       else
       {
         // TODO: for LaTeX output index should be main... => solve in template
         Doxygen::mainPage = new PageDef("[generated]",1,"index","",theTranslator->trMainPage());
-        Doxygen::mainPage->setFileName("index",TRUE);
-        SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE));
+        Doxygen::mainPage->setFileName("index");
+        SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE,FALSE));
         ctx->set("mainPage",mainPage.get());
       }
       //%% GlobalsIndex globalsIndex:
@@ -8240,27 +10152,77 @@ void generateOutputViaTemplate()
       ctx->set("classMembersIndex",classMembersIndex.get());
       //%% NamespaceMembersIndex namespaceMembersIndex:
       ctx->set("namespaceMembersIndex",namespaceMembersIndex.get());
+      //%% SearchIndicaes searchindicaes
+      ctx->set("searchIndices",searchIndices.get());
+      //%% string space
+      ctx->set("space"," ");
+
+      //if (Config_getBool("GENERATE_HTML"))
+      { // render HTML output
+        Template *tpl = e.loadByName("htmllayout.tpl",1);
+        if (tpl)
+        {
+          g_globals.outputFormat = ContextOutputFormat_Html;
+          g_globals.dynSectionId = 0;
+          g_globals.outputDir    = Config_getString("HTML_OUTPUT");
+          QDir dir(g_globals.outputDir);
+          createSubDirs(dir);
+          HtmlEscaper htmlEsc;
+          ctx->setEscapeIntf(Config_getString("HTML_FILE_EXTENSION"),&htmlEsc);
+          HtmlSpaceless spl;
+          ctx->setSpacelessIntf(&spl);
+          ctx->setOutputDirectory(g_globals.outputDir);
+          FTextStream ts;
+          tpl->render(ts,ctx);
+          e.unload(tpl);
+        }
+      }
+
+      // TODO: clean index before each run...
 
-      // render HTML output
-      Template *tpl = e.loadByName("htmllayout.tpl",1);
-      if (tpl)
-      {
-        g_globals.outputFormat = ContextGlobals::Html;
-        g_globals.dynSectionId = 0;
-        g_globals.outputDir    = Config_getString("HTML_OUTPUT");
-        QDir dir(g_globals.outputDir);
-        createSubDirs(dir);
-        HtmlEscaper htmlEsc;
-        ctx->setEscapeIntf(Config_getString("HTML_FILE_EXTENSION"),&htmlEsc);
-        HtmlSpaceless spl;
-        ctx->setSpacelessIntf(&spl);
-        ctx->setOutputDirectory(g_globals.outputDir);
-        FTextStream ts;
-        tpl->render(ts,ctx);
-        e.unload(tpl);
-      }
-
-      // TODO: render other outputs
+      //if (Config_getBool("GENERATE_LATEX"))
+      if (0)
+      { // render LaTeX output
+        Template *tpl = e.loadByName("latexlayout.tpl",1);
+        if (tpl)
+        {
+          g_globals.outputFormat = ContextOutputFormat_Latex;
+          g_globals.dynSectionId = 0;
+          g_globals.outputDir    = Config_getString("LATEX_OUTPUT");
+          QDir dir(g_globals.outputDir);
+          createSubDirs(dir);
+          LatexEscaper latexEsc;
+          ctx->setEscapeIntf(".tex",&latexEsc);
+          LatexSpaceless spl;
+          ctx->setSpacelessIntf(&spl);
+          ctx->setOutputDirectory(g_globals.outputDir);
+          FTextStream ts;
+          tpl->render(ts,ctx);
+          e.unload(tpl);
+        }
+      }
+
+      // clear all cached data in Definition objects.
+      QDictIterator<DefinitionIntf> di(*Doxygen::symbolMap);
+      DefinitionIntf *intf;
+      for (;(intf=di.current());++di)
+      {
+        if (intf->definitionType()==DefinitionIntf::TypeSymbolList) // list of symbols
+        {
+          DefinitionListIterator dli(*(DefinitionList*)intf);
+          Definition *d;
+          // for each symbol
+          for (dli.toFirst();(d=dli.current());++dli)
+          {
+            d->setCookie(0);
+          }
+        }
+        else // single symbol
+        {
+          Definition *d = (Definition *)intf;
+          d->setCookie(0);
+        }
+      }
 
       e.destroyContext(ctx);
     }
diff --git a/src/context.h b/src/context.h
index 6b5b810..7c98222 100644
--- a/src/context.h
+++ b/src/context.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -52,7 +52,10 @@ class MemberGroup;
 class MemberGroupSDict;
 class MemberGroupList;
 class DotNode;
-class DotGfxHierarchyTable; 
+class DotGfxHierarchyTable;
+struct SearchIndexInfo;
+class SearchIndexList;
+class SearchDefinitionList;
 
 //----------------------------------------------------
 
@@ -68,7 +71,7 @@ class RefCountedContext
       m_className=className;
       m_insideRelease = FALSE;
     }
-    ~RefCountedContext()
+    virtual ~RefCountedContext()
     {
       if (!m_insideRelease) abort();
     }
@@ -326,7 +329,7 @@ class DirContext : public RefCountedContext, public TemplateStructIntf
 class PageContext : public RefCountedContext, public TemplateStructIntf
 {
   public:
-    static PageContext *alloc(PageDef *pd,bool isMainPage=FALSE) { return new PageContext(pd,isMainPage); }
+    static PageContext *alloc(PageDef *pd,bool isMainPage,bool isExample) { return new PageContext(pd,isMainPage,isExample); }
 
     // TemplateStructIntf methods
     virtual TemplateVariant get(const char *name) const;
@@ -334,7 +337,7 @@ class PageContext : public RefCountedContext, public TemplateStructIntf
     virtual int release() { return RefCountedContext::release(); }
 
   private:
-    PageContext(PageDef *,bool isMainPage);
+    PageContext(PageDef *,bool isMainPage,bool isExample);
    ~PageContext();
     class Private;
     Private *p;
@@ -707,7 +710,7 @@ class PageListContext : public RefCountedContext, public TemplateListIntf
 class PageTreeContext : public RefCountedContext, public TemplateStructIntf
 {
   public:
-    static PageTreeContext *alloc() { return new PageTreeContext; }
+    static PageTreeContext *alloc(const PageSDict *pages) { return new PageTreeContext(pages); }
 
     // TemplateStructIntf methods
     virtual TemplateVariant get(const char *name) const;
@@ -715,7 +718,7 @@ class PageTreeContext : public RefCountedContext, public TemplateStructIntf
     virtual int release() { return RefCountedContext::release(); }
 
   private:
-    PageTreeContext();
+    PageTreeContext(const PageSDict *pages);
    ~PageTreeContext();
     class Private;
     Private *p;
@@ -785,13 +788,15 @@ class ModuleTreeContext : public RefCountedContext, public TemplateStructIntf
 
 //----------------------------------------------------
 
-class ExampleListContext : public RefCountedContext, public TemplateStructIntf
+class ExampleListContext : public RefCountedContext, public TemplateListIntf
 {
   public:
-    static ExampleListContext *alloc() { return new ExampleListContext(); }
+    static ExampleListContext *alloc() { return new ExampleListContext; }
 
-    // TemplateStructIntf methods
-    virtual TemplateVariant get(const char *name) const;
+    // TemplateListIntf methods
+    virtual int  count() const;
+    virtual TemplateVariant at(int index) const;
+    virtual TemplateListIntf::ConstIterator *createIterator() const;
     virtual int addRef()  { return RefCountedContext::addRef(); }
     virtual int release() { return RefCountedContext::release(); }
 
@@ -804,6 +809,26 @@ class ExampleListContext : public RefCountedContext, public TemplateStructIntf
 
 //----------------------------------------------------
 
+
+class ExampleTreeContext : public RefCountedContext, public TemplateStructIntf
+{
+  public:
+    static ExampleTreeContext *alloc() { return new ExampleTreeContext; }
+
+    // TemplateStructIntf methods
+    virtual TemplateVariant get(const char *name) const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    ExampleTreeContext();
+   ~ExampleTreeContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
 class GlobalsIndexContext : public RefCountedContext, public TemplateStructIntf
 {
   public:
@@ -1154,6 +1179,173 @@ class ArgumentListContext : public RefCountedContext, public TemplateListIntf
 
 //----------------------------------------------------
 
+class SymbolContext : public RefCountedContext, public TemplateStructIntf
+{
+  public:
+    static SymbolContext *alloc(const Definition *def,const Definition *prev,const Definition *next)
+    { return new SymbolContext(def,prev,next); }
+
+    // TemplateStructIntf methods
+    virtual TemplateVariant get(const char *name) const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    SymbolContext(const Definition *def,const Definition *prev,const Definition *next);
+   ~SymbolContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
+class SymbolListContext : public RefCountedContext, public TemplateListIntf
+{
+  public:
+    static SymbolListContext *alloc(const SearchDefinitionList *sdl)
+    { return new SymbolListContext(sdl); }
+
+    // TemplateListIntf
+    virtual int  count() const;
+    virtual TemplateVariant at(int index) const;
+    virtual TemplateListIntf::ConstIterator *createIterator() const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    SymbolListContext(const SearchDefinitionList *sdl);
+   ~SymbolListContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
+class SymbolGroupContext : public RefCountedContext, public TemplateStructIntf
+{
+  public:
+    static SymbolGroupContext *alloc(const SearchDefinitionList *sdl)
+    { return new SymbolGroupContext(sdl); }
+
+    // TemplateStructIntf methods
+    virtual TemplateVariant get(const char *name) const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    SymbolGroupContext(const SearchDefinitionList *sdl);
+   ~SymbolGroupContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
+class SymbolGroupListContext : public RefCountedContext, public TemplateListIntf
+{
+  public:
+    static SymbolGroupListContext *alloc(const SearchIndexList *sil)
+    { return new SymbolGroupListContext(sil); }
+
+    // TemplateListIntf
+    virtual int  count() const;
+    virtual TemplateVariant at(int index) const;
+    virtual TemplateListIntf::ConstIterator *createIterator() const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    SymbolGroupListContext(const SearchIndexList *sil);
+   ~SymbolGroupListContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
+class SymbolIndexContext : public RefCountedContext, public TemplateStructIntf
+{
+  public:
+    static SymbolIndexContext *alloc(const SearchIndexList *sl,const QCString &name)
+    { return new SymbolIndexContext(sl,name); }
+
+    // TemplateStructIntf methods
+    virtual TemplateVariant get(const char *name) const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    SymbolIndexContext(const SearchIndexList *sl,const QCString &name);
+   ~SymbolIndexContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
+class SymbolIndicesContext : public RefCountedContext, public TemplateListIntf
+{
+  public:
+    static SymbolIndicesContext *alloc(const SearchIndexInfo *info)
+    { return new SymbolIndicesContext(info); }
+
+    // TemplateListIntf
+    virtual int  count() const;
+    virtual TemplateVariant at(int index) const;
+    virtual TemplateListIntf::ConstIterator *createIterator() const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    SymbolIndicesContext(const SearchIndexInfo *info);
+   ~SymbolIndicesContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
+class SearchIndexContext : public RefCountedContext, public TemplateStructIntf
+{
+  public:
+    static SearchIndexContext *alloc(const SearchIndexInfo *info)
+    { return new SearchIndexContext(info); }
+
+    // TemplateStructIntf methods
+    virtual TemplateVariant get(const char *name) const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    SearchIndexContext(const SearchIndexInfo *info);
+   ~SearchIndexContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
+class SearchIndicesContext : public RefCountedContext, public TemplateListIntf
+{
+  public:
+    static SearchIndicesContext *alloc() { return new SearchIndicesContext; }
+
+    // TemplateListIntf
+    virtual int  count() const;
+    virtual TemplateVariant at(int index) const;
+    virtual TemplateListIntf::ConstIterator *createIterator() const;
+    virtual int addRef()  { return RefCountedContext::addRef(); }
+    virtual int release() { return RefCountedContext::release(); }
+
+  private:
+    SearchIndicesContext();
+   ~SearchIndicesContext();
+    class Private;
+    Private *p;
+};
+
+//----------------------------------------------------
+
 void generateOutputViaTemplate();
 
 #endif
diff --git a/src/cppvalue.cpp b/src/cppvalue.cpp
index a99ec56..176931d 100644
--- a/src/cppvalue.cpp
+++ b/src/cppvalue.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/cppvalue.h b/src/cppvalue.h
index 67c5433..59dd594 100644
--- a/src/cppvalue.h
+++ b/src/cppvalue.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/dbusxmlscanner.cpp b/src/dbusxmlscanner.cpp
deleted file mode 100644
index aa3cc47..0000000
--- a/src/dbusxmlscanner.cpp
+++ /dev/null
@@ -1,881 +0,0 @@
-/******************************************************************************
- *
- *
- *
- * Copyright (C) 2009 by Tobias Hunger <tobias at aquazul.com>
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
- * for any purpose. It is provided "as is" without express or implied warranty.
- * See the GNU General Public License for more details.
- *
- * Documents produced by Doxygen are derivative works derived from the
- * input used in their production; they are not affected by this license.
- *
- */
-
-#include "dbusxmlscanner.h"
-
-#include "commentscan.h"
-#include "entry.h"
-
-#include <qfile.h>
-#include <qxml.h>
-#include <qstring.h>
-
-#include "message.h"
-#include "util.h"
-#include "arguments.h"
-
-// -----------------------------------------------------------------------
-// Convenience defines:
-// -----------------------------------------------------------------------
-
-#define CONDITION(cond, msg) \
-    do {\
-        if (cond)\
-        {\
-            if (m_errorString.isEmpty()) { m_errorString = msg; }\
-            return false;\
-        }\
-    }\
-    while (0)
-
-#define DOC_ERROR(msg) \
-    warn_doc_error(m_fileName.data(), lineNumber(), msg.data())
-
-#define COND_DOC_ERROR(cond, msg) \
-    do {\
-        if (cond)\
-        {\
-             DOC_ERROR(msg);\
-             return true;\
-        }\
-    }\
-    while (0)
-
-#define DBUS(name) isDBusElement(namespaceURI, localName, qName, name)
-#define EXTENSION(name) isExtensionElement(namespaceURI, localName, qName, name)
-
-// -----------------------------------------------------------------------
-// DBusXMLHandler class
-// -----------------------------------------------------------------------
-
-const QString EXTENSION_URI("http://psiamp.org/dtd/doxygen_dbusxml.dtd");
-
-/** DBus implementation of the generic QXmlDefaultHandler. */
-class DBusXMLHandler : public QXmlDefaultHandler
-{
-public:
-    DBusXMLHandler(ParserInterface * parser,
-                   QXmlSimpleReader * reader,
-                   const char * file_name,
-                   Entry * root) :
-        m_parser(parser),
-        m_locator(reader),
-        m_currentEntry(0),
-        m_currentInterface(0),
-        m_currentMethod(0),
-        m_currentArgument(0),
-        m_currentProperty(0),
-        m_currentEnum(0),
-        m_fileName(file_name),
-        m_currentComment(0)
-    {
-        setDocumentLocator(&m_locator);
-
-        m_scopeCount = 0;
-
-        // Set up stack cleanup:
-        m_structStack.setAutoDelete(TRUE);
-        m_elementStack.setAutoDelete(TRUE);
-        m_scopeStack.setAutoDelete(TRUE);
-
-        openScopes(root);
-    }
-
-    ~DBusXMLHandler()
-    { closeScopes(); }
-
-    QString errorString()
-    { return m_errorString; }
-
-    bool startElement(const QString &namespaceURI,
-                      const QString &localName,
-                      const QString &qName,
-                      const QXmlAttributes &attributes)
-    {
-        // add to elements stack:
-        m_elementStack.append(new ElementData(qName.utf8()));
-
-        // First we need a node.
-        if (DBUS("node"))
-        {
-            CONDITION(!m_currentNode.isEmpty(), "Node inside a node.");
-
-            const int idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(idx < 0, QCString("Anonymous node found."));
-
-            m_currentNode = attributes.value(idx).utf8();
-            // A node is actually of little interest, so do nothing here.
-            return true;
-        }
-
-        // Then we need an interface.
-        if (DBUS("interface"))
-        {
-            // We need a nodeName for interfaces:
-            CONDITION(m_currentNode.isEmpty(), "Interface without a node.");
-            CONDITION(m_currentInterface, "Interface within another interface.");
-
-            const int idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(idx < 0, QString("Interface without a name found."));
-
-            // A interface is roughly equivalent to a class:
-            m_currentInterface = createEntry();
-
-            m_currentInterface->section = Entry::CLASS_SEC;
-            m_currentInterface->spec |= Entry::Interface;
-            m_currentInterface->type = "Interface";
-            m_currentInterface->name = substitute(attributes.value(idx).utf8(), ".", "::");
-
-            openScopes(m_currentInterface);
-
-            return true;
-        }
-
-        if (DBUS("method") || DBUS("signal"))
-        {
-            // We need a interfaceName for methods and signals:
-            CONDITION(!m_currentInterface, "Method or signal found outside a interface.");
-            CONDITION(m_currentMethod, "Method or signal found inside another method or signal.");
-            CONDITION(m_currentProperty, "Methor or signal found inside a property.");
-            CONDITION(!m_structStack.isEmpty(), "Method or signal found inside a struct.");
-            CONDITION(m_currentEnum, "Methor or signal found inside a enum.");
-
-            const int idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(idx < 0, QString("Method or signal without a name found."));
-
-            m_currentMethod = createEntry();
-
-            m_currentMethod->section = Entry::FUNCTION_SEC;
-            m_currentMethod->name = attributes.value(idx).utf8();
-            m_currentMethod->mtype = Method;
-            m_currentMethod->type = "void";
-
-            if (DBUS("signal"))
-            { m_currentMethod->mtype = Signal; }
-        }
-
-        if (DBUS("arg"))
-        {
-            // We need a method for arguments:
-            CONDITION(!m_currentMethod, "Argument found outside a method or signal.");
-            CONDITION(m_currentArgument, "Argument found inside another argument.");
-
-            const int name_idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(name_idx < 0, QString("Argument without a name found."));
-            COND_DOC_ERROR(!hasType(attributes), QString("Argument without a type found."));
-
-            const int direction_idx(indexOf(attributes, "direction"));
-
-            if ((m_currentMethod->mtype == Signal &&
-                 direction_idx >= 0 &&
-                 attributes.value(direction_idx) != "in") ||
-                (m_currentMethod->mtype == Method &&
-                 direction_idx >= 0 &&
-                 attributes.value(direction_idx) != "in" &&
-                 attributes.value(direction_idx) != "out"))
-            {
-                m_errorString = "Invalid direction found.";
-                return false;
-            }
-
-            m_currentArgument = new Argument;
-            m_currentArgument->type = getType(attributes).utf8();
-            m_currentArgument->name = attributes.value(name_idx).utf8();
-            if (direction_idx >= 0)
-            { m_currentArgument->attrib = attributes.value(direction_idx).utf8(); }
-            else
-            {
-                if (m_currentMethod->mtype == Signal)
-                { m_currentArgument->attrib = "in"; }
-                else
-                { m_currentArgument->attrib = "out"; }
-            }
-        }
-
-        if (DBUS("property"))
-        {
-            CONDITION(m_currentMethod, "Property found inside a method or signal.");
-            CONDITION(!m_currentInterface, "Property found outside an interface.");
-            CONDITION(m_currentProperty, "Property found inside another property.");
-            CONDITION(!m_structStack.isEmpty(), "Property found inside a struct.");
-            CONDITION(m_currentEnum, "Property found inside a enum.");
-
-            const int name_idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(name_idx < 0, QString("Anonymous property found."));
-            COND_DOC_ERROR(!hasType(attributes), QString("Property without a type found."));
-
-            const int access_idx(indexOf(attributes, "access"));
-            COND_DOC_ERROR(access_idx < 0, QString("Property without a access attribute found."));
-            COND_DOC_ERROR(attributes.value(access_idx) != "read" &&
-                           attributes.value(access_idx) != "write" &&
-                           attributes.value(access_idx) != "readwrite",
-                           QString("Property with invalid access attribute \"%1\" found.").
-                           arg(attributes.value(access_idx)));
-
-            m_currentProperty = createEntry();
-
-            m_currentProperty->section = Entry::FUNCTION_SEC;
-
-            if (attributes.value(access_idx) == "read" ||
-                attributes.value(access_idx) == "readwrite")
-            { m_currentProperty->spec |= Entry::Readable; }
-
-            if (attributes.value(access_idx) == "write" ||
-                attributes.value(access_idx) == "readwrite")
-            { m_currentProperty->spec |= Entry::Writable; }
-
-            m_currentProperty->name = attributes.value(name_idx).utf8();
-            m_currentProperty->mtype = Property;
-            m_currentProperty->type = getType(attributes).utf8();
-        }
-
-        if (EXTENSION("namespace"))
-        {
-            CONDITION(m_currentNode.isEmpty(), "Namespace found outside a node.");
-            CONDITION(m_currentInterface, "Namespace found inside an interface.");
-
-            const int idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(idx < 0, QString("Anonymous namespace found."));
-
-            m_namespaceStack.append(openNamespace(attributes.value(idx)));
-            openScopes(m_namespaceStack.getLast());
-        }
-
-        if (EXTENSION("struct"))
-        {
-            CONDITION(m_currentMethod, "Struct found inside a method or signal.");
-            CONDITION(m_currentProperty, "Struct found inside a property.");
-            CONDITION(m_currentEnum, "Struct found inside an enum.");
-
-            const int idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(idx < 0, QString("Anonymous struct found."));
-
-            Entry * current_struct = createEntry();
-            current_struct->section = Entry::CLASS_SEC;
-            current_struct->spec = Entry::Struct;
-            current_struct->name = attributes.value(idx).utf8();
-
-            openScopes(current_struct);
-
-            current_struct->type = current_struct->name + " struct";
-
-            m_structStack.append(new StructData(current_struct));
-        }
-
-        if (EXTENSION("member"))
-        {
-            CONDITION(m_structStack.isEmpty(), "Member found outside of struct.");
-
-            const int name_idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(name_idx < 0, QString("Anonymous member found."));
-            COND_DOC_ERROR(!hasType(attributes), QString("Member without a type found."));
-
-            createEntry();
-
-            m_currentEntry->section = Entry::VARIABLE_SEC;
-            m_currentEntry->name = attributes.value(name_idx).utf8();
-            m_currentEntry->type = getType(attributes).utf8();
-
-            QString type(getDBusType(m_currentEntry->type));
-            m_structStack.getLast()->type.append(type.utf8());
-        }
-
-        if (EXTENSION("enum") || EXTENSION("flagset"))
-        {
-            CONDITION(m_currentMethod, "Enum found inside a method or signal.");
-            CONDITION(m_currentProperty, "Enum found inside a property.");
-
-            const int name_idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(name_idx < 0, QString("Anonymous enum found."));
-
-            const int type_idx(indexOf(attributes, "type"));
-            QString type = "u";
-            if (type_idx >= 0)
-            { type = attributes.value(type_idx); }
-            if (type != "y" && type != "q" && type != "u" && type != "t")
-            { DOC_ERROR(QString("Invalid enum type \"%1\" found.").arg(type)); }
-
-            m_currentEnum = createEntry();
-            m_currentEnum->section = Entry::ENUM_SEC;
-            m_currentEnum->name = attributes.value(name_idx).utf8();
-
-            openScopes(m_currentEnum);
-
-            m_currentEnum->type = m_currentEntry->name + " enum";
-
-            addNamedType(type.utf8());
-        }
-
-        if (EXTENSION("value"))
-        {
-            CONDITION(!m_currentEnum, "Value found outside an enum.");
-
-            const int name_idx(indexOf(attributes, "name"));
-            COND_DOC_ERROR(name_idx < 0, QString("Anonymous value found."));
-
-            const int value_idx(indexOf(attributes, "value"));
-
-            createEntry();
-
-            m_currentEntry->section = Entry::VARIABLE_SEC;
-            m_currentEntry->name = attributes.value(name_idx).utf8();
-            m_currentEntry->type = m_currentEnum->name; // "@"; // enum marker!
-            if (value_idx >= 0)
-            { m_currentEntry->initializer = attributes.value(value_idx).utf8(); }
-        }
-
-        return true;
-    }
-
-    bool endElement(const QString &namespaceURI,
-                    const QString &localName,
-                    const QString &qName)
-    {
-        // Clean up elements stack:
-        // Since we made sure to get the elements in the proper order when
-        // adding we do not need to do so again here.
-        COND_DOC_ERROR(m_elementStack.getLast()->element != qName.utf8(),
-                       QString("Malformed XML: Unexpected closing element found.").
-                       arg(m_elementStack.getLast()->element).utf8());
-        m_elementStack.removeLast();
-
-        // Interface:
-        if (DBUS("interface"))
-        {
-            CONDITION(!m_currentInterface, "end of interface found without start.");
-            m_currentInterface->endBodyLine = lineNumber();
-            closeScopes();
-            m_currentInterface = 0;
-        }
-
-        if (DBUS("method") || DBUS("signal"))
-        {
-            CONDITION(!m_currentMethod, "end of method found without start.");
-            CONDITION(!m_currentInterface, "end of method found outside interface.");
-            m_currentMethod->endBodyLine = lineNumber();
-            m_currentInterface->addSubEntry(m_currentMethod);
-            m_currentMethod = 0;
-        }
-
-        if (DBUS("property"))
-        {
-            CONDITION(!m_currentProperty, "end of property found without start.");
-            CONDITION(!m_currentInterface, "end of property found outside interface.");
-            m_currentProperty->endBodyLine = lineNumber();
-            m_currentInterface->addSubEntry(m_currentProperty);
-            m_currentProperty = 0;
-        }
-
-        if (DBUS("arg"))
-        {
-            CONDITION(!m_currentMethod, "end of arg found outside method.");
-            m_currentMethod->argList->append(m_currentArgument);
-            m_currentArgument = 0;
-        }
-
-        if (EXTENSION("namespace"))
-        {
-            Entry * current = m_namespaceStack.getLast();
-            CONDITION(!current, "end of namespace without start.");
-            m_namespaceStack.removeLast();
-
-            current->endBodyLine = lineNumber();
-            closeScopes();
-        }
-
-        if (EXTENSION("struct"))
-        {
-            StructData * data = m_structStack.getLast();
-            CONDITION(!data, "end of struct without start.");
-
-            data->entry->endBodyLine = lineNumber();
-
-            QString current_type;
-            current_type.append(QString("("));
-            current_type.append(data->type);
-            current_type.append(QString(")"));
-
-            addNamedType(current_type.utf8());
-
-            closeScopes();
-
-            m_structStack.removeLast();
-        }
-
-        if (EXTENSION("member"))
-        {
-           StructData * data = m_structStack.getLast();
-           CONDITION(!data, "end of member outside struct.");
-           data->entry->addSubEntry(m_currentEntry);
-        }
-
-        if (EXTENSION("enum") || EXTENSION("flagset"))
-        {
-            CONDITION(!m_currentEnum, "end of enum without start.");
-            m_currentEnum->endBodyLine = lineNumber();
-            closeScopes();
-
-            m_currentEnum = 0;
-        }
-
-        if (EXTENSION("value") && m_currentEnum)
-        {
-            CONDITION(!m_currentEntry, "end of value without start");
-            m_currentEntry->endBodyLine = lineNumber();
-
-            m_currentEnum->addSubEntry(m_currentEntry);
-        }
-
-        return true;
-    }
-
-    bool characters(const QString & /*chars*/)
-    { return true; }
-
-    bool comment(const QString & comment_)
-    {
-        if (m_currentComment)
-        { handleComment(); }
-
-        m_currentComment = new CommentData(m_fileName, lineNumber(), comment_.utf8());
-
-        if (m_currentComment->shouldIgnore)
-        {
-            delete m_currentComment;
-            m_currentComment = 0;
-            return true;
-        }
-
-        if (m_currentComment->associateWithPrevious)
-        { handleComment(); }
-
-        return true;
-    }
-
-    void handleComment()
-    {
-        if (m_currentComment == 0 || m_currentEntry == 0)
-        { return; }
-
-        QCString text(m_currentComment->text);
-
-        m_currentEntry->docFile = m_currentComment->fileName;
-        m_currentEntry->docLine = m_currentComment->line;
-
-        int position(0);
-        bool needs_entry(false);
-        bool brief(false);
-        Protection prot(Public);
-        int lineNr = lineNumber();
-
-        while (parseCommentBlock(m_parser,
-                                 m_currentEntry,
-                                 text, m_fileName.data(), 
-                                 lineNr,
-                                 brief, m_currentComment->isJavaStyle,
-                                 false,
-                                 prot,
-                                 position,
-                                 needs_entry))
-        {
-            if (needs_entry) { createEntry(); }
-        }
-        if (needs_entry) { createEntry(); }
-
-        delete m_currentComment;
-        m_currentComment = 0;
-    }
-
-    QXmlLocator * locator()
-    { return &m_locator; }
-
-    int lineNumber()
-    { return m_locator.lineNumber(); }
-
-    void setSection()
-    {
-        Entry * current = createEntry();
-        current->reset();
-
-        current->name    = m_fileName;
-        current->section = Entry::SOURCE_SEC;
-
-        // Open/Close the scope to do the bookkeeping:
-        openScopes(current);
-        closeScopes();
-    }
-
-private:
-    bool isDBusElement(const QString & namespaceURI,
-                       const QString & localName,
-                       const QString & qName,
-                       const QString & element)
-    {
-        return (namespaceURI.isEmpty() && localName == element && qName == element) ||
-               (namespaceURI.isEmpty() && localName.isEmpty() && qName == element);
-    }
-
-    bool isExtensionElement(const QString & namespaceURI,
-                            const QString & localName,
-                            const QString & qName,
-                            const QString & element)
-    {
-        (void)qName;
-
-        return namespaceURI == EXTENSION_URI && localName == element;
-    }
-
-    bool hasType(const QXmlAttributes & attributes)
-    {
-        const int type_idx(indexOf(attributes, "type"));
-        const int named_type_idx(indexOf(attributes, "named-type"));
-
-        return named_type_idx >= 0 || type_idx >= 0;
-    }
-
-    QString getType(const QXmlAttributes & attributes)
-    {
-        const int type_idx(indexOf(attributes, "type"));
-        const int named_type_idx(indexOf(attributes, "named-type"));
-
-        QCString type;
-
-        if (named_type_idx >= 0)
-        {
-            type = attributes.value(named_type_idx).utf8();
-            if (type.left(2)!="::")
-            { type = getCurrentScope(attributes.value(named_type_idx).utf8()); }
-            else
-            { type = type.mid(2); }
-            if (m_namedTypeMap.contains(type))
-            {
-                if (type_idx >= 0)
-                {
-                    const QCString dbus_type(attributes.value(type_idx).utf8());
-                    if (dbus_type != m_namedTypeMap[type])
-                    {
-                        DOC_ERROR(QString("Type \"%1\" does not match up with "
-                                          "previous definition of named type \"%2\" (which was \"%3\".").
-                                          arg(dbus_type).
-                                          arg(type).
-                                          arg(m_namedTypeMap[type]));
-                    }
-                }
-                return type;
-            }
-
-            DOC_ERROR(QString("Undefined named type \"%1\" used.").arg(type));
-        }
-
-        if (type_idx >= 0)
-        {
-            type = attributes.value(type_idx).utf8();
-
-            QRegExp reg_exp(QCString("(a?[ybnqiuxdtsogv]|a[{]sv[}])"));
-            if (reg_exp.match(type.data()))
-            { return type; }
-
-            DOC_ERROR(QString("Unnamed complex D-Bus type \"%1\" found.").arg(type));
-        }
-
-        return QString();
-    }
-
-    QString getDBusType(const QCString & type)
-    {
-        QCString scoped_type = type;
-        if (!scoped_type.contains("::"))
-        { scoped_type = getCurrentScope(type); }
-
-        if (m_namedTypeMap.contains(scoped_type))
-        { return m_namedTypeMap[scoped_type]; }
-        else
-        { return type; }
-    }
-
-    void addNamedType(const QCString &type)
-    {
-        QCString scoped_name(getCurrentScope());
-
-        if (m_namedTypeMap.contains(scoped_name))
-        {
-            DOC_ERROR(QString("Named type \"%1\" is already defined.").arg(scoped_name));
-            return;
-        }
-
-        m_namedTypeMap.insert(scoped_name, type);
-    }
-
-    QCString getCurrentScope(const QCString & type = QCString())
-    {
-        QCString scoped_name;
-        if (!m_scopeStack.isEmpty())
-        {
-            scoped_name = m_scopeStack.getLast()->scope->name;
-            scoped_name.append("::");
-        }
-        if (!type.isEmpty())
-        { scoped_name.append(type); }
-        else
-        { scoped_name = scoped_name.left(scoped_name.length() - 2); }
-
-        return scoped_name;
-    }
-
-    int indexOf(const QXmlAttributes & attributes, const QString & name,
-                 const QString & type = "CDATA", const bool mandatory = true)
-    {
-        const int idx(attributes.index(name));
-        if (idx < 0 || idx > attributes.length()) { return -1; }
-        if (attributes.type(idx) != type) { return -1; }
-        if (mandatory && attributes.value(idx).isEmpty()) { return -1; }
-
-        return idx;
-    }
-
-    Entry * createEntry()
-    {
-        Entry * entry = new Entry();
-
-        entry->protection = Public ;
-        entry->virt       = Normal;
-        entry->stat       = false;
-        entry->lang       = SrcLangExt_XML;
-        entry->spec       = 0;
-
-        entry->fileName  = m_fileName;
-        entry->startLine = lineNumber();
-        entry->bodyLine = lineNumber();
-
-        entry->callGraph = false;
-        entry->callerGraph = false;
-
-        initGroupInfo(entry);
-
-        m_currentEntry = entry;
-
-        handleComment();
-
-        return entry;
-    }
-
-    void openScopes(Entry * object)
-    {
-        int cur_scope_separator_pos = 0;
-        int last_scope_separator_pos = 0;
-        while (0 <= (cur_scope_separator_pos = object->name.find("::", last_scope_separator_pos)))
-        {
-            QString scope = object->name.mid(last_scope_separator_pos,
-                                             cur_scope_separator_pos - last_scope_separator_pos);
-            last_scope_separator_pos = cur_scope_separator_pos + 2;
-
-            Entry * current_namespace = openNamespace(scope);
-
-            if (!m_scopeStack.isEmpty())
-            { m_scopeStack.getLast()->scope->addSubEntry(current_namespace); }
-
-            m_scopeStack.append(new ScopeData(current_namespace, m_scopeCount));
-        }
-
-        QCString scoped_name(getCurrentScope());
-        if (!scoped_name.isEmpty())
-        { scoped_name.append("::"); }
-        scoped_name.append(object->name.mid(last_scope_separator_pos));
-
-        object->name = scoped_name;
-
-        if (!m_scopeStack.isEmpty())
-        { m_scopeStack.getLast()->scope->addSubEntry(object); }
-        m_scopeStack.append(new ScopeData(object, m_scopeCount));
-
-        ++m_scopeCount;
-    }
-
-    Entry * openNamespace(const QString & name)
-    {
-        Entry * current_namespace = createEntry();
-        QCString scoped_name(getCurrentScope());
-        if (!scoped_name.isEmpty())
-        { scoped_name.append("::"); }
-        scoped_name.append(name.utf8());
-        current_namespace->name = scoped_name;
-        current_namespace->section = Entry::NAMESPACE_SEC;
-        current_namespace->type = "namespace" ;
-
-        return current_namespace;
-    }
-
-    void closeScopes()
-    {
-        const int current_scope_count(m_scopeStack.getLast()->count);
-
-        // Do not close the root scope.
-        if (current_scope_count == 0)
-        { return; }
-
-        while (current_scope_count == m_scopeStack.getLast()->count)
-        { m_scopeStack.removeLast(); }
-    }
-
-    ParserInterface * m_parser;
-
-    QXmlLocator m_locator;
-    QCString m_currentNode; // Nodes can not be nested, no entry necessary.
-
-    struct ElementData
-    {
-        ElementData(const QCString & e) :
-            element(e)
-        { }
-        ~ElementData() { }
-
-        QCString element; //*< The element name
-        QCString text; //*< The actual xml code.
-    };
-    QList<ElementData> m_elementStack;
-
-    Entry * m_currentEntry; // The currently open entry.
-
-    Entry * m_currentInterface; // Interfaces can not be nested.
-    Entry * m_currentMethod; // Methods can not be nested.
-    Argument * m_currentArgument; // Arguments can not be nested.
-    Entry * m_currentProperty; // Properties can not be nested.
-    Entry * m_currentEnum; // Enums can not be nested.
-    QList<Entry> m_namespaceStack;
-
-    struct StructData
-    {
-        StructData(Entry * e) : entry(e) { }
-        ~StructData() { }
-
-        QCString type;
-        Entry * entry;
-    };
-    QList<StructData> m_structStack; // Structs can be nested.
-
-    struct ScopeData
-    {
-        ScopeData(Entry * s, int c) :
-            scope(s),
-            count(c)
-        { }
-        ~ScopeData() { }
-
-        Entry * scope;
-        int count;
-    };
-    QList<ScopeData> m_scopeStack; // Scopes are nested.
-
-    QCString m_fileName;
-
-    struct CommentData
-    {
-        CommentData(const QCString & f, const int l, const QCString & t) :
-            isJavaStyle(false),
-            isQtStyle(false),
-            line(l),
-            fileName(f)
-        {
-            isJavaStyle = t.length()>0 && t.at(0)=='*';
-            isQtStyle = t.length()>0 && t.at(0)=='!';
-            shouldIgnore = (!isJavaStyle && !isQtStyle);
-            associateWithPrevious = (t.length()>1 && t.at(1)=='<');
-            if (associateWithPrevious)
-            { text = t.mid(2); }
-            else
-            { text = t.mid(1); }
-        }
-        ~CommentData() { }
-
-        QCString text;
-        bool isJavaStyle;
-        bool isQtStyle;
-        bool shouldIgnore;
-        bool associateWithPrevious;
-        int line;
-        QCString fileName;
-    };
-    CommentData * m_currentComment;
-
-    int m_scopeCount; //*< unique scope id.
-
-    QString m_errorString;
-
-    QMap<QCString, QCString> m_namedTypeMap;
-};
-
-// -----------------------------------------------------------------------
-// DBusXMLScanner
-// -----------------------------------------------------------------------
-
-DBusXMLScanner::DBusXMLScanner()
-{ }
-
-DBusXMLScanner::~DBusXMLScanner()
-{ }
-
-void DBusXMLScanner::parseInput(const char * fileName,
-                                const char * /* fileBuf */,
-                                Entry *root,
-                                bool /*sameTranslationUnit*/,
-                                QStrList & /*filesInSameTranslationUnit*/)
-{
-    QFile inputFile(fileName);
-
-    QXmlInputSource inputSource(inputFile);
-    QXmlSimpleReader reader;
-
-    DBusXMLHandler handler(this, &reader, fileName, root);
-    reader.setContentHandler(&handler);
-    reader.setErrorHandler(&handler);
-    reader.setLexicalHandler(&handler);
-
-    groupEnterFile(fileName, 1);
-    handler.setSection();
-    reader.parse(inputSource);
-
-    if (!handler.errorString().isEmpty())
-    { err("DBus XML Parser: Error at line %d: %s\n", 
-        handler.locator()->lineNumber(),handler.errorString().utf8().data()); }
-
-    groupLeaveFile(fileName, 1);
-}
-
-bool DBusXMLScanner::needsPreprocessing(const QCString & /* extension */)
-{ return (false); }
-
-void DBusXMLScanner::parseCode(CodeOutputInterface & /* codeOutIntf */,
-                               const char * /* scopeName */,
-                               const QCString & /* input */,
-                               SrcLangExt /* lang */,
-                               bool /* isExampleBlock */,
-                               const char * /* exampleName */,
-                               FileDef * /* fileDef */,
-                               int /* startLine */,
-                               int /* endLine */,
-                               bool /* inlineFragment */,
-                               MemberDef * /* memberDef */,
-                               bool /*showLineNumbers*/,
-                               Definition * /* searchCtx */,
-                               bool /*collectXRefs*/ )
-{ }
-
-void DBusXMLScanner::resetCodeParserState()
-{ }
-
-void DBusXMLScanner::parsePrototype(const char * /* text */)
-{ }
diff --git a/src/debug.cpp b/src/debug.cpp
index e27ce11..c81a1af 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/debug.h b/src/debug.h
index e17c03c..8a28c7a 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/declinfo.h b/src/declinfo.h
index 5f11a1c..d226c7d 100644
--- a/src/declinfo.h
+++ b/src/declinfo.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/declinfo.l b/src/declinfo.l
index a90077e..0f24d9e 100644
--- a/src/declinfo.l
+++ b/src/declinfo.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -14,7 +14,7 @@
  * input used in their production; they are not affected by this license.
  *
  */
-
+%option never-interactive
 %{
 
 /*
@@ -30,6 +30,7 @@
 #include "message.h"
 
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
   
 /* -----------------------------------------------------------------
  *
diff --git a/src/defargs.h b/src/defargs.h
index 6ebfe1d..34a19a2 100644
--- a/src/defargs.h
+++ b/src/defargs.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/defargs.l b/src/defargs.l
index 164c100..603f238 100644
--- a/src/defargs.l
+++ b/src/defargs.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -39,7 +39,7 @@
  *        type, and the matchArgumentList in util.cpp is be used to
  *        further determine the correct separation.
  */
-
+%option never-interactive
 %{
 
 /*
@@ -57,8 +57,8 @@
 #include "arguments.h"
 #include "message.h"
   
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
   
 /* -----------------------------------------------------------------
  *	state variables
@@ -73,6 +73,7 @@ static QCString		g_curArgName;
 static QCString		g_curArgDocs;
 static QCString		g_curArgAttrib;
 static QCString		g_curArgArray;
+static QCString         g_curTypeConstraint;
 static QCString		g_extraTypeChars;
 static int              g_argRoundCount;
 static int              g_argSharpCount;
@@ -80,6 +81,7 @@ static int              g_argCurlyCount;
 static int              g_readArgContext;
 static int              g_lastDocContext;
 static int              g_lastDocChar;
+static int              g_lastExtendsContext;
 static QCString         g_delimiter;
 
 /* -----------------------------------------------------------------
@@ -120,6 +122,7 @@ RAWEND    ")"[^ \t\(\)\\]{0,16}\"
 %x	FuncQual
 %x	ReadDocBlock
 %x	ReadDocLine
+%x      ReadTypeConstraint
 %x      TrailingReturn
 
 
@@ -332,8 +335,9 @@ RAWEND    ")"[^ \t\(\)\\]{0,16}\"
 					      int i=l-1;
 					      while (i>=0 && (isspace((uchar)g_curArgTypeName.at(i)) || g_curArgTypeName.at(i)=='.')) i--;
 					      while (i>=0 && (isId(g_curArgTypeName.at(i)) || g_curArgTypeName.at(i)=='$')) i--;
-					      Argument *a = new Argument; 
-					      a->attrib = g_curArgAttrib.copy();
+					      Argument *a = new Argument;
+					      a->attrib  = g_curArgAttrib.copy();
+                                              a->typeConstraint = g_curTypeConstraint.stripWhiteSpace();
 					      //printf("a->type=%s a->name=%s i=%d l=%d\n",
 					      //        a->type.data(),a->name.data(),i,l);
 					      a->array.resize(0);
@@ -342,7 +346,7 @@ RAWEND    ")"[^ \t\(\)\\]{0,16}\"
 						int bi=g_curArgTypeName.find('(');
 						int fi=bi-1;
 						//printf("func arg fi=%d\n",fi);
-						while (fi>=0 && isId(g_curArgTypeName.at(fi))) fi--;
+						while (fi>=0 && (isId(g_curArgTypeName.at(fi)) || g_curArgTypeName.at(fi)==':')) fi--;
 						if (fi>=0)
 						{
 						  a->type  = g_curArgTypeName.left(fi+1);
@@ -370,14 +374,14 @@ RAWEND    ")"[^ \t\(\)\\]{0,16}\"
 						    a->type.mid(sv)=="union"     ||
 						    a->type.mid(sv)=="class"     ||
 						    a->type.mid(sv)=="typename"  ||
-						    a->type=="const"             ||
+						    a->type=="const"               ||
 						    a->type=="volatile"
 						   )
 						{ 
 						  a->type = a->type + " " + a->name;
 						  a->name.resize(0);
 						}
-						//printf(" --> a->type='%s'\n",a->type.data());
+						//printf(" --> a->type='%s' a->name='%s'\n",a->type.data(),a->name.data());
 					      }
 					      else // assume only the type was specified, try to determine name later 
 					      {
@@ -413,6 +417,7 @@ RAWEND    ")"[^ \t\(\)\\]{0,16}\"
 					    g_curArgDefValue.resize(0);
 					    g_curArgArray.resize(0);
 					    g_curArgDocs.resize(0);
+                                            g_curTypeConstraint.resize(0);
 					    if (*yytext==')')
 					    {
 					      BEGIN(FuncQual);
@@ -424,6 +429,11 @@ RAWEND    ")"[^ \t\(\)\\]{0,16}\"
 					    }
 					  }
   					}
+<ReadFuncArgType,ReadFuncArgPtr>"extends" {
+                                          g_curTypeConstraint.resize(0);
+                                          g_lastExtendsContext=YY_START;
+                                          BEGIN(ReadTypeConstraint);
+                                        }
 <ReadFuncArgType,ReadFuncArgPtr>"$"?{ID} { 
   					  QCString name=yytext; //resolveDefines(yytext);
 					  if (YY_START==ReadFuncArgType && g_curArgArray=="[]") // Java style array
@@ -451,13 +461,23 @@ RAWEND    ")"[^ \t\(\)\\]{0,16}\"
 <CopyArgRound,CopyArgRound2,CopyArgSharp,CopyArgCurly>.  {
 					  *g_copyArgValue += *yytext;
 					}
-<FuncQual>"const"		       	{ 
+<ReadTypeConstraint>[,)>]               {
+                                          unput(*yytext);
+                                          BEGIN(g_lastExtendsContext);
+                                        }
+<ReadTypeConstraint>.                   {
+                                          g_curTypeConstraint+=yytext;
+                                        }
+<ReadTypeConstraint>\n                  {
+                                          g_curTypeConstraint+=' ';
+                                        }
+<FuncQual>"const"		       	{
 					  g_argList->constSpecifier=TRUE;
 					}
-<FuncQual>"volatile"		    	{ 
+<FuncQual>"volatile"		    	{
 					  g_argList->volatileSpecifier=TRUE;
 					}
-<FuncQual,TrailingReturn>"="{B}*"0"  	{ 
+<FuncQual,TrailingReturn>"="{B}*"0"  	{
 					  g_argList->pureSpecifier=TRUE;
                                           BEGIN(FuncQual);
 					}
@@ -534,6 +554,7 @@ void stringToArgumentList(const char *argsString,ArgumentList* al,QCString *extr
   g_curArgDocs.resize(0);
   g_curArgAttrib.resize(0);
   g_curArgArray.resize(0);
+  g_curTypeConstraint.resize(0);
   g_extraTypeChars.resize(0);
   g_argRoundCount = 0;
   g_argSharpCount = 0;
diff --git a/src/defgen.cpp b/src/defgen.cpp
index 358cd24..90ae0a2 100644
--- a/src/defgen.cpp
+++ b/src/defgen.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/defgen.h b/src/defgen.h
index 696fb5c..a56c823 100644
--- a/src/defgen.h
+++ b/src/defgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/define.cpp b/src/define.cpp
index 2f4e43a..121f5cb 100644
--- a/src/define.cpp
+++ b/src/define.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/define.h b/src/define.h
index 7971cc4..cc1e390 100644
--- a/src/define.h
+++ b/src/define.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/definition.cpp b/src/definition.cpp
index 8014a37..d04dd59 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -282,7 +282,7 @@ void Definition::removeFromMap(Definition *d)
 
 Definition::Definition(const char *df,int dl,int dc,
                        const char *name,const char *b,
-                       const char *d,bool isSymbol)
+                       const char *d,bool isSymbol) : m_cookie(0)
 {
   m_name = name;
   m_defLine = dl;
@@ -299,7 +299,7 @@ Definition::Definition(const char *df,int dl,int dc,
   }
 }
 
-Definition::Definition(const Definition &d) : DefinitionIntf()
+Definition::Definition(const Definition &d) : DefinitionIntf(), m_cookie(0)
 {
   m_name = d.m_name;
   m_defLine = d.m_defLine;
@@ -380,7 +380,7 @@ Definition::Definition(const Definition &d) : DefinitionIntf()
 
 Definition::~Definition()
 {
-  if (m_isSymbol) 
+  if (m_isSymbol)
   {
     removeFromMap(this);
   }
@@ -389,6 +389,8 @@ Definition::~Definition()
     delete m_impl;
     m_impl=0;
   }
+  delete m_cookie;
+  m_cookie=0;
 }
 
 void Definition::setName(const char *name)
@@ -495,7 +497,11 @@ void Definition::addSectionsToIndex()
       }
       QCString title = si->title;
       if (title.isEmpty()) title = si->label;
-      Doxygen::indexList->addContentsItem(TRUE,title,
+      // determine if there is a next level inside this item
+      ++li;
+      bool isDir = ((li.current()) ? (int)(li.current()->type > nextLevel):FALSE);
+      --li;
+      Doxygen::indexList->addContentsItem(isDir,title,
                                          getReference(),
                                          getOutputFileBase(),
                                          si->label,
@@ -737,7 +743,7 @@ bool readCodeFragment(const char *fileName,
   else // use filter
   {
     QCString cmd=filter+" \""+fileName+"\"";
-    Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",cmd.data());
+    Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",qPrint(cmd));
     f = portable_popen(cmd,"r");
   }
   bool found = lang==SrcLangExt_VHDL   || 
@@ -864,7 +870,7 @@ bool readCodeFragment(const char *fileName,
     {
       portable_pclose(f); 
       Debug::print(Debug::FilterOutput, 0, "Filter output\n");
-      Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",result.data());
+      Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",qPrint(result));
     }
     else 
     {
@@ -893,6 +899,7 @@ QCString Definition::getSourceAnchor() const
 {
   const int maxAnchorStrLen = 20;
   char anchorStr[maxAnchorStrLen];
+  anchorStr[0]='\0';
   if (m_impl->body && m_impl->body->startLine!=-1)
   {
     if (Htags::useHtags)
@@ -1212,7 +1219,7 @@ void Definition::_writeSourceRefList(OutputList &ol,const char *scopeName,
           {
             ol.disable(OutputGenerator::Latex);
           }
-          if (!rtfSourceCode)
+          if (rtfSourceCode)
           {
             ol.disable(OutputGenerator::RTF);
           }
@@ -1662,7 +1669,8 @@ void Definition::writeToc(OutputList &ol)
       }
       cs[0]='0'+nextLevel;
       if (inLi[nextLevel]) ol.writeString("</li>\n");
-      ol.writeString("<li class=\"level"+QCString(cs)+"\"><a href=\"#"+si->label+"\">"+(si->title.isEmpty()?si->label:si->title)+"</a>");
+      QCString titleDoc = convertToHtml(si->title);
+      ol.writeString("<li class=\"level"+QCString(cs)+"\"><a href=\"#"+si->label+"\">"+(si->title.isEmpty()?si->label:titleDoc)+"</a>");
       inLi[nextLevel]=TRUE;
       level = nextLevel;
     }
@@ -1937,4 +1945,27 @@ bool Definition::hasBriefDescription() const
   return !briefDescription().isEmpty() && briefMemberDesc;
 }
 
+QCString Definition::externalReference(const QCString &relPath) const
+{
+  QCString ref = getReference();
+  if (!ref.isEmpty())
+  {
+    QCString *dest = Doxygen::tagDestinationDict[ref];
+    if (dest)
+    {
+      QCString result = *dest;
+      int l = result.length();
+      if (!relPath.isEmpty() && l>0 && result.at(0)=='.')
+      { // relative path -> prepend relPath.
+        result.prepend(relPath);
+        l+=relPath.length();
+      }
+      if (l>0 && result.at(l-1)!='/') result+='/';
+      return result;
+    }
+  }
+  return relPath;
+}
+
+
 
diff --git a/src/definition.h b/src/definition.h
index b1f118d..6277c6c 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -92,7 +92,11 @@ class DefinitionIntf
 class Definition : public DefinitionIntf
 {
   public:
-    
+    struct Cookie
+    {
+      virtual ~Cookie() {}
+    };
+
     /*! Create a new definition */
     Definition(
         const char *defFileName,int defLine,int defColumn,
@@ -231,6 +235,9 @@ class Definition : public DefinitionIntf
     /*! Returns TRUE if this definition is imported via a tag file. */
     virtual bool isReference() const;
 
+    /*! Convenience method to return a resolved external link */
+    QCString externalReference(const QCString &relPath) const;
+
     /*! Returns the first line of the body of this item (applicable to classes and 
      *  functions).
      */
@@ -341,6 +348,9 @@ class Definition : public DefinitionIntf
     void addSectionsToIndex();
     void writeToc(OutputList &ol);
 
+    void setCookie(Cookie *cookie) { delete m_cookie; m_cookie = cookie; }
+    Cookie *cookie() const { return m_cookie; }
+
   protected:
 
     Definition(const Definition &d);
@@ -364,6 +374,7 @@ class Definition : public DefinitionIntf
     QCString m_symbolName;
     int m_defLine;
     int m_defColumn;
+    Cookie *m_cookie;
 };
 
 /** A list of Definition objects. */
diff --git a/src/dia.cpp b/src/dia.cpp
index 955171c..347acba 100644
--- a/src/dia.cpp
+++ b/src/dia.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/dia.h b/src/dia.h
index ca10332..93d7b04 100644
--- a/src/dia.h
+++ b/src/dia.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/diagram.cpp b/src/diagram.cpp
index cc16b50..8a6ccf6 100644
--- a/src/diagram.cpp
+++ b/src/diagram.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -274,7 +274,7 @@ static void writeMapArea(FTextStream &t,ClassDef *cd,QCString relPath,
     QCString tooltip = cd->briefDescriptionAsTooltip();
     if (!tooltip.isEmpty())
     {
-      t << "title=\"" << tooltip << "\" ";
+      t << "title=\"" << convertToHtml(tooltip) << "\" ";
     }
     t << "alt=\"" << convertToXML(cd->displayName()); 
     t << "\" shape=\"rect\" coords=\"" << x << "," << y << ",";
diff --git a/src/diagram.h b/src/diagram.h
index 6ce83f3..2922657 100644
--- a/src/diagram.h
+++ b/src/diagram.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/dirdef.cpp b/src/dirdef.cpp
index 067daa0..ddd0c37 100644
--- a/src/dirdef.cpp
+++ b/src/dirdef.cpp
@@ -228,6 +228,7 @@ void DirDef::writeSubDirList(OutputList &ol)
     DirDef *dd;
     for (;(dd=it.current());++it)
     {
+      if (!dd->hasDocumentation()) continue;
       ol.startMemberDeclaration();
       ol.startMemberItem(dd->getOutputFileBase(),0);
       ol.parseText(theTranslator->trDir(FALSE,TRUE)+" ");
@@ -266,6 +267,7 @@ void DirDef::writeFileList(OutputList &ol)
     FileDef *fd;
     for (;(fd=it.current());++it)
     {
+      if (!fd->hasDocumentation()) continue;
       ol.startMemberDeclaration();
       ol.startMemberItem(fd->getOutputFileBase(),0);
       ol.docify(theTranslator->trFile(FALSE,TRUE)+" ");
@@ -385,7 +387,7 @@ void DirDef::writeDocumentation(OutputList &ol)
   ol.pushGeneratorState();
   
   QCString title=theTranslator->trDirReference(m_dispName);
-  startFile(ol,getOutputFileBase(),name(),title,HLI_None,!generateTreeView);
+  startFile(ol,getOutputFileBase(),name(),title,HLI_Files,!generateTreeView);
 
   if (!generateTreeView)
   {
@@ -610,7 +612,7 @@ bool DirDef::isParentOf(DirDef *dir) const
 
 bool DirDef::depGraphIsTrivial() const
 {
-  return FALSE;
+  return m_usedDirs->count()==0;
 }
 
 //----------------------------------------------------------------------
@@ -696,11 +698,6 @@ DirDef *DirDef::mergeDirectoryInTree(const QCString &path)
   return dir;
 }
 
-void DirDef::writeDepGraph(FTextStream &t)
-{
-    writeDotDirDepGraph(t,this);
-}
-
 //----------------------------------------------------------------------
 
 static void writePartialDirPath(OutputList &ol,const DirDef *root,const DirDef *target)
@@ -841,6 +838,7 @@ static void computeCommonDirPrefix()
           else // dir is shorter than path -> take path of dir as new start
           {
             path=dir->name();
+            l=path.length();
             int i=path.findRev('/',l-2);
             if (i==-1) // no unique prefix -> stop
             {
diff --git a/src/dirdef.h b/src/dirdef.h
index 9a8a5ad..611ba3e 100644
--- a/src/dirdef.h
+++ b/src/dirdef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -71,7 +71,6 @@ class DirDef : public Definition
 
     // generate output
     void writeDocumentation(OutputList &ol);
-    void writeDepGraph(FTextStream &t);
     void writeTagFile(FTextStream &t);
 
     static DirDef *mergeDirectoryInTree(const QCString &path);
diff --git a/src/docbookgen.cpp b/src/docbookgen.cpp
index 8530f31..ac00e1f 100644
--- a/src/docbookgen.cpp
+++ b/src/docbookgen.cpp
@@ -2,7 +2,7 @@
 *
 * 
 *
-* Copyright (C) 1997-2014 by Dimitri van Heesch.
+* Copyright (C) 1997-2015 by Dimitri van Heesch.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation under the terms of the GNU General Public License is hereby
@@ -483,13 +483,13 @@ static void generateDocbookForMember(MemberDef *md,FTextStream &t,Definition *de
           cnt++;
         }
         t << endl << "}";
-        t << "</literallayout>" << endl;
-        if (md->briefDescription())
-        {
-            t << "<para><emphasis>";
-            writeDocbookString(t,md->briefDescription());
-            t << "</emphasis></para>" << endl;
-        }
+      }
+      t << "</literallayout>" << endl;
+      if (md->briefDescription())
+      {
+          t << "<para><emphasis>";
+          writeDocbookString(t,md->briefDescription());
+          t << "</emphasis></para>" << endl;
       }
     }
     else if (md->memberType()==MemberType_Define) 
diff --git a/src/docbookgen.h b/src/docbookgen.h
index 0431cf2..866d056 100644
--- a/src/docbookgen.h
+++ b/src/docbookgen.h
@@ -2,7 +2,7 @@
 *
 * 
 *
-* Copyright (C) 1997-2014 by Dimitri van Heesch.
+* Copyright (C) 1997-2015 by Dimitri van Heesch.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/docbookvisitor.cpp b/src/docbookvisitor.cpp
index 29b3ea5..70e9c53 100644
--- a/src/docbookvisitor.cpp
+++ b/src/docbookvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1350,7 +1350,7 @@ void DocbookDocVisitor::startDotFile(const QCString &fileName,
   }
   baseName.prepend("dot_");
   QCString outDir = Config_getString("DOCBOOK_OUTPUT");
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
   writeDotGraphFromFile(fileName,outDir,baseName,GOF_BITMAP);
   m_t << "<para>" << endl;
   visitPreStart(m_t, hasCaption, baseName + "." + imgExt,  width,  height);
diff --git a/src/docbookvisitor.h b/src/docbookvisitor.h
index 3796d8a..6c7976c 100644
--- a/src/docbookvisitor.h
+++ b/src/docbookvisitor.h
@@ -2,7 +2,7 @@
 *
 * 
 *
-* Copyright (C) 1997-2014 by Dimitri van Heesch.
+* Copyright (C) 1997-2015 by Dimitri van Heesch.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 5208bbe..099213d 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -471,9 +471,9 @@ static void checkUndocumentedParams()
         if (lang==SrcLangExt_Fortran) argName = argName.lower();
         argName=argName.stripWhiteSpace();
         if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
-        if (g_memberDef->getLanguage()==SrcLangExt_Python && argName=="self")
+        if (g_memberDef->getLanguage()==SrcLangExt_Python && (argName=="self" || argName=="cls"))
         { 
-          // allow undocumented self parameter for Python
+          // allow undocumented self / cls parameter for Python
         }
         else if (!argName.isEmpty() && g_paramsFound.find(argName)==0 && a->docs.isEmpty()) 
         {
@@ -494,9 +494,9 @@ static void checkUndocumentedParams()
           QCString argName = g_memberDef->isDefine() ? a->type : a->name;
           if (lang==SrcLangExt_Fortran) argName = argName.lower();
           argName=argName.stripWhiteSpace();
-          if (g_memberDef->getLanguage()==SrcLangExt_Python && argName=="self")
+          if (g_memberDef->getLanguage()==SrcLangExt_Python && (argName=="self" || argName=="cls"))
           { 
-            // allow undocumented self parameter for Python
+            // allow undocumented self / cls parameter for Python
           }
           else if (!argName.isEmpty() && g_paramsFound.find(argName)==0) 
           {
@@ -511,18 +511,9 @@ static void checkUndocumentedParams()
             errMsg+="  parameter '"+argName+"'";
           }
         }
-        if (g_memberDef->inheritsDocsFrom())
-        {
-           warn_doc_error(g_memberDef->getDefFileName(),
-                          g_memberDef->getDefLine(),
-                          substitute(errMsg,"%","%%"));
-        }
-        else
-        {
-           warn_doc_error(g_memberDef->docFile(),
-                          g_memberDef->docLine(),
-                          substitute(errMsg,"%","%%"));
-        }
+        warn_doc_error(g_memberDef->getDefFileName(),
+                       g_memberDef->getDefLine(),
+                       substitute(errMsg,"%","%%"));
       }
     }
   }
@@ -563,7 +554,7 @@ static void detectNoDocumentedParams()
         for (ali.toFirst();(a=ali.current()) && allDoc;++ali)
         {
           if (!a->name.isEmpty() && a->type!="void" &&
-              !(isPython && a->name=="self")
+              !(isPython && (a->name=="self" || a->name=="cls"))
              )
           {
             allDoc = !a->docs.isEmpty();
@@ -579,7 +570,7 @@ static void detectNoDocumentedParams()
           for (ali.toFirst();(a=ali.current()) && allDoc;++ali)
           {
             if (!a->name.isEmpty() && a->type!="void" &&
-                !(isPython && a->name=="self")
+                !(isPython && (a->name=="self" || a->name=="cls"))
                )
             {
               allDoc = !a->docs.isEmpty();
@@ -594,7 +585,8 @@ static void detectNoDocumentedParams()
         g_memberDef->setHasDocumentedParams(TRUE);
       }
     }
-    //printf("Member %s hasReturnCommand=%d\n",g_memberDef->name().data(),g_hasReturnCommand);
+    //printf("Member %s hadDocumentedReturnType()=%d hasReturnCommand=%d\n",
+    //    g_memberDef->name().data(),g_memberDef->hasDocumentedReturnType(),g_hasReturnCommand);
     if (!g_memberDef->hasDocumentedReturnType() && // docs not yet found
         g_hasReturnCommand)
     {
@@ -611,7 +603,18 @@ static void detectNoDocumentedParams()
     {
       g_memberDef->setHasDocumentedReturnType(TRUE);
     }
-       
+    else if ( // see if return type is documented in a function w/o return type
+        g_memberDef->hasDocumentedReturnType() &&
+        (returnType.isEmpty()              || // empty return type
+         returnType.find("void")!=-1       || // void return type
+         returnType.find("subroutine")!=-1 || // fortran subroutine
+         g_memberDef->isConstructor()      || // a constructor
+         g_memberDef->isDestructor()          // or destructor
+        )
+       )
+    {
+      warn_doc_error(g_fileName,doctokenizerYYlineno,"documented empty return type");
+    }
   }
 }
 
@@ -1382,6 +1385,15 @@ reparsetoken:
         case CMD_QUOTE:
           children.append(new DocSymbol(parent,DocSymbol::Sym_Quot));
           break;
+        case CMD_PUNT:
+          children.append(new DocSymbol(parent,DocSymbol::Sym_Dot));
+          break;
+        case CMD_PLUS:
+          children.append(new DocSymbol(parent,DocSymbol::Sym_Plus));
+          break;
+        case CMD_MINUS:
+          children.append(new DocSymbol(parent,DocSymbol::Sym_Minus));
+          break;
         case CMD_EMPHASIS:
           {
             children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,TRUE));
@@ -1743,6 +1755,15 @@ static int internalValidatingParseDoc(DocNode *parent,QList<DocNode> &children,
 
 static void readTextFileByName(const QCString &file,QCString &text)
 {
+  if (portable_isAbsolutePath(file.data()))
+  {
+    QFileInfo fi(file);
+    if (fi.exists())
+    {
+      text = fileToString(file,Config_getBool("FILTER_SOURCE_FILES"));
+      return;
+    }
+  }
   QStrList &examplePathList = Config_getList("EXAMPLE_PATH");
   char *s=examplePathList.first();
   while (s)
@@ -2159,7 +2180,7 @@ bool DocXRefItem::parse()
       }
       else
       {
-        m_file   = convertNameToFile(refList->listName(),FALSE,TRUE);
+        m_file   = refList->fileName();
         m_anchor = item->listAnchor;
       }
       m_title  = refList->sectionTitle();
@@ -2409,7 +2430,7 @@ void DocInternalRef::parse()
 //---------------------------------------------------------------------------
 
 DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) : 
-   m_refToSection(FALSE), m_refToAnchor(FALSE), m_isSubPage(FALSE)
+   m_refType(Unknown), m_isSubPage(FALSE)
 {
   m_parent = parent; 
   Definition  *compound = 0;
@@ -2435,8 +2456,18 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) :
 
     m_ref          = sec->ref;
     m_file         = stripKnownExtensions(sec->fileName);
-    m_refToAnchor  = sec->type==SectionInfo::Anchor;
-    m_refToSection = sec->type!=SectionInfo::Anchor;
+    if (sec->type==SectionInfo::Anchor)
+    {
+      m_refType = Anchor;
+    }
+    else if (sec->type==SectionInfo::Table)
+    {
+      m_refType = Table;
+    }
+    else
+    {
+      m_refType = Section;
+    }
     m_isSubPage    = pd && pd->hasParentPage();
     if (sec->type!=SectionInfo::Page || m_isSubPage) m_anchor = sec->label;
     //printf("m_text=%s,m_ref=%s,m_file=%s,m_refToAnchor=%d type=%d\n",
@@ -3207,6 +3238,9 @@ int DocIndexEntry::parse()
         case CMD_NDASH:   m_entry+="--";  break;
         case CMD_MDASH:   m_entry+="---";  break;
         case CMD_QUOTE:   m_entry+='"';  break;
+        case CMD_PUNT:    m_entry+='.';  break;
+        case CMD_PLUS:    m_entry+='+';  break;
+        case CMD_MINUS:   m_entry+='-';  break;
         default:
           warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected command %s found as argument of \\addindex",
                     qPrint(g_token->name));
@@ -3230,6 +3264,41 @@ endindexentry:
 
 //---------------------------------------------------------------------------
 
+DocHtmlCaption::DocHtmlCaption(DocNode *parent,const HtmlAttribList &attribs)
+{
+  m_hasCaptionId = FALSE;
+  HtmlAttribListIterator li(attribs);
+  HtmlAttrib *opt;
+  for (li.toFirst();(opt=li.current());++li)
+  {
+    if (opt->name=="id") // interpret id attribute as an anchor
+    {
+      SectionInfo *sec = Doxygen::sectionDict->find(opt->value);
+      if (sec)
+      {
+        //printf("Found anchor %s\n",id.data());
+        m_file   = sec->fileName;
+        m_anchor = sec->label;
+        m_hasCaptionId = TRUE;
+        if (g_sectionDict && g_sectionDict->find(opt->value)==0)
+        {
+          //printf("Inserting in dictionary!\n");
+          g_sectionDict->append(opt->value,sec);
+        }
+      }
+      else
+      {
+        warn_doc_error(g_fileName,doctokenizerYYlineno,"Invalid caption id `%s'",qPrint(opt->value));
+      }
+    }
+    else // copy attribute
+    {
+      m_attribs.append(new HtmlAttrib(*opt));
+    }
+  }
+  m_parent = parent;
+}
+
 int DocHtmlCaption::parse()
 {
   int retval=0;
@@ -3655,7 +3724,8 @@ int DocHtmlTable::parseXml()
   DBG(("DocHtmlTable::parseXml() end\n"));
   DocNode *n=g_nodeStack.pop();
   ASSERT(n==this);
-  return retval==RetVal_EndTable ? RetVal_OK : retval;
+  tagId=Mappers::htmlTagMapper->map(g_token->name);
+  return tagId==XML_LIST && g_token->endTag ? RetVal_OK : retval;
 }
 
 /** Helper class to compute the grid for an HTML style table */
@@ -3734,12 +3804,14 @@ void DocHtmlTable::accept(DocVisitor *v)
 { 
   v->visitPre(this); 
   // for HTML output we put the caption first
-  if (m_caption && v->id()==DocVisitor_Html) m_caption->accept(v);
+  //if (m_caption && v->id()==DocVisitor_Html) m_caption->accept(v);
+  // doxygen 1.8.11: always put the caption first
+  if (m_caption) m_caption->accept(v);
   QListIterator<DocNode> cli(m_children);
   DocNode *n;
   for (cli.toFirst();(n=cli.current());++cli) n->accept(v);
   // for other output formats we put the caption last
-  if (m_caption && v->id()!=DocVisitor_Html) m_caption->accept(v);
+  //if (m_caption && v->id()!=DocVisitor_Html) m_caption->accept(v);
   v->visitPost(this); 
 }
 
@@ -5277,6 +5349,15 @@ int DocPara::handleCommand(const QCString &cmdName)
     case CMD_QUOTE:
       m_children.append(new DocSymbol(this,DocSymbol::Sym_Quot));
       break;
+    case CMD_PUNT:
+      m_children.append(new DocSymbol(this,DocSymbol::Sym_Dot));
+      break;
+    case CMD_PLUS:
+      m_children.append(new DocSymbol(this,DocSymbol::Sym_Plus));
+      break;
+    case CMD_MINUS:
+      m_children.append(new DocSymbol(this,DocSymbol::Sym_Minus));
+      break;
     case CMD_SA:
       g_inSeeBlock=TRUE;
       retval = handleSimpleSection(DocSimpleSect::See);
@@ -5885,7 +5966,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta
           {
             if (Config_getBool("WARN_NO_PARAMDOC"))
             {
-              warn_doc_error(g_fileName,doctokenizerYYlineno,"empty 'name' attribute for <param> tag.");
+              warn_doc_error(g_fileName,doctokenizerYYlineno,"empty 'name' attribute for <param%s> tag.",tagId==XML_PARAM?"":"type");
             }
           }
           else
@@ -5897,7 +5978,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta
         }
         else
         {
-          warn_doc_error(g_fileName,doctokenizerYYlineno,"Missing 'name' attribute from <param> tag.");
+          warn_doc_error(g_fileName,doctokenizerYYlineno,"Missing 'name' attribute from <param%s> tag.",tagId==XML_PARAM?"":"type");
         }
       }
       break;
@@ -5930,7 +6011,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta
         }
         else
         {
-          warn_doc_error(g_fileName,doctokenizerYYlineno,"Missing 'name' attribute from <exception> tag.");
+          warn_doc_error(g_fileName,doctokenizerYYlineno,"Missing 'cref' attribute from <exception> tag.");
         }
       }
       break;
@@ -6228,9 +6309,9 @@ int DocPara::handleHtmlEndTag(const QCString &tagName)
     case XML_REMARKS:
     case XML_PARA:
     case XML_VALUE:
-    case XML_LIST:
     case XML_EXAMPLE:
     case XML_PARAM:
+    case XML_LIST:
     case XML_TYPEPARAM:
     case XML_RETURNS:
     case XML_SEE:
@@ -6788,6 +6869,15 @@ void DocText::parse()
           case CMD_QUOTE:
             m_children.append(new DocSymbol(this,DocSymbol::Sym_Quot));
             break;
+          case CMD_PUNT:
+            m_children.append(new DocSymbol(this,DocSymbol::Sym_Dot));
+            break;
+          case CMD_PLUS:
+            m_children.append(new DocSymbol(this,DocSymbol::Sym_Plus));
+            break;
+          case CMD_MINUS:
+            m_children.append(new DocSymbol(this,DocSymbol::Sym_Minus));
+            break;
           default:
             warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected command `%s' found",
                       qPrint(g_token->name));
diff --git a/src/docparser.h b/src/docparser.h
index e8ef754..e2751d8 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -309,10 +309,18 @@ class DocCite : public DocNode
 class DocStyleChange : public DocNode
 {
   public:
-    enum Style { Bold, Italic, Code, Center, Small, 
-                 Subscript, Superscript, Preformatted,
-                 Span, Div
+    enum Style { Bold          = (1<<0),
+                 Italic        = (1<<1),
+                 Code          = (1<<2),
+                 Center        = (1<<3),
+                 Small         = (1<<4),
+                 Subscript     = (1<<5),
+                 Superscript   = (1<<6),
+                 Preformatted  = (1<<7),
+                 Span          = (1<<8),
+                 Div           = (1<<9)
                };
+
     DocStyleChange(DocNode *parent,uint position,Style s,bool enable,
                    const HtmlAttribList *attribs=0) : 
       m_position(position), m_style(s), m_enable(enable)
@@ -395,7 +403,7 @@ class DocSymbol : public DocNode
                    /* doxygen commands mapped */
                    Sym_BSlash, Sym_At, Sym_Less, Sym_Greater, Sym_Amp,
                    Sym_Dollar, Sym_Hash, Sym_DoubleColon, Sym_Percent, Sym_Pipe,
-                   Sym_Quot, Sym_Minus
+                   Sym_Quot, Sym_Minus, Sym_Plus, Sym_Dot
                  };
     enum PerlType { Perl_unknown = 0, Perl_string, Perl_char, Perl_symbol, Perl_umlaut,
                     Perl_acute, Perl_grave, Perl_circ, Perl_slash, Perl_tilde,
@@ -822,15 +830,16 @@ class DocRef : public CompAccept<DocRef>, public DocNode
     QCString anchor() const       { return m_anchor; }
     QCString targetTitle() const  { return m_text; }
     bool hasLinkText() const     { return !m_children.isEmpty(); }
-    bool refToAnchor() const     { return m_refToAnchor; }
-    bool refToSection() const    { return m_refToSection; }
+    bool refToAnchor() const     { return m_refType==Anchor; }
+    bool refToSection() const    { return m_refType==Section; }
+    bool refToTable() const      { return m_refType==Table; }
     bool isSubPage() const       { return m_isSubPage; }
     void accept(DocVisitor *v)   { CompAccept<DocRef>::accept(this,v); }
 
   private:
-    bool      m_refToSection;
-    bool      m_refToAnchor;
-    bool      m_isSubPage;
+    enum RefType { Unknown, Anchor, Section, Table };
+    RefType    m_refType;
+    bool       m_isSubPage;
     QCString   m_file;
     QCString   m_relPath;
     QCString   m_ref;
@@ -1279,15 +1288,20 @@ class DocHtmlCell : public CompAccept<DocHtmlCell>, public DocNode
 class DocHtmlCaption : public CompAccept<DocHtmlCaption>, public DocNode
 {
   public:
-    DocHtmlCaption(DocNode *parent,const HtmlAttribList &attribs) : 
-      m_attribs(attribs) { m_parent = parent; }
+    DocHtmlCaption(DocNode *parent,const HtmlAttribList &attribs);
     Kind kind() const          { return Kind_HtmlCaption; }
     void accept(DocVisitor *v) { CompAccept<DocHtmlCaption>::accept(this,v); }
     const HtmlAttribList &attribs() const { return m_attribs; }
     int parse();
+    bool hasCaptionId() const { return m_hasCaptionId; }
+    QCString file() const     { return m_file;         }
+    QCString anchor() const   { return m_anchor;       }
 
   private:
     HtmlAttribList m_attribs;
+    bool           m_hasCaptionId;
+    QCString       m_file;
+    QCString       m_anchor;
 };
 
 /** Node representing a HTML table row */
@@ -1303,8 +1317,18 @@ class DocHtmlRow : public CompAccept<DocHtmlRow>, public DocNode
     const HtmlAttribList &attribs() const { return m_attribs; }
     int parse();
     int parseXml(bool header);
-    bool isHeading() const     { return m_children.count()>0 && 
-                                 ((DocHtmlCell*)m_children.getFirst())->isHeading(); 
+    bool isHeading() const     { // a row is a table heading if all cells are marked as such
+                                 bool heading=TRUE;
+                                 QListIterator<DocNode> it(m_children);
+                                 DocNode *n;
+                                 for (;(n=it.current());++it)
+                                 {
+                                   if (n->kind()==Kind_HtmlCell)
+                                   {
+                                     heading = heading && ((DocHtmlCell*)n)->isHeading();
+                                   }
+                                 }
+                                 return m_children.count()>0 && heading;
                                }
     void setVisibleCells(int n) { m_visibleCells = n; }
     int visibleCells() const    { return m_visibleCells; }
@@ -1332,6 +1356,12 @@ class DocHtmlTable : public CompAccept<DocHtmlTable>, public DocNode
     int parseXml();
     uint numColumns() const { return m_numCols; }
     void accept(DocVisitor *v);
+    DocHtmlCaption *caption() const { return m_caption; }
+    DocHtmlRow *firstRow() const {
+                             DocNode *n = m_children.getFirst();
+                             if (n && n->kind()==Kind_HtmlRow) return (DocHtmlRow*)n;
+                             return 0;
+                           }
 
   private:
     void computeTableGrid();
diff --git a/src/docsets.cpp b/src/docsets.cpp
index 52d24bb..9772d4e 100644
--- a/src/docsets.cpp
+++ b/src/docsets.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -468,10 +468,6 @@ void DocSets::addIndexItem(Definition *context,MemberDef *md,
       if (ii)
       {
         decl=ii->includeName;
-        if (decl.isEmpty())
-        {
-          decl=ii->local;
-        }
       }
     }
     else if (nd)
diff --git a/src/docsets.h b/src/docsets.h
index eac5bfc..548ba75 100644
--- a/src/docsets.h
+++ b/src/docsets.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/doctokenizer.h b/src/doctokenizer.h
index ead8da1..eb39906 100644
--- a/src/doctokenizer.h
+++ b/src/doctokenizer.h
@@ -3,7 +3,7 @@
  * $Id: $
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index f30e829..3169fc0 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -3,7 +3,7 @@
  * $Id: $
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -16,7 +16,7 @@
  *
  */
 
-
+%option never-interactive
 %{
 
 #include <ctype.h>
@@ -37,8 +37,8 @@
 #include "doxygen.h"
 #include "portable.h"
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
   
 //--------------------------------------------------------------------------
 
@@ -169,8 +169,7 @@ static void processSection()
   if ((si=Doxygen::sectionDict->find(g_secLabel)))
   {
     si->fileName = file;
-    //si = new SectionInfo(file,g_secLabel,g_secTitle,g_secType);
-    //Doxygen::sectionDict.insert(g_secLabel,si);
+    si->type     = g_secType;
   }
 }
 
@@ -334,7 +333,7 @@ BLANK     [ \t\r]
 ID        "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
 LABELID   [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
 PHPTYPE   [\\:a-z_A-Z0-9\x80-\xFF\-]+
-CITESCHAR [a-z_A-Z\x80-\xFF]
+CITESCHAR [a-z_A-Z0-9\x80-\xFF]
 CITEECHAR [a-z_A-Z0-9\x80-\xFF\-\+:\/]*
 CITEID    {CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*
 MAILADR   ("mailto:")?[a-z_A-Z0-9.+-]+"@"[a-z_A-Z0-9-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]+
@@ -354,7 +353,7 @@ FILEMASK  ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|{HFILEMASK}
 LINKMASK  [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"){BLANK}+)? 
 VERBATIM  "verbatim"{BLANK}*
 SPCMD1    {CMD}([a-z_A-Z][a-z_A-Z0-9]*|{VERBATIM}|"--"|"---")
-SPCMD2    {CMD}[\\@<>&$#%~".|]
+SPCMD2    {CMD}[\\@<>&$#%~".+|-]
 SPCMD3    {CMD}form#[0-9]+
 SPCMD4    {CMD}"::"
 INOUT	  "inout"|"in"|"out"|("in"{BLANK}*","{BLANK}*"out")|("out"{BLANK}*","{BLANK}*"in")
@@ -389,6 +388,7 @@ WORD1     {ESCWORD}|{CHARWORDQ}+|"{"|"}"|"'\"'"|("\""[^"\n]*\n?[^"\n]*"\"")
 WORD2     "."|","|"("|")"|"["|"]"|":"|";"|"\?"|"="|"'"
 WORD1NQ   {ESCWORD}|{CHARWORDQ}+|"{"|"}"
 WORD2NQ   "."|","|"("|")"|"["|"]"|":"|";"|"\?"|"="|"'"
+CAPTION   [cC][aA][pP][tT][iI][oO][nN]
 HTMLTAG   "<"(("/")?){ID}({WS}+{ATTRIB})*{WS}*(("/")?)">" 
 HTMLKEYL  "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"
 HTMLKEYU  "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"
@@ -1035,7 +1035,7 @@ REFWORD   {LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4}
 <St_IntRef>{BLANK}+"\"" {
                          BEGIN(St_Ref2);
                        }
-<St_SetScope>{SCOPEMASK}{BLANK} {
+<St_SetScope>({SCOPEMASK}|{ANONNS}){BLANK} {
                          g_token->name = yytext;
                          g_token->name = g_token->name.stripWhiteSpace();
 			 return TK_WORD;
@@ -1160,8 +1160,26 @@ REFWORD   {LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4}
 
      /* State for the pass used to find the anchors and sections */ 
 
-<St_Sections>[^\n@\\]+
-<St_Sections>"@@"|"\\\\"
+<St_Sections>[^\n@\\<]+
+<St_Sections>"@@"|"\\\\"|"@<"|"\\<"
+<St_Sections>"<"{CAPTION}({WS}+{ATTRIB})*">" {
+                                      QCString tag=yytext;
+                                      int s=tag.find("id=");
+                                      if (s!=-1) // command has id attribute
+                                      {
+                                        char c=tag[s+3];
+                                        if (c=='\'' || c=='"') // valid start
+                                        {
+                                          int e=tag.find(c,s+4);
+                                          if (e!=-1) // found matching end
+                                          {
+                                            g_secType = SectionInfo::Table;
+                                            g_secLabel=tag.mid(s+4,e-s-4); // extract id
+                                            processSection();
+                                          }
+                                        }
+                                      }
+                                    }
 <St_Sections>{CMD}"anchor"{BLANK}+  { 
                                       g_secType = SectionInfo::Anchor; 
 				      BEGIN(St_SecLabel1); 
diff --git a/src/docvisitor.h b/src/docvisitor.h
index a444b47..18fb743 100644
--- a/src/docvisitor.h
+++ b/src/docvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/dot.cpp b/src/dot.cpp
index 036cc86..0a4f136 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -164,7 +164,8 @@ static const char *normalEdgeColorMap[] =
   "firebrick4",    // Private
   "darkorchid3",   // "use" relation
   "grey75",        // Undocumented
-  "orange"         // template relation
+  "orange",        // template relation
+  "orange"         // type constraint
 };
 
 static const char *normalArrowStyleMap[] =
@@ -190,7 +191,8 @@ static const char *umlEdgeColorMap[] =
   "firebrick4",    // Private
   "grey25",        // "use" relation
   "grey75",        // Undocumented
-  "orange"         // template relation
+  "orange",        // template relation
+  "orange"         // type constraint
 };
 
 static const char *umlArrowStyleMap[] =
@@ -382,11 +384,14 @@ static bool convertMapFile(FTextStream &t,const char *mapName,
   {
     QCString buf(maxLineLen);
     int numBytes = f.readLine(buf.rawData(),maxLineLen);
-    buf[numBytes-1]='\0';
-
-    if (buf.left(5)=="<area")
+    if (numBytes>0)
     {
-      t << replaceRef(buf,relPath,urlOnly,context);
+      buf.resize(numBytes+1);
+
+      if (buf.left(5)=="<area")
+      {
+        t << replaceRef(buf,relPath,urlOnly,context);
+      }
     }
   }
   return TRUE;
@@ -654,9 +659,9 @@ static bool writeSVGFigureLink(FTextStream &out,const QCString &relPath,
 
 // since dot silently reproduces the input file when it does not
 // support the PNG format, we need to check the result.
-static void checkDotResult(const QCString &imgName)
+static void checkDotResult(const char *imgExt, const char *imgName)
 {
-  if (Config_getEnum("DOT_IMAGE_FORMAT")=="png")
+  if (qstrcmp(imgExt,"png")==0)
   {
     FILE *f = portable_fopen(imgName,"rb");
     if (f)
@@ -669,19 +674,19 @@ static void checkDotResult(const QCString &imgName)
           err("Image `%s' produced by dot is not a valid PNG!\n"
               "You should either select a different format "
               "(DOT_IMAGE_FORMAT in the config file) or install a more "
-              "recent version of graphviz (1.7+)\n",imgName.data()
+              "recent version of graphviz (1.7+)\n",imgName
              );
         }
       }
       else
       {
-        err("Could not read image `%s' generated by dot!\n",imgName.data());
+        err("Could not read image `%s' generated by dot!\n",imgName);
       }
       fclose(f);
     }
     else
     {
-      err("Could not open image `%s' generated by dot!\n",imgName.data());
+      err("Could not open image `%s' generated by dot!\n",imgName);
     }
   }
 }
@@ -787,50 +792,46 @@ int DotNodeList::compareValues(const DotNode *n1,const DotNode *n2) const
 
 DotRunner::DotRunner(const QCString &file,const QCString &path,
                      bool checkResult,const QCString &imageName) 
-  : m_file(file), m_path(path), 
-    m_checkResult(checkResult), m_imageName(imageName)
-{
-  static bool dotCleanUp = Config_getBool("DOT_CLEANUP"); 
-  m_cleanUp = dotCleanUp;
+  : m_dotExe(Config_getString("DOT_PATH")+"dot"),
+    m_file(file), m_path(path), 
+    m_checkResult(checkResult), m_imageName(imageName),
+    m_imgExt(getDotImageExtension())
+{
+  static bool dotCleanUp      = Config_getBool("DOT_CLEANUP"); 
+  static bool dotMultiTargets = Config_getBool("DOT_MULTI_TARGETS");
+  m_cleanUp      = dotCleanUp;
+  m_multiTargets = dotMultiTargets;
   m_jobs.setAutoDelete(TRUE);
 }
 
 void DotRunner::addJob(const char *format,const char *output)
 {
   QCString args = QCString("-T")+format+" -o \""+output+"\"";
-  m_jobs.append(new QCString(args));
+  m_jobs.append(new DotConstString(args));
 }
 
 void DotRunner::addPostProcessing(const char *cmd,const char *args)
 {
-  m_postCmd = cmd;
-  m_postArgs = args;
+  m_postCmd.set(cmd);
+  m_postArgs.set(args);
 }
 
 bool DotRunner::run()
 {
   int exitCode=0;
-  QCString dotExe   = Config_getString("DOT_PATH")+"dot";
-  bool multiTargets = Config_getBool("DOT_MULTI_TARGETS");
+
   QCString dotArgs;
-  QListIterator<QCString> li(m_jobs);
-  QCString *s;
-  QCString file      = m_file;
-  QCString path      = m_path;
-  QCString imageName = m_imageName;
-  QCString postCmd   = m_postCmd;
-  QCString postArgs  = m_postArgs;
-  bool checkResult   = m_checkResult;
-  bool cleanUp       = m_cleanUp;
-  if (multiTargets)
-  {
-    dotArgs="\""+file+"\"";
+  QListIterator<DotConstString> li(m_jobs);
+  DotConstString *s;
+  if (m_multiTargets)
+  {
+    dotArgs=QCString("\"")+m_file.data()+"\"";
     for (li.toFirst();(s=li.current());++li)
     {
       dotArgs+=' ';
-      dotArgs+=*s;
+      dotArgs+=s->data();
     }
-    if ((exitCode=portable_system(dotExe,dotArgs,FALSE))!=0)
+    if ((exitCode=portable_system(m_dotExe.data(),dotArgs,FALSE))!=0)
     {
       goto error;
     }
@@ -839,30 +840,33 @@ bool DotRunner::run()
   {
     for (li.toFirst();(s=li.current());++li)
     {
-      dotArgs="\""+file+"\" "+*s;
-      if ((exitCode=portable_system(dotExe,dotArgs,FALSE))!=0)
+      dotArgs=QCString("\"")+m_file.data()+"\" "+s->data();
+      if ((exitCode=portable_system(m_dotExe.data(),dotArgs,FALSE))!=0)
       {
         goto error;
       }
     }
   }
-  if (!postCmd.isEmpty() && portable_system(postCmd,postArgs)!=0)
+  if (!m_postCmd.isEmpty() && portable_system(m_postCmd.data(),m_postArgs.data())!=0)
   {
     err("Problems running '%s' as a post-processing step for dot output\n",m_postCmd.data());
     return FALSE;
   }
-  if (checkResult) checkDotResult(imageName);
-  if (cleanUp) 
+  if (m_checkResult)
+  {
+    checkDotResult(m_imgExt.data(),m_imageName.data());
+  }
+  if (m_cleanUp) 
   {
     //printf("removing dot file %s\n",m_file.data());
     //QDir(path).remove(file);
-    m_cleanupItem.file = file;
-    m_cleanupItem.path = path;
+    m_cleanupItem.file.set(m_file.data());
+    m_cleanupItem.path.set(m_path.data());
   }
   return TRUE;
 error:
   err("Problems running dot: exit code=%d, command='%s', arguments='%s'\n",
-      exitCode,dotExe.data(),dotArgs.data());
+      exitCode,m_dotExe.data(),dotArgs.data());
   return FALSE;
 }
 
@@ -991,6 +995,7 @@ bool DotFilePatcher::run()
     {
       break;
     }
+    line.resize(numBytes+1);
 
     //printf("line=[%s]\n",line.stripWhiteSpace().data());
     int i;
@@ -1191,7 +1196,7 @@ void DotWorkerThread::run()
   while ((runner=m_queue->dequeue()))
   {
     runner->run();
-    DotRunner::CleanupItem cleanup = runner->cleanup();
+    const DotRunner::CleanupItem &cleanup = runner->cleanup();
     if (!cleanup.file.isEmpty())
     {
       m_cleanupItems.append(new DotRunner::CleanupItem(cleanup));
@@ -1205,7 +1210,7 @@ void DotWorkerThread::cleanup()
   DotRunner::CleanupItem *ci;
   for (;(ci=it.current());++it)
   {
-    QDir(ci->path).remove(ci->file);
+    QDir(ci->path.data()).remove(ci->file.data());
   }
 }
 
@@ -1995,6 +2000,7 @@ void DotNode::writeXML(FTextStream &t,bool isClassGraph)
           case EdgeInfo::Red:     t << "private-inheritance"; break;
           case EdgeInfo::Purple:  t << "usage"; break;
           case EdgeInfo::Orange:  t << "template-instance"; break;
+          case EdgeInfo::Orange2: t << "type-constraint"; break;
           case EdgeInfo::Grey:    ASSERT(0); break;
         }
       }
@@ -2063,6 +2069,7 @@ void DotNode::writeDocbook(FTextStream &t,bool isClassGraph)
           case EdgeInfo::Red:     t << "private-inheritance"; break;
           case EdgeInfo::Purple:  t << "usage"; break;
           case EdgeInfo::Orange:  t << "template-instance"; break;
+          case EdgeInfo::Orange2: t << "type-constraint"; break;
           case EdgeInfo::Grey:    ASSERT(0); break;
         }
       }
@@ -2140,6 +2147,7 @@ void DotNode::writeDEF(FTextStream &t)
         case EdgeInfo::Red:     t << "private-inheritance"; break;
         case EdgeInfo::Purple:  t << "usage"; break;
         case EdgeInfo::Orange:  t << "template-instance"; break;
+        case EdgeInfo::Orange2: t << "type-constraint"; break;
         case EdgeInfo::Grey:    ASSERT(0); break;
       }
       t << ';' << endl;
@@ -2265,7 +2273,8 @@ void DotGfxHierarchyTable::createGraph(DotNode *n,FTextStream &out,
 {
   QDir d(path);
   QCString baseName;
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   baseName.sprintf("inherit_graph_%d",id);
   QCString imgName = baseName+"."+ imgExt;
   QCString mapName = baseName+".map";
@@ -2315,7 +2324,7 @@ void DotGfxHierarchyTable::createGraph(DotNode *n,FTextStream &out,
     resetReNumbering();
 
     DotRunner *dotRun = new DotRunner(dotName,d.absPath().data(),TRUE,absImgName);
-    dotRun->addJob(imgExt,absImgName);
+    dotRun->addJob(imgFmt,absImgName);
     dotRun->addJob(MAP_CMD,absMapName);
     DotManager::instance()->addRun(dotRun);
   }
@@ -2583,9 +2592,14 @@ void DotClassGraph::addClass(ClassDef *cd,DotNode *n,int prot,
 {
   if (Config_getBool("HIDE_UNDOC_CLASSES") && !cd->isLinkable()) return;
 
-  int edgeStyle = (label || prot==EdgeInfo::Orange) ? EdgeInfo::Dashed : EdgeInfo::Solid;
+  int edgeStyle = (label || prot==EdgeInfo::Orange || prot==EdgeInfo::Orange2) ? EdgeInfo::Dashed : EdgeInfo::Solid;
   QCString className;
-  if (usedName) // name is a typedef
+  if (cd->isAnonymous())
+  {
+    className="anonymous:";
+    className+=label;
+  }
+  else if (usedName) // name is a typedef
   {
     className=usedName;
   }
@@ -2789,6 +2803,7 @@ bool DotClassGraph::determineVisibleNodes(DotNode *rootNode,
 
 void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,bool base,int distance)
 {
+  static bool templateRelations = Config_getBool("TEMPLATE_RELATIONS");
   //printf("DocClassGraph::buildGraph(%s,distance=%d,base=%d)\n",
   //    cd->name().data(),distance,base);
   // ---- Add inheritance relations
@@ -2812,9 +2827,9 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,bool base,int distance)
   if (m_graphType == DotNode::Collaboration)
   {
     // ---- Add usage relations
-    
-    UsesClassDict *dict = 
-      base ? cd->usedImplementationClasses() : 
+
+    UsesClassDict *dict =
+      base ? cd->usedImplementationClasses() :
              cd->usedByImplementationClasses()
       ;
     if (dict)
@@ -2848,10 +2863,43 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,bool base,int distance)
       }
     }
   }
+  if (templateRelations && base)
+  {
+    ConstraintClassDict *dict = cd->templateTypeConstraints();
+    if (dict)
+    {
+      ConstraintClassDictIterator ccdi(*dict);
+      ConstraintClassDef *ccd;
+      for (;(ccd=ccdi.current());++ccdi)
+      {
+        QCString label;
+        QDictIterator<void> dvi(*ccd->accessors);
+        const char *s;
+        bool first=TRUE;
+        int count=0;
+        int maxLabels=10;
+        for (;(s=dvi.currentKey()) && count<maxLabels;++dvi,++count)
+        {
+          if (first)
+          {
+            label=s;
+            first=FALSE;
+          }
+          else
+          {
+            label+=QCString("\n")+s;
+          }
+        }
+        if (count==maxLabels) label+="\n...";
+        //printf("addClass: %s templSpec=%s\n",ucd->classDef->name().data(),ucd->templSpecifiers.data());
+        addClass(ccd->classDef,n,EdgeInfo::Orange2,label,0,
+            0,TRUE,distance);
+      }
+    }
+  }
 
   // ---- Add template instantiation relations
 
-  static bool templateRelations = Config_getBool("TEMPLATE_RELATIONS");
   if (templateRelations)
   {
     if (base) // template relations for base classes
@@ -3120,7 +3168,8 @@ QCString DotClassGraph::writeGraph(FTextStream &out,
   baseName = convertNameToFile(diskName());
 
   // derive target file names from baseName
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   QCString absBaseName = d.absPath().utf8()+"/"+baseName;
   QCString absDotName  = absBaseName+".dot";
   QCString absMapName  = absBaseName+".map";
@@ -3148,7 +3197,7 @@ QCString DotClassGraph::writeGraph(FTextStream &out,
     {
       DotRunner *dotRun = new DotRunner(absDotName,
                               d.absPath().data(),TRUE,absImgName);
-      dotRun->addJob(imgExt,absImgName);
+      dotRun->addJob(imgFmt,absImgName);
       if (generateImageMap) dotRun->addJob(MAP_CMD,absMapName);
       DotManager::instance()->addRun(dotRun);
 
@@ -3476,7 +3525,8 @@ QCString DotInclDepGraph::writeGraph(FTextStream &out,
   QCString mapName=escapeCharsInString(m_startNode->m_label,FALSE);
   if (m_inverse) mapName+="dep";
 
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   QCString absBaseName = d.absPath().utf8()+"/"+baseName;
   QCString absDotName  = absBaseName+".dot";
   QCString absMapName  = absBaseName+".map";
@@ -3504,7 +3554,7 @@ QCString DotInclDepGraph::writeGraph(FTextStream &out,
     {
       // run dot to create a bitmap image
       DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),TRUE,absImgName);
-      dotRun->addJob(imgExt,absImgName);
+      dotRun->addJob(imgFmt,absImgName);
       if (generateImageMap) dotRun->addJob(MAP_CMD,absMapName);
       DotManager::instance()->addRun(dotRun);
     }
@@ -3788,7 +3838,8 @@ QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat graphForma
   QCString baseName = m_diskName + (m_inverse ? "_icgraph" : "_cgraph");
   QCString mapName  = baseName;
 
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   QCString absBaseName = d.absPath().utf8()+"/"+baseName;
   QCString absDotName  = absBaseName+".dot";
   QCString absMapName  = absBaseName+".map";
@@ -3816,7 +3867,7 @@ QCString DotCallGraph::writeGraph(FTextStream &out, GraphOutputFormat graphForma
     {
       // run dot to create a bitmap image
       DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),TRUE,absImgName);
-      dotRun->addJob(imgExt,absImgName);
+      dotRun->addJob(imgFmt,absImgName);
       if (generateImageMap) dotRun->addJob(MAP_CMD,absMapName);
       DotManager::instance()->addRun(dotRun);
 
@@ -3913,6 +3964,7 @@ bool DotCallGraph::isTooBig() const
 }
 
 //-------------------------------------------------------------
+static void writeDotDirDepGraph(FTextStream &t,DirDef *dd,bool linkRelations);
 
 DotDirDeps::DotDirDeps(DirDef *dir) : m_dir(dir)
 {
@@ -3929,7 +3981,8 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
                             const char *fileName,
                             const char *relPath,
                             bool generateImageMap,
-                            int graphId) const
+                            int graphId,
+                            bool linkRelations) const
 {
   QDir d(path);
   // store the original directory
@@ -3942,7 +3995,8 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
   QCString baseName=m_dir->getOutputFileBase()+"_dep";
   QCString mapName=escapeCharsInString(baseName,FALSE);
 
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   QCString absBaseName = d.absPath().utf8()+"/"+baseName;
   QCString absDotName  = absBaseName+".dot";
   QCString absMapName  = absBaseName+".map";
@@ -3953,7 +4007,8 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
   // compute md5 checksum of the graph were are about to generate
   QGString theGraph;
   FTextStream md5stream(&theGraph);
-  m_dir->writeDepGraph(md5stream);
+  //m_dir->writeDepGraph(md5stream);
+  writeDotDirDepGraph(md5stream,m_dir,linkRelations);
   uchar md5_sig[16];
   QCString sigStr(33);
   MD5Buffer((const unsigned char *)theGraph.data(),theGraph.length(),md5_sig);
@@ -3980,7 +4035,7 @@ QCString DotDirDeps::writeGraph(FTextStream &out,
     {
       // run dot to create a bitmap image
       DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),TRUE,absImgName);
-      dotRun->addJob(imgExt,absImgName);
+      dotRun->addJob(imgFmt,absImgName);
       if (generateImageMap) dotRun->addJob(MAP_CMD,absMapName);
       DotManager::instance()->addRun(dotRun);
     }
@@ -4105,7 +4160,8 @@ void generateGraphLegend(const char *path)
   MD5SigToString(md5_sig,sigStr.rawData(),33);
   QCString absBaseName = (QCString)path+"/graph_legend";
   QCString absDotName  = absBaseName+".dot";
-  QCString imgExt      = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   QCString imgName     = "graph_legend."+imgExt;
   QCString absImgName  = absBaseName+"."+imgExt;
   if (checkAndUpdateMd5Signature(absBaseName,sigStr) ||
@@ -4125,7 +4181,7 @@ void generateGraphLegend(const char *path)
     // run dot to generate the a bitmap image from the graph
 
     DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),TRUE,absImgName);
-    dotRun->addJob(imgExt,absImgName);
+    dotRun->addJob(imgFmt,absImgName);
     DotManager::instance()->addRun(dotRun);
   }
   else
@@ -4153,14 +4209,15 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
     err("Output dir %s does not exist!\n",outDir); exit(1);
   }
 
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   QCString imgName = (QCString)outFile+"."+imgExt;
   QCString absImgName = d.absPath().utf8()+"/"+imgName;
   QCString absOutFile = d.absPath().utf8()+"/"+outFile;
 
   DotRunner dotRun(inFile,d.absPath().data(),FALSE,absImgName);
   if (format==GOF_BITMAP)
-    dotRun.addJob(imgExt,absImgName);
+    dotRun.addJob(imgFmt,absImgName);
   else // format==GOF_EPS
   {
     if (Config_getBool("USE_PDFLATEX"))
@@ -4179,7 +4236,7 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
      return;
   }
 
-  if (format==GOF_BITMAP) checkDotResult(absImgName);
+  if (format==GOF_BITMAP) checkDotResult(getDotImageExtension(),absImgName);
 
   Doxygen::indexList->addImageFile(imgName);
 
@@ -4208,7 +4265,8 @@ void writeDotImageMapFromFile(FTextStream &t,
   }
 
   QCString mapName = baseName+".map";
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   QCString imgName = baseName+"."+imgExt;
   QCString absOutFile = d.absPath().utf8()+"/"+mapName;
 
@@ -4503,7 +4561,8 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t,
   QCString sigStr(33);
   MD5Buffer((const unsigned char *)theGraph.data(),theGraph.length(),md5_sig);
   MD5SigToString(md5_sig,sigStr.rawData(),33);
-  QCString imgExt      = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  QCString imgFmt = Config_getEnum("DOT_IMAGE_FORMAT");
   QCString baseName    = m_diskName;
   QCString imgName     = baseName+"."+imgExt;
   QCString absPath     = d.absPath().data();
@@ -4533,7 +4592,7 @@ QCString DotGroupCollaboration::writeGraph( FTextStream &t,
     if (graphFormat==GOF_BITMAP) // run dot to create a bitmap image
     {
       DotRunner *dotRun = new DotRunner(absDotName,d.absPath().data(),FALSE);
-      dotRun->addJob(imgExt,absImgName);
+      dotRun->addJob(imgFmt,absImgName);
       if (writeImageMap) dotRun->addJob(MAP_CMD,absMapName);
       DotManager::instance()->addRun(dotRun);
 
@@ -4707,7 +4766,7 @@ void DotGroupCollaboration::writeGraphHeader(FTextStream &t,
   t << "  rankdir=LR;\n";
 }
 
-void writeDotDirDepGraph(FTextStream &t,DirDef *dd)
+void writeDotDirDepGraph(FTextStream &t,DirDef *dd,bool linkRelations)
 {
     t << "digraph \"" << dd->displayName() << "\" {\n";
     if (Config_getBool("DOT_TRANSPARENT"))
@@ -4839,11 +4898,14 @@ void writeDotDirDepGraph(FTextStream &t,DirDef *dd)
                 new DirRelation(relationName,dir,udir));
           }
           int nrefs = udir->filePairs().count();
-          t << "  " << dir->getOutputFileBase() << "->" 
+          t << "  " << dir->getOutputFileBase() << "->"
                     << usedDir->getOutputFileBase();
           t << " [headlabel=\"" << nrefs << "\", labeldistance=1.5";
-          t << " headhref=\"" << relationName << Doxygen::htmlFileExtension 
-            << "\"];\n";
+          if (linkRelations)
+          {
+            t << " headhref=\"" << relationName << Doxygen::htmlFileExtension << "\"";
+          }
+          t << "];\n";
         }
       }
     }
diff --git a/src/dot.h b/src/dot.h
index 41a416e..e12d547 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -45,7 +45,7 @@ enum EmbeddedOutputFormat { EOF_Html, EOF_LaTeX, EOF_Rtf, EOF_DocBook };
 /** Attributes of an edge of a dot graph */
 struct EdgeInfo
 {
-  enum Colors { Blue=0, Green=1, Red=2, Purple=3, Grey=4, Orange=5 };
+  enum Colors { Blue=0, Green=1, Red=2, Purple=3, Grey=4, Orange=5, Orange2=6 };
   enum Styles { Solid=0, Dashed=1 };
   EdgeInfo() : m_color(0), m_style(0), m_labColor(0) {}
  ~EdgeInfo() {}
@@ -262,7 +262,8 @@ class DotDirDeps
                         const char *fileName,
                         const char *relPath,
                         bool writeImageMap=TRUE,
-                        int graphId=-1) const;
+                        int graphId=-1,
+                        bool linkRelations=TRUE) const;
   private:
     DirDef *m_dir;
 };
@@ -325,6 +326,31 @@ class DotGroupCollaboration
     QList<Edge>     m_edges;
 };
 
+/** Minimal constant string class that is thread safe, once initialized. */
+class DotConstString
+{
+  public:
+    DotConstString()                                   { m_str=0; }
+   ~DotConstString()                                   { delete[] m_str; }
+    DotConstString(const QCString &s) : m_str(0)       { set(s); }
+    DotConstString(const DotConstString &s) : m_str(0) { set(s.data()); }
+    const char *data() const                           { return m_str; }
+    bool isEmpty() const                               { return m_str==0 || m_str[0]=='\0'; }
+    void set(const QCString &s)
+    {
+      delete[] m_str;
+      m_str=0;
+      if (!s.isEmpty())
+      {
+        m_str=new char[s.length()+1];
+        qstrcpy(m_str,s.data());
+      }
+    }
+  private:
+    DotConstString &operator=(const DotConstString &);
+    char *m_str;
+};
+
 /** Helper class to run dot from doxygen.
  */
 class DotRunner
@@ -332,8 +358,8 @@ class DotRunner
   public:
     struct CleanupItem
     {
-      QCString path;
-      QCString file;
+      DotConstString path;
+      DotConstString file;
     };
 
     /** Creates a runner for a dot \a file. */
@@ -351,16 +377,19 @@ class DotRunner
 
     /** Runs dot for all jobs added. */
     bool run();
-    CleanupItem cleanup() const { return m_cleanupItem; }
+    const CleanupItem &cleanup() const { return m_cleanupItem; }
 
   private:
-    QList<QCString> m_jobs;
-    QCString m_postArgs;
-    QCString m_postCmd;
-    QCString m_file;
-    QCString m_path;
+    DotConstString m_dotExe;
+    bool m_multiTargets;
+    QList<DotConstString> m_jobs;
+    DotConstString m_postArgs;
+    DotConstString m_postCmd;
+    DotConstString m_file;
+    DotConstString m_path;
     bool m_checkResult;
-    QCString m_imageName;
+    DotConstString m_imageName;
+    DotConstString m_imgExt;
     bool m_cleanUp;
     CleanupItem m_cleanupItem;
 };
@@ -459,6 +488,4 @@ void writeDotImageMapFromFile(FTextStream &t,
                               const QCString& relPath,const QCString& baseName,
                               const QCString& context,int graphId=-1);
 
-void writeDotDirDepGraph(FTextStream &t,DirDef *dd);
-
 #endif
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 30ee02b..a3a3d2a 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -1,10 +1,10 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby 
- * granted. No representations are made about the suitability of this software 
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
  * for any purpose. It is provided "as is" without express or implied warranty.
  * See the GNU General Public License for more details.
  *
@@ -25,7 +25,6 @@
 #include <stdlib.h>
 #include <sys/stat.h>
 #include <qtextcodec.h>
-#include <unistd.h>
 #include <errno.h>
 #include <qptrdict.h>
 #include <qtextstream.h>
@@ -72,7 +71,7 @@
 #include "htags.h"
 #include "pyscanner.h"
 #include "fortranscanner.h"
-#include "dbusxmlscanner.h"
+#include "xmlscanner.h"
 #include "tclscanner.h"
 #include "code.h"
 #include "objcache.h"
@@ -107,7 +106,7 @@ extern void initResources();
   do { if (var->children()) { \
     EntryNavListIterator eli(*var->children()); \
     for (;eli.current();++eli) func(eli.current()); \
-  } } while(0) 
+  } } while(0)
 
 
 #if !defined(_WIN32) || defined(__CYGWIN__)
@@ -120,9 +119,9 @@ ClassSDict      *Doxygen::classSDict = 0;
 ClassSDict      *Doxygen::hiddenClasses = 0;
 NamespaceSDict  *Doxygen::namespaceSDict = 0;
 MemberNameSDict *Doxygen::memberNameSDict = 0;
-MemberNameSDict *Doxygen::functionNameSDict = 0;   
+MemberNameSDict *Doxygen::functionNameSDict = 0;
 FileNameList    *Doxygen::inputNameList = 0;       // all input files
-FileNameDict    *Doxygen::inputNameDict = 0;          
+FileNameDict    *Doxygen::inputNameDict = 0;
 GroupSDict      *Doxygen::groupSDict = 0;
 FormulaList     *Doxygen::formulaList = 0;       // all formulas
 FormulaDict     *Doxygen::formulaDict = 0;       // all formulas
@@ -174,14 +173,14 @@ GenericsSDict   *Doxygen::genericsDict;
 
 // locally accessible globals
 static QDict<EntryNav>  g_classEntries(1009);
-static StringList       g_inputFiles;         
+static StringList       g_inputFiles;
 static QDict<void>      g_compoundKeywordDict(7);  // keywords recognised as compounds
 static OutputList      *g_outputList = 0;          // list of output generating objects
 static QDict<FileDef>   g_usingDeclarations(1009); // used classes
 static FileStorage     *g_storage = 0;
 static bool             g_successfulRun = FALSE;
 static bool             g_dumpSymbolMap = FALSE;
-static bool             g_useOutputTemplate = FALSE; 
+static bool             g_useOutputTemplate = FALSE;
 
 void clearAll()
 {
@@ -210,7 +209,7 @@ void clearAll()
   delete Doxygen::mainPage; Doxygen::mainPage=0;
 }
 
-class Statistics 
+class Statistics
 {
   public:
     Statistics() { stats.setAutoDelete(TRUE); }
@@ -243,7 +242,7 @@ class Statistics
       if (restore) Debug::setFlag("time");
     }
   private:
-    struct stat 
+    struct stat
     {
       const char *name;
       double elapsed;
@@ -424,7 +423,7 @@ static void addSTLMember(EntryNav *rootNav,const char *type,const char *name)
   memEntry->protection = Public;
   memEntry->section    = Entry::VARIABLE_SEC;
   memEntry->brief      = "STL member";
-  memEntry->hidden     = FALSE; 
+  memEntry->hidden     = FALSE;
   memEntry->artificial = TRUE;
   //memEntry->parent     = root;
   //root->addSubEntry(memEntry);
@@ -464,7 +463,7 @@ static void addSTLClasses(EntryNav *rootNav)
   EntryNav *namespaceEntryNav = new EntryNav(rootNav,namespaceEntry);
   namespaceEntryNav->setEntry(namespaceEntry);
   rootNav->addChild(namespaceEntryNav);
-  
+
   STLInfo *info = g_stlinfo;
   while (info->className)
   {
@@ -525,7 +524,7 @@ static void addSTLClasses(EntryNav *rootNav)
       memEntry->protection = Public;
       memEntry->section    = Entry::FUNCTION_SEC;
       memEntry->brief      = "STL member";
-      memEntry->hidden     = FALSE; 
+      memEntry->hidden     = FALSE;
       memEntry->artificial = FALSE;
       EntryNav *memEntryNav = new EntryNav(classEntryNav,memEntry);
       memEntryNav->setEntry(memEntry);
@@ -568,7 +567,7 @@ static void addPageToContext(PageDef *pd,EntryNav *rootNav)
     scope = stripAnonymousNamespaceScope(scope);
     scope+="::"+pd->name();
     Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,scope,0,rootNav->tagInfo());
-    if (d) 
+    if (d)
     {
       pd->setPageScope(d);
     }
@@ -612,7 +611,7 @@ static void addRelatedPage(EntryNav *rootNav)
 
 static void buildGroupListFiltered(EntryNav *rootNav,bool additional, bool includeExternal)
 {
-  if (rootNav->section()==Entry::GROUPDOC_SEC && !rootNav->name().isEmpty() && 
+  if (rootNav->section()==Entry::GROUPDOC_SEC && !rootNav->name().isEmpty() &&
         ((!includeExternal && rootNav->tagInfo()==0) ||
          ( includeExternal && rootNav->tagInfo()!=0))
      )
@@ -698,7 +697,7 @@ static void buildGroupList(EntryNav *rootNav)
 
 static void findGroupScope(EntryNav *rootNav)
 {
-  if (rootNav->section()==Entry::GROUPDOC_SEC && !rootNav->name().isEmpty() && 
+  if (rootNav->section()==Entry::GROUPDOC_SEC && !rootNav->name().isEmpty() &&
       rootNav->parent() && !rootNav->parent()->name().isEmpty())
   {
     GroupDef *gd;
@@ -712,7 +711,7 @@ static void findGroupScope(EntryNav *rootNav)
       scope = stripAnonymousNamespaceScope(scope);
       scope+="::"+gd->name();
       Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,scope,0,rootNav->tagInfo());
-      if (d) 
+      if (d)
       {
         gd->setGroupScope(d);
       }
@@ -794,11 +793,11 @@ static void buildFileList(EntryNav *rootNav)
 #endif
       {
         //printf("Adding documentation!\n");
-        // using FALSE in setDocumentation is small hack to make sure a file 
-        // is documented even if a \file command is used without further 
+        // using FALSE in setDocumentation is small hack to make sure a file
+        // is documented even if a \file command is used without further
         // documentation
         fd->setDocumentation(root->doc,root->docFile,root->docLine,FALSE);
-        fd->setBriefDescription(root->brief,root->briefFile,root->briefLine); 
+        fd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
         fd->addSectionsToDefinition(root->anchors);
         fd->setRefItems(root->sli);
         QListIterator<Grouping> gli(*root->groups);
@@ -843,13 +842,13 @@ static void buildFileList(EntryNav *rootNav)
 
 static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
 {
-  if ( 
-      (!root->doc.stripWhiteSpace().isEmpty() || 
-       !root->brief.stripWhiteSpace().isEmpty() || 
+  if (
+      (!root->doc.stripWhiteSpace().isEmpty() ||
+       !root->brief.stripWhiteSpace().isEmpty() ||
        Config_getBool("EXTRACT_ALL")
       ) && root->protection!=Private
      )
-  { 
+  {
     //printf(">>>>>> includeFile=%s\n",root->includeFile.data());
 
     bool local=Config_getBool("FORCE_LOCAL_INCLUDES");
@@ -869,7 +868,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
     FileDef *fd=0;
     // see if we need to include a verbatim copy of the header file
     //printf("root->includeFile=%s\n",root->includeFile.data());
-    if (!includeFile.isEmpty() && 
+    if (!includeFile.isEmpty() &&
         (fd=findFileDef(Doxygen::inputNameDict,includeFile,ambig))==0
        )
     { // explicit request
@@ -901,7 +900,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
     // if a file is found, we mark it as a source file.
     if (fd)
     {
-      QCString iName = !root->includeName.isEmpty() ? 
+      QCString iName = !root->includeName.isEmpty() ?
                        root->includeName : includeFile;
       if (!iName.isEmpty()) // user specified include file
       {
@@ -916,7 +915,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
           iName=fd->name();
         }
       }
-      else if (!Config_getList("STRIP_FROM_INC_PATH").isEmpty()) 
+      else if (!Config_getList("STRIP_FROM_INC_PATH").isEmpty())
       {
         iName=stripFromIncludePath(fd->absFilePath());
       }
@@ -961,7 +960,7 @@ static bool addNamespace(Entry *root,ClassDef *cd)
         }
       }
       e=e->parent;
-    } 
+    }
   }
   return FALSE;
 }
@@ -995,7 +994,7 @@ static Definition *findScope(Entry *root,int level=0)
 }
 #endif
 
-/*! returns the Definition object belonging to the first \a level levels of 
+/*! returns the Definition object belonging to the first \a level levels of
  *  full qualified name \a name. Creates an artificial scope if the scope is
  *  not found and set the parent/child scope relation if the scope is found.
  */
@@ -1017,7 +1016,7 @@ static Definition *buildScopeFromQualifiedName(const QCString name,
     fullScope+=nsName;
     NamespaceDef *nd=Doxygen::namespaceSDict->find(fullScope);
     Definition *innerScope = nd;
-    ClassDef *cd=0; 
+    ClassDef *cd=0;
     if (nd==0) cd = getClass(fullScope);
     if (nd==0 && cd) // scope is a class
     {
@@ -1067,7 +1066,7 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
   QCString scope=stripTemplateSpecifiersFromScope(n,FALSE);
   int l1=0,i1;
   i1=getScopeFragment(scope,0,&l1);
-  if (i1==-1) 
+  if (i1==-1)
   {
     //printf(">no fragments!\n");
     return resultScope;
@@ -1080,12 +1079,12 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
     //printf("  nestedNameSpecifier=%s\n",nestedNameSpecifier.data());
     resultScope = resultScope->findInnerCompound(nestedNameSpecifier);
     //printf("  resultScope=%p\n",resultScope);
-    if (resultScope==0) 
+    if (resultScope==0)
     {
       NamespaceSDict *usedNamespaces;
       if (orgScope==Doxygen::globalScope && fileScope &&
-          (usedNamespaces = fileScope->getUsedNamespaces())) 
-        // also search for used namespaces 
+          (usedNamespaces = fileScope->getUsedNamespaces()))
+        // also search for used namespaces
       {
         NamespaceSDict::Iterator ni(*usedNamespaces);
         NamespaceDef *nd;
@@ -1094,7 +1093,7 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
           // restart search within the used namespace
           resultScope = findScopeFromQualifiedName(nd,n,fileScope,tagInfo);
         }
-        if (resultScope) 
+        if (resultScope)
         {
           // for a nested class A::I in used namespace N, we get
           // N::A::I while looking for A, so we should compare
@@ -1108,10 +1107,10 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
         }
       }
 
-      // also search for used classes. Complication: we haven't been able 
+      // also search for used classes. Complication: we haven't been able
       // to put them in the right scope yet, because we are still resolving
       // the scope relations!
-      // Therefore loop through all used classes and see if there is a right 
+      // Therefore loop through all used classes and see if there is a right
       // scope match between the used class and nestedNameSpecifier.
       QDictIterator<FileDef> ui(g_usingDeclarations);
       FileDef *usedFd;
@@ -1127,14 +1126,14 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
           resultScope = buildScopeFromQualifiedName(fqn,fqn.contains("::"),
                                                     startScope->getLanguage(),0);
           //printf("Creating scope from fqn=%s result %p\n",fqn.data(),resultScope);
-          if (resultScope) 
+          if (resultScope)
           {
             //printf("> Match! resultScope=%s\n",resultScope->name().data());
             return resultScope;
           }
         }
       }
-      
+
       //printf("> name %s not found in scope %s\n",nestedNameSpecifier.data(),orgScope->name().data());
       return 0;
     }
@@ -1152,7 +1151,7 @@ ArgumentList *getTemplateArgumentsFromName(
                   const QList<ArgumentList> *tArgLists)
 {
   if (tArgLists==0) return 0;
-  
+
   QListIterator<ArgumentList> ali(*tArgLists);
   // for each scope fragment, check if it is a template and advance through
   // the list if so.
@@ -1179,18 +1178,18 @@ ArgumentList *getTemplateArgumentsFromName(
 static
 ClassDef::CompoundType convertToCompoundType(int section,uint64 specifier)
 {
-  ClassDef::CompoundType sec=ClassDef::Class; 
-  if (specifier&Entry::Struct) 
+  ClassDef::CompoundType sec=ClassDef::Class;
+  if (specifier&Entry::Struct)
     sec=ClassDef::Struct;
-  else if (specifier&Entry::Union) 
+  else if (specifier&Entry::Union)
     sec=ClassDef::Union;
-  else if (specifier&Entry::Category) 
+  else if (specifier&Entry::Category)
     sec=ClassDef::Category;
-  else if (specifier&Entry::Interface) 
+  else if (specifier&Entry::Interface)
     sec=ClassDef::Interface;
-  else if (specifier&Entry::Protocol) 
+  else if (specifier&Entry::Protocol)
     sec=ClassDef::Protocol;
-  else if (specifier&Entry::Exception) 
+  else if (specifier&Entry::Exception)
     sec=ClassDef::Exception;
   else if (specifier&Entry::Service)
     sec=ClassDef::Service;
@@ -1199,29 +1198,29 @@ ClassDef::CompoundType convertToCompoundType(int section,uint64 specifier)
 
   switch(section)
   {
-    //case Entry::UNION_SEC: 
-    case Entry::UNIONDOC_SEC: 
-      sec=ClassDef::Union; 
+    //case Entry::UNION_SEC:
+    case Entry::UNIONDOC_SEC:
+      sec=ClassDef::Union;
       break;
       //case Entry::STRUCT_SEC:
-    case Entry::STRUCTDOC_SEC: 
-      sec=ClassDef::Struct; 
+    case Entry::STRUCTDOC_SEC:
+      sec=ClassDef::Struct;
       break;
       //case Entry::INTERFACE_SEC:
     case Entry::INTERFACEDOC_SEC:
-      sec=ClassDef::Interface; 
+      sec=ClassDef::Interface;
       break;
       //case Entry::PROTOCOL_SEC:
     case Entry::PROTOCOLDOC_SEC:
-      sec=ClassDef::Protocol; 
+      sec=ClassDef::Protocol;
       break;
       //case Entry::CATEGORY_SEC:
     case Entry::CATEGORYDOC_SEC:
-      sec=ClassDef::Category; 
+      sec=ClassDef::Category;
       break;
       //case Entry::EXCEPTION_SEC:
     case Entry::EXCEPTIONDOC_SEC:
-      sec=ClassDef::Exception; 
+      sec=ClassDef::Exception;
       break;
     case Entry::SERVICEDOC_SEC:
       sec=ClassDef::Service;
@@ -1265,12 +1264,12 @@ static void addClassToContext(EntryNav *rootNav)
   ClassDef *cd = getClass(qualifiedName);
 
   Debug::print(Debug::Classes,0, "  Found class with name %s (qualifiedName=%s -> cd=%p)\n",
-      cd ? cd->name().data() : root->name.data(), qualifiedName.data(),cd);
+      cd ? qPrint(cd->name()) : qPrint(root->name), qPrint(qualifiedName),cd);
 
   if (cd)
   {
     fullName=cd->name();
-    Debug::print(Debug::Classes,0,"  Existing class %s!\n",cd->name().data());
+    Debug::print(Debug::Classes,0,"  Existing class %s!\n",qPrint(cd->name()));
     //if (cd->templateArguments()==0)
     //{
     //  //printf("existing ClassDef tempArgList=%p specScope=%s\n",root->tArgList,root->scopeSpec.data());
@@ -1319,7 +1318,7 @@ static void addClassToContext(EntryNav *rootNav)
       tagName     = tagInfo->tagName;
       refFileName = tagInfo->fileName;
       if (fullName.find("::")!=-1)
-        // symbols imported via tag files may come without the parent scope, 
+        // symbols imported via tag files may come without the parent scope,
         // so we artificially create it here
       {
         buildScopeFromQualifiedName(fullName,fullName.contains("::"),root->lang,tagInfo);
@@ -1341,29 +1340,29 @@ static void addClassToContext(EntryNav *rootNav)
     cd=new ClassDef(tagInfo?tagName:root->fileName,root->startLine,root->startColumn,
         fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum);
     Debug::print(Debug::Classes,0,"  New class `%s' (sec=0x%08x)! #tArgLists=%d tagInfo=%p\n",
-        fullName.data(),sec,root->tArgLists ? (int)root->tArgLists->count() : -1, tagInfo);
+        qPrint(fullName),sec,root->tArgLists ? (int)root->tArgLists->count() : -1, tagInfo);
     cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition
     cd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
-    cd->setLanguage(root->lang);    
+    cd->setLanguage(root->lang);
     cd->setId(root->id);
-    cd->setHidden(root->hidden);        
-    cd->setArtificial(root->artificial);        
+    cd->setHidden(root->hidden);
+    cd->setArtificial(root->artificial);
     cd->setClassSpecifier(root->spec);
-    cd->setTypeConstraints(root->typeConstr);   
-    //printf("new ClassDef %s tempArgList=%p specScope=%s\n",fullName.data(),root->tArgList,root->scopeSpec.data());    
+    cd->setTypeConstraints(root->typeConstr);
+    //printf("new ClassDef %s tempArgList=%p specScope=%s\n",fullName.data(),root->tArgList,root->scopeSpec.data());
 
-    //printf("class %s template args=%s\n",fullName.data(),     
-    //    tArgList ? tempArgListToString(tArgList).data() : "<none>");          
-    cd->setTemplateArguments(tArgList);         
-    cd->setProtection(root->protection);        
-    cd->setIsStatic(root->stat);        
+    //printf("class %s template args=%s\n",fullName.data(),
+    //    tArgList ? tempArgListToString(tArgList,root->lang).data() : "<none>");
+    cd->setTemplateArguments(tArgList);
+    cd->setProtection(root->protection);
+    cd->setIsStatic(root->stat);
 
-    // file definition containing the class cd          
-    cd->setBodySegment(root->bodyLine,root->endBodyLine);       
-    cd->setBodyDef(fd);         
+    // file definition containing the class cd
+    cd->setBodySegment(root->bodyLine,root->endBodyLine);
+    cd->setBodyDef(fd);
 
-    // see if the class is found inside a namespace     
-    //bool found=addNamespace(root,cd);         
+    // see if the class is found inside a namespace
+    //bool found=addNamespace(root,cd);
 
     cd->insertUsedFile(fd);
 
@@ -1384,7 +1383,7 @@ static void addClassToContext(EntryNav *rootNav)
   {
     addIncludeFile(cd,fd,root);
   }
-  if (fd && (root->section & Entry::COMPOUND_MASK)) 
+  if (fd && (root->section & Entry::COMPOUND_MASK))
   {
     //printf(">> Inserting class `%s' in file `%s' (root->fileName=`%s')\n",
     //    cd->name().data(),
@@ -1399,14 +1398,14 @@ static void addClassToContext(EntryNav *rootNav)
 
   rootNav->releaseEntry();
 }
-            
+
 //----------------------------------------------------------------------
 // build a list of all classes mentioned in the documentation
 // and all classes that have a documentation block before their definition.
 static void buildClassList(EntryNav *rootNav)
 {
   if (
-        ((rootNav->section() & Entry::COMPOUND_MASK) || 
+        ((rootNav->section() & Entry::COMPOUND_MASK) ||
          rootNav->section()==Entry::OBJCIMPL_SEC) && !rootNav->name().isEmpty()
      )
   {
@@ -1444,7 +1443,7 @@ static void resolveClassNestingRelations()
       {
         QCString name = stripAnonymousNamespaceScope(cd->name());
         //printf("processing=%s, iteration=%d\n",cd->name().data(),iteration);
-        // also add class to the correct structural context 
+        // also add class to the correct structural context
         Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,
                                                  name,cd->getFileDef(),0);
         if (d)
@@ -1474,7 +1473,7 @@ static void resolveClassNestingRelations()
       /// create the scope artificially
       // anyway, so we can at least relate scopes properly.
       Definition *d = buildScopeFromQualifiedName(name,name.contains("::"),cd->getLanguage(),0);
-      if (d!=cd && !cd->getDefFileName().isEmpty()) 
+      if (d!=cd && !cd->getDefFileName().isEmpty())
                  // avoid recursion in case of redundant scopes, i.e: namespace N { class N::C {}; }
                  // for this case doxygen assumes the exitance of a namespace N::N in which C is to be found!
                  // also avoid warning for stuff imported via a tagfile.
@@ -1599,8 +1598,8 @@ static ClassDef *createTagLessInstance(ClassDef *rootCd,ClassDef *templ,const QC
 }
 
 /** Look through the members of class \a cd and its public members.
- *  If there is a member m of a tag less struct/union, 
- *  then we create a duplicate of the struct/union with the name of the 
+ *  If there is a member m of a tag less struct/union,
+ *  then we create a duplicate of the struct/union with the name of the
  *  member to identify it.
  *  So if cd has name S, then the tag less struct/union will get name S.m
  *  Since tag less structs can be nested we need to call this function
@@ -1647,7 +1646,7 @@ static void processTagLessClasses(ClassDef *rootCd,
               // replace tag-less type for generated/original member
               // by newly created class name.
               // note the difference between changing cd and tagParentCd.
-              // for the initial call this is the same pointer, but for 
+              // for the initial call this is the same pointer, but for
               // recursive calls cd is the original tag-less struct (of which
               // there is only one instance) and tagParentCd is the newly
               // generated tagged struct of which there can be multiple instances!
@@ -1715,7 +1714,7 @@ static void buildNamespaceList(EntryNav *rootNav)
        (rootNav->section()==Entry::NAMESPACE_SEC ||
         rootNav->section()==Entry::NAMESPACEDOC_SEC ||
         rootNav->section()==Entry::PACKAGEDOC_SEC
-       ) && 
+       ) &&
        !rootNav->name().isEmpty()
      )
   {
@@ -1746,6 +1745,13 @@ static void buildNamespaceList(EntryNav *rootNav)
         {
           nd->setLanguage(root->lang);
         }
+        if (rootNav->tagInfo()==0) // if we found the namespace in a tag file
+                                   // and also in a project file, then remove
+                                   // the tag file reference
+        {
+          nd->setReference("");
+          nd->setFileName(fullName);
+        }
 
         // file definition containing the namespace nd
         FileDef *fd=rootNav->fileDef();
@@ -1793,7 +1799,7 @@ static void buildNamespaceList(EntryNav *rootNav)
         // add class to the list
         Doxygen::namespaceSDict->inSort(fullName,nd);
 
-        // also add namespace to the correct structural context 
+        // also add namespace to the correct structural context
         Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,fullName,0,tagInfo);
         //printf("adding namespace %s to context %s\n",nd->name().data(),d?d->name().data():"<none>");
         if (d==0) // we didn't find anything, create the scope artificially
@@ -1875,12 +1881,12 @@ static void findUsingDirectives(EntryNav *rootNav)
 
       // find the scope in which the `using' namespace is defined by prepending
       // the possible scopes in which the using statement was found, starting
-      // with the most inner scope and going to the most outer scope (i.e. 
-      // file scope). 
+      // with the most inner scope and going to the most outer scope (i.e.
+      // file scope).
       int scopeOffset = nsName.length();
       do
       {
-        QCString scope=scopeOffset>0 ? 
+        QCString scope=scopeOffset>0 ?
                       nsName.left(scopeOffset)+"::" : QCString();
         usingNd = getResolvedNamespace(scope+name);
         //printf("Trying with scope=`%s' usingNd=%p\n",(scope+name).data(),usingNd);
@@ -1961,7 +1967,7 @@ static void findUsingDirectives(EntryNav *rootNav)
         }
 
         // insert the namespace in the file definition
-        if (fd) 
+        if (fd)
         {
           fd->insertNamespace(nd);
           fd->addUsingDirective(nd);
@@ -2008,7 +2014,7 @@ static void buildListOfUsingDecls(EntryNav *rootNav)
   RECURSE_ENTRYTREE(buildListOfUsingDecls,rootNav);
 }
 
-  
+
 static void findUsingDeclarations(EntryNav *rootNav)
 {
   if (rootNav->section()==Entry::USINGDECL_SEC &&
@@ -2042,7 +2048,7 @@ static void findUsingDeclarations(EntryNav *rootNav)
       // Assume the using statement was used to import a class.
       // Find the scope in which the `using' namespace is defined by prepending
       // the possible scopes in which the using statement was found, starting
-      // with the most inner scope and going to the most outer scope (i.e. 
+      // with the most inner scope and going to the most outer scope (i.e.
       // file scope).
 
       QCString name = substitute(root->name,".","::"); //Java/C# scope->internal
@@ -2056,7 +2062,7 @@ static void findUsingDeclarations(EntryNav *rootNav)
       if (usingCd==0) // definition not in the input => add an artificial class
       {
         Debug::print(Debug::Classes,0,"  New using class `%s' (sec=0x%08x)! #tArgLists=%d\n",
-             name.data(),root->section,root->tArgLists ? (int)root->tArgLists->count() : -1);
+             qPrint(name),root->section,root->tArgLists ? (int)root->tArgLists->count() : -1);
         usingCd = new ClassDef(
                      "<using>",1,1,
                      name,
@@ -2068,7 +2074,10 @@ static void findUsingDeclarations(EntryNav *rootNav)
       else
       {
         Debug::print(Debug::Classes,0,"  Found used class %s in scope=%s\n",
-            usingCd->name().data(),nd?nd->name().data():fd->name().data());
+            qPrint(usingCd->name()),
+                        nd?qPrint(nd->name()):
+                        fd?qPrint(fd->name()):
+                        "<unknown>");
       }
 
       if (nd)
@@ -2121,7 +2130,7 @@ static void findUsingDeclImports(EntryNav *rootNav)
             MemberNameInfo *mni = mndict->find(memName);
             if (mni)
             {
-              MemberNameInfoIterator mnii(*mni); 
+              MemberNameInfoIterator mnii(*mni);
               MemberInfo *mi;
               for ( ; (mi=mnii.current()) ; ++mnii )
               {
@@ -2196,7 +2205,7 @@ static void findUsingDeclImports(EntryNav *rootNav)
 static void findIncludedUsingDirectives()
 {
   // first mark all files as not visited
-  FileNameListIterator fnli(*Doxygen::inputNameList); 
+  FileNameListIterator fnli(*Doxygen::inputNameList);
   FileName *fn;
   for (fnli.toFirst();(fn=fnli.current());++fnli)
   {
@@ -2215,7 +2224,7 @@ static void findIncludedUsingDirectives()
     FileDef *fd;
     for (fni.toFirst();(fd=fni.current());++fni)
     {
-      if (!fd->visited) 
+      if (!fd->visited)
       {
         //printf("----- adding using directives for file %s\n",fd->name().data());
         fd->addIncludedUsingDirectives();
@@ -2249,13 +2258,13 @@ static MemberDef *addVariableToClass(
   Debug::print(Debug::Variables,0,
       "  class variable:\n"
       "    `%s' `%s'::`%s' `%s' prot=`%d ann=%d init=`%s'\n",
-      root->type.data(),
-      qualScope.data(), 
-      name.data(),
-      root->args.data(),
+      qPrint(root->type),
+      qPrint(qualScope),
+      qPrint(name),
+      qPrint(root->args),
       root->protection,
       fromAnnScope,
-      root->initializer.data()
+      qPrint(root->initializer)
               );
 
   QCString def;
@@ -2263,7 +2272,7 @@ static MemberDef *addVariableToClass(
   {
     if (related || mtype==MemberType_Friend || Config_getBool("HIDE_SCOPE_NAMES"))
     {
-      if (root->spec&Entry::Alias) // turn 'typedef B A' into 'using A = B'  
+      if (root->spec&Entry::Alias) // turn 'typedef B A' into 'using A = B'
       {
         def="using "+name+" = "+root->type.mid(7);
       }
@@ -2274,7 +2283,7 @@ static MemberDef *addVariableToClass(
     }
     else
     {
-      if (root->spec&Entry::Alias) // turn 'typedef B C::A' into 'using C::A = B'  
+      if (root->spec&Entry::Alias) // turn 'typedef B C::A' into 'using C::A = B'
       {
         def="using "+qualScope+scopeSeparator+name+" = "+root->type.mid(7);
       }
@@ -2309,13 +2318,13 @@ static MemberDef *addVariableToClass(
     {
       //printf("md->getClassDef()=%p cd=%p type=[%s] md->typeString()=[%s]\n",
       //    md->getClassDef(),cd,root->type.data(),md->typeString());
-      if (md->getClassDef()==cd && 
-          removeRedundantWhiteSpace(root->type)==md->typeString()) 
+      if (md->getClassDef()==cd &&
+          removeRedundantWhiteSpace(root->type)==md->typeString())
         // member already in the scope
       {
 
-        if (root->lang==SrcLangExt_ObjC && 
-            root->mtype==Property && 
+        if (root->lang==SrcLangExt_ObjC &&
+            root->mtype==Property &&
             md->memberType()==MemberType_Variable)
         { // Objective-C 2.0 property
           // turn variable into a property
@@ -2326,7 +2335,7 @@ static MemberDef *addVariableToClass(
         //printf("    Member already found!\n");
         return md;
       }
-    } 
+    }
   }
 
   QCString fileName = root->fileName;
@@ -2368,7 +2377,7 @@ static MemberDef *addVariableToClass(
   md->setLanguage(root->lang);
   md->setId(root->id);
   addMemberToGroups(root,md);
-  //if (root->mGrpId!=-1) 
+  //if (root->mGrpId!=-1)
   //{
   //  printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId);
   //  md->setMemberGroup(memberGroupDict[root->mGrpId]);
@@ -2416,10 +2425,10 @@ static MemberDef *addVariableToFile(
   Debug::print(Debug::Variables,0,
       "  global variable:\n"
       "    type=`%s' scope=`%s' name=`%s' args=`%s' prot=`%d mtype=%d lang=%d\n",
-      root->type.data(),
-      scope.data(), 
-      name.data(),
-      root->args.data(),
+      qPrint(root->type),
+      qPrint(scope),
+      qPrint(name),
+      qPrint(root->args),
       root->protection,
       mtype,
       root->lang
@@ -2470,7 +2479,7 @@ static MemberDef *addVariableToFile(
   QCString def;
 
   // determine the definition of the global variable
-  if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@' && 
+  if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@' &&
       !Config_getBool("HIDE_SCOPE_NAMES")
      )
     // variable is inside a namespace, so put the scope before the name
@@ -2480,7 +2489,7 @@ static MemberDef *addVariableToFile(
 
     if (!root->type.isEmpty())
     {
-      if (root->spec&Entry::Alias) // turn 'typedef B NS::A' into 'using NS::A = B'  
+      if (root->spec&Entry::Alias) // turn 'typedef B NS::A' into 'using NS::A = B'
       {
         def="using "+nd->name()+sep+name+" = "+root->type;
       }
@@ -2504,7 +2513,7 @@ static MemberDef *addVariableToFile(
       }
       else
       {
-        if (root->spec&Entry::Alias) // turn 'typedef B A' into 'using A = B'  
+        if (root->spec&Entry::Alias) // turn 'typedef B A' into 'using A = B'
         {
           def="using "+root->name+" = "+root->type.mid(7);
         }
@@ -2536,7 +2545,7 @@ static MemberDef *addVariableToFile(
     for (mni.toFirst();(md=mni.current());++mni)
     {
       if (
-          ((nd==0 && md->getNamespaceDef()==0 && md->getFileDef() && 
+          ((nd==0 && md->getNamespaceDef()==0 && md->getFileDef() &&
             root->fileName==md->getFileDef()->absFilePath()
            ) // both variable names in the same file
            || (nd!=0 && md->getNamespaceDef()==nd) // both in same namespace
@@ -2547,27 +2556,27 @@ static MemberDef *addVariableToFile(
         // variable already in the scope
       {
         bool isPHPArray = md->getLanguage()==SrcLangExt_PHP &&
-                          md->argsString()!=root->args && 
+                          md->argsString()!=root->args &&
                           root->args.find('[')!=-1;
-        bool staticsInDifferentFiles = 
-                          root->stat && md->isStatic() && 
+        bool staticsInDifferentFiles =
+                          root->stat && md->isStatic() &&
                           root->fileName!=md->getDefFileName();
 
         if (md->getFileDef() &&
             !isPHPArray && // not a php array
             !staticsInDifferentFiles
-           ) 
+           )
           // not a php array variable
         {
 
           Debug::print(Debug::Variables,0,
-              "    variable already found: scope=%s\n",md->getOuterScope()->name().data());
+              "    variable already found: scope=%s\n",qPrint(md->getOuterScope()->name()));
           addMemberDocs(rootNav,md,def,0,FALSE);
           md->setRefItems(root->sli);
           return md;
         }
       }
-    } 
+    }
   }
 
   QCString fileName = root->fileName;
@@ -2577,12 +2586,12 @@ static MemberDef *addVariableToFile(
   }
 
   Debug::print(Debug::Variables,0,
-    "    new variable, nd=%s!\n",nd?nd->name().data():"<global>");
+    "    new variable, nd=%s!\n",nd?qPrint(nd->name()):"<global>");
   // new global variable, enum value or typedef
   MemberDef *md=new MemberDef(
       fileName,root->startLine,root->startColumn,
       root->type,name,root->args,0,
-      Public, Normal,root->stat,Member,
+      root->protection, Normal,root->stat,Member,
       mtype,root->tArgLists ? root->tArgLists->getLast() : 0,0);
   md->setTagInfo(rootNav->tagInfo());
   md->setMemberSpecifiers(root->spec);
@@ -2613,18 +2622,18 @@ static MemberDef *addVariableToFile(
   if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
   {
     md->setNamespace(nd);
-    nd->insertMember(md); 
+    nd->insertMember(md);
   }
 
   // add member to the file (we do this even if we have already inserted
-  // it into the namespace. 
+  // it into the namespace.
   if (fd)
   {
-    md->setFileDef(fd); 
+    md->setFileDef(fd);
     fd->insertMember(md);
   }
 
-  // add member definition to the list of globals 
+  // add member definition to the list of globals
   if (mn)
   {
     mn->append(md);
@@ -2639,7 +2648,7 @@ static MemberDef *addVariableToFile(
   return md;
 }
 
-/*! See if the return type string \a type is that of a function pointer 
+/*! See if the return type string \a type is that of a function pointer
  *  \returns -1 if this is not a function pointer variable or
  *           the index at which the closing brace of (...*name) was found.
  */
@@ -2700,12 +2709,12 @@ static bool isVarWithConstructor(EntryNav *rootNav)
     result=FALSE;
     goto done;
   }
-  if (root->type.isEmpty()) 
+  if (root->type.isEmpty())
   {
     result=FALSE;
     goto done;
   }
-  if (!rootNav->parent()->name().isEmpty()) 
+  if (!rootNav->parent()->name().isEmpty())
   {
     ctx=Doxygen::namespaceSDict->find(rootNav->parent()->name());
   }
@@ -2720,13 +2729,13 @@ static bool isVarWithConstructor(EntryNav *rootNav)
   {
     typeIsClass=getResolvedClass(ctx,fd,type.left(ti))!=0;
   }
-  if (typeIsClass) // now we still have to check if the arguments are 
+  if (typeIsClass) // now we still have to check if the arguments are
                    // types or values. Since we do not have complete type info
                    // we need to rely on heuristics :-(
   {
     //printf("typeIsClass\n");
     ArgumentList *al = root->argList;
-    if (al==0 || al->isEmpty()) 
+    if (al==0 || al->isEmpty())
     {
       result=FALSE; // empty arg list -> function prototype.
       goto done;
@@ -2735,7 +2744,7 @@ static bool isVarWithConstructor(EntryNav *rootNav)
     Argument *a;
     for (ali.toFirst();(a=ali.current());++ali)
     {
-      if (!a->name.isEmpty() || !a->defval.isEmpty()) 
+      if (!a->name.isEmpty() || !a->defval.isEmpty())
       {
         if (a->name.find(initChars)==0)
         {
@@ -2747,7 +2756,7 @@ static bool isVarWithConstructor(EntryNav *rootNav)
         }
         goto done;
       }
-      if (a->type.isEmpty() || getResolvedClass(ctx,fd,a->type)!=0) 
+      if (a->type.isEmpty() || getResolvedClass(ctx,fd,a->type)!=0)
       {
         result=FALSE; // arg type is a known type
         goto done;
@@ -2759,13 +2768,13 @@ static bool isVarWithConstructor(EntryNav *rootNav)
          goto done;
       }
       if (a->type.at(a->type.length()-1)=='*' ||
-          a->type.at(a->type.length()-1)=='&')  
+          a->type.at(a->type.length()-1)=='&')
                      // type ends with * or & => pointer or reference
       {
         result=FALSE;
         goto done;
       }
-      if (a->type.find(initChars)==0) 
+      if (a->type.find(initChars)==0)
       {
         result=TRUE; // argument type starts with typical initializer char
         goto done;
@@ -2777,9 +2786,9 @@ static bool isVarWithConstructor(EntryNav *rootNav)
       {
         resType=resType.left(len);
         //printf("resType=%s\n",resType.data());
-        if (resType=="int"    || resType=="long" || resType=="float" || 
-            resType=="double" || resType=="char" || resType=="signed" || 
-            resType=="const"  || resType=="unsigned" || resType=="void") 
+        if (resType=="int"    || resType=="long" || resType=="float" ||
+            resType=="double" || resType=="char" || resType=="signed" ||
+            resType=="const"  || resType=="unsigned" || resType=="void")
         {
           result=FALSE; // type keyword -> function prototype
           goto done;
@@ -2804,19 +2813,19 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
     Debug::print(Debug::Variables,0,
                   "VARIABLE_SEC: \n"
                   "  type=`%s' name=`%s' args=`%s' bodyLine=`%d' mGrpId=%d relates=%s\n",
-                   root->type.data(),
-                   root->name.data(),
-                   root->args.data(),
+                   qPrint(root->type),
+                   qPrint(root->name),
+                   qPrint(root->args),
                    root->bodyLine,
                    root->mGrpId,
-                   root->relates.data()
+                   qPrint(root->relates)
                 );
     //printf("root->parent->name=%s\n",root->parent->name.data());
 
     if (root->type.isEmpty() && root->name.find("operator")==-1 &&
         (root->name.find('*')!=-1 || root->name.find('&')!=-1))
     {
-      // recover from parse error caused by redundant braces 
+      // recover from parse error caused by redundant braces
       // like in "int *(var[10]);", which is parsed as
       // type="" name="int *" args="(var[10])"
 
@@ -2858,10 +2867,10 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
         root->args.prepend(") ");
       }
     }
-    
+
     QCString scope,name=removeRedundantWhiteSpace(root->name);
 
-    // find the scope of this variable 
+    // find the scope of this variable
     EntryNav *p = rootNav->parent();
     while ((p->section() & Entry::SCOPE_MASK))
     {
@@ -2873,7 +2882,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
       }
       p=p->parent();
     }
-    
+
     MemberType mtype;
     QCString type=root->type.stripWhiteSpace();
     ClassDef *cd=0;
@@ -2884,9 +2893,9 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
     classScope=stripTemplateSpecifiersFromScope(classScope,FALSE);
     QCString annScopePrefix=scope.left(scope.length()-classScope.length());
 
-    if (root->name.findRev("::")!=-1) 
+    if (root->name.findRev("::")!=-1)
     {
-      if (root->type=="friend class" || root->type=="friend struct" || 
+      if (root->type=="friend class" || root->type=="friend struct" ||
           root->type=="friend union")
       {
          cd=getClass(scope);
@@ -2904,7 +2913,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
          }
       }
       goto nextMember;
-               /* skip this member, because it is a 
+               /* skip this member, because it is a
                 * static variable definition (always?), which will be
                 * found in a class scope as well, but then we know the
                 * correct protection level, so only then it will be
@@ -2912,9 +2921,9 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
                 */
     }
 
-    if (type=="@") 
+    if (type=="@")
       mtype=MemberType_EnumValue;
-    else if (type.left(8)=="typedef ") 
+    else if (type.left(8)=="typedef ")
       mtype=MemberType_Typedef;
     else if (type.left(7)=="friend ")
       mtype=MemberType_Friend;
@@ -2931,17 +2940,17 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
       isMemberOf=(root->relatesType == MemberOf);
       if (getClass(root->relates)==0 && !scope.isEmpty())
         scope=mergeScopes(scope,root->relates);
-      else 
+      else
         scope=root->relates;
     }
-    
+
     cd=getClass(scope);
     if (cd==0 && classScope!=scope) cd=getClass(classScope);
     if (cd)
     {
       MemberDef *md=0;
 
-      // if cd is an anonymous (=tag less) scope we insert the member 
+      // if cd is an anonymous (=tag less) scope we insert the member
       // into a non-anonymous parent scope as well. This is needed to
       // be able to refer to it using \var or \fn
 
@@ -2949,7 +2958,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
       int si=scope.find('@');
       //int anonyScopes = 0;
       //bool added=FALSE;
-      
+
       static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS");
       if (si!=-1 && !inlineSimpleStructs) // anonymous scope or type
       {
@@ -2979,7 +2988,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
           {
             if (mtype==MemberType_Variable)
             {
-              md=addVariableToFile(rootNav,mtype,pScope,name,TRUE,0); 
+              md=addVariableToFile(rootNav,mtype,pScope,name,TRUE,0);
             }
             //added=TRUE;
           }
@@ -2995,7 +3004,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
                          name,   // name of the member
                          FALSE,  // from anonymous scope
                          md,     // from anonymous member
-                         root->protection, 
+                         root->protection,
                          isMemberOf ? Foreign : isRelated ? Related : Member);
     }
     else if (!name.isEmpty()) // global variable
@@ -3017,7 +3026,7 @@ static void buildTypedefList(EntryNav *rootNav)
   if (!rootNav->name().isEmpty() &&
       rootNav->section()==Entry::VARIABLE_SEC &&
       rootNav->type().find("typedef ")!=-1 // its a typedef
-     ) 
+     )
   {
     addVariable(rootNav);
   }
@@ -3027,7 +3036,7 @@ static void buildTypedefList(EntryNav *rootNav)
     EntryNav *e;
     for (;(e=eli.current());++eli)
     {
-      if (e->section()!=Entry::ENUM_SEC) 
+      if (e->section()!=Entry::ENUM_SEC)
       {
         buildTypedefList(e);
       }
@@ -3048,13 +3057,13 @@ static void buildVarList(EntryNav *rootNav)
       (
        (rootNav->section()==Entry::VARIABLE_SEC    // it's a variable
        ) ||
-       (rootNav->section()==Entry::FUNCTION_SEC && // or maybe a function pointer variable 
+       (rootNav->section()==Entry::FUNCTION_SEC && // or maybe a function pointer variable
         (isFuncPtr=findFunctionPtr(rootNav->type(),rootNav->lang()))!=-1
        ) ||
        (rootNav->section()==Entry::FUNCTION_SEC && // class variable initialized by constructor
         isVarWithConstructor(rootNav)
        )
-      ) 
+      )
      ) // documented variable
   {
     addVariable(rootNav,isFuncPtr);
@@ -3065,7 +3074,7 @@ static void buildVarList(EntryNav *rootNav)
     EntryNav *e;
     for (;(e=eli.current());++eli)
     {
-      if (e->section()!=Entry::ENUM_SEC) 
+      if (e->section()!=Entry::ENUM_SEC)
       {
         buildVarList(e);
       }
@@ -3120,10 +3129,10 @@ static void addInterfaceOrServiceToServiceOrSingleton(
       "  Interface Member:\n"
       "    `%s' `%s' proto=%d\n"
       "    def=`%s'\n",
-      root->type.data(),
-      rname.data(),
+      qPrint(root->type),
+      qPrint(rname),
       root->proto,
-      def.data()
+      qPrint(def)
               );
 
   // add member to the global list of all members
@@ -3166,20 +3175,20 @@ static void buildInterfaceAndServiceList(EntryNav *const rootNav)
     Debug::print(Debug::Functions,0,
                  "EXPORTED_INTERFACE_SEC:\n"
                  "  `%s' `%s'::`%s' `%s' relates=`%s' relatesType=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%lld proto=%d docFile=%s\n",
-                 root->type.data(),
-                 rootNav->parent()->name().data(),
-                 root->name.data(),
-                 root->args.data(),
-                 root->relates.data(),
+                 qPrint(root->type),
+                 qPrint(rootNav->parent()->name()),
+                 qPrint(root->name),
+                 qPrint(root->args),
+                 qPrint(root->relates),
                  root->relatesType,
-                 root->fileName.data(),
+                 qPrint(root->fileName),
                  root->startLine,
                  root->bodyLine,
                  root->tArgLists ? (int)root->tArgLists->count() : -1,
                  root->mGrpId,
                  root->spec,
                  root->proto,
-                 root->docFile.data()
+                 qPrint(root->docFile)
                 );
 
     QCString const rname = removeRedundantWhiteSpace(root->name);
@@ -3262,7 +3271,7 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd,
   if ((fd==0 || fd->getLanguage()==SrcLangExt_Cpp) &&
      name.left(9)!="operator " && (i=name.find('<'))!=-1 && name.find('>')!=-1)
   {
-    name=name.left(i); 
+    name=name.left(i);
   }
 
   QCString fileName = root->fileName;
@@ -3271,7 +3280,7 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd,
     fileName = rootNav->tagInfo()->tagName;
   }
 
-  //printf("root->name=`%s; root->args=`%s' root->argList=`%s'\n", 
+  //printf("root->name=`%s; root->args=`%s' root->argList=`%s'\n",
   //    root->name.data(),root->args.data(),argListToString(root->argList).data()
   //   );
 
@@ -3372,12 +3381,12 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd,
       "  Func Member:\n"
       "    `%s' `%s'::`%s' `%s' proto=%d\n"
       "    def=`%s'\n",
-      root->type.data(),
-      qualScope.data(),
-      rname.data(),
-      root->args.data(),
+      qPrint(root->type),
+      qPrint(qualScope),
+      qPrint(rname),
+      qPrint(root->args),
       root->proto,
-      def.data()
+      qPrint(def)
               );
 
   // add member to the global list of all members
@@ -3415,20 +3424,20 @@ static void buildFunctionList(EntryNav *rootNav)
     Debug::print(Debug::Functions,0,
                  "FUNCTION_SEC:\n"
                  "  `%s' `%s'::`%s' `%s' relates=`%s' relatesType=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%lld proto=%d docFile=%s\n",
-                 root->type.data(),
-                 rootNav->parent()->name().data(),
-                 root->name.data(),
-                 root->args.data(),
-                 root->relates.data(),
+                 qPrint(root->type),
+                 qPrint(rootNav->parent()->name()),
+                 qPrint(root->name),
+                 qPrint(root->args),
+                 qPrint(root->relates),
                  root->relatesType,
-                 root->fileName.data(),
+                 qPrint(root->fileName),
                  root->startLine,
                  root->bodyLine,
                  root->tArgLists ? (int)root->tArgLists->count() : -1,
                  root->mGrpId,
                  root->spec,
                  root->proto,
-                 root->docFile.data()
+                 qPrint(root->docFile)
                 );
 
     bool isFriend=root->type.find("friend ")!=-1;
@@ -3450,7 +3459,7 @@ static void buildFunctionList(EntryNav *rootNav)
       if (cd && scope+"::"==rname.left(scope.length()+2)) // found A::f inside A
       {
         // strip scope from name
-        rname=rname.right(rname.length()-rootNav->parent()->name().length()-2); 
+        rname=rname.right(rname.length()-rootNav->parent()->name().length()-2);
       }
 
       NamespaceDef *nd = 0;
@@ -3461,7 +3470,7 @@ static void buildFunctionList(EntryNav *rootNav)
         int te=rname.find('>');
         if (memIndex>0 && (ts==-1 || te==-1))
         {
-          // note: the following code was replaced by inMember=TRUE to deal with a 
+          // note: the following code was replaced by inMember=TRUE to deal with a
           // function rname='X::foo' of class X inside a namespace also called X...
           // bug id 548175
           //nd = Doxygen::namespaceSDict->find(rname.left(memIndex));
@@ -3485,11 +3494,11 @@ static void buildFunctionList(EntryNav *rootNav)
       int te=root->type.findRev('>');
       int ti;
       if (!rootNav->parent()->name().isEmpty() &&
-          (rootNav->parent()->section() & Entry::COMPOUND_MASK) && 
+          (rootNav->parent()->section() & Entry::COMPOUND_MASK) &&
           cd &&
-          // do some fuzzy things to exclude function pointers 
-          (root->type.isEmpty() || 
-           ((ti=root->type.find(re,0))==-1 ||      // type does not contain ..(..* 
+          // do some fuzzy things to exclude function pointers
+          (root->type.isEmpty() ||
+           ((ti=root->type.find(re,0))==-1 ||      // type does not contain ..(..*
             (ts!=-1 && ts<te && ts<ti && ti<te) || // outside of < ... >
            root->args.find(")[")!=-1) ||           // and args not )[.. -> function pointer
            root->type.find(")(")!=-1 || root->type.find("operator")!=-1 || // type contains ..)(.. and not "operator"
@@ -3498,17 +3507,17 @@ static void buildFunctionList(EntryNav *rootNav)
          )
       {
         Debug::print(Debug::Functions,0,"  --> member %s of class %s!\n",
-            rname.data(),cd->name().data());
+            qPrint(rname),qPrint(cd->name()));
         addMethodToClass(rootNav,cd,rname,isFriend);
       }
-      else if (!((rootNav->parent()->section() & Entry::COMPOUND_MASK) 
+      else if (!((rootNav->parent()->section() & Entry::COMPOUND_MASK)
                  || rootNav->parent()->section()==Entry::OBJCIMPL_SEC
                 ) &&
                !isMember &&
                (root->relates.isEmpty() || root->relatesType == Duplicate) &&
-               root->type.left(7)!="extern " && root->type.left(8)!="typedef " 
+               root->type.left(7)!="extern " && root->type.left(8)!="typedef "
               )
-      // no member => unrelated function 
+      // no member => unrelated function
       {
         /* check the uniqueness of the function name in the file.
          * A file could contain a function prototype and a function definition
@@ -3519,7 +3528,7 @@ static void buildFunctionList(EntryNav *rootNav)
         MemberDef *md=0;
         if ((mn=Doxygen::functionNameSDict->find(rname)))
         {
-          Debug::print(Debug::Functions,0,"  --> function %s already found!\n",rname.data());
+          Debug::print(Debug::Functions,0,"  --> function %s already found!\n",qPrint(rname));
           MemberNameIterator mni(*mn);
           for (mni.toFirst();(!found && (md=mni.current()));++mni)
           {
@@ -3560,14 +3569,14 @@ static void buildFunctionList(EntryNav *rootNav)
               }
             }
 
-            bool staticsInDifferentFiles = 
+            bool staticsInDifferentFiles =
                     root->stat && md->isStatic() && root->fileName!=md->getDefFileName();
 
             if (
                 matchArguments2(md->getOuterScope(),mfd,mdAl,
                                 rnd ? rnd : Doxygen::globalScope,rfd,root->argList,
                                 FALSE) &&
-                sameNumTemplateArgs && 
+                sameNumTemplateArgs &&
                 matchingReturnTypes &&
                 !staticsInDifferentFiles
                )
@@ -3662,7 +3671,7 @@ static void buildFunctionList(EntryNav *rootNav)
         }
         if (!found) /* global function is unique with respect to the file */
         {
-          Debug::print(Debug::Functions,0,"  --> new function %s found!\n",rname.data());
+          Debug::print(Debug::Functions,0,"  --> new function %s found!\n",qPrint(rname));
           //printf("New function type=`%s' name=`%s' args=`%s' bodyLine=%d\n",
           //       root->type.data(),rname.data(),root->args.data(),root->bodyLine);
 
@@ -3743,17 +3752,17 @@ static void buildFunctionList(EntryNav *rootNav)
                      "  Global Function:\n"
                      "    `%s' `%s'::`%s' `%s' proto=%d\n"
                      "    def=`%s'\n",
-                     root->type.data(),
-                     rootNav->parent()->name().data(),
-                     rname.data(),
-                     root->args.data(),
+                     qPrint(root->type),
+                     qPrint(rootNav->parent()->name()),
+                     qPrint(rname),
+                     qPrint(root->args),
                      root->proto,
-                     def.data()
+                     qPrint(def)
                     );
           md->setDefinition(def);
           md->enableCallGraph(root->callGraph);
           md->enableCallerGraph(root->callerGraph);
-          //if (root->mGrpId!=-1) 
+          //if (root->mGrpId!=-1)
           //{
           //  md->setMemberGroup(memberGroupDict[root->mGrpId]);
           //}
@@ -3763,13 +3772,13 @@ static void buildFunctionList(EntryNav *rootNav)
           {
             // add member to namespace
             md->setNamespace(nd);
-            nd->insertMember(md); 
+            nd->insertMember(md);
           }
           if (fd)
           {
             // add member to the file (we do this even if we have already
             // inserted it into the namespace)
-            md->setFileDef(fd); 
+            md->setFileDef(fd);
             fd->insertMember(md);
           }
 
@@ -3780,7 +3789,7 @@ static void buildFunctionList(EntryNav *rootNav)
           {
             mn->append(md);
           }
-          else 
+          else
           {
             mn = new MemberName(name);
             mn->append(md);
@@ -3790,7 +3799,7 @@ static void buildFunctionList(EntryNav *rootNav)
           if (root->relatesType == Simple) // if this is a relatesalso command,
                                            // allow find Member to pick it up
           {
-            rootNav->changeSection(Entry::EMPTY_SEC); // Otherwise we have finished 
+            rootNav->changeSection(Entry::EMPTY_SEC); // Otherwise we have finished
                                                       // with this entry.
 
           }
@@ -3811,7 +3820,7 @@ static void buildFunctionList(EntryNav *rootNav)
       }
       else
       {
-          Debug::print(Debug::Functions,0,"  --> %s not processed!\n",rname.data());
+          Debug::print(Debug::Functions,0,"  --> %s not processed!\n",qPrint(rname));
       }
     }
     else if (rname.isEmpty())
@@ -3848,7 +3857,7 @@ static void findFriends()
         MemberDef *mmd;
         for (;(mmd=mni.current());++mni) // for each member with that name
         {
-          //printf("Checking for matching arguments 
+          //printf("Checking for matching arguments
           //        mmd->isRelated()=%d mmd->isFriend()=%d mmd->isFunction()=%d\n",
           //    mmd->isRelated(),mmd->isFriend(),mmd->isFunction());
           ArgumentList *mmdAl = mmd->argumentList();
@@ -3858,8 +3867,8 @@ static void findFriends()
                               fmd->getOuterScope(), fmd->getFileDef(), fmdAl,
                               TRUE
                              )
-                             
-             ) // if the member is related and the arguments match then the 
+
+             ) // if the member is related and the arguments match then the
                // function is actually a friend.
           {
             mergeArguments(mmdAl,fmdAl);
@@ -3931,7 +3940,7 @@ static void transferFunctionDocumentation()
     for (;(mdec=mni1.current());++mni1)
     {
       if (mdec->isPrototype() ||
-          (mdec->isVariable() && mdec->isExternal()) 
+          (mdec->isVariable() && mdec->isExternal())
          )
       {
         MemberNameIterator mni2(*mn);
@@ -3957,12 +3966,12 @@ static void transferFunctionReferences()
     /* find a matching function declaration and definition for this function */
     for (;(md=mni.current());++mni)
     {
-      if (md->isPrototype()) 
+      if (md->isPrototype())
         mdec=md;
-      else if (md->isVariable() && md->isExternal()) 
+      else if (md->isVariable() && md->isExternal())
         mdec=md;
-      
-      if (md->isFunction() && !md->isStatic() && !md->isPrototype()) 
+
+      if (md->isFunction() && !md->isStatic() && !md->isPrototype())
         mdef=md;
       else if (md->isVariable() && !md->isExternal() && !md->isStatic())
         mdef=md;
@@ -4040,7 +4049,7 @@ static void transferFunctionReferences()
 
 static void transferRelatedFunctionDocumentation()
 {
-  // find match between function declaration and definition for 
+  // find match between function declaration and definition for
   // related functions
   MemberNameSDict::Iterator mnli(*Doxygen::functionNameSDict);
   MemberName *mn;
@@ -4077,9 +4086,9 @@ static void transferRelatedFunctionDocumentation()
               md->makeForeign();
             else
               md->makeRelated();
-          } 
+          }
         }
-      } 
+      }
     }
   }
 }
@@ -4087,8 +4096,8 @@ static void transferRelatedFunctionDocumentation()
 //----------------------------------------------------------------------
 
 /*! make a dictionary of all template arguments of class cd
- * that are part of the base class name. 
- * Example: A template class A with template arguments <R,S,T> 
+ * that are part of the base class name.
+ * Example: A template class A with template arguments <R,S,T>
  * that inherits from B<T,T,S> will have T and S in the dictionary.
  */
 static QDict<int> *getTemplateArgumentsInName(ArgumentList *templateArguments,const QCString &name)
@@ -4250,7 +4259,7 @@ static void findUsedClassesForClass(EntryNav *rootNav,
                 if (arg->name==usedName) // type is a template argument
                 {
                   found=TRUE;
-                  Debug::print(Debug::Classes,0,"    New used class `%s'\n", usedName.data());
+                  Debug::print(Debug::Classes,0,"    New used class `%s'\n", qPrint(usedName));
 
                   ClassDef *usedCd = Doxygen::hiddenClasses->find(usedName);
                   if (usedCd==0)
@@ -4267,7 +4276,7 @@ static void findUsedClassesForClass(EntryNav *rootNav,
                     Doxygen::hiddenClasses->append(usedName,usedCd);
                   }
                   if (isArtificial) usedCd->setArtificial(TRUE);
-                  Debug::print(Debug::Classes,0,"      Adding used class `%s' (1)\n", usedCd->name().data());
+                  Debug::print(Debug::Classes,0,"      Adding used class `%s' (1)\n", qPrint(usedCd->name()));
                   instanceCd->addUsedClass(usedCd,md->name(),md->protection());
                   usedCd->addUsedByClass(instanceCd,md->name(),md->protection());
                 }
@@ -4280,11 +4289,11 @@ static void findUsedClassesForClass(EntryNav *rootNav,
               //printf("Looking for used class %s: result=%s master=%s\n",
               //    usedName.data(),usedCd?usedCd->name().data():"<none>",masterCd?masterCd->name().data():"<none>");
 
-              if (usedCd) 
+              if (usedCd)
               {
                 found=TRUE;
-                Debug::print(Debug::Classes,0,"    Adding used class `%s' (2)\n", usedCd->name().data());
-                instanceCd->addUsedClass(usedCd,md->name(),md->protection()); // class exists 
+                Debug::print(Debug::Classes,0,"    Adding used class `%s' (2)\n", qPrint(usedCd->name()));
+                instanceCd->addUsedClass(usedCd,md->name(),md->protection()); // class exists
                 usedCd->addUsedByClass(instanceCd,md->name(),md->protection());
               }
             }
@@ -4303,7 +4312,7 @@ static void findUsedClassesForClass(EntryNav *rootNav,
               {
                 type+=md->argsString();
               }
-              Debug::print(Debug::Classes,0,"  New undocumented used class `%s'\n", type.data());
+              Debug::print(Debug::Classes,0,"  New undocumented used class `%s'\n", qPrint(type));
               usedCd = new ClassDef(
                   masterCd->getDefFileName(),masterCd->getDefLine(),
                   masterCd->getDefColumn(),
@@ -4315,8 +4324,8 @@ static void findUsedClassesForClass(EntryNav *rootNav,
             if (usedCd)
             {
               if (isArtificial) usedCd->setArtificial(TRUE);
-              Debug::print(Debug::Classes,0,"    Adding used class `%s' (3)\n", usedCd->name().data());
-              instanceCd->addUsedClass(usedCd,md->name(),md->protection()); 
+              Debug::print(Debug::Classes,0,"    Adding used class `%s' (3)\n", qPrint(usedCd->name()));
+              instanceCd->addUsedClass(usedCd,md->name(),md->protection());
               usedCd->addUsedByClass(instanceCd,md->name(),md->protection());
             }
           }
@@ -4372,7 +4381,7 @@ static void findBaseClassesForClass(
       {
         // 1.8.2: decided to show inheritance relations even if not documented,
         //        we do make them artificial, so they do not appear in the index
-        //if (!Config_getBool("HIDE_UNDOC_RELATIONS")) 
+        //if (!Config_getBool("HIDE_UNDOC_RELATIONS"))
         bool b = Config_getBool("HIDE_UNDOC_RELATIONS") ? TRUE : isArtificial;
         //{
           // no documented base class -> try to find an undocumented one
@@ -4388,7 +4397,7 @@ static void findBaseClassesForClass(
     {
       delete templateNames;
       templateNames=0;
-    }  
+    }
   }
 }
 
@@ -4401,7 +4410,7 @@ static bool findTemplateInstanceRelation(Entry *root,
             bool isArtificial)
 {
   Debug::print(Debug::Classes,0,"    derived from template %s with parameters %s\n",
-         templateClass->name().data(),templSpec.data());
+         qPrint(templateClass->name()),qPrint(templSpec));
   //printf("findTemplateInstanceRelation(base=%s templSpec=%s templateNames=",
   //    templateClass->name().data(),templSpec.data());
   //if (templateNames)
@@ -4414,7 +4423,7 @@ static bool findTemplateInstanceRelation(Entry *root,
   //  }
   //}
   //printf("\n");
-  
+
   bool existingClass = (templSpec ==
                         tempArgListToString(templateClass->templateArguments(),root->lang)
                        );
@@ -4428,12 +4437,12 @@ static bool findTemplateInstanceRelation(Entry *root,
 
   if (freshInstance)
   {
-    Debug::print(Debug::Classes,0,"      found fresh instance '%s'!\n",instanceClass->name().data());
+    Debug::print(Debug::Classes,0,"      found fresh instance '%s'!\n",qPrint(instanceClass->name()));
     Doxygen::classSDict->append(instanceClass->name(),instanceClass);
     instanceClass->setTemplateBaseClassNames(templateNames);
 
-    // search for new template instances caused by base classes of 
-    // instanceClass 
+    // search for new template instances caused by base classes of
+    // instanceClass
     EntryNav *templateRootNav = g_classEntries.find(templateClass->name());
     if (templateRootNav)
     {
@@ -4448,7 +4457,7 @@ static bool findTemplateInstanceRelation(Entry *root,
       }
 
       Debug::print(Debug::Classes,0,"        template root found %s templSpec=%s!\n",
-          templateRoot->name.data(),templSpec.data());
+          qPrint(templateRoot->name),qPrint(templSpec));
       ArgumentList *templArgs = new ArgumentList;
       stringToArgumentList(templSpec,templArgs);
       findBaseClassesForClass(templateRootNav,context,templateClass,instanceClass,
@@ -4495,7 +4504,7 @@ static bool isRecursiveBaseClass(const QCString &scope,const QCString &name)
  *  character position \a startPos. If the end was found the position
  *  of the closing \> is returned, otherwise -1 is returned.
  *
- *  Handles exotic cases such as 
+ *  Handles exotic cases such as
  *  \code
  *    Class<(id<0)>
  *    Class<bits<<2>
@@ -4519,11 +4528,11 @@ static int findEndOfTemplate(const QCString &s,int startPos)
     char c=s.at(e);
     switch(c)
     {
-      case '<': 
+      case '<':
         if (!insideString && !insideChar)
         {
-          if (e<len-1 && s.at(e+1)=='<') 
-            e++; 
+          if (e<len-1 && s.at(e+1)=='<')
+            e++;
           else if (roundCount==0)
             brCount++;
         }
@@ -4531,24 +4540,24 @@ static int findEndOfTemplate(const QCString &s,int startPos)
       case '>':
         if (!insideString && !insideChar)
         {
-          if (e<len-1 && s.at(e+1)=='>') 
-            e++; 
+          if (e<len-1 && s.at(e+1)=='>')
+            e++;
           else if (roundCount==0)
             brCount--;
         }
         break;
       case '(':
-        if (!insideString && !insideChar) 
+        if (!insideString && !insideChar)
           roundCount++;
         break;
       case ')':
-        if (!insideString && !insideChar) 
+        if (!insideString && !insideChar)
           roundCount--;
         break;
       case '"':
         if (!insideChar)
         {
-          if (insideString && pc!='\\') 
+          if (insideString && pc!='\\')
             insideString=FALSE;
           else
             insideString=TRUE;
@@ -4606,7 +4615,7 @@ static bool findClassRelation(
 
   EntryNav *parentNode=rootNav->parent();
   bool lastParent=FALSE;
-  do // for each parent scope, starting with the largest scope 
+  do // for each parent scope, starting with the largest scope
      // (in case of nested classes)
   {
     QCString scopeName= parentNode ? parentNode->name().data() : "";
@@ -4628,7 +4637,7 @@ static bool findClassRelation(
       MemberDef *baseClassTypeDef=0;
       QCString templSpec;
       ClassDef *baseClass=getResolvedClass(explicitGlobalScope ? Doxygen::globalScope : context,
-                                           cd->getFileDef(), 
+                                           cd->getFileDef(),
                                            baseClassName,
                                            &baseClassTypeDef,
                                            &templSpec,
@@ -4658,11 +4667,11 @@ static bool findClassRelation(
       {
         Debug::print(
             Debug::Classes,0,"    class relation %s inherited/used by %s found (%s and %s) templSpec='%s'\n",
-            baseClassName.data(),
-            rootNav->name().data(),
+            qPrint(baseClassName),
+            qPrint(rootNav->name()),
             (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
             (bi->virt==Normal)?"normal":"virtual",
-            templSpec.data()
+            qPrint(templSpec)
            );
 
         int i=baseClassName.find('<');
@@ -4674,7 +4683,7 @@ static bool findClassRelation(
           baseClass = Doxygen::genericsDict->find(baseClassName.left(i));
           //printf("looking for '%s' result=%p\n",baseClassName.data(),baseClass);
         }
-        if (baseClass==0 && i!=-1) 
+        if (baseClass==0 && i!=-1)
           // base class has template specifiers
         {
           // TODO: here we should try to find the correct template specialization
@@ -4768,17 +4777,17 @@ static bool findClassRelation(
         //printf("3. found=%d\n",found);
         if (found)
         {
-          Debug::print(Debug::Classes,0,"    Documented base class `%s' templSpec=%s\n",biName.data(),templSpec.isEmpty()?"":templSpec.data());
+          Debug::print(Debug::Classes,0,"    Documented base class `%s' templSpec=%s\n",qPrint(biName),qPrint(templSpec));
           // add base class to this class
 
           // if templSpec is not empty then we should "instantiate"
           // the template baseClass. A new ClassDef should be created
           // to represent the instance. To be able to add the (instantiated)
-          // members and documentation of a template class 
-          // (inserted in that template class at a later stage), 
-          // the template should know about its instances. 
-          // the instantiation process, should be done in a recursive way, 
-          // since instantiating a template may introduce new inheritance 
+          // members and documentation of a template class
+          // (inserted in that template class at a later stage),
+          // the template should know about its instances.
+          // the instantiation process, should be done in a recursive way,
+          // since instantiating a template may introduce new inheritance
           // relations.
           if (!templSpec.isEmpty() && mode==TemplateInstances)
           {
@@ -4796,7 +4805,7 @@ static bool findClassRelation(
           {
             //printf("       => insert base class\n");
             QCString usedName;
-            if (baseClassTypeDef || cd->isCSharp()) 
+            if (baseClassTypeDef || cd->isCSharp())
             {
               usedName=biName;
               //printf("***** usedName=%s templSpec=%s\n",usedName.data(),templSpec.data());
@@ -4824,7 +4833,7 @@ static bool findClassRelation(
         {
           Debug::print(Debug::Classes,0,
                        "    New undocumented base class `%s' baseClassName=%s templSpec=%s isArtificial=%d\n",
-                       biName.data(),baseClassName.data(),templSpec.data(),isArtificial
+                       qPrint(biName),qPrint(baseClassName),qPrint(templSpec),isArtificial
                       );
           baseClass=0;
           if (isATemplateArgument)
@@ -4883,7 +4892,7 @@ static bool findClassRelation(
         }
         else
         {
-          Debug::print(Debug::Classes,0,"    Base class `%s' not found\n",biName.data());
+          Debug::print(Debug::Classes,0,"    Base class `%s' not found\n",qPrint(biName));
         }
       }
       else
@@ -4897,7 +4906,7 @@ static bool findClassRelation(
               );
         }
         // for mode==TemplateInstance this case is quite common and
-        // indicates a relation between a template class and a template 
+        // indicates a relation between a template class and a template
         // instance with the same name.
       }
       if (scopeOffset==0)
@@ -4936,13 +4945,13 @@ static bool isClassSection(EntryNav *rootNav)
     {
       return TRUE;
     }
-    else if (rootNav->section() & Entry::COMPOUNDDOC_MASK) 
+    else if (rootNav->section() & Entry::COMPOUNDDOC_MASK)
          // is it a documentation block with inheritance info.
     {
       rootNav->loadEntry(g_storage);
       Entry *root = rootNav->entry();
       bool extends = root->extends->count()>0;
-      rootNav->releaseEntry(); 
+      rootNav->releaseEntry();
       if (extends) return TRUE;
     }
   }
@@ -4977,7 +4986,7 @@ static QCString extractClassName(EntryNav *rootNav)
   return bName;
 }
 
-/*! Using the dictionary build by findClassEntries(), this 
+/*! Using the dictionary build by findClassEntries(), this
  *  function will look for additional template specialization that
  *  exists as inheritance relations only. These instances will be
  *  added to the template they are derived from.
@@ -4992,7 +5001,7 @@ static void findInheritedTemplateInstances()
   {
     ClassDef *cd;
     QCString bName = extractClassName(rootNav);
-    Debug::print(Debug::Classes,0,"  Inheritance: Class %s : \n",bName.data());
+    Debug::print(Debug::Classes,0,"  Inheritance: Class %s : \n",qPrint(bName));
     if ((cd=getClass(bName)))
     {
       rootNav->loadEntry(g_storage);
@@ -5013,11 +5022,12 @@ static void findUsedTemplateInstances()
   {
     ClassDef *cd;
     QCString bName = extractClassName(rootNav);
-    Debug::print(Debug::Classes,0,"  Usage: Class %s : \n",bName.data());
+    Debug::print(Debug::Classes,0,"  Usage: Class %s : \n",qPrint(bName));
     if ((cd=getClass(bName)))
     {
       rootNav->loadEntry(g_storage);
       findUsedClassesForClass(rootNav,cd,cd,cd,TRUE);
+      cd->addTypeConstraints();
       rootNav->releaseEntry();
     }
   }
@@ -5036,7 +5046,7 @@ static void computeClassRelations()
     rootNav->loadEntry(g_storage);
     Entry *root = rootNav->entry();
     QCString bName = extractClassName(rootNav);
-    Debug::print(Debug::Classes,0,"  Relations: Class %s : \n",bName.data());
+    Debug::print(Debug::Classes,0,"  Relations: Class %s : \n",qPrint(bName));
     if ((cd=getClass(bName)))
     {
       findBaseClassesForClass(rootNav,cd,cd,cd,DocumentedOnly,FALSE);
@@ -5046,7 +5056,7 @@ static void computeClassRelations()
         bName.right(2)!="::")
     {
       if (!root->name.isEmpty() && root->name.find('@')==-1 && // normal name
-          (guessSection(root->fileName)==Entry::HEADER_SEC || 
+          (guessSection(root->fileName)==Entry::HEADER_SEC ||
            Config_getBool("EXTRACT_LOCAL_CLASSES")) && // not defined in source file
            protectionLevelVisible(root->protection) && // hidden by protection
            !Config_getBool("HIDE_UNDOC_CLASSES") // undocumented class are visible
@@ -5074,16 +5084,16 @@ static void computeTemplateClassRelations()
     QCString bName=stripAnonymousNamespaceScope(root->name);
     bName=stripTemplateSpecifiersFromScope(bName);
     ClassDef *cd=getClass(bName);
-    // strip any anonymous scopes first 
+    // strip any anonymous scopes first
     QDict<ClassDef> *templInstances = 0;
     if (cd && (templInstances=cd->getTemplateInstances()))
     {
-      Debug::print(Debug::Classes,0,"  Template class %s : \n",cd->name().data());
+      Debug::print(Debug::Classes,0,"  Template class %s : \n",qPrint(cd->name()));
       QDictIterator<ClassDef> tdi(*templInstances);
       ClassDef *tcd;
       for (tdi.toFirst();(tcd=tdi.current());++tdi) // for each template instance
       {
-        Debug::print(Debug::Classes,0,"    Template instance %s : \n",tcd->name().data());
+        Debug::print(Debug::Classes,0,"    Template instance %s : \n",qPrint(tcd->name()));
         QCString templSpec = tdi.currentKey();
         ArgumentList *templArgs = new ArgumentList;
         stringToArgumentList(templSpec,templArgs);
@@ -5108,7 +5118,7 @@ static void computeTemplateClassRelations()
             {
               int templIndex = *qdi.current();
               Argument *actArg = 0;
-              if (templIndex<(int)templArgs->count()) 
+              if (templIndex<(int)templArgs->count())
               {
                 actArg=templArgs->at(templIndex);
               }
@@ -5122,7 +5132,7 @@ static void computeTemplateClassRelations()
               }
             }
             delete templateNames;
-            
+
             tbi.name = substituteTemplateArgumentsInString(bi->name,tl,templArgs);
             // find a documented base class in the correct scope
             if (!findClassRelation(rootNav,cd,tcd,&tbi,actualTemplateNames,DocumentedOnly,FALSE))
@@ -5285,8 +5295,8 @@ static void generateXRefPages()
 
 //----------------------------------------------------------------------
 // Copy the documentation in entry `root' to member definition `md' and
-// set the function declaration of the member to `funcDecl'. If the boolean 
-// over_load is set the standard overload text is added. 
+// set the function declaration of the member to `funcDecl'. If the boolean
+// over_load is set the standard overload text is added.
 
 static void addMemberDocs(EntryNav *rootNav,
                    MemberDef *md, const char *funcDecl,
@@ -5307,9 +5317,9 @@ static void addMemberDocs(EntryNav *rootNav,
   ClassDef     *cd=md->getClassDef();
   NamespaceDef *nd=md->getNamespaceDef();
   QCString fullName;
-  if (cd) 
+  if (cd)
     fullName = cd->name();
-  else if (nd) 
+  else if (nd)
     fullName = nd->name();
 
   if (!fullName.isEmpty()) fullName+="::";
@@ -5327,12 +5337,12 @@ static void addMemberDocs(EntryNav *rootNav,
   }
   else
   {
-    if ( 
+    if (
           matchArguments2( md->getOuterScope(), md->getFileDef(), mdAl,
                            rscope,rfd,root->argList,
                            TRUE
                          )
-       ) 
+       )
     {
       //printf("merging arguments (2)\n");
       mergeArguments(mdAl,root->argList,!root->doc.isEmpty());
@@ -5346,11 +5356,11 @@ static void addMemberDocs(EntryNav *rootNav,
       doc+="<p>";
       doc+=root->doc;
     }
-    md->setDocumentation(doc,root->docFile,root->docLine); 
+    md->setDocumentation(doc,root->docFile,root->docLine);
     md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine);
     md->setDocsForDefinition(!root->proto);
   }
-  else  
+  else
   {
     //printf("overwrite!\n");
     md->setDocumentation(root->doc,root->docFile,root->docLine);
@@ -5383,7 +5393,7 @@ static void addMemberDocs(EntryNav *rootNav,
 
   if (rfd)
   {
-    if ((md->getStartBodyLine()==-1 && root->bodyLine!=-1) 
+    if ((md->getStartBodyLine()==-1 && root->bodyLine!=-1)
        )
     {
       //printf("Setting new body segment [%d,%d]\n",root->bodyLine,root->endBodyLine);
@@ -5425,7 +5435,7 @@ static void addMemberDocs(EntryNav *rootNav,
 }
 
 //----------------------------------------------------------------------
-// find a class definition given the scope name and (optionally) a 
+// find a class definition given the scope name and (optionally) a
 // template list specifier
 
 static ClassDef *findClassDefinition(FileDef *fd,NamespaceDef *nd,
@@ -5441,18 +5451,18 @@ static ClassDef *findClassDefinition(FileDef *fd,NamespaceDef *nd,
 // with name `name' and argument list `args' (for overloading) and
 // function declaration `decl' to the corresponding member definition.
 
-static bool findGlobalMember(EntryNav *rootNav, 
+static bool findGlobalMember(EntryNav *rootNav,
                            const QCString &namespaceName,
                            const char *type,
-                           const char *name, 
+                           const char *name,
                            const char *tempArg,
-                           const char *, 
+                           const char *,
                            const char *decl)
 {
   Entry *root = rootNav->entry();
   Debug::print(Debug::FindMembers,0,
        "2. findGlobalMember(namespace=%s,type=%s,name=%s,tempArg=%s,decl=%s)\n",
-          namespaceName.data(),type,name,tempArg,decl);
+          qPrint(namespaceName),qPrint(type),qPrint(name),qPrint(tempArg),qPrint(decl));
   QCString n=name;
   if (n.isEmpty()) return FALSE;
   if (n.find("::")!=-1) return FALSE; // skip undefined class members
@@ -5481,17 +5491,17 @@ static bool findGlobalMember(EntryNav *rootNav,
       //SDict<Definition> *cl = fd ? fd->getUsedClasses()    : 0;
       //printf("NamespaceList %p\n",nl);
 
-      // search in the list of namespaces that are imported via a 
+      // search in the list of namespaces that are imported via a
       // using declaration
       bool viaUsingDirective = nl && nd && nl->find(nd->qualifiedName())!=0;
 
       if ((namespaceName.isEmpty() && nd==0) ||  // not in a namespace
-          (nd && nd->name()==namespaceName) ||   // or in the same namespace 
+          (nd && nd->name()==namespaceName) ||   // or in the same namespace
           viaUsingDirective                      // member in `using' namespace
-         )     
+         )
       {
         Debug::print(Debug::FindMembers,0,"4. Try to add member `%s' to scope `%s'\n",
-            md->name().data(),namespaceName.data());
+            qPrint(md->name()),qPrint(namespaceName));
 
         NamespaceDef *rnd = 0;
         if (!namespaceName.isEmpty()) rnd = Doxygen::namespaceSDict->find(namespaceName);
@@ -5523,12 +5533,12 @@ static bool findGlobalMember(EntryNav *rootNav,
         //    argListToString(md->argumentList()).data(),
         //    argListToString(root->argList).data());
 
-        // for static members we also check if the comment block was found in 
+        // for static members we also check if the comment block was found in
         // the same file. This is needed because static members with the same
         // name can be in different files. Thus it would be wrong to just
         // put the comment block at the first syntactically matching member.
-        if (matching && md->isStatic() && 
-            md->getDefFileName()!=root->fileName && 
+        if (matching && md->isStatic() &&
+            md->getDefFileName()!=root->fileName &&
             mn->count()>1)
         {
           matching = FALSE;
@@ -5554,7 +5564,7 @@ static bool findGlobalMember(EntryNav *rootNav,
           found=TRUE;
         }
       }
-    } 
+    }
     if (!found && root->relatesType != Duplicate && root->section==Entry::FUNCTION_SEC) // no match
     {
       QCString fullFuncDecl=decl;
@@ -5577,10 +5587,10 @@ static bool findGlobalMember(EntryNav *rootNav,
   }
   else // got docs for an undefined member!
   {
-    if (root->type!="friend class" && 
+    if (root->type!="friend class" &&
         root->type!="friend struct" &&
         root->type!="friend union" &&
-        (!Config_getBool("TYPEDEF_HIDES_STRUCT") || 
+        (!Config_getBool("TYPEDEF_HIDES_STRUCT") ||
          root->type.find("typedef ")==-1)
        )
     {
@@ -5628,7 +5638,7 @@ static QCString substituteTemplatesInString(
   QCString dst;
   QRegExp re( "[A-Za-z_][A-Za-z_0-9]*");
   //printf("type=%s\n",sa->type.data());
-  int i,p=0,l; 
+  int i,p=0,l;
   while ((i=re.match(src,p,&l))!=-1) // for each word in srcType
   {
     bool found=FALSE;
@@ -5691,7 +5701,7 @@ static QCString substituteTemplatesInString(
       //  argListToString(dstlali.current()).data(),
       //  funcTempArgList ? argListToString(funcTempArgList).data() : "<none>");
     }
-    dst+=name; 
+    dst+=name;
     p=i+l;
   }
   dst+=src.right(src.length()-p);
@@ -5750,7 +5760,7 @@ static void substituteTemplatesInArgList(
 
 
 
-/*! This function tries to find a member (in a documented class/file/namespace) 
+/*! This function tries to find a member (in a documented class/file/namespace)
  * that corresponds to the function/variable declaration given in \a funcDecl.
  *
  * The boolean \a overloaded is used to specify whether or not a standard
@@ -5771,7 +5781,7 @@ static void findMember(EntryNav *rootNav,
                "findMember(root=%p,funcDecl=`%s',related=`%s',overload=%d,"
                "isFunc=%d mGrpId=%d tArgList=%p (#=%d) "
                "spec=%lld lang=%x\n",
-               root,funcDecl.data(),root->relates.data(),overloaded,isFunc,root->mGrpId,
+               root,qPrint(funcDecl),qPrint(root->relates),overloaded,isFunc,root->mGrpId,
                root->tArgLists,root->tArgLists ? root->tArgLists->count() : 0,
                root->spec,root->lang
               );
@@ -5824,10 +5834,10 @@ static void findMember(EntryNav *rootNav,
   {
     funcDecl=(funcDecl.left(sep)+funcDecl.right(funcDecl.length()-sep-1)).stripWhiteSpace();
   }
-  
+
   // make sure the first character is a space to simplify searching.
   if (!funcDecl.isEmpty() && funcDecl[0]!=' ') funcDecl.prepend(" ");
-  
+
   // remove some superfluous spaces
   funcDecl= substitute(
               substitute(
@@ -5836,7 +5846,7 @@ static void findMember(EntryNav *rootNav,
               ),
               " ::","::"
             ).stripWhiteSpace();
-  
+
   //printf("funcDecl=`%s'\n",funcDecl.data());
   if (isFriend && funcDecl.left(6)=="class ")
   {
@@ -5865,7 +5875,7 @@ static void findMember(EntryNav *rootNav,
   // related field.
   //printf("scopeName=`%s' className=`%s' namespaceName=`%s'\n",
   //    scopeName.data(),className.data(),namespaceName.data());
-  if (!root->relates.isEmpty()) 
+  if (!root->relates.isEmpty())
   {                             // related member, prefix user specified scope
     isRelated=TRUE;
     isMemberOf=(root->relatesType == MemberOf);
@@ -5873,21 +5883,21 @@ static void findMember(EntryNav *rootNav,
     {
       scopeName= mergeScopes(scopeName,root->relates);
     }
-    else 
+    else
     {
       scopeName = root->relates;
     }
   }
 
-  if (root->relates.isEmpty() && rootNav->parent() && 
+  if (root->relates.isEmpty() && rootNav->parent() &&
       ((rootNav->parent()->section()&Entry::SCOPE_MASK) ||
        (rootNav->parent()->section()==Entry::OBJCIMPL_SEC)
       ) &&
-      !rootNav->parent()->name().isEmpty()) // see if we can combine scopeName 
+      !rootNav->parent()->name().isEmpty()) // see if we can combine scopeName
                                      // with the scope in which it was found
   {
     QCString joinedName = rootNav->parent()->name()+"::"+scopeName;
-    if (!scopeName.isEmpty() && 
+    if (!scopeName.isEmpty() &&
         (getClass(joinedName) || Doxygen::namespaceSDict->find(joinedName)))
     {
       scopeName = joinedName;
@@ -5921,27 +5931,27 @@ static void findMember(EntryNav *rootNav,
      }
   }
   scopeName=stripTemplateSpecifiersFromScope(
-      removeRedundantWhiteSpace(scopeName),FALSE,&funcSpec); 
+      removeRedundantWhiteSpace(scopeName),FALSE,&funcSpec);
 
   // funcSpec contains the last template specifiers of the given scope.
-  // If this method does not have any template arguments or they are 
-  // empty while funcSpec is not empty we assume this is a 
+  // If this method does not have any template arguments or they are
+  // empty while funcSpec is not empty we assume this is a
   // specialization of a method. If not, we clear the funcSpec and treat
   // this as a normal method of a template class.
-  if (!(root->tArgLists && 
+  if (!(root->tArgLists &&
         root->tArgLists->count()>0 &&
         root->tArgLists->getFirst()->count()==0
        )
-     ) 
+     )
   {
     funcSpec.resize(0);
   }
-  
+
   // split scope into a namespace and a class part
   extractNamespaceName(scopeName,className,namespaceName,TRUE);
   //printf("scopeName=`%s' className=`%s' namespaceName=`%s'\n",
   //       scopeName.data(),className.data(),namespaceName.data());
-  
+
   //namespaceName=removeAnonymousScopes(namespaceName);
   if (namespaceName.find('@')!=-1) return; // skip stuff in anonymous namespace...
 
@@ -6039,10 +6049,10 @@ static void findMember(EntryNav *rootNav,
       }
     }
   }
-  
+
   if (funcType=="template class" && !funcTempList.isEmpty())
     return;   // ignore explicit template instantiations
-  
+
   Debug::print(Debug::FindMembers,0,
            "findMember() Parse results:\n"
            "  namespaceName=`%s'\n"
@@ -6053,21 +6063,21 @@ static void findMember(EntryNav *rootNav,
            "  funcArgs=`%s'\n"
            "  funcTempList=`%s'\n"
            "  funcDecl=`%s'\n"
-           "  related=`%s'\n" 
+           "  related=`%s'\n"
            "  exceptions=`%s'\n"
            "  isRelated=%d\n"
            "  isMemberOf=%d\n"
            "  isFriend=%d\n"
            "  isFunc=%d\n\n",
-           namespaceName.data(),className.data(),
-           funcType.data(),funcSpec.data(),funcName.data(),funcArgs.data(),funcTempList.data(),
-           funcDecl.data(),root->relates.data(),exceptions.data(),isRelated,isMemberOf,isFriend,
+           qPrint(namespaceName),qPrint(className),
+           qPrint(funcType),qPrint(funcSpec),qPrint(funcName),qPrint(funcArgs),qPrint(funcTempList),
+           qPrint(funcDecl),qPrint(root->relates),qPrint(exceptions),isRelated,isMemberOf,isFriend,
            isFunc
           );
 
   MemberName *mn=0;
   if (!funcName.isEmpty()) // function name is valid
-  { 
+  {
     Debug::print(Debug::FindMembers,0,
                  "1. funcName=`%s'\n",funcName.data());
     if (funcName.left(9)=="operator ") // strip class scope from cast operator
@@ -6101,9 +6111,9 @@ static void findMember(EntryNav *rootNav,
             Debug::print(Debug::FindMembers,0,
                 "3. member definition found, "
                 "scope needed=`%s' scope=`%s' args=`%s' fileName=%s\n",
-                scopeName.data(),cd ? cd->name().data() : "<none>",
-                md->argsString(),
-                root->fileName.data());
+                qPrint(scopeName),cd ? qPrint(cd->name()) : "<none>",
+                qPrint(md->argsString()),
+                qPrint(root->fileName));
             //printf("Member %s (member scopeName=%s) (this scopeName=%s) classTempList=%s\n",md->name().data(),cd->name().data(),scopeName.data(),classTempList.data());
             FileDef *fd=rootNav->fileDef();
             NamespaceDef *nd=0;
@@ -6113,7 +6123,7 @@ static void findMember(EntryNav *rootNav,
             //       stripTemplateSpecifiersFromScope(scopeName,FALSE).data());
 
             ClassDef *tcd=findClassDefinition(fd,nd,scopeName);
-            if (tcd==0 && stripAnonymousNamespaceScope(cd->name())==scopeName)
+            if (tcd==0 && cd && stripAnonymousNamespaceScope(cd->name())==scopeName)
             {
               // don't be fooled by anonymous scopes
               tcd=cd;
@@ -6143,8 +6153,8 @@ static void findMember(EntryNav *rootNav,
               bool substDone=FALSE;
               ArgumentList *argList=0;
 
-              /* substitute the occurrences of class template names in the 
-               * argument list before matching 
+              /* substitute the occurrences of class template names in the
+               * argument list before matching
                */
               ArgumentList *mdAl = md->argumentList();
               if (declTemplArgs.count()>0 && defTemplArgs &&
@@ -6170,15 +6180,15 @@ static void findMember(EntryNav *rootNav,
 
               Debug::print(Debug::FindMembers,0,
                   "5. matching `%s'<=>`%s' className=%s namespaceName=%s\n",
-                  argListToString(argList,TRUE).data(),argListToString(root->argList,TRUE).data(),
-                  className.data(),namespaceName.data()
+                  qPrint(argListToString(argList,TRUE)),qPrint(argListToString(root->argList,TRUE)),
+                  qPrint(className),qPrint(namespaceName)
                   );
 
               bool matching=
                 md->isVariable() || md->isTypedef() || // needed for function pointers
-                (mdAl==0 && root->argList->count()==0) || 
+                (mdAl==0 && root->argList->count()==0) ||
                 matchArguments2(
-                    md->getClassDef(),md->getFileDef(),argList, 
+                    md->getClassDef(),md->getFileDef(),argList,
                     cd,fd,root->argList,
                     TRUE);
 
@@ -6194,9 +6204,11 @@ static void findMember(EntryNav *rootNav,
                 memType.stripPrefix("static "); // see bug700696
                 funcType=substitute(stripTemplateSpecifiersFromScope(funcType,TRUE),
                                     className+"::",""); // see bug700693 & bug732594
+                memType=substitute(stripTemplateSpecifiersFromScope(memType,TRUE),
+                                    className+"::",""); // see bug758900
                 Debug::print(Debug::FindMembers,0,
                    "5b. Comparing return types '%s'<->'%s' #args %d<->%d\n",
-                    md->typeString(),funcType.data(),
+                    qPrint(md->typeString()),qPrint(funcType),
                     md->templateArguments()->count(),root->tArgLists->getLast()->count());
                 if (md->templateArguments()->count()!=root->tArgLists->getLast()->count() ||
                     qstrcmp(memType,funcType))
@@ -6234,15 +6246,15 @@ static void findMember(EntryNav *rootNav,
                   md->setDefinitionTemplateParameterLists(root->tArgLists);
                   md->setArgumentList(argList); // new owner of the list => no delete
                 }
-                else // no match 
+                else // no match
                 {
-                  if (!funcTempList.isEmpty() && 
+                  if (!funcTempList.isEmpty() &&
                       isSpecialization(declTemplArgs,*defTemplArgs))
                   {
                     // check if we are dealing with a partial template
                     // specialization. In this case we add it to the class
                     // even though the member arguments do not match.
-                    
+
                     // TODO: copy other aspects?
                     root->protection=md->protection(); // copy protection level
                     addMethodToClass(rootNav,cd,md->name(),isFriend);
@@ -6251,20 +6263,20 @@ static void findMember(EntryNav *rootNav,
                   delete argList;
                 }
               }
-              if (matching) 
+              if (matching)
               {
                 addMemberDocs(rootNav,md,funcDecl,0,overloaded,0/* TODO */);
                 count++;
                 memFound=TRUE;
               }
-            } 
+            }
             else if (cd && cd!=tcd) // we did find a class with the same name as cd
                                     // but in a different namespace
             {
               noMatchCount++;
             }
-          } 
-          if (count==0 && rootNav->parent() && 
+          }
+          if (count==0 && rootNav->parent() &&
               rootNav->parent()->section()==Entry::OBJCIMPL_SEC)
           {
             goto localObjCMethod;
@@ -6282,12 +6294,12 @@ static void findMember(EntryNav *rootNav,
                 ClassDef *ccd=md->getClassDef();
                 MemberDef *cmd=md;
                 //printf("ccd->name()==%s className=%s\n",ccd->name().data(),className.data());
-                if (ccd!=0 && rightScopeMatch(ccd->name(),className)) 
+                if (ccd!=0 && rightScopeMatch(ccd->name(),className))
                 {
                   ArgumentList *templAl = md->templateArguments();
                   if (root->tArgLists && templAl!=0 &&
                       root->tArgLists->getLast()->count()<=templAl->count())
-                  { 
+                  {
                     addMethodToClass(rootNav,ccd,md->name(),isFriend);
                     return;
                   }
@@ -6297,7 +6309,7 @@ static void findMember(EntryNav *rootNav,
                     umd = emd = cmd;
                     Debug::print(Debug::FindMembers,0,
                      "7. new candidate className=%s scope=%s args=%s exact match\n",
-                         className.data(),ccd->name().data(),md->argsString());
+                         qPrint(className),qPrint(ccd->name()),qPrint(md->argsString()));
                   }
                   else // arguments do not match, but member name and scope do -> remember
                   {
@@ -6305,7 +6317,7 @@ static void findMember(EntryNav *rootNav,
                     umd = cmd;
                     Debug::print(Debug::FindMembers,0,
                      "7. new candidate className=%s scope=%s args=%s no match\n",
-                         className.data(),ccd->name().data(),md->argsString());
+                         qPrint(className),qPrint(ccd->name()),qPrint(md->argsString()));
                   }
                   candidates++;
                 }
@@ -6317,13 +6329,13 @@ static void findMember(EntryNav *rootNav,
               if (candidates==1 && ucd && umd)
               {
                 // we didn't find an actual match on argument lists, but there is only 1 member with this
-                // name in the same scope, so that has to be the one. 
+                // name in the same scope, so that has to be the one.
                 addMemberDocs(rootNav,umd,funcDecl,0,overloaded,0);
                 return;
               }
               else if (candidates>1 && ecd && emd)
               {
-                // we didn't find a unique match using type resolution, 
+                // we didn't find a unique match using type resolution,
                 // but one of the matches has the exact same signature so
                 // we take that one.
                 addMemberDocs(rootNav,emd,funcDecl,0,overloaded,0);
@@ -6369,17 +6381,17 @@ static void findMember(EntryNav *rootNav,
                     warnMsg+='\n';
                   }
                   warnMsg+="  ";
-                  if (md->typeString()) 
+                  if (md->typeString())
                   {
                     warnMsg+=md->typeString();
                     warnMsg+=' ';
                   }
                   QCString qScope = cd->qualifiedNameWithTemplateParameters();
-                  if (!qScope.isEmpty()) 
+                  if (!qScope.isEmpty())
                     warnMsg+=qScope+"::"+md->name();
-                  if (md->argsString()) 
+                  if (md->argsString())
                     warnMsg+=md->argsString();
-                  if (noMatchCount>1) 
+                  if (noMatchCount>1)
                   {
                     warnMsg+="' at line "+QCString().setNum(md->getDefLine()) +
                              " of file "+md->getDefFileName();
@@ -6399,7 +6411,7 @@ static void findMember(EntryNav *rootNav,
           MemberDef *md=0;
           for (mni.toFirst();(md=mni.current());++mni)
           {
-            if (md->getClassDef()==cd) 
+            if (md->getClassDef()==cd)
             {
               // TODO: we should probably also check for matching arguments
               declMd = md;
@@ -6426,6 +6438,7 @@ static void findMember(EntryNav *rootNav,
           md->enableCallGraph(root->callGraph);
           md->enableCallerGraph(root->callerGraph);
           md->setDocumentation(root->doc,root->docFile,root->docLine);
+          md->setBriefDescription(root->brief,root->briefFile,root->briefLine);
           md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine);
           md->setDocsForDefinition(!root->proto);
           md->setPrototype(root->proto);
@@ -6446,10 +6459,10 @@ static void findMember(EntryNav *rootNav,
           //        scopeName.data(),funcName.data(),funcArgs.data());
         }
       }
-      else if (overloaded) // check if the function belongs to only one class 
+      else if (overloaded) // check if the function belongs to only one class
       {
         // for unique overloaded member we allow the class to be
-        // omitted, this is to be Qt compatible. Using this should 
+        // omitted, this is to be Qt compatible. Using this should
         // however be avoided, because it is error prone
         MemberNameIterator mni(*mn);
         MemberDef *md=mni.toFirst();
@@ -6462,8 +6475,8 @@ static void findMember(EntryNav *rootNav,
         for (;(md=mni.current());++mni)
         {
           ClassDef *cd=md->getClassDef();
-          if (className!=cd->name()) unique=FALSE; 
-        } 
+          if (className!=cd->name()) unique=FALSE;
+        }
         if (unique)
         {
           MemberType mtype;
@@ -6471,9 +6484,9 @@ static void findMember(EntryNav *rootNav,
           else if (root->mtype==Slot)    mtype=MemberType_Slot;
           else if (root->mtype==DCOP)    mtype=MemberType_DCOP;
           else                           mtype=MemberType_Function;
-          
+
           // new overloaded member function
-          ArgumentList *tArgList = 
+          ArgumentList *tArgList =
             getTemplateArgumentsFromName(cd->name()+"::"+funcName,root->tArgLists);
           //printf("new related member %s args=`%s'\n",md->name().data(),funcArgs.data());
           MemberDef *md=new MemberDef(
@@ -6493,6 +6506,7 @@ static void findMember(EntryNav *rootNav,
           doc+="<p>";
           doc+=root->doc;
           md->setDocumentation(doc,root->docFile,root->docLine);
+          md->setBriefDescription(root->brief,root->briefFile,root->briefLine);
           md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine);
           md->setDocsForDefinition(!root->proto);
           md->setPrototype(root->proto);
@@ -6517,21 +6531,21 @@ static void findMember(EntryNav *rootNav,
           warn(root->fileName,root->startLine,
                "Cannot determine class for function\n%s",
                fullFuncDecl.data()
-              );   
+              );
         }
       }
     }
     else if (isRelated && !root->relates.isEmpty())
     {
       Debug::print(Debug::FindMembers,0,"2. related function\n"
-              "  scopeName=%s className=%s\n",scopeName.data(),className.data());
+              "  scopeName=%s className=%s\n",qPrint(scopeName),qPrint(className));
       if (className.isEmpty()) className=root->relates;
       ClassDef *cd;
       //printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data());
       if ((cd=getClass(scopeName)))
       {
         bool newMember=TRUE; // assume we have a new member
-        bool newMemberName=FALSE; 
+        bool newMemberName=FALSE;
         MemberDef *mdDefine=0;
         bool isDefine=FALSE;
         {
@@ -6583,9 +6597,9 @@ static void findMember(EntryNav *rootNav,
           MemberType mtype;
           if (isDefine)
             mtype=MemberType_Define;
-          else if (root->mtype==Signal)  
+          else if (root->mtype==Signal)
             mtype=MemberType_Signal;
-          else if (root->mtype==Slot) 
+          else if (root->mtype==Slot)
             mtype=MemberType_Slot;
           else if (root->mtype==DCOP)
             mtype=MemberType_DCOP;
@@ -6598,7 +6612,7 @@ static void findMember(EntryNav *rootNav,
             funcType="#define";
             funcArgs=mdDefine->argsString();
             funcDecl=funcType + " " + funcName;
-          } 
+          }
 
           //printf("New related name `%s' `%d'\n",funcName.data(),
           //    root->argList ? (int)root->argList->count() : -1);
@@ -6624,7 +6638,7 @@ static void findMember(EntryNav *rootNav,
             md->setInitializer(mdDefine->initializer());
           }
 
-          // 
+          //
           // we still have the problem that
           // MemberDef::writeDocumentation() in memberdef.cpp
           // writes the template argument list for the class,
@@ -6645,7 +6659,7 @@ static void findMember(EntryNav *rootNav,
           //       funcName.data(),funcDecl.data(),root->bodyLine);
 
           // try to find the matching line number of the body from the
-          // global function list 
+          // global function list
           bool found=FALSE;
           if (root->bodyLine==-1)
           {
@@ -6683,7 +6697,7 @@ static void findMember(EntryNav *rootNav,
             md->setBodyDef(fd);
           }
 
-          //if (root->mGrpId!=-1) 
+          //if (root->mGrpId!=-1)
           //{
           //  md->setMemberGroup(memberGroupDict[root->mGrpId]);
           //}
@@ -6728,7 +6742,7 @@ static void findMember(EntryNav *rootNav,
             warn(root->fileName,root->startLine,
                "Cannot determine file/namespace for relatedalso function\n%s",
                fullFuncDecl.data()
-              );   
+              );
           }
         }
       }
@@ -6736,7 +6750,7 @@ static void findMember(EntryNav *rootNav,
       {
         warn_undoc(root->fileName,root->startLine,
                    "class `%s' for related function `%s' is not "
-                   "documented.", 
+                   "documented.",
                    className.data(),funcName.data()
                   );
       }
@@ -6749,7 +6763,7 @@ localObjCMethod:
       if (Config_getBool("EXTRACT_LOCAL_METHODS") && (cd=getClass(scopeName)))
       {
         Debug::print(Debug::FindMembers,0,"4. Local objective C method %s\n"
-              "  scopeName=%s className=%s\n",root->name.data(),scopeName.data(),className.data());
+              "  scopeName=%s className=%s\n",qPrint(root->name),qPrint(scopeName),qPrint(className));
         //printf("Local objective C method `%s' of class `%s' found\n",root->name.data(),cd->name().data());
         MemberDef *md=new MemberDef(
             root->fileName,root->startLine,root->startColumn,
@@ -6782,7 +6796,7 @@ localObjCMethod:
         {
           mn->append(md);
         }
-        else 
+        else
         {
           mn = new MemberName(root->name);
           mn->append(md);
@@ -6802,7 +6816,7 @@ localObjCMethod:
         warn(root->fileName,root->startLine,
              "class for member `%s' cannot "
              "be found.", funcName.data()
-            ); 
+            );
       }
       else if (!className.isEmpty() && !globMem)
       {
@@ -6819,7 +6833,7 @@ localObjCMethod:
          "member with no name found.");
   }
   return;
-} 
+}
 
 //----------------------------------------------------------------------
 // find the members corresponding to the different documentation blocks
@@ -6831,7 +6845,7 @@ static void filterMemberDocumentation(EntryNav *rootNav)
   int i=-1,l;
   Debug::print(Debug::FindMembers,0,
       "findMemberDocumentation(): root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->spec=%lld root->mGrpId=%d\n",
-      root->type.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->spec,root->mGrpId
+      qPrint(root->type),qPrint(root->inside),qPrint(root->name),qPrint(root->args),root->section,root->spec,root->mGrpId
       );
   //printf("rootNav->parent()->name()=%s\n",rootNav->parent()->name().data());
   bool isFunc=TRUE;
@@ -6845,7 +6859,7 @@ static void filterMemberDocumentation(EntryNav *rootNav)
   }
 
   if ( // detect func variable/typedef to func ptr
-      (i=findFunctionPtr(root->type,root->lang,&l))!=-1 
+      (i=findFunctionPtr(root->type,root->lang,&l))!=-1
      )
   {
     //printf("Fixing function pointer!\n");
@@ -6855,7 +6869,7 @@ static void filterMemberDocumentation(EntryNav *rootNav)
     //printf("Results type=%s,name=%s,args=%s\n",root->type.data(),root->name.data(),root->args.data());
     isFunc=FALSE;
   }
-  else if ((root->type.left(8)=="typedef " && root->args.find('(')!=-1)) 
+  else if ((root->type.left(8)=="typedef " && root->args.find('(')!=-1))
     // detect function types marked as functions
   {
     isFunc=FALSE;
@@ -6876,27 +6890,27 @@ static void filterMemberDocumentation(EntryNav *rootNav)
       findMember(rootNav,root->type+" "+root->name+root->args+root->exception,FALSE,isFunc);
     }
   }
-  else if (root->section==Entry::OVERLOADDOC_SEC) 
+  else if (root->section==Entry::OVERLOADDOC_SEC)
   {
     //printf("Overloaded member %s found\n",root->name.data());
     findMember(rootNav,root->name,TRUE,isFunc);
   }
-  else if 
+  else if
     ((root->section==Entry::FUNCTION_SEC      // function
-      ||   
+      ||
       (root->section==Entry::VARIABLE_SEC &&  // variable
        !root->type.isEmpty() &&                // with a type
-       g_compoundKeywordDict.find(root->type)==0 // that is not a keyword 
+       g_compoundKeywordDict.find(root->type)==0 // that is not a keyword
        // (to skip forward declaration of class etc.)
       )
-     ) 
+     )
     )
     {
       //printf("Documentation for member `%s' found args=`%s' excp=`%s'\n",
       //    root->name.data(),root->args.data(),root->exception.data());
       //if (root->relates.length()) printf("  Relates %s\n",root->relates.data());
       //printf("Inside=%s\n Relates=%s\n",root->inside.data(),root->relates.data());
-      if (root->type=="friend class" || root->type=="friend struct" || 
+      if (root->type=="friend class" || root->type=="friend struct" ||
           root->type=="friend union")
       {
         findMember(rootNav,
@@ -6942,7 +6956,7 @@ static void filterMemberDocumentation(EntryNav *rootNav)
   }
   else
   {
-    // skip section 
+    // skip section
     //printf("skip section\n");
   }
 }
@@ -7052,13 +7066,13 @@ static void findEnums(EntryNav *rootNav)
       name=root->name;
     }
 
-    if (!root->relates.isEmpty()) 
+    if (!root->relates.isEmpty())
     {   // related member, prefix user specified scope
       isRelated=TRUE;
       isMemberOf=(root->relatesType == MemberOf);
       if (getClass(root->relates)==0 && !scope.isEmpty())
         scope=mergeScopes(scope,root->relates);
-      else 
+      else
         scope=root->relates.copy();
       if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
     }
@@ -7121,11 +7135,11 @@ static void findEnums(EntryNav *rootNav)
       {
         if (isRelated || Config_getBool("HIDE_SCOPE_NAMES"))
         {
-          md->setDefinition(name+baseType);  
+          md->setDefinition(name+baseType);
         }
         else
         {
-          md->setDefinition(nd->name()+"::"+name+baseType);  
+          md->setDefinition(nd->name()+"::"+name+baseType);
         }
         //printf("definition=%s\n",md->definition());
         defSet=TRUE;
@@ -7143,7 +7157,7 @@ static void findEnums(EntryNav *rootNav)
         {
           fd=rootNav->parent()->fileDef();
         }
-        if (fd) 
+        if (fd)
         {
           md->setFileDef(fd);
           fd->insertMember(md);
@@ -7153,11 +7167,11 @@ static void findEnums(EntryNav *rootNav)
       {
         if (isRelated || Config_getBool("HIDE_SCOPE_NAMES"))
         {
-          md->setDefinition(name+baseType);  
+          md->setDefinition(name+baseType);
         }
         else
         {
-          md->setDefinition(cd->name()+"::"+name+baseType);  
+          md->setDefinition(cd->name()+"::"+name+baseType);
         }
         cd->insertMember(md);
         cd->insertUsedFile(fd);
@@ -7232,12 +7246,12 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
       name=root->name;
     }
 
-    if (!root->relates.isEmpty()) 
+    if (!root->relates.isEmpty())
     {   // related member, prefix user specified scope
       isRelated=TRUE;
       if (getClass(root->relates)==0 && !scope.isEmpty())
         scope=mergeScopes(scope,root->relates);
-      else 
+      else
         scope=root->relates.copy();
       if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
     }
@@ -7312,7 +7326,7 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
                   MemberDef *fmd=new MemberDef(
                       fileName,root->startLine,root->startColumn,
                       root->type,root->name,root->args,0,
-                      Public, Normal,root->stat,Member,
+                      root->protection, Normal,root->stat,Member,
                       MemberType_EnumValue,0,0);
                   if      (md->getClassDef())     fmd->setMemberClass(md->getClassDef());
                   else if (md->getNamespaceDef()) fmd->setNamespace(md->getNamespaceDef());
@@ -7337,7 +7351,7 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
                   {
                     mn->append(fmd);
                   }
-                  else 
+                  else
                   {
                     mn = new MemberName(root->name);
                     mn->append(fmd);
@@ -7351,12 +7365,12 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
                 //printf("e->name=%s isRelated=%d\n",e->name().data(),isRelated);
                 MemberName *fmn=0;
                 MemberNameSDict *emnsd = isRelated ? Doxygen::functionNameSDict : mnsd;
-                if (!e->name().isEmpty() && (fmn=(*emnsd)[e->name()])) 
+                if (!e->name().isEmpty() && (fmn=(*emnsd)[e->name()]))
                   // get list of members with the same name as the field
                 {
                   MemberNameIterator fmni(*fmn);
                   MemberDef *fmd;
-                  for (fmni.toFirst(); (fmd=fmni.current()) ; ++fmni) 
+                  for (fmni.toFirst(); (fmd=fmni.current()) ; ++fmni)
                   {
                     if (fmd->isEnumValue() && fmd->getOuterScope()==md->getOuterScope()) // in same scope
                     {
@@ -7401,7 +7415,7 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
                           fmd->setEnumScope(md);    // cross ref with enum name
                         }
                       }
-                    } 
+                    }
                   }
                 }
               }
@@ -7476,14 +7490,14 @@ static void findEnumDocumentation(EntryNav *rootNav)
             {
               // documentation outside a compound overrides the documentation inside it
 #if 0
-              if (!md->documentation() || rootNav->parent()->name().isEmpty()) 
+              if (!md->documentation() || rootNav->parent()->name().isEmpty())
 #endif
               {
                 md->setDocumentation(root->doc,root->docFile,root->docLine);
                 md->setDocsForDefinition(!root->proto);
               }
 
-              // brief descriptions inside a compound override the documentation 
+              // brief descriptions inside a compound override the documentation
               // outside it
 #if 0
               if (!md->briefDescription() || !rootNav->parent()->name().isEmpty())
@@ -7520,7 +7534,7 @@ static void findEnumDocumentation(EntryNav *rootNav)
           //printf("MemberName %s not found!\n",name.data());
         }
       }
-      else // enum outside class 
+      else // enum outside class
       {
         //printf("Enum outside class: %s grpId=%d\n",name.data(),root->mGrpId);
         MemberName *mn=Doxygen::functionNameSDict->find(name);
@@ -7549,7 +7563,7 @@ static void findEnumDocumentation(EntryNav *rootNav)
             }
           }
         }
-      } 
+      }
       if (!found)
       {
         warn(root->fileName,root->startLine,
@@ -7564,7 +7578,7 @@ static void findEnumDocumentation(EntryNav *rootNav)
   RECURSE_ENTRYTREE(findEnumDocumentation,rootNav);
 }
 
-// search for each enum (member or function) in mnl if it has documented 
+// search for each enum (member or function) in mnl if it has documented
 // enum values.
 static void findDEV(const MemberNameSDict &mnsd)
 {
@@ -7599,12 +7613,12 @@ static void findDEV(const MemberNameSDict &mnsd)
   }
 }
 
-// search for each enum (member or function) if it has documented enum 
+// search for each enum (member or function) if it has documented enum
 // values.
 static void findDocumentedEnumValues()
 {
   findDEV(*Doxygen::memberNameSDict);
-  findDEV(*Doxygen::functionNameSDict); 
+  findDEV(*Doxygen::functionNameSDict);
 }
 
 //----------------------------------------------------------------------
@@ -7673,12 +7687,12 @@ static void computeMemberRelations()
           //       bmcd->name().data(),bmd->name().data(),bmd
           //      );
           if (md!=bmd && bmcd && mcd && bmcd!=mcd &&
-              (bmd->virtualness()!=Normal || 
-               bmcd->compoundType()==ClassDef::Interface || 
+              (bmd->virtualness()!=Normal ||
+               bmcd->compoundType()==ClassDef::Interface ||
                bmcd->compoundType()==ClassDef::Protocol
               ) &&
-              md->isFunction() && 
-              mcd->isLinkable() && 
+              md->isFunction() &&
+              mcd->isLinkable() &&
               bmcd->isLinkable() &&
               mcd->isBaseClass(bmcd,TRUE))
           {
@@ -7689,11 +7703,11 @@ static void computeMemberRelations()
             //        argListToString(bmdAl.pointer()).data(),
             //        argListToString(mdAl.pointer()).data()
             //      );
-            if ( 
+            if (
                 matchArguments2(bmd->getOuterScope(),bmd->getFileDef(),bmdAl,
                   md->getOuterScope(), md->getFileDef(), mdAl,
                   TRUE
-                  ) 
+                  )
                )
             {
               MemberDef *rmd;
@@ -7812,7 +7826,7 @@ static void generateFileSources()
 
       // create a dictionary with files to process
       QDict<void> g_filesToProcess(10007);
-      FileNameListIterator fnli(*Doxygen::inputNameList); 
+      FileNameListIterator fnli(*Doxygen::inputNameList);
       FileName *fn;
       for (fnli.toFirst();(fn=fnli.current());++fnli)
       {
@@ -7835,7 +7849,7 @@ static void generateFileSources()
             QStrList filesInSameTu;
             fd->getAllIncludeFilesRecursively(filesInSameTu);
             fd->startParsing();
-            if (fd->generateSourceFile()) // sources need to be shown in the output
+            if (fd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
             {
               msg("Generating code for file %s...\n",fd->docName().data());
               fd->writeSource(*g_outputList,FALSE,filesInSameTu);
@@ -7858,7 +7872,7 @@ static void generateFileSources()
                 FileDef *ifd=findFileDef(Doxygen::inputNameDict,incFile,ambig);
                 if (ifd && !ifd->isReference())
                 {
-                  if (ifd->generateSourceFile()) // sources need to be shown in the output
+                  if (ifd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
                   {
                     msg(" Generating code for file %s...\n",ifd->docName().data());
                     ifd->writeSource(*g_outputList,TRUE,moreFiles);
@@ -7891,7 +7905,7 @@ static void generateFileSources()
           {
             QStrList filesInSameTu;
             fd->startParsing();
-            if (fd->generateSourceFile()) // sources need to be shown in the output
+            if (fd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
             {
               msg("Generating code for file %s...\n",fd->docName().data());
               fd->writeSource(*g_outputList,FALSE,filesInSameTu);
@@ -7911,7 +7925,7 @@ static void generateFileSources()
     else
 #endif
     {
-      FileNameListIterator fnli(*Doxygen::inputNameList); 
+      FileNameListIterator fnli(*Doxygen::inputNameList);
       FileName *fn;
       for (;(fn=fnli.current());++fnli)
       {
@@ -7921,7 +7935,7 @@ static void generateFileSources()
         {
           QStrList filesInSameTu;
           fd->startParsing();
-          if (fd->generateSourceFile()) // sources need to be shown in the output
+          if (fd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
           {
             msg("Generating code for file %s...\n",fd->docName().data());
             fd->writeSource(*g_outputList,FALSE,filesInSameTu);
@@ -7945,7 +7959,7 @@ static void generateFileSources()
 static void generateFileDocs()
 {
   if (documentedHtmlFiles==0) return;
-  
+
   if (Doxygen::inputNameList->count()>0)
   {
     FileNameListIterator fnli(*Doxygen::inputNameList);
@@ -7993,7 +8007,7 @@ static void addSourceReferences()
       fd->addSourceRef(nd->getStartBodyLine(),nd,0);
     }
   }
-  
+
   // add source references for member names
   MemberNameSDict::Iterator mnli(*Doxygen::memberNameSDict);
   MemberName *mn=0;
@@ -8008,14 +8022,14 @@ static void addSourceReferences()
       //    md->getBodyDef()?md->getBodyDef()->name().data():"<none>",
       //    md->getStartBodyLine(),md->isLinkableInProject());
       FileDef *fd=md->getBodyDef();
-      if (fd && 
+      if (fd &&
           md->getStartBodyLine()!=-1 &&
           md->isLinkableInProject() &&
           (fd->generateSourceFile() || Doxygen::parseSourcesNeeded)
          )
       {
         //printf("Found member `%s' in file `%s' at line `%d' def=%s\n",
-        //    md->name().data(),fd->name().data(),md->getStartBodyLine(),md->getOuterScope()->name().data()); 
+        //    md->name().data(),fd->name().data(),md->getStartBodyLine(),md->getOuterScope()->name().data());
         fd->addSourceRef(md->getStartBodyLine(),md->getOuterScope(),md);
       }
     }
@@ -8033,16 +8047,16 @@ static void addSourceReferences()
       //    md->getStartBodyLine(),md->getEndBodyLine(),fd,
       //    md->isLinkableInProject(),
       //    Doxygen::parseSourcesNeeded);
-      if (fd && 
-          md->getStartBodyLine()!=-1 && 
-          md->isLinkableInProject() && 
+      if (fd &&
+          md->getStartBodyLine()!=-1 &&
+          md->isLinkableInProject() &&
           (fd->generateSourceFile() || Doxygen::parseSourcesNeeded)
          )
       {
         //printf("Found member `%s' in file `%s' at line `%d' def=%s\n",
-        //    md->name().data(),fd->name().data(),md->getStartBodyLine(),md->getOuterScope()->name().data()); 
+        //    md->name().data(),fd->name().data(),md->getStartBodyLine(),md->getOuterScope()->name().data());
         fd->addSourceRef(md->getStartBodyLine(),md->getOuterScope(),md);
-      }  
+      }
     }
   }
 }
@@ -8068,7 +8082,7 @@ static void sortMemberLists()
   }
 
   // sort file member lists
-  FileNameListIterator fnli(*Doxygen::inputNameList); 
+  FileNameListIterator fnli(*Doxygen::inputNameList);
   FileName *fn;
   for (;(fn=fnli.current());++fnli)
   {
@@ -8091,14 +8105,14 @@ static void sortMemberLists()
 
 //----------------------------------------------------------------------------
 // generate the documentation of all classes
-  
+
 static void generateClassList(ClassSDict &classSDict)
 {
   ClassSDict::Iterator cli(classSDict);
   for ( ; cli.current() ; ++cli )
   {
     ClassDef *cd=cli.current();
-   
+
     //printf("cd=%s getOuterScope=%p global=%p\n",cd->name().data(),cd->getOuterScope(),Doxygen::globalScope);
     if (cd &&
         (cd->getOuterScope()==0 || // <-- should not happen, but can if we read an old tag file
@@ -8144,7 +8158,7 @@ static void inheritDocumentation()
       if (md->documentation().isEmpty() && md->briefDescription().isEmpty())
       { // no documentation yet
         MemberDef *bmd = md->reimplements();
-        while (bmd && bmd->documentation().isEmpty() && 
+        while (bmd && bmd->documentation().isEmpty() &&
                       bmd->briefDescription().isEmpty()
               )
         { // search up the inheritance tree for a documentation member
@@ -8205,7 +8219,7 @@ static void combineUsingRelations()
 }
 
 //----------------------------------------------------------------------------
-  
+
 static void addMembersToMemberGroup()
 {
   // for each class
@@ -8384,9 +8398,9 @@ static void flushUnresolvedRelations()
   // Remove all unresolved references to classes from the cache.
   // This is needed before resolving the inheritance relations, since
   // it would otherwise not find the inheritance relation
-  // for C in the example below, as B::I was already found to be unresolvable 
+  // for C in the example below, as B::I was already found to be unresolvable
   // (which is correct if you igore the inheritance relation between A and B).
-  // 
+  //
   // class A { class I {} };
   // class B : public A {};
   // class C : public B::I {};
@@ -8435,7 +8449,7 @@ static void findDefineDocumentation(EntryNav *rootNav)
   {
     rootNav->loadEntry(g_storage);
     Entry *root = rootNav->entry();
-    
+
     //printf("found define `%s' `%s' brief=`%s' doc=`%s'\n",
     //       root->name.data(),root->args.data(),root->brief.data(),root->doc.data());
 
@@ -8454,7 +8468,7 @@ static void findDefineDocumentation(EntryNav *rootNav)
       {
         mn->append(md);
       }
-      else 
+      else
       {
         mn = new MemberName(root->name);
         mn->append(md);
@@ -8508,7 +8522,7 @@ static void findDefineDocumentation(EntryNav *rootNav)
           if (md->memberType()==MemberType_Define)
           {
             FileDef *fd=md->getFileDef();
-            if (fd && fd->absFilePath()==root->fileName) 
+            if (fd && fd->absFilePath()==root->fileName)
               // doc and define in the same file assume they belong together.
             {
 #if 0
@@ -8584,7 +8598,7 @@ static void findDirDocumentation(EntryNav *rootNav)
     //    root->docFile.data(),normalizedName.data());
     if (root->docFile==normalizedName) // current dir?
     {
-      int lastSlashPos=normalizedName.findRev('/'); 
+      int lastSlashPos=normalizedName.findRev('/');
       if (lastSlashPos!=-1) // strip file name
       {
         normalizedName=normalizedName.left(lastSlashPos);
@@ -8692,7 +8706,7 @@ static void findMainPage(EntryNav *rootNav)
                               indexName, root->brief+root->doc+root->inbodyDocs,title);
       //setFileNameForSections(root->anchors,"index",Doxygen::mainPage);
       Doxygen::mainPage->setBriefDescription(root->brief,root->briefFile,root->briefLine);
-      Doxygen::mainPage->setFileName(indexName,TRUE);
+      Doxygen::mainPage->setFileName(indexName);
       Doxygen::mainPage->setShowToc(root->stat);
       addPageToContext(Doxygen::mainPage,rootNav);
 
@@ -8725,9 +8739,8 @@ static void findMainPage(EntryNav *rootNav)
     {
       Entry *root = rootNav->entry();
       warn(root->fileName,root->startLine,
-          "found more than one \\mainpage comment block! Skipping this "
-          "block."
-          );
+           "found more than one \\mainpage comment block! (first occurrence: %s, line %d), Skipping current block!",
+           Doxygen::mainPage->docFile().data(),Doxygen::mainPage->docLine());
     }
 
     rootNav->releaseEntry();
@@ -8753,7 +8766,7 @@ static void findMainPageTagFiles(EntryNav *rootNav)
 
 static void computePageRelations(EntryNav *rootNav)
 {
-  if ((rootNav->section()==Entry::PAGEDOC_SEC || 
+  if ((rootNav->section()==Entry::PAGEDOC_SEC ||
        rootNav->section()==Entry::MAINPAGEDOC_SEC
       )
       && !rootNav->name().isEmpty()
@@ -8763,8 +8776,8 @@ static void computePageRelations(EntryNav *rootNav)
     Entry *root = rootNav->entry();
 
     PageDef *pd = root->section==Entry::PAGEDOC_SEC ?
-                    Doxygen::pageSDict->find(root->name) : 
-                    Doxygen::mainPage; 
+                    Doxygen::pageSDict->find(root->name) :
+                    Doxygen::mainPage;
     if (pd)
     {
       QListIterator<BaseInfo> bii(*root->extends);
@@ -8820,10 +8833,10 @@ static void resolveUserReferences()
     //        si->fileName.data());
     PageDef *pd=0;
 
-    // hack: the items of a todo/test/bug/deprecated list are all fragments from 
-    // different files, so the resulting section's all have the wrong file 
-    // name (not from the todo/test/bug/deprecated list, but from the file in 
-    // which they are defined). We correct this here by looking at the 
+    // hack: the items of a todo/test/bug/deprecated list are all fragments from
+    // different files, so the resulting section's all have the wrong file
+    // name (not from the todo/test/bug/deprecated list, but from the file in
+    // which they are defined). We correct this here by looking at the
     // generated section labels!
     QDictIterator<RefList> rli(*Doxygen::xrefLists);
     RefList *rl;
@@ -8843,7 +8856,7 @@ static void resolveUserReferences()
     {
       // if this section is in a page and the page is in a group, then we
       // have to adjust the link file name to point to the group.
-      if (!si->fileName.isEmpty() && 
+      if (!si->fileName.isEmpty() &&
           (pd=Doxygen::pageSDict->find(si->fileName)) &&
           pd->getGroupDef())
       {
@@ -8904,7 +8917,7 @@ static void generatePageDocs()
 
 static void buildExampleList(EntryNav *rootNav)
 {
-  if (rootNav->section()==Entry::EXAMPLE_SEC && !rootNav->name().isEmpty()) 
+  if (rootNav->section()==Entry::EXAMPLE_SEC && !rootNav->name().isEmpty())
   {
     rootNav->loadEntry(g_storage);
     Entry *root = rootNav->entry();
@@ -8922,13 +8935,13 @@ static void buildExampleList(EntryNav *rootNav)
       PageDef *pd=new PageDef(root->fileName,root->startLine,
           root->name,root->brief+root->doc+root->inbodyDocs,root->args);
       pd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
-      pd->setFileName(convertNameToFile(pd->name()+"-example",FALSE,TRUE),FALSE);
+      pd->setFileName(convertNameToFile(pd->name()+"-example",FALSE,TRUE));
       pd->addSectionsToDefinition(root->anchors);
       pd->setLanguage(root->lang);
       //pi->addSections(root->anchors);
 
       Doxygen::exampleSDict->inSort(root->name,pd);
-      //we don't add example to groups 
+      //we don't add example to groups
       //addExampleToGroups(root,pd);
     }
 
@@ -8948,7 +8961,7 @@ void printNavTree(EntryNav *rootNav,int indent)
       indentStr.isEmpty()?"":indentStr.data(),
       rootNav->name().isEmpty()?"<empty>":rootNav->name().data(),
       rootNav->section());
-  if (rootNav->children()) 
+  if (rootNav->children())
   {
     EntryNavListIterator eli(*rootNav->children());
     for (;eli.current();++eli) printNavTree(eli.current(),indent+2);
@@ -8957,7 +8970,7 @@ void printNavTree(EntryNav *rootNav,int indent)
 
 
 //----------------------------------------------------------------------------
-// generate the example documentation 
+// generate the example documentation
 
 static void generateExampleDocs()
 {
@@ -9009,7 +9022,7 @@ static void generateGroupDocs()
 //static void generatePackageDocs()
 //{
 //  writePackageIndex(*g_outputList);
-//  
+//
 //  if (Doxygen::packageDict.count()>0)
 //  {
 //    PackageSDict::Iterator pdi(Doxygen::packageDict);
@@ -9027,7 +9040,7 @@ static void generateGroupDocs()
 static void generateNamespaceDocs()
 {
   //writeNamespaceIndex(*g_outputList);
-  
+
   NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
   NamespaceDef *nd;
   // for each namespace...
@@ -9045,9 +9058,9 @@ static void generateNamespaceDocs()
     ClassDef *cd;
     for ( ; (cd=cli.current()) ; ++cli )
     {
-      if ( ( cd->isLinkableInProject() && 
+      if ( ( cd->isLinkableInProject() &&
              cd->templateMaster()==0
-           ) // skip external references, anonymous compounds and 
+           ) // skip external references, anonymous compounds and
              // template instances and nested classes
            && !cd->isHidden() && !cd->isEmbeddedInOuterScope()
          )
@@ -9071,9 +9084,9 @@ static QCString fixSlashes(QCString &s)
   {
     switch(s.at(i))
     {
-      case '/': 
-      case '\\': 
-        result+="\\\\"; 
+      case '/':
+      case '\\':
+        result+="\\\\";
         break;
       default:
         result+=s.at(i);
@@ -9086,31 +9099,6 @@ static QCString fixSlashes(QCString &s)
 
 //----------------------------------------------------------------------------
 
-static bool openOutputFile(const char *outFile,QFile &f)
-{
-  bool fileOpened=FALSE;
-  bool writeToStdout=(outFile[0]=='-' && outFile[1]=='\0');
-  if (writeToStdout) // write to stdout
-  {
-    fileOpened = f.open(IO_WriteOnly,stdout);
-  }
-  else // write to file
-  {
-    QFileInfo fi(outFile);
-    if (fi.exists()) // create a backup
-    {
-      QDir dir=fi.dir();
-      QFileInfo backup(fi.fileName()+".bak");
-      if (backup.exists()) // remove existing backup
-        dir.remove(backup.fileName());
-      dir.rename(fi.fileName(),fi.fileName()+".bak");
-    } 
-    f.setName(outFile);
-    fileOpened = f.open(IO_WriteOnly|IO_Translate);
-  }
-  return fileOpened;
-}
-
 /*! Generate a template version of the configuration file.
  *  If the \a shortList parameter is TRUE a configuration file without
  *  comments will be generated.
@@ -9181,7 +9169,7 @@ static void readTagFile(Entry *root,const char *tl)
   {
     fileName = tagLine;
   }
-    
+
   QFileInfo fi(fileName);
   if (!fi.exists() || !fi.isFile())
   {
@@ -9294,11 +9282,11 @@ static void copyExtraFiles(const QCString& filesOption,const QCString &outputOpt
   for (i=0; i<files.count(); ++i)
   {
     QCString fileName(files.at(i));
-    
+
     if (!fileName.isEmpty())
     {
       QFileInfo fi(fileName);
-      if (!fi.exists()) 
+      if (!fi.exists())
       {
         err("Extra file '%s' specified in " + filesOption + " does not exist!\n", fileName.data());
       }
@@ -9356,7 +9344,7 @@ static void parseFile(ParserInterface *parser,
   QFileInfo fi(fileName);
   BufStr preBuf(fi.size()+4096);
 
-  if (Config_getBool("ENABLE_PREPROCESSING") && 
+  if (Config_getBool("ENABLE_PREPROCESSING") &&
       parser->needsPreprocessing(extension))
   {
     BufStr inBuf(fi.size()+4096);
@@ -9427,7 +9415,7 @@ static void parseFiles(Entry *root,EntryNav *rootNav)
         parseFile(parser,root,rootNav,fd,s->data(),FALSE,filesInSameTu);
         //printf("  got %d extra files in tu\n",filesInSameTu.count());
 
-        // Now process any include files in the same translation unit 
+        // Now process any include files in the same translation unit
         // first. When libclang is used this is much more efficient.
         char *incFile = filesInSameTu.first();
         while (incFile && g_filesToProcess.find(incFile))
@@ -9499,9 +9487,9 @@ static QCString resolveSymlink(QCString path)
   {
 #ifdef WIN32
     // UNC path, skip server and share name
-    if (sepPos==0 && (result.left(2)=="//" || result.left(2)=="\\\\")) 
+    if (sepPos==0 && (result.left(2)=="//" || result.left(2)=="\\\\"))
       sepPos = result.find('/',2);
-    if (sepPos!=-1) 
+    if (sepPos!=-1)
       sepPos = result.find('/',sepPos+1);
 #else
     sepPos = result.find('/',sepPos+1);
@@ -9555,7 +9543,7 @@ static QCString resolveSymlink(QCString path)
 static QDict<void> g_pathsVisited(1009);
 
 //----------------------------------------------------------------------------
-// Read all files matching at least one pattern in `patList' in the 
+// Read all files matching at least one pattern in `patList' in the
 // directory represented by `fi'.
 // The directory is read iff the recusiveFlag is set.
 // The contents of all files is append to the input string
@@ -9591,7 +9579,7 @@ int readDir(QFileInfo *fi,
   int totalSize=0;
   msg("Searching for files in directory %s\n", fi->absFilePath().data());
   //printf("killDict=%p count=%d\n",killDict,killDict->count());
-  
+
   const QFileInfoList *list = dir.entryInfoList();
   if (list)
   {
@@ -9600,7 +9588,7 @@ int readDir(QFileInfo *fi,
 
     while ((cfi=it.current()))
     {
-      if (exclDict==0 || exclDict->find(cfi->absFilePath().utf8())==0) 
+      if (exclDict==0 || exclDict->find(cfi->absFilePath().utf8())==0)
       { // file should not be excluded
         //printf("killDict->find(%s)\n",cfi->absFilePath().data());
         if (!cfi->exists() || !cfi->isReadable())
@@ -9610,9 +9598,9 @@ int readDir(QFileInfo *fi,
             warn_uncond("source %s is not a readable file or directory... skipping.\n",cfi->absFilePath().data());
           }
         }
-        else if (cfi->isFile() && 
+        else if (cfi->isFile() &&
             (!Config_getBool("EXCLUDE_SYMLINKS") || !cfi->isSymLink()) &&
-            (patList==0 || patternMatch(*cfi,patList)) && 
+            (patList==0 || patternMatch(*cfi,patList)) &&
             !patternMatch(*cfi,exclPatList) &&
             (killDict==0 || killDict->find(cfi->absFilePath().utf8())==0)
             )
@@ -9647,7 +9635,7 @@ int readDir(QFileInfo *fi,
         }
         else if (recursive &&
             (!Config_getBool("EXCLUDE_SYMLINKS") || !cfi->isSymLink()) &&
-            cfi->isDir() && 
+            cfi->isDir() &&
             !patternMatch(*cfi,exclPatList) &&
             cfi->fileName().at(0)!='.') // skip "." ".." and ".dir"
         {
@@ -9715,7 +9703,7 @@ int readFileOrDirectory(const char *s,
           //printf("killDict->find(%s)\n",fi.absFilePath().data());
           if (killDict==0 || killDict->find(filePath)==0)
           {
-            totalSize+=fi.size()+fi.absFilePath().length()+4; //readFile(&fi,fiList,input); 
+            totalSize+=fi.size()+fi.absFilePath().length()+4; //readFile(&fi,fiList,input);
             //fiList->inSort(new FileInfo(fi));
             QCString name=fi.fileName().utf8();
             //printf("New file %s\n",name.data());
@@ -9780,7 +9768,7 @@ void readFormulaRepository()
       else
       {
         QCString formName = line.left(se);
-        QCString formText = line.right(line.length()-se-1); 
+        QCString formText = line.right(line.length()-se-1);
         Formula *f=new Formula(formText);
         Doxygen::formulaList->setAutoDelete(TRUE);
         Doxygen::formulaList->append(f);
@@ -9818,15 +9806,15 @@ static void escapeAliases()
     {
       newValue+=value.mid(p,in-p);
       // expand \n's except if \n is part of a built-in command.
-      if (value.mid(in,5)!="\\note" && 
-          value.mid(in,5)!="\\name" && 
-          value.mid(in,10)!="\\namespace" && 
+      if (value.mid(in,5)!="\\note" &&
+          value.mid(in,5)!="\\name" &&
+          value.mid(in,10)!="\\namespace" &&
           value.mid(in,14)!="\\nosubgrouping"
-         ) 
+         )
       {
         newValue+="\\_linebr ";
       }
-      else 
+      else
       {
         newValue+="\\n";
       }
@@ -9841,7 +9829,7 @@ static void escapeAliases()
 //----------------------------------------------------------------------------
 
 void readAliases()
-{ 
+{
   // add aliases to a dictionary
   Doxygen::aliasDict.setAutoDelete(TRUE);
   QStrList &aliasList = Config_getList("ALIASES");
@@ -9856,7 +9844,7 @@ void readAliases()
       {
         QCString name=alias.left(i).stripWhiteSpace();
         QCString value=alias.right(alias.length()-i-1);
-        //printf("Alias: found name=`%s' value=`%s'\n",name.data(),value.data()); 
+        //printf("Alias: found name=`%s' value=`%s'\n",name.data(),value.data());
         if (!name.isEmpty())
         {
           QCString *dn=Doxygen::aliasDict[name];
@@ -9888,7 +9876,7 @@ static void dumpSymbol(FTextStream &t,Definition *d)
     anchor=":"+md->anchor();
   }
   QCString scope;
-  if (d->getOuterScope() && d->getOuterScope()!=Doxygen::globalScope) 
+  if (d->getOuterScope() && d->getOuterScope()!=Doxygen::globalScope)
   {
     scope = d->getOuterScope()->getOutputFileBase()+Doxygen::htmlFileExtension;
   }
@@ -9902,7 +9890,7 @@ static void dumpSymbol(FTextStream &t,Definition *d)
 }
 
 static void dumpSymbolMap()
-{ 
+{
   QFile f("symbols.sql");
   if (f.open(IO_WriteOnly))
   {
@@ -9947,7 +9935,7 @@ static void devUsage()
 
 static void usage(const char *name)
 {
-  msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2014\n\n",versionString);
+  msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2015\n\n",versionString);
   msg("You can use doxygen in a number of ways:\n\n");
   msg("1) Use doxygen to generate a template configuration file:\n");
   msg("    %s [-s] -g [configName]\n\n",name);
@@ -10008,7 +9996,7 @@ void initDoxygen()
   Doxygen::parserManager->registerParser("fortranfree",  new FortranLanguageScannerFree);
   Doxygen::parserManager->registerParser("fortranfixed", new FortranLanguageScannerFixed);
   Doxygen::parserManager->registerParser("vhdl",         new VHDLLanguageScanner);
-  Doxygen::parserManager->registerParser("dbusxml",      new DBusXMLScanner);
+  Doxygen::parserManager->registerParser("xml",          new XMLScanner);
   Doxygen::parserManager->registerParser("tcl",          new TclLanguageScanner);
   Doxygen::parserManager->registerParser("md",           new MarkdownFileParser);
 
@@ -10025,16 +10013,16 @@ void initDoxygen()
 #endif
   Doxygen::inputNameList = new FileNameList;
   Doxygen::inputNameList->setAutoDelete(TRUE);
-  Doxygen::memberNameSDict = new MemberNameSDict(10000);   
+  Doxygen::memberNameSDict = new MemberNameSDict(10000);
   Doxygen::memberNameSDict->setAutoDelete(TRUE);
-  Doxygen::functionNameSDict = new MemberNameSDict(10000);   
+  Doxygen::functionNameSDict = new MemberNameSDict(10000);
   Doxygen::functionNameSDict->setAutoDelete(TRUE);
-  Doxygen::groupSDict = new GroupSDict(17);          
+  Doxygen::groupSDict = new GroupSDict(17);
   Doxygen::groupSDict->setAutoDelete(TRUE);
   Doxygen::globalScope = new NamespaceDef("<globalScope>",1,1,"<globalScope>");
-  Doxygen::namespaceSDict = new NamespaceSDict(20);      
+  Doxygen::namespaceSDict = new NamespaceSDict(20);
   Doxygen::namespaceSDict->setAutoDelete(TRUE);
-  Doxygen::classSDict = new ClassSDict(1009);         
+  Doxygen::classSDict = new ClassSDict(1009);
   Doxygen::classSDict->setAutoDelete(TRUE);
   Doxygen::hiddenClasses = new ClassSDict(257);
   Doxygen::hiddenClasses->setAutoDelete(TRUE);
@@ -10068,7 +10056,7 @@ void initDoxygen()
   /**************************************************************************
    *            Initialize some global constants
    **************************************************************************/
-  
+
   g_compoundKeywordDict.insert("template class",(void *)8);
   g_compoundKeywordDict.insert("template struct",(void *)8);
   g_compoundKeywordDict.insert("class",(void *)8);
@@ -10095,7 +10083,7 @@ void cleanUpDoxygen()
   delete Doxygen::mscFileNameDict;
   delete Doxygen::diaFileNameDict;
   delete Doxygen::mainPage;
-  delete Doxygen::pageSDict;  
+  delete Doxygen::pageSDict;
   delete Doxygen::exampleSDict;
   delete Doxygen::globalScope;
   delete Doxygen::xrefLists;
@@ -10123,7 +10111,7 @@ void cleanUpDoxygen()
       {
         ++dli;
       }
-    } 
+    }
   }
 
   delete Doxygen::inputNameList;
@@ -10135,7 +10123,7 @@ void cleanUpDoxygen()
   delete Doxygen::namespaceSDict;
   delete Doxygen::directories;
 
-  //delete Doxygen::symbolMap; <- we cannot do this unless all static lists 
+  //delete Doxygen::symbolMap; <- we cannot do this unless all static lists
   //                              (such as Doxygen::namespaceSDict)
   //                              with objects based on Definition are made
   //                              dynamic first
@@ -10146,7 +10134,7 @@ static int computeIdealCacheParam(uint v)
   //printf("computeIdealCacheParam(v=%u)\n",v);
 
   int r=0;
-  while (v!=0) v>>=1,r++; 
+  while (v!=0) v>>=1,r++;
   // r = log2(v)
 
   // convert to a valid cache size value
@@ -10169,8 +10157,8 @@ void readConfiguration(int argc, char **argv)
   bool updateConfig=FALSE;
   bool genLayout=FALSE;
   int retVal;
-  while (optind<argc && argv[optind][0]=='-' && 
-               (isalpha(argv[optind][1]) || argv[optind][1]=='?' || 
+  while (optind<argc && argv[optind][0]=='-' &&
+               (isalpha(argv[optind][1]) || argv[optind][1]=='?' ||
                 argv[optind][1]=='-')
         )
   {
@@ -10181,7 +10169,7 @@ void readConfiguration(int argc, char **argv)
         configName=getArg(argc,argv,optind);
         if (optind+1<argc && qstrcmp(argv[optind+1],"-")==0)
         { configName="-"; optind++; }
-        if (!configName) 
+        if (!configName)
         { configName="Doxyfile"; }
         break;
       case 'l':
@@ -10240,7 +10228,7 @@ void readConfiguration(int argc, char **argv)
         err("option \"-e\" has invalid format specifier.\n");
         cleanUpDoxygen();
         exit(1);
-        break; 
+        break;
       case 'w':
         formatName=getArg(argc,argv,optind);
         if (!formatName)
@@ -10248,7 +10236,7 @@ void readConfiguration(int argc, char **argv)
           err("option \"-w\" is missing format specifier rtf, html or latex\n");
           cleanUpDoxygen();
           exit(1);
-        } 
+        }
         if (qstricmp(formatName,"rtf")==0)
         {
           if (optind+1>=argc)
@@ -10315,22 +10303,25 @@ void readConfiguration(int argc, char **argv)
           if (openOutputFile(argv[optind+3],f))
           {
             HtmlGenerator::writeStyleSheetFile(f);
-          } 
+          }
           cleanUpDoxygen();
           exit(0);
         }
         else if (qstricmp(formatName,"latex")==0)
         {
-          if (optind+4<argc) // use config file to get settings
+          if (optind+4<argc || QFileInfo("Doxyfile").exists())
           {
-            if (!Config::instance()->parse(argv[optind+4]))
+            QCString df = optind+4<argc ? argv[optind+4] : QCString("Doxyfile");
+            if (!Config::instance()->parse(df))
             {
               err("error opening or reading configuration file %s!\n",argv[optind+4]);
+              cleanUpDoxygen();
               exit(1);
             }
             Config::instance()->substituteEnvironmentVars();
             Config::instance()->convertStrToVal();
             Config_getString("LATEX_HEADER")="";
+            Config_getString("LATEX_FOOTER")="";
             Config::instance()->check();
           }
           else // use default config
@@ -10379,7 +10370,7 @@ void readConfiguration(int argc, char **argv)
         g_dumpSymbolMap = TRUE;
         break;
       case 'v':
-        msg("%s\n",versionString); 
+        msg("%s\n",versionString);
         cleanUpDoxygen();
         exit(0);
         break;
@@ -10391,7 +10382,7 @@ void readConfiguration(int argc, char **argv)
         }
         else if (qstrcmp(&argv[optind][2],"version")==0)
         {
-          msg("%s\n",versionString); 
+          msg("%s\n",versionString);
           cleanUpDoxygen();
           exit(0);
         }
@@ -10424,7 +10415,7 @@ void readConfiguration(int argc, char **argv)
     }
     optind++;
   }
-  
+
   /**************************************************************************
    *            Parse or generate the config file                           *
    **************************************************************************/
@@ -10446,8 +10437,8 @@ void readConfiguration(int argc, char **argv)
 
   QFileInfo configFileInfo1("Doxyfile"),configFileInfo2("doxyfile");
   if (optind>=argc)
-  { 
-    if (configFileInfo1.exists()) 
+  {
+    if (configFileInfo1.exists())
     {
       configName="Doxyfile";
     }
@@ -10501,11 +10492,11 @@ void readConfiguration(int argc, char **argv)
 /** check and resolve config options */
 void checkConfiguration()
 {
-  
+
   Config::instance()->substituteEnvironmentVars();
   Config::instance()->convertStrToVal();
   Config::instance()->check();
-  
+
   initWarningFormat();
 }
 
@@ -10527,19 +10518,19 @@ void adjustConfiguration()
     s=includePath.next();
   }
 
-  /* Set the global html file extension. */ 
+  /* Set the global html file extension. */
   Doxygen::htmlFileExtension = Config_getString("HTML_FILE_EXTENSION");
 
 
   Doxygen::xrefLists->setAutoDelete(TRUE);
 
-  Doxygen::parseSourcesNeeded = Config_getBool("CALL_GRAPH") || 
+  Doxygen::parseSourcesNeeded = Config_getBool("CALL_GRAPH") ||
                                 Config_getBool("CALLER_GRAPH") ||
                                 Config_getBool("REFERENCES_RELATION") ||
                                 Config_getBool("REFERENCED_BY_RELATION");
 
   Doxygen::markdownSupport = Config_getBool("MARKDOWN_SUPPORT");
-  
+
   /**************************************************************************
    *            Add custom extension mappings
    **************************************************************************/
@@ -10557,7 +10548,7 @@ void adjustConfiguration()
       if (!updateLanguageMapping(ext,language))
       {
         err("Failed to map file extension '%s' to unsupported language '%s'.\n"
-            "Check the EXTENSION_MAPPING setting in the config file.\n", 
+            "Check the EXTENSION_MAPPING setting in the config file.\n",
             ext.data(),language.data());
       }
       else
@@ -10636,7 +10627,7 @@ static void writeTagFile()
     FileDef *fd;
     for (fni.toFirst();(fd=fni.current());++fni)
     {
-      fd->writeTagFile(tagFile);
+      if (fd->isLinkableInProject()) fd->writeTagFile(tagFile);
     }
   }
   // for each class
@@ -10644,28 +10635,28 @@ static void writeTagFile()
   ClassDef *cd;
   for ( ; (cd=cli.current()) ; ++cli )
   {
-    cd->writeTagFile(tagFile);
+    if (cd->isLinkableInProject()) cd->writeTagFile(tagFile);
   }
   // for each namespace
   NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
   NamespaceDef *nd;
   for ( ; (nd=nli.current()) ; ++nli )
   {
-    nd->writeTagFile(tagFile);
+    if (nd->isLinkableInProject()) nd->writeTagFile(tagFile);
   }
   // for each group
   GroupSDict::Iterator gli(*Doxygen::groupSDict);
   GroupDef *gd;
   for (gli.toFirst();(gd=gli.current());++gli)
   {
-    gd->writeTagFile(tagFile);
+    if (gd->isLinkableInProject()) gd->writeTagFile(tagFile);
   }
   // for each page
   PageSDict::Iterator pdi(*Doxygen::pageSDict);
   PageDef *pd=0;
   for (pdi.toFirst();(pd=pdi.current());++pdi)
   {
-    pd->writeTagFile(tagFile);
+    if (pd->isLinkableInProject()) pd->writeTagFile(tagFile);
   }
   if (Doxygen::mainPage) Doxygen::mainPage->writeTagFile(tagFile);
 
@@ -10763,14 +10754,14 @@ void searchInputFiles()
   while (s)
   {
     QStrList &pl = Config_getList("INCLUDE_FILE_PATTERNS");
-    if (pl.count()==0) 
+    if (pl.count()==0)
     {
       pl = Config_getList("FILE_PATTERNS");
     }
     readFileOrDirectory(s,0,Doxygen::includeNameDict,0,&pl,
                         &exclPatterns,0,0,
                         alwaysRecursive);
-    s=includePathList.next(); 
+    s=includePathList.next();
   }
   g_s.end();
 
@@ -10783,7 +10774,7 @@ void searchInputFiles()
                         &Config_getList("EXAMPLE_PATTERNS"),
                         0,0,0,
                         (alwaysRecursive || Config_getBool("EXAMPLE_RECURSIVE")));
-    s=examplePathList.next(); 
+    s=examplePathList.next();
   }
   g_s.end();
 
@@ -10795,7 +10786,7 @@ void searchInputFiles()
     readFileOrDirectory(s,0,Doxygen::imageNameDict,0,0,
                         0,0,0,
                         alwaysRecursive);
-    s=imagePathList.next(); 
+    s=imagePathList.next();
   }
   g_s.end();
 
@@ -10807,7 +10798,7 @@ void searchInputFiles()
     readFileOrDirectory(s,0,Doxygen::dotFileNameDict,0,0,
                         0,0,0,
                         alwaysRecursive);
-    s=dotFileList.next(); 
+    s=dotFileList.next();
   }
   g_s.end();
 
@@ -10819,7 +10810,7 @@ void searchInputFiles()
     readFileOrDirectory(s,0,Doxygen::mscFileNameDict,0,0,
                         0,0,0,
                         alwaysRecursive);
-    s=mscFileList.next(); 
+    s=mscFileList.next();
   }
   g_s.end();
 
@@ -10852,7 +10843,7 @@ void searchInputFiles()
    *             Determine Input Files                                      *
    **************************************************************************/
 
-  g_s.begin("Searching for files to process...\n");
+  g_s.begin("Searching INPUT for files to process...\n");
   QDict<void> *killDict = new QDict<void>(10007);
   QStrList &inputList=Config_getList("INPUT");
   g_inputFiles.setAutoDelete(TRUE);
@@ -10885,7 +10876,7 @@ void searchInputFiles()
   g_s.end();
 }
 
-  
+
 void parseInput()
 {
   atexit(exitDoxygen);
@@ -10895,7 +10886,7 @@ void parseInput()
    *            Make sure the output directory exists
    **************************************************************************/
   QCString &outputDirectory = Config_getString("OUTPUT_DIRECTORY");
-  if (outputDirectory.isEmpty()) 
+  if (outputDirectory.isEmpty())
   {
     outputDirectory=QDir::currentDirPath().utf8();
   }
@@ -10945,7 +10936,7 @@ void parseInput()
   Doxygen::objDBFileName.prepend(outputDirectory+"/");
   Doxygen::entryDBFileName.sprintf("doxygen_entrydb_%d.tmp",pid);
   Doxygen::entryDBFileName.prepend(outputDirectory+"/");
-  
+
   if (Doxygen::symbolStorage->open(Doxygen::objDBFileName)==-1)
   {
     err("Failed to open temporary file %s\n",Doxygen::objDBFileName.data());
@@ -10972,7 +10963,7 @@ void parseInput()
   bool &generateXml = Config_getBool("GENERATE_XML");
   if (generateXml)
     xmlOutput = createOutputDirectory(outputDirectory,"XML_OUTPUT","/xml");
-    
+
   QCString latexOutput;
   bool &generateLatex = Config_getBool("GENERATE_LATEX");
   if (generateLatex)
@@ -11032,7 +11023,7 @@ void parseInput()
   if (layoutFile.open(IO_ReadOnly))
   {
     msg("Parsing layout file %s...\n",layoutFileName.data());
-    QTextStream t(&layoutFile); 
+    QTextStream t(&layoutFile);
     t.setEncoding(QTextStream::Latin1);
     LayoutDocManager::instance().parse(t,layoutFileName);
   }
@@ -11044,7 +11035,7 @@ void parseInput()
   /**************************************************************************
    *             Read and preprocess input                                  *
    **************************************************************************/
- 
+
   // prevent search in the output directories
   QStrList &exclPatterns = Config_getList("EXCLUDE_PATTERNS");
   if (generateHtml)    exclPatterns.append(htmlOutput);
@@ -11057,12 +11048,12 @@ void parseInput()
   searchInputFiles();
 
   // Notice: the order of the function calls below is very important!
-  
+
   if (Config_getBool("GENERATE_HTML"))
   {
     readFormulaRepository();
   }
-  
+
   /**************************************************************************
    *             Handle Tag Files                                           *
    **************************************************************************/
@@ -11079,7 +11070,7 @@ void parseInput()
   EntryNav *rootNav = new EntryNav(0,root);
   rootNav->setEntry(root);
   msg("Reading and parsing tag files\n");
-  
+
   QStrList &tagFileList = Config_getList("TAGFILES");
   char *s=tagFileList.first();
   while (s)
@@ -11088,9 +11079,9 @@ void parseInput()
     root->createNavigationIndex(rootNav,g_storage,0);
     s=tagFileList.next();
   }
-  
+
   /**************************************************************************
-   *             Parse source files                                         * 
+   *             Parse source files                                         *
    **************************************************************************/
 
   if (Config_getBool("BUILTIN_STL_SUPPORT"))
@@ -11117,7 +11108,7 @@ void parseInput()
   }
 
   /**************************************************************************
-   *             Gather information                                         * 
+   *             Gather information                                         *
    **************************************************************************/
 
   g_s.begin("Building group list...\n");
@@ -11155,7 +11146,7 @@ void parseInput()
   resolveClassNestingRelations();
   g_s.end();
   // 1.8.2-20121111: no longer add nested classes to the group as well
-  //distributeClassGroupRelations(); 
+  //distributeClassGroupRelations();
 
   // calling buildClassList may result in cached relations that
   // become invalid after resolveClassNestingRelations(), that's why
@@ -11391,6 +11382,9 @@ void generateOutput()
    *            Initialize output generators                                *
    **************************************************************************/
 
+  /// add extra languages for which we can only produce syntax highlighted code
+  addCodeOnlyMappings();
+
   //// dump all symbols
   if (g_dumpSymbolMap)
   {
@@ -11407,7 +11401,7 @@ void generateOutput()
 
 
   g_outputList = new OutputList(TRUE);
-  if (generateHtml)  
+  if (generateHtml)
   {
     g_outputList->add(new HtmlGenerator);
     HtmlGenerator::init();
@@ -11425,21 +11419,11 @@ void generateOutput()
     if (generateDocSet)      Doxygen::indexList->addIndex(new DocSets);
     Doxygen::indexList->initialize();
     HtmlGenerator::writeTabData();
-
-    // copy static stuff
-    copyStyleSheet();
-    copyLogo();
-    copyExtraFiles("HTML_EXTRA_FILES","HTML_OUTPUT");
-    FTVHelp::generateTreeViewImages();
   }
-  if (generateLatex) 
+  if (generateLatex)
   {
     g_outputList->add(new LatexGenerator);
     LatexGenerator::init();
-
-    copyLatexStyleSheet();
-    // copy static stuff
-    copyExtraFiles("LATEX_EXTRA_FILES","LATEX_OUTPUT");
   }
   if (generateMan)
   {
@@ -11460,7 +11444,7 @@ void generateOutput()
     if (!Htags::loadFilemap(htmldir))
        err("htags(1) ended normally but failed to load the filemap. \n");
   }
-  
+
   /**************************************************************************
    *                        Generate documentation                          *
    **************************************************************************/
@@ -11477,12 +11461,17 @@ void generateOutput()
   static bool searchEngine      = Config_getBool("SEARCHENGINE");
   static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH");
 
+  g_s.begin("Generating search indices...\n");
+  if (searchEngine && !serverBasedSearch && (generateHtml || g_useOutputTemplate))
+  {
+    createJavascriptSearchIndex();
+  }
+
   // generate search indices (need to do this before writing other HTML
   // pages as these contain a drop down menu with options depending on
   // what categories we find in this function.
   if (generateHtml && searchEngine)
   {
-    g_s.begin("Generating search indices...\n");
     QCString searchDirName = Config_getString("HTML_OUTPUT")+"/search";
     QDir searchDir(searchDirName);
     if (!searchDir.exists() && !searchDir.mkdir(searchDirName))
@@ -11496,8 +11485,8 @@ void generateOutput()
     {
       writeJavascriptSearchIndex();
     }
-    g_s.end();
   }
+  g_s.end();
 
   g_s.begin("Generating example documentation...\n");
   generateExampleDocs();
@@ -11559,7 +11548,7 @@ void generateOutput()
       gd->sortSubGroups();
     }
   }
-  
+
   if (g_outputList->count()>0)
   {
     writeIndexHierarchy(*g_outputList);
@@ -11577,9 +11566,9 @@ void generateOutput()
   {
     if (generateHtml)
       removeDoxFont(Config_getString("HTML_OUTPUT"));
-    if (generateRtf)  
+    if (generateRtf)
       removeDoxFont(Config_getString("RTF_OUTPUT"));
-    if (generateLatex)  
+    if (generateLatex)
       removeDoxFont(Config_getString("LATEX_OUTPUT"));
   }
 
@@ -11661,15 +11650,29 @@ void generateOutput()
     g_s.end();
   }
 
+  // copy static stuff
+  if (generateHtml)
+  {
+    FTVHelp::generateTreeViewImages();
+    copyStyleSheet();
+    copyLogo();
+    copyExtraFiles("HTML_EXTRA_FILES","HTML_OUTPUT");
+  }
+  if (generateLatex)
+  {
+    copyLatexStyleSheet();
+    copyExtraFiles("LATEX_EXTRA_FILES","LATEX_OUTPUT");
+  }
+
   if (generateHtml &&
-      Config_getBool("GENERATE_HTMLHELP") && 
+      Config_getBool("GENERATE_HTMLHELP") &&
       !Config_getString("HHC_LOCATION").isEmpty())
   {
     g_s.begin("Running html help compiler...\n");
     QString oldDir = QDir::currentDirPath();
     QDir::setCurrent(Config_getString("HTML_OUTPUT"));
     portable_sysTimerStart();
-    if (portable_system(Config_getString("HHC_LOCATION"), "index.hhp", FALSE))
+	if (portable_system(Config_getString("HHC_LOCATION"), "index.hhp", Debug::isFlagSet(Debug::ExtCmd)))
     {
       err("failed to run html help compiler on index.hhp\n");
     }
@@ -11678,7 +11681,7 @@ void generateOutput()
     g_s.end();
   }
   if ( generateHtml &&
-       Config_getBool("GENERATE_QHP") && 
+       Config_getBool("GENERATE_QHP") &&
       !Config_getString("QHG_LOCATION").isEmpty())
   {
     g_s.begin("Running qhelpgenerator...\n");
diff --git a/src/doxygen.h b/src/doxygen.h
index aa9b745..2195a35 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -1,13 +1,13 @@
 /******************************************************************************
  *
- * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ *
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby 
- * granted. No representations are made about the suitability of this software 
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
  * for any purpose. It is provided "as is" without express or implied warranty.
  * See the GNU General Public License for more details.
  *
@@ -71,7 +71,7 @@ typedef QListIterator<QCString>    StringListIterator;
 
 class StringDict : public QDict<QCString>
 {
-  public: 
+  public:
     StringDict(uint size=17) : QDict<QCString>(size) {}
     virtual ~StringDict() {}
 };
@@ -79,7 +79,7 @@ class StringDict : public QDict<QCString>
 struct LookupInfo
 {
   LookupInfo() : classDef(0), typeDef(0) {}
-  LookupInfo(ClassDef *cd,MemberDef *td,QCString ts,QCString rt) 
+  LookupInfo(ClassDef *cd,MemberDef *td,QCString ts,QCString rt)
     : classDef(cd), typeDef(td), templSpec(ts),resolvedType(rt) {}
   ClassDef  *classDef;
   MemberDef *typeDef;
@@ -121,8 +121,8 @@ class Doxygen
     static FormulaList              *formulaList;
     static FormulaDict              *formulaDict;
     static FormulaDict              *formulaNameDict;
-    static StringDict                tagDestinationDict; 
-    static StringDict                aliasDict; 
+    static StringDict                tagDestinationDict;
+    static StringDict                aliasDict;
     static QIntDict<MemberGroupInfo> memGrpInfoDict;
     static QDict<void>               expandAsDefinedDict;
     static NamespaceDef             *globalScope;
diff --git a/src/doxygen.md b/src/doxygen.md
index 9a9d726..ccb47b9 100644
--- a/src/doxygen.md
+++ b/src/doxygen.md
@@ -168,6 +168,10 @@ easy ways to get debug information.
     command is specified)
   - validate<br>
     Currently not used
+  - lex<br>
+    Provide output of the `lex` files used. When a lexer is started and when a lexer
+    ends the name of the `lex` file is given so it is possible to see in which lexer the
+    problem occurs. This makes it easier to select the file to be compiled in `lex` debug mode.
 
 Producing output
 ----------------
diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in
deleted file mode 100644
index 4f05a35..0000000
--- a/src/doxygen.pro.in
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-#
-# TMake project file for doxygen
-
-TEMPLATE     =	app.t
-CONFIG       =	console warn_on $extraopts
-HEADERS      =	doxygen.h 
-SOURCES      =	main.cpp 
-unix:LIBS                  += -L../lib -ldoxygen -lvhdlparser -ldoxycfg -lqtools -lmd5 -lpthread %%SQLITE3_LIBS%% %%LIBCLANG_LIBS%%
-win32:INCLUDEPATH          += .
-win32-mingw:LIBS           += -L../lib -ldoxygen -ldoxycfg -lvhdlparser -lqtools -lmd5 -lpthread -llibiconv -lole32 %%SQLITE3_LIBS%% %%LIBCLANG_LIBS%%
-win32-msvc:LIBS            += qtools.lib md5.lib doxygen.lib doxycfg.lib vhdlparser.lib shell32.lib iconv.lib
-win32-msvc:TMAKE_LFLAGS    += /LIBPATH:..\lib
-win32-borland:LIBS         += qtools.lib md5.lib doxygen.lib doxycfg.lib vhdlparser.lib shell32.lib iconv.lib
-win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
-win32:TMAKE_CXXFLAGS       += -DQT_NODLL
-win32-g++:LIBS             = -L../lib -ldoxygen -ldoxycfg -lvhdlparser -lqtools -lmd5 -liconv -lpthread %%SQLITE3_LIBS%% %%LIBCLANG_LIBS%% -Wl,--as-needed -lole32
-win32-g++:TMAKE_CXXFLAGS   += -fno-exceptions -fno-rtti
-DEPENDPATH                 += ../generated_src/doxygen
-INCLUDEPATH                += ../qtools ../libmd5 . ../vhdlparser
-DESTDIR                    =  ../bin
-TARGET                     =  doxygen
-unix:TARGETDEPS            =  ../lib/libdoxygen.a ../lib/libdoxycfg.a
-win32:TARGETDEPS           =  ..\lib\doxygen.lib ..\lib\doxycfg.lib
-win32-g++:TARGETDEPS       =  ../lib/libdoxygen.a ../lib/libdoxycfg.a
-win32-mingw:TARGETDEPS     =  ../lib/libdoxygen.a ../lib/libdoxycfg.a
-OBJECTS_DIR                =  ../objects/doxygen
-
diff --git a/src/eclipsehelp.cpp b/src/eclipsehelp.cpp
index 6680aeb..db5ed4f 100644
--- a/src/eclipsehelp.cpp
+++ b/src/eclipsehelp.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/eclipsehelp.h b/src/eclipsehelp.h
index f0ab78e..a7cde1e 100644
--- a/src/eclipsehelp.h
+++ b/src/eclipsehelp.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/entry.cpp b/src/entry.cpp
index b5928b3..bf45f87 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -24,7 +24,7 @@
 #include "doxygen.h"
 #include "filestorage.h"
 #include "arguments.h"
-
+#include "config.h"
 //------------------------------------------------------------------
 
 #define HEADER ('D'<<24)+('O'<<16)+('X'<<8)+'!'
@@ -216,6 +216,8 @@ void Entry::addSubEntry(Entry *current)
 
 void Entry::reset()
 {
+  static bool entryCallGraph   = Config_getBool("CALL_GRAPH");
+  static bool entryCallerGraph = Config_getBool("CALLER_GRAPH");
   //printf("Entry::reset()\n");
   name.resize(0);
   type.resize(0);
@@ -245,8 +247,8 @@ void Entry::reset()
   bodyLine = -1;
   endBodyLine = -1;
   mGrpId = -1;
-  callGraph = FALSE;
-  callerGraph = FALSE;
+  callGraph   = entryCallGraph;
+  callerGraph = entryCallerGraph;
   section = EMPTY_SEC;
   mtype   = Method;
   virt    = Normal;
diff --git a/src/entry.h b/src/entry.h
index c92038f..f1b81ef 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/example.h b/src/example.h
index 7c86554..cf30827 100644
--- a/src/example.h
+++ b/src/example.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/filedef.cpp b/src/filedef.cpp
index c582a4b..2a09c41 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -1737,11 +1737,12 @@ bool FileDef::isDocumentationFile() const
 void FileDef::acquireFileVersion()
 {
   QCString vercmd = Config_getString("FILE_VERSION_FILTER");
-  if (!vercmd.isEmpty() && !m_filePath.isEmpty() && m_filePath!="generated") 
+  if (!vercmd.isEmpty() && !m_filePath.isEmpty() &&
+      m_filePath!="generated" && m_filePath!="graph_legend")
   {
     msg("Version of %s : ",m_filePath.data());
     QCString cmd = vercmd+" \""+m_filePath+"\"";
-    Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",cmd.data());
+    Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",qPrint(cmd));
     FILE *f=portable_popen(cmd,"r");
     if (!f)
     {
diff --git a/src/filedef.h b/src/filedef.h
index 33eae35..712128c 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -44,7 +44,7 @@ class FTextStream;
 /** Class representing the data associated with a \#include statement. */
 struct IncludeInfo
 {
-  IncludeInfo() { fileDef=0; local=FALSE; indirect=FALSE; }
+  IncludeInfo() : fileDef(0), local(FALSE), imported(FALSE), indirect(FALSE) {}
   ~IncludeInfo() {}
   FileDef *fileDef;
   QCString includeName;
diff --git a/src/filename.cpp b/src/filename.cpp
index 8719f3c..aa51249 100644
--- a/src/filename.cpp
+++ b/src/filename.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/filename.h b/src/filename.h
index ac7b164..fbee0e1 100644
--- a/src/filename.h
+++ b/src/filename.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/fileparser.cpp b/src/fileparser.cpp
index 1d78e1e..b54b243 100644
--- a/src/fileparser.cpp
+++ b/src/fileparser.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/fileparser.h b/src/fileparser.h
index f9a7c7b..4568a39 100644
--- a/src/fileparser.h
+++ b/src/fileparser.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/filestorage.h b/src/filestorage.h
index 0d72923..5c2a92d 100644
--- a/src/filestorage.h
+++ b/src/filestorage.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/formula.cpp b/src/formula.cpp
index 9e835e1..182ddaa 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -1,7 +1,7 @@
 /******************************************************************************
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -15,8 +15,6 @@
  */
 
 #include <stdlib.h>
-#include <unistd.h>
-
 #include <qfile.h>
 #include <qfileinfo.h>
 #include <qtextstream.h>
@@ -134,6 +132,7 @@ void FormulaList::generateBitmaps(const char *path)
       {
         err("Problems running dvips. Check your installation!\n");
         portable_sysTimerStop();
+        QDir::setCurrent(oldDir);
         return;
       }
       portable_sysTimerStop();
@@ -194,6 +193,7 @@ void FormulaList::generateBitmaps(const char *path)
       {
         err("Problem running ghostscript %s %s. Check your installation!\n",portable_ghostScriptCommand(),gsArgs);
         portable_sysTimerStop();
+        QDir::setCurrent(oldDir);
         return;
       }
       portable_sysTimerStop();
diff --git a/src/formula.h b/src/formula.h
index 47f7d4b..422030c 100644
--- a/src/formula.h
+++ b/src/formula.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/fortrancode.h b/src/fortrancode.h
index b64ede7..c110852 100644
--- a/src/fortrancode.h
+++ b/src/fortrancode.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -34,4 +34,5 @@ void parseFortranCode(CodeOutputInterface &,const char *,const QCString &,
 void resetFortranCodeParserState();
 void codeFreeScanner();
 
+const int fixedCommentAfter = 72;
 #endif
diff --git a/src/fortrancode.l b/src/fortrancode.l
index 17a28c3..82e78c1 100644
--- a/src/fortrancode.l
+++ b/src/fortrancode.l
@@ -23,7 +23,7 @@
        - links to interface functions 
        - references to variables
 **/
-
+%option never-interactive
 %{
 
 /*
@@ -50,14 +50,15 @@
 #include "filedef.h"
 #include "namespacedef.h"
 #include "tooltip.h"
+#include "fortrancode.h"
 
 // Toggle for some debugging info
 //#define DBG_CTX(x) fprintf x
 #define DBG_CTX(x) do { } while(0)
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_TOP_STATE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 /*
  * For fixed formatted code position 6 is of importance (continuation character).
@@ -211,9 +212,14 @@ static void endFontClass()
 
 static void startFontClass(const char *s)
 {
-  endFontClass();
-  g_code->startFontClass(s);
-  g_currentFontClass=s;
+  // if font class is already set don't stop and start it.
+  // strcmp does not like null pointers as input.
+  if (!g_currentFontClass || !s || strcmp(g_currentFontClass,s))
+  {
+    endFontClass();
+    g_code->startFontClass(s);
+    g_currentFontClass=s;
+  }
 }
 
 static void setCurrentDoc(const QCString &anchor)
@@ -789,7 +795,7 @@ PREFIX    (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
   					  codifyLines(yytext);
 					  endFontClass();
 					}
-<Start>"implicit"{BS}"none"             { 
+<Start>"implicit"{BS}("none"|{TYPE_SPEC})  { 
   					  startFontClass("keywordtype"); 
   					  codifyLines(yytext);
 					  endFontClass();
@@ -1179,11 +1185,22 @@ PREFIX    (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
             }
                                           YY_FTN_RESET
   					}
-<*>^{BS}"type"{BS}"="                     { g_code->codify(yytext); }
+<*>^{BS}"type"{BS}"="                   { g_code->codify(yytext); }
 
-<*>.					{ 
-  					  g_code->codify(yytext);
-					}
+<*>.                                    { 
+                                          if (g_isFixedForm && yy_my_start > fixedCommentAfter)
+                                          {
+                                            //yy_push_state(YY_START);
+                                            //BEGIN(DocBlock);
+                                            //docBlock=yytext;
+                                            startFontClass("comment");
+                                            codifyLines(yytext);
+                                          }
+                                          else
+                                          {
+                                            g_code->codify(yytext);
+                                          }
+                                        }
 <*>{LOG_OPER}                           { // Fortran logical comparison keywords
                                           g_code->codify(yytext);
                                         }
@@ -1285,11 +1302,11 @@ void parseFortranCode(CodeOutputInterface &od,const char *className,const QCStri
   return;
 }
 
-#if !defined(YY_FLEX_SUBMINOR_VERSION) 
+#if !defined(YY_FLEX_SUBMINOR_VERSION)
 extern "C" { // some bogus code to keep the compiler happy
-  void fortrancodeYYdummy() { yy_flex_realloc(0,0); } 
+  void fortrancodeYYdummy() { yy_flex_realloc(0,0); }
 }
-#elif YY_FLEX_SUBMINOR_VERSION<33
+#elif YY_FLEX_MAJOR_VERSION<=2 && YY_FLEX_MINOR_VERSION<=5 && YY_FLEX_SUBMINOR_VERSION<33
 #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
 #else
 extern "C" { // some bogus code to keep the compiler happy
diff --git a/src/fortranscanner.h b/src/fortranscanner.h
index 92a8669..bc8071b 100644
--- a/src/fortranscanner.h
+++ b/src/fortranscanner.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/fortranscanner.l b/src/fortranscanner.l
index 3c35a7d..bd1fe83 100644
--- a/src/fortranscanner.l
+++ b/src/fortranscanner.l
@@ -37,7 +37,7 @@
  *
  * - Must track yyLineNr when using REJECT, unput() or similar commands.
  */
-
+%option never-interactive
 %{
 
 #include <stdio.h> 
@@ -48,7 +48,6 @@
 #include <qarray.h>
 #include <qstack.h>
 #include <qregexp.h>
-#include <unistd.h> 
 #include <qfile.h>
 #include <qmap.h>
   
@@ -69,8 +68,8 @@
 //#define DBG_CTX(x) fprintf x
 #define DBG_CTX(x) do { } while(0)
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 enum ScanVar { V_IGNORE, V_VARIABLE, V_PARAMETER, V_RESULT};
 enum InterfaceType { IF_NONE, IF_SPECIFIC, IF_GENERIC, IF_ABSTRACT };
@@ -101,13 +100,14 @@ struct SymbolModifiers {
   bool pass;
   bool contiguous;
   bool volat; /* volatile is a reserverd name */
+  bool value; /* volatile is a reserverd name */
   QCString passVar;
 
   SymbolModifiers() : type(), returnName(), protection(NONE_P), direction(NONE_D),
     optional(FALSE), protect(FALSE), dimension(), allocatable(FALSE),
     external(FALSE), intrinsic(FALSE), parameter(FALSE),
     pointer(FALSE), target(FALSE), save(FALSE), deferred(FALSE), nonoverridable(FALSE),
-    nopass(FALSE), pass(FALSE), contiguous(FALSE), volat(FALSE), passVar() {}
+    nopass(FALSE), pass(FALSE), contiguous(FALSE), volat(FALSE), value(FALSE), passVar() {}
 
   SymbolModifiers& operator|=(const SymbolModifiers &mdfs);
   SymbolModifiers& operator|=(QCString mdfrString);
@@ -260,7 +260,7 @@ CHAR      (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS}))
 TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS}COMPLEX|DOUBLE{BS}PRECISION|{CHAR}|TYPE{ARGS}|CLASS{ARGS}|PROCEDURE{ARGS}?)
 
 INTENT_SPEC intent{BS}"("{BS}(in|out|in{BS}out){BS}")"
-ATTR_SPEC (EXTERNAL|ALLOCATABLE|DIMENSION{ARGS}|{INTENT_SPEC}|INTRINSIC|OPTIONAL|PARAMETER|POINTER|PROTECTED|PRIVATE|PUBLIC|SAVE|TARGET|NOPASS|PASS{ARGS}?|DEFERRED|NON_OVERRIDABLE|CONTIGUOUS|VOLATILE)
+ATTR_SPEC (EXTERNAL|ALLOCATABLE|DIMENSION{ARGS}|{INTENT_SPEC}|INTRINSIC|OPTIONAL|PARAMETER|POINTER|PROTECTED|PRIVATE|PUBLIC|SAVE|TARGET|NOPASS|PASS{ARGS}?|DEFERRED|NON_OVERRIDABLE|CONTIGUOUS|VOLATILE|VALUE)
 ACCESS_SPEC (PRIVATE|PUBLIC)
 LANGUAGE_BIND_SPEC BIND{BS}"("{BS}C{BS}(,{BS}NAME{BS}"="{BS}"\""(.*)"\""{BS})?")"
 /* Assume that attribute statements are almost the same as attributes. */
@@ -485,7 +485,7 @@ SCOPENAME ({ID}{BS}"::"{BS})*
 
 <InterfaceBody>^{BS}end{BS}interface({BS_}{ID})? {
                                           // end scope only if GENERIC interface
-                                          last_entry->parent()->endBodyLine = yyLineNr - 1;
+                                          if (ifType == IF_GENERIC)last_entry->parent()->endBodyLine = yyLineNr - 1;
                                           if (ifType == IF_GENERIC && !endScope(current_root))
                                             yyterminate();
 
@@ -1411,11 +1411,15 @@ static const char* prepassFixedForm(const char* contents)
   int prevLineLength=0;
   int prevLineAmpOrExclIndex=-1;
   bool emptyLabel=TRUE;
+  bool commented=FALSE;
+  bool inSingle=FALSE;
+  bool inDouble=FALSE;
+  bool inBackslash=FALSE;
   int newContentsSize = strlen(contents)+3; // \000, \n (when necessary) and one spare character (to avoid reallocation)
   char* newContents = (char*)malloc(newContentsSize);
 
   for(int i=0, j=0;;i++,j++) {
-    if(j>=newContentsSize-1) { // check for one spare character, which may be eventually used below (by &)
+    if(j>=newContentsSize-3) { // check for spare characters, which may be eventually used below (by & and '! ')
       newContents = (char*)realloc(newContents, newContentsSize+1000);
       newContentsSize = newContentsSize+1000;
     }
@@ -1428,9 +1432,11 @@ static const char* prepassFixedForm(const char* contents)
         prevLineAmpOrExclIndex=getAmpOrExclAtTheEnd(&contents[i-prevLineLength+1], prevLineLength);
         column=0;
 	emptyLabel=TRUE;
+        commented=FALSE;
         newContents[j]=c;
         break;
       case ' ':
+      case '\t':
         newContents[j]=c;
         break;
       case '\000':
@@ -1444,21 +1450,58 @@ static const char* prepassFixedForm(const char* contents)
           newContents[newContentsSize + 1] = '\000';
         }
         return newContents;
+      case '"':
+      case '\'':
+      case '\\':
+        if ((column <= fixedCommentAfter) && (column!=6) && !commented)
+	{
+          // we have some special cases in respect to strings and exscaped string characters
+	  newContents[j]=c;
+          if (c == '\\')
+          {
+            inBackslash = !inBackslash;
+            break;
+          }
+          else if (c == '\'')
+          {
+            if (!inDouble) inSingle = !inSingle;
+            break;
+          }
+          else if (c == '"')
+          {
+            if (!inSingle) inDouble = !inDouble;
+            break;
+          }
+        }
+        inBackslash = FALSE;
+        // fallthrough
       case 'C':
       case 'c':
       case '*':
-        if (column!=6)
+      case '!':
+        if ((column <= fixedCommentAfter) && (column!=6))
 	{
 	  emptyLabel=FALSE;
 	  if(column==1)
+          {
 	    newContents[j]='!';
+            commented = TRUE;
+          }
+	  else if ((c == '!') && !inDouble && !inSingle)
+          {
+	    newContents[j]=c;
+            commented = TRUE;
+          }
 	  else
+          {
 	    newContents[j]=c;
+          }
 	  break;
 	}
+        // fallthrough
       default:
         if(column==6 && emptyLabel) { // continuation
-          if (c != '0') { // 0 not allowed as continuatioin character, see f95 standard paragraph 3.3.2.3
+          if (c != '0') { // 0 not allowed as continuation character, see f95 standard paragraph 3.3.2.3
             newContents[j]=' ';
 
             if(prevLineAmpOrExclIndex==-1) { // add & just before end of previous line
@@ -1471,6 +1514,15 @@ static const char* prepassFixedForm(const char* contents)
 	  } else {
 	    newContents[j]=c; // , just handle like space
           }
+	} else if ((column > fixedCommentAfter) && !commented) {
+          // first non commented non blank character after position fixedCommentAfter
+          if (c != '!') {
+            // I'm not a possible start of doxygen comment
+	    newContents[j++]='!';
+	    newContents[j++]=' '; // so that '<' and '>' as first character are not converted to doxygen comment
+          }
+	  newContents[j]=c;
+          commented = TRUE;
 	} else {
 	  newContents[j]=c;
 	  emptyLabel=FALSE;
@@ -1601,6 +1653,7 @@ SymbolModifiers& SymbolModifiers::operator|=(const SymbolModifiers &mdfs)
   passVar = mdfs.passVar;
   contiguous |= mdfs.contiguous;
   volat |= mdfs.volat;
+  value |= mdfs.value;
   return *this;
 }
 
@@ -1687,6 +1740,10 @@ SymbolModifiers& SymbolModifiers::operator|=(QCString mdfString)
   {
     newMdf.volat = TRUE;
   }
+  else if (mdfString=="value")
+  {
+    newMdf.value = TRUE;
+  }
   else if (mdfString.contains("pass"))
   {
     newMdf.pass = TRUE;
@@ -1851,6 +1908,11 @@ static QCString applyModifiers(QCString typeName, SymbolModifiers& mdfs)
     if (!typeName.isEmpty()) typeName += ", ";
     typeName += "volatile";
   }
+  if (mdfs.value)
+  {
+    if (!typeName.isEmpty()) typeName += ", ";
+    typeName += "value";
+  }
 
   return typeName;
 }
@@ -2235,7 +2297,7 @@ static void subrHandleCommentBlock(const QCString &doc,bool brief)
   // strip \\param or @param, so we can do some extra checking. We will add it later on again.
   if (!loc_doc.stripPrefix("\\param") &&
       !loc_doc.stripPrefix("@param")
-     ); // Do nothing work has been done by stripPrefix
+     ) (void)loc_doc; // Do nothing work has been done by stripPrefix; (void)loc_doc: to overcome 'empty controlled statement' warning
   loc_doc.stripWhiteSpace();
 
   // direction as defined with the declaration of the parameter
@@ -2350,7 +2412,7 @@ static void subrHandleCommentBlockResult(const QCString &doc,bool brief)
       !loc_doc.stripPrefix("\\return") &&
       !loc_doc.stripPrefix("@returns") &&
       !loc_doc.stripPrefix("@return")
-     ); // Do nothing work has been done by stripPrefix
+     ) (void)loc_doc; // Do nothing work has been done by stripPrefix; (void)loc_doc: to overcome 'empty controlled statement' warning
   loc_doc.stripWhiteSpace();
 
   if (loc_doc.isEmpty() || (loc_doc.lower() == argName.lower()))
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index f45d956..a70e243 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -1,7 +1,7 @@
 /******************************************************************************
  * ftvhelp.cpp,v 1.0 2000/09/06 16:09:00
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -171,6 +171,7 @@ void FTVHelp::decContentsDepth()
 
 /*! Add a list item to the contents file.
  *  \param isDir TRUE if the item is a directory, FALSE if it is a text
+ *  \param name The name of the item.
  *  \param ref  the URL of to the item.
  *  \param file the file containing the definition of the item
  *  \param anchor the anchor within the file.
diff --git a/src/ftvhelp.h b/src/ftvhelp.h
index bddb2f0..bacf9a5 100644
--- a/src/ftvhelp.h
+++ b/src/ftvhelp.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 64a3902..7a74c65 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -824,6 +824,7 @@ void GroupDef::writeFiles(OutputList &ol,const QCString &title)
     FileDef *fd;
     for (;(fd=it.current());++it)
     {
+      if (!fd->hasDocumentation()) continue;
       ol.startMemberDeclaration();
       ol.startMemberItem(fd->getOutputFileBase(),0);
       ol.docify(theTranslator->trFile(FALSE,TRUE)+" ");
@@ -877,6 +878,7 @@ void GroupDef::writeNestedGroups(OutputList &ol,const QCString &title)
     {
       if (gd->isVisible())
       {
+        if (!gd->hasDocumentation()) continue;
         ol.startMemberDeclaration();
         ol.startMemberItem(gd->getOutputFileBase(),0);
         //ol.docify(theTranslator->trGroup(FALSE,TRUE));
@@ -910,6 +912,7 @@ void GroupDef::writeDirs(OutputList &ol,const QCString &title)
     DirDef *dd;
     for (;(dd=it.current());++it)
     {
+      if (!dd->hasDocumentation()) continue;
       ol.startMemberDeclaration();
       ol.startMemberItem(dd->getOutputFileBase(),0);
       ol.parseText(theTranslator->trDir(FALSE,TRUE));
@@ -1071,7 +1074,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
 {
   //static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
   ol.pushGeneratorState();
-  startFile(ol,getOutputFileBase(),name(),title,HLI_None);
+  startFile(ol,getOutputFileBase(),name(),title,HLI_Modules);
 
   ol.startHeaderSection();
   writeSummaryLinks(ol);
diff --git a/src/groupdef.h b/src/groupdef.h
index a6ae533..be4475f 100644
--- a/src/groupdef.h
+++ b/src/groupdef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htags.cpp b/src/htags.cpp
index 9535be7..460d54d 100644
--- a/src/htags.cpp
+++ b/src/htags.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -59,7 +59,7 @@ bool Htags::execute(const QCString &htmldir)
   }
   else
   {
-    err("If you use USE_HTAGS then INPUT should specific a single directory. \n");
+    err("If you use USE_HTAGS then INPUT should specify a single directory.\n");
     return FALSE;
   }
 
diff --git a/src/htags.h b/src/htags.h
index 5173b2b..5725e7d 100644
--- a/src/htags.h
+++ b/src/htags.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmlattrib.h b/src/htmlattrib.h
index e7fd204..66d5325 100644
--- a/src/htmlattrib.h
+++ b/src/htmlattrib.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index ebef0d4..0533f87 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -42,7 +42,7 @@ static const char types[][NUM_HTML_LIST_TYPES] = {"1", "a", "i", "A"};
 static QCString convertIndexWordToAnchor(const QString &word)
 {
   static char hex[] = "0123456789abcdef";
-  QCString result;
+  QCString result="a";
   const char *str = word.data();
   unsigned char c;
   if (str)
@@ -54,8 +54,7 @@ static QCString convertIndexWordToAnchor(const QString &word)
           (c >= '0' && c <= '9') || // DIGIT
           c == '-' ||
           c == '.' ||
-          c == '_' ||
-          c == '~'
+          c == '_'
          )
       {
         result += c;
@@ -63,7 +62,7 @@ static QCString convertIndexWordToAnchor(const QString &word)
       else
       {
         char enc[4];
-        enc[0] = '%';
+        enc[0] = ':';
         enc[1] = hex[(c & 0xf0) >> 4];
         enc[2] = hex[c & 0xf];
         enc[3] = 0;
@@ -1037,7 +1036,7 @@ void HtmlDocVisitor::visitPre(DocPara *p)
 void HtmlDocVisitor::visitPost(DocPara *p)
 {
   bool needsTag = FALSE;
-  if (p && p->parent()) 
+  if (p->parent()) 
   {
     switch (p->parent()->kind()) 
     {
@@ -1067,7 +1066,7 @@ void HtmlDocVisitor::visitPost(DocPara *p)
   // the paragraph (<ul>,<dl>,<table>) then that will already have ended the 
   // paragraph and we don't need to do it here
   int nodeIndex = p->children().count()-1;
-  if (p && nodeIndex>=0)
+  if (nodeIndex>=0)
   {
     while (nodeIndex>=0 && p->children().at(nodeIndex)->kind()==DocNode::Kind_WhiteSpace)
     {
@@ -1301,6 +1300,11 @@ void HtmlDocVisitor::visitPre(DocHtmlTable *t)
 
   forceEndParagraph(t);
 
+  if (t->hasCaption())
+  {
+    m_t << "<a class=\"anchor\" id=\"" << t->caption()->anchor() << "\"></a>\n";
+  }
+
   QString attrs = htmlAttribsToString(t->attribs());
   if (attrs.isEmpty())
   {
@@ -1356,13 +1360,8 @@ void HtmlDocVisitor::visitPre(DocHtmlCaption *c)
   bool hasAlign      = FALSE;
   HtmlAttribListIterator li(c->attribs());
   HtmlAttrib *att;
-  for (li.toFirst();(att=li.current());++li)
-  {
-    if (att->name=="align") hasAlign=TRUE;
-  }
-  m_t << "<caption" << htmlAttribsToString(c->attribs());
-  if (!hasAlign) m_t << " align=\"bottom\"";
-  m_t << ">";
+  QCString id;
+  m_t << "<caption" << htmlAttribsToString(c->attribs()) << ">";
 }
 
 void HtmlDocVisitor::visitPost(DocHtmlCaption *) 
@@ -1808,7 +1807,6 @@ void HtmlDocVisitor::visitPre(DocHtmlBlockQuote *b)
 {
   if (m_hide) return;
   forceEndParagraph(b);
-
   QString attrs = htmlAttribsToString(b->attribs());
   if (attrs.isEmpty())
   {
@@ -1902,24 +1900,8 @@ void HtmlDocVisitor::filterQuotedCdataAttr(const char* str)
     {
       case '&':  m_t << "&"; break;
       case '"':  m_t << """; break;
-       // For SGML compliance, and given the SGML declaration for HTML syntax,
-       // it's enough to replace these two, provided that the declaration
-       // for the HTML version we generate (and as supported by the browser)
-       // specifies that all the other symbols used in rawVal are
-       // within the right character class (i.e., they're not
-       // some multinational weird characters not in the BASESET).
-       // We assume that 1) the browser will support whatever is remaining
-       // in the formula and 2) the TeX formulae are generally governed
-       // by even stricter character restrictions so it should be enough.
-       //
-       // On some incompliant browsers, additional translation of
-       // '>' and '<' into ">" and "<", respectively, might be needed;
-       // but I'm unaware of particular modern (last 4 years) versions
-       // with such problems, so let's not do it for performance.
-       // Also, some brousers will (wrongly) not process the entity references
-       // inside the attribute value and show the &...; form instead,  
-       // so we won't create entites unless necessary to minimize clutter there.
-       // --vassilii 
+      case '<':  m_t << "<"; break;
+      case '>':  m_t << ">"; break;
       default:   m_t << c;
     }
   }
@@ -1944,7 +1926,7 @@ void HtmlDocVisitor::startLink(const QCString &ref,const QCString &file,
   if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
   if (!anchor.isEmpty()) m_t << "#" << anchor;
   m_t << "\"";
-  if (!tooltip.isEmpty()) m_t << " title=\"" << substitute(tooltip,"\"",""") << "\"";
+  if (!tooltip.isEmpty()) m_t << " title=\"" << convertToHtml(tooltip) << "\"";
   m_t << ">";
 }
 
@@ -2001,7 +1983,7 @@ void HtmlDocVisitor::writeMscFile(const QCString &fileName,
   }
   baseName.prepend("msc_");
   QCString outDir = Config_getString("HTML_OUTPUT");
-  QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
   MscOutputFormat mscFormat = MSC_BITMAP;
   if ("svg" == imgExt)
     mscFormat = MSC_SVG;
@@ -2045,7 +2027,7 @@ void HtmlDocVisitor::writePlantUMLFile(const QCString &fileName,
     baseName=baseName.left(i);
   }
   static QCString outDir = Config_getString("HTML_OUTPUT");
-  static QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
   if (imgExt=="svg")
   {
     generatePlantUMLOutput(fileName,outDir,PUML_SVG);
@@ -2061,6 +2043,42 @@ void HtmlDocVisitor::writePlantUMLFile(const QCString &fileName,
   }
 }
 
+/** Returns TRUE if the child nodes in paragraph \a para until \a nodeIndex
+    contain a style change node that is still active and that style change is one that
+    must be located outside of a paragraph, i.e. it is a center, div, or pre tag.
+    See also bug746162.
+ */
+static bool insideStyleChangeThatIsOutsideParagraph(DocPara *para,int nodeIndex)
+{
+  //printf("insideStyleChangeThatIsOutputParagraph(index=%d)\n",nodeIndex);
+  int styleMask=0;
+  bool styleOutsideParagraph=FALSE;
+  while (nodeIndex>=0 && !styleOutsideParagraph)
+  {
+    DocNode *n = para->children().at(nodeIndex);
+    if (n->kind()==DocNode::Kind_StyleChange)
+    {
+      DocStyleChange *sc = (DocStyleChange*)n;
+      if (!sc->enable()) // remember styles that has been closed already
+      {
+        styleMask|=(int)sc->style();
+      }
+      bool paraStyle = sc->style()==DocStyleChange::Center ||
+                       sc->style()==DocStyleChange::Div    ||
+                       sc->style()==DocStyleChange::Preformatted;
+      //printf("Found style change %s enabled=%d\n",sc->styleString(),sc->enable());
+      if (sc->enable() && (styleMask&(int)sc->style())==0 && // style change that is still active
+          paraStyle
+         )
+      {
+        styleOutsideParagraph=TRUE;
+      }
+    }
+    nodeIndex--;
+  }
+  return styleOutsideParagraph;
+}
+
 /** Used for items found inside a paragraph, which due to XHTML restrictions
  *  have to be outside of the paragraph. This method will forcefully end
  *  the current paragraph and forceStartParagraph() will restart it.
@@ -2074,7 +2092,7 @@ void HtmlDocVisitor::forceEndParagraph(DocNode *n)
     int nodeIndex = para->children().findRef(n);
     nodeIndex--;
     if (nodeIndex<0) return; // first node
-    while (nodeIndex>=0 && 
+    while (nodeIndex>=0 &&
            para->children().at(nodeIndex)->kind()==DocNode::Kind_WhiteSpace
           )
     {
@@ -2086,12 +2104,14 @@ void HtmlDocVisitor::forceEndParagraph(DocNode *n)
       //printf("n=%p kind=%d outside=%d\n",n,n->kind(),mustBeOutsideParagraph(n));
       if (mustBeOutsideParagraph(n)) return;
     }
-
+    nodeIndex--;
+    bool styleOutsideParagraph=insideStyleChangeThatIsOutsideParagraph(para,nodeIndex);
     bool isFirst;
     bool isLast;
     getParagraphContext(para,isFirst,isLast);
-    //printf("forceEnd first=%d last=%d\n",isFirst,isLast);
+    //printf("forceEnd first=%d last=%d styleOutsideParagraph=%d\n",isFirst,isLast,styleOutsideParagraph);
     if (isFirst && isLast) return;
+    if (styleOutsideParagraph) return;
 
     m_t << "</p>";
   }
@@ -2109,9 +2129,11 @@ void HtmlDocVisitor::forceStartParagraph(DocNode *n)
     DocPara *para = (DocPara*)n->parent();
     int nodeIndex = para->children().findRef(n);
     int numNodes  = para->children().count();
+    bool styleOutsideParagraph=insideStyleChangeThatIsOutsideParagraph(para,nodeIndex);
+    if (styleOutsideParagraph) return;
     nodeIndex++;
     if (nodeIndex==numNodes) return; // last node
-    while (nodeIndex<numNodes && 
+    while (nodeIndex<numNodes &&
            para->children().at(nodeIndex)->kind()==DocNode::Kind_WhiteSpace
           )
     {
diff --git a/src/htmldocvisitor.h b/src/htmldocvisitor.h
index 00ae09e..2ff9f75 100644
--- a/src/htmldocvisitor.h
+++ b/src/htmldocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmlentity.cpp b/src/htmlentity.cpp
index 9327526..ff3c574 100644
--- a/src/htmlentity.cpp
+++ b/src/htmlentity.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -59,7 +59,7 @@ static struct htmlEntityInfo
   { SYM(shy),      "\xc2\xad",     "­",      "<shy/>",               "­",        "{$\\-$}",                NULL,     "\\-",         { NULL,         DocSymbol::Perl_unknown }},
   { SYM(reg),      "\xc2\xae",     "®",      "<registered/>",        "®",        "\\textregistered{}",     "(R)",    "\\'AE",       { "registered", DocSymbol::Perl_symbol  }},
   { SYM(macr),     "\xc2\xaf",     "¯",     "<macr/>",              "¯",        "\\={}",                  NULL,     "\\'AF",       { NULL,         DocSymbol::Perl_unknown }},
-  { SYM(deg),      "\xc2\xb0",     "°",      "<deg/>",               "°",        "\\textdegree",           NULL,     "\\'B0",       { "deg",        DocSymbol::Perl_symbol  }},
+  { SYM(deg),      "\xc2\xb0",     "°",      "<deg/>",               "°",        "\\textdegree{}",         NULL,     "\\'B0",       { "deg",        DocSymbol::Perl_symbol  }},
   { SYM(plusmn),   "\xc2\xb1",     "±",   "<plusmn/>",            "±",        "{$\\pm$}",               NULL,     "\\'B1",       { "+/-",        DocSymbol::Perl_string  }},
   { SYM(sup2),     "\xc2\xb2",     "&sup2;",     "<sup2/>",              "²",        "\\texttwosuperior{}",    NULL,     "\\'B2",       { NULL,         DocSymbol::Perl_unknown }},
   { SYM(sup3),     "\xc2\xb3",     "&sup3;",     "<sup3/>",              "³",        "\\textthreesuperior{}",  NULL,     "\\'B3",       { NULL,         DocSymbol::Perl_unknown }},
@@ -312,7 +312,9 @@ static struct htmlEntityInfo
   { SYM(Percent),  "%",            "%",          "%",                    "%",             "\\%",                    "%",      "%",           { "%",          DocSymbol::Perl_char    }},
   { SYM(Pipe),     "|",            "|",          "|",                    "|",             "$|$",                    "|",      "|",           { "|",          DocSymbol::Perl_char    }},
   { SYM(Quot),     "\"",           "\"",         "\"",                   """,        "\"",                     "\"",     "\"",          { "\"",         DocSymbol::Perl_char    }},
-  { SYM(Minus),    "-",            "-",          "-",                    "-",             "-\\/",                   "-",      "-",           { "-",          DocSymbol::Perl_char    }}
+  { SYM(Minus),    "-",            "-",          "-",                    "-",             "-\\/",                   "-",      "-",           { "-",          DocSymbol::Perl_char    }},
+  { SYM(Plus),     "+",            "+",          "+",                    "+",             "+",                      "+",      "+",           { "+",          DocSymbol::Perl_char    }},
+  { SYM(Dot),      ".",            ".",          ".",                    ".",             ".",                      ".",      ".",           { ".",          DocSymbol::Perl_char    }}
 };
 
 static const int g_numHtmlEntities = (int)(sizeof(g_htmlEntities)/ sizeof(*g_htmlEntities));
diff --git a/src/htmlentity.h b/src/htmlentity.h
index d3b268c..7e54066 100644
--- a/src/htmlentity.h
+++ b/src/htmlentity.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 582da45..9e02dee 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -333,10 +333,6 @@ static QCString substituteHtmlKeywords(const QCString &s,
   if (mathJax)
   {
     QCString path = Config_getString("MATHJAX_RELPATH");  
-    if (!path.isEmpty() && path.at(path.length()-1)!='/')  
-    {   
-      path+="/";   
-    }   
     if (path.isEmpty() || path.left(2)=="..") // relative path  
     {  
       path.prepend(relPath);   
@@ -364,7 +360,7 @@ static QCString substituteHtmlKeywords(const QCString &s,
       mathJaxJs += "\n";
     }
     mathJaxJs += "</script>";
-    mathJaxJs += "<script src=\"" + path + "MathJax.js\"></script>\n";
+    mathJaxJs += "<script type=\"text/javascript\" src=\"" + path + "MathJax.js\"></script>\n";
   }
 
   // first substitute generic keywords
@@ -553,7 +549,7 @@ void HtmlCodeGenerator::_writeCodeLink(const char *className,
   if (f) m_t << f << Doxygen::htmlFileExtension;
   if (anchor) m_t << "#" << anchor;
   m_t << "\"";
-  if (tooltip) m_t << " title=\"" << tooltip << "\"";
+  if (tooltip) m_t << " title=\"" << convertToHtml(tooltip) << "\"";
   m_t << ">";
   docify(name);
   m_t << "</a>";
@@ -593,7 +589,7 @@ void HtmlCodeGenerator::writeTooltip(const char *id, const DocLinkInfo &docInfo,
   if (desc)
   {
     m_t << "<div class=\"ttdoc\">";
-    m_t << desc; // desc is already HTML escaped
+    docify(desc); // desc is already HTML escaped; but there are still < and > signs
     m_t << "</div>";
   }
   if (!defInfo.file.isEmpty())
@@ -653,7 +649,7 @@ void HtmlCodeGenerator::startCodeLine(bool hasLineNumbers)
 
 void HtmlCodeGenerator::endCodeLine() 
 { 
-  if (m_streamSet) m_t << "</div>\n";
+  if (m_streamSet) m_t << "</div>";
 }
 
 void HtmlCodeGenerator::startFontClass(const char *s) 
@@ -736,25 +732,17 @@ void HtmlGenerator::init()
     QFile f(dname+"/dynsections.js");
     if (f.open(IO_WriteOnly))
     {
-      const Resource *res = mgr.get("dynsections.js");
-      if (res)
-      {
-        FTextStream t(&f);
-        t << (const char *)res->data;
-        if (Config_getBool("SOURCE_BROWSER") && Config_getBool("SOURCE_TOOLTIPS"))
-        {
-          t << endl <<
-            "$(document).ready(function() {\n"
-            "  $('.code,.codeRef').each(function() {\n"
-            "    $(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());\n"
-            "    $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });\n"
-            "  });\n"
-            "});\n";
-        }
-      }
-      else
+      FTextStream t(&f);
+      t << mgr.getAsString("dynsections.js");
+      if (Config_getBool("SOURCE_BROWSER") && Config_getBool("SOURCE_TOOLTIPS"))
       {
-        err("Resource dynsections.js not compiled in");
+        t << endl <<
+          "$(document).ready(function() {\n"
+          "  $('.code,.codeRef').each(function() {\n"
+          "    $(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());\n"
+          "    $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });\n"
+          "  });\n"
+          "});\n";
       }
     }
   }
@@ -819,20 +807,16 @@ void HtmlGenerator::writeSearchData(const char *dir)
   QFile f(searchDirName+"/search.css");
   if (f.open(IO_WriteOnly))
   {
-    const Resource *res = mgr.get("search.css");
-    if (res)
+    FTextStream t(&f);
+    QCString searchCss = replaceColorMarkers(mgr.getAsString("search.css"));
+    searchCss = substitute(searchCss,"$doxygenversion",versionString);
+    if (Config_getBool("DISABLE_INDEX"))
     {
-      FTextStream t(&f);
-      QCString searchCss = replaceColorMarkers((const char *)res->data);
-      searchCss = substitute(searchCss,"$doxygenversion",versionString);
-      if (Config_getBool("DISABLE_INDEX"))
-      {
-        // move up the search box if there are no tabs
-        searchCss = substitute(searchCss,"margin-top: 8px;","margin-top: 0px;");
-      }
-      t << searchCss;
-      Doxygen::indexList->addStyleSheetFile("search/search.css");
+      // move up the search box if there are no tabs
+      searchCss = substitute(searchCss,"margin-top: 8px;","margin-top: 0px;");
     }
+    t << searchCss;
+    Doxygen::indexList->addStyleSheetFile("search/search.css");
   }
 }
 
@@ -1356,11 +1340,9 @@ void HtmlGenerator::endClassDiagram(const ClassDiagram &d,
   startSectionContent(t,m_sectionCount);
   t << " <div class=\"center\">" << endl;
   t << "  <img src=\"";
-  t << relPath << fileName << ".png\" usemap=\"#";
-  docify(name);
+  t << relPath << fileName << ".png\" usemap=\"#" << convertToId(name);
   t << "_map\" alt=\"\"/>" << endl;
-  t << "  <map id=\"";
-  docify(name);
+  t << "  <map id=\"" << convertToId(name);
   t << "_map\" name=\"";
   docify(name);
   t << "_map\">" << endl;
@@ -1952,11 +1934,6 @@ static void endQuickIndexItem(FTextStream &t,const char *l)
   t << "</li>\n";
 }
 
-static QCString fixSpaces(const QCString &s)
-{
-  return substitute(s," "," ");
-}
-
 static bool quickLinkVisible(LayoutNavEntry::Kind kind)
 {
   static bool showFiles = Config_getBool("SHOW_FILES");
@@ -2443,6 +2420,7 @@ void HtmlGenerator::endConstraintDocs()
 void HtmlGenerator::endConstraintList()
 {
   t << "</table>" << endl;
+  t << "</dd>" << endl;
   t << "</dl>" << endl;
   t << "</div>" << endl;
 }
diff --git a/src/htmlgen.h b/src/htmlgen.h
index 7b63a6b..924d04f 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index 7c12890..a283338 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmlhelp.h b/src/htmlhelp.h
index 574cec9..8191d03 100644
--- a/src/htmlhelp.h
+++ b/src/htmlhelp.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/image.cpp b/src/image.cpp
index 3283754..adec5b3 100644
--- a/src/image.cpp
+++ b/src/image.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/image.h b/src/image.h
index ad11a64..35e6ae3 100644
--- a/src/image.h
+++ b/src/image.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/increasebuffer.py b/src/increasebuffer.py
deleted file mode 100755
index e2b2d0c..0000000
--- a/src/increasebuffer.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Since the internal token buffer of a generated flex file is hardcoded
-# to 16K, this script is used to increase the buffer size of a flex
-# generated scanner to 256K.
-import sys
-sys.stdout.write(sys.stdin.read().
-    replace('YY_BUF_SIZE 16384','YY_BUF_SIZE 262144').
-    replace('YY_READ_BUF_SIZE 8192','YY_READ_BUF_SIZE 262144'))
diff --git a/src/index.cpp b/src/index.cpp
index 9f7542f..15303c7 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -1640,7 +1640,7 @@ static void writeAnnotatedClassList(OutputList &ol)
 static QCString letterToLabel(uint startLetter)
 {
   char s[11]; // max 0x12345678 + '\0'
-  if (startLetter>0x20 && startLetter<=0x7f) // printable ASCII character
+  if (isId(startLetter)) // printable ASCII character
   {
     s[0]=(char)startLetter;
     s[1]=0;
@@ -1901,7 +1901,7 @@ static void writeAlphabeticalClassList(OutputList &ol)
     }
   }
 
-  ol.writeString("<table style=\"margin: 10px; white-space: nowrap;\" align=\"center\" width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
+  ol.writeString("<table class=\"classindex\">\n");
   // generate table
   for (i=0;i<=maxRows;i++) // foreach table row
   {
@@ -2143,13 +2143,13 @@ static void writeNamespaceLinkForMember(OutputList &ol,MemberDef *md,const char
                              QCString &prevNamespaceName)
 {
   NamespaceDef *nd=md->getNamespaceDef();
-  if (nd && prevNamespaceName!=nd->name())
+  if (nd && prevNamespaceName!=nd->displayName())
   {
     ol.docify(separator);
     ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),md->anchor(),
-        nd->name());
+        nd->displayName());
     ol.writeString("\n");
-    prevNamespaceName = nd->name();
+    prevNamespaceName = nd->displayName();
   }
 }
 
@@ -2476,8 +2476,8 @@ static void writeQuickMemberIndex(OutputList &ol,
       anchor=fullName+extension+"#index_";
     else 
       anchor=fullName+"_"+letterToLabel(i)+extension+"#index_";
-    startQuickIndexItem(ol,anchor+ci,i==page,TRUE,first);
-    ol.writeString(is);
+    startQuickIndexItem(ol,anchor+is,i==page,TRUE,first);
+    ol.writeString(ci);
     endQuickIndexItem(ol);
     first=FALSE;
   }
@@ -3114,7 +3114,7 @@ static void writePages(PageDef *pd,FTVHelp *ftv)
 
     if (ftv)
     {
-      //printf("*** adding %s\n",pageTitle.data());
+      //printf("*** adding %s hasSubPages=%d hasSections=%d\n",pageTitle.data(),hasSubPages,hasSections);
       ftv->addContentsItem(
           hasSubPages,pageTitle,
           pd->getReference(),pd->getOutputFileBase(),
@@ -3123,7 +3123,7 @@ static void writePages(PageDef *pd,FTVHelp *ftv)
     if (addToIndex && pd!=Doxygen::mainPage)
     {
       Doxygen::indexList->addContentsItem(
-          hasSubPages,pageTitle,
+          hasSubPages || hasSections,pageTitle,
           pd->getReference(),pd->getOutputFileBase(),
           0,hasSubPages,TRUE);
     }
@@ -3266,7 +3266,8 @@ void writeGraphInfo(OutputList &ol)
   QCString legendDocs = theTranslator->trLegendDocs();
   int s = legendDocs.find("<center>");
   int e = legendDocs.find("</center>");
-  if (Config_getEnum("DOT_IMAGE_FORMAT")=="svg" && s!=-1 && e!=-1)
+  QCString imgExt = getDotImageExtension();
+  if (imgExt=="svg" && s!=-1 && e!=-1)
   {
     legendDocs = legendDocs.left(s+8) + "[!-- SVG 0 --]\n" + legendDocs.mid(e); 
     //printf("legendDocs=%s\n",legendDocs.data());
@@ -3786,7 +3787,7 @@ static void writeIndex(OutputList &ol)
   {
     title = theTranslator->trMainPage();
   }
-  else 
+  else if (Doxygen::mainPage)
   {
     title = filterTitle(Doxygen::mainPage->title());
   }
@@ -4085,7 +4086,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
       for (i=oldSize;i<newSize;i++) indexWritten.at(i)=FALSE;
     }
     //printf("starting %s kind=%d\n",lne->title().data(),lne->kind());
-    bool addToIndex=lne==0 || lne->visible();
+    bool addToIndex=lne->visible();
     bool needsClosing=FALSE;
     if (!indexWritten.at(index))
     {
@@ -4139,7 +4140,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
         case LayoutNavEntry::Classes: 
           if (annotatedClasses>0 && addToIndex)
           {
-            Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0); 
+            Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,"annotated",0); 
             Doxygen::indexList->incContentsDepth();
             needsClosing=TRUE;
           }
diff --git a/src/index.h b/src/index.h
index 6805655..ace3614 100644
--- a/src/index.h
+++ b/src/index.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -284,5 +284,6 @@ void initNamespaceMemberIndices();
 void addClassMemberNameToIndex(MemberDef *md);
 void addFileMemberNameToIndex(MemberDef *md);
 void addNamespaceMemberNameToIndex(MemberDef *md);
+QCString fixSpaces(const QCString &s);
 
 #endif
diff --git a/src/lang_cfg.py b/src/lang_cfg.py
deleted file mode 100755
index efed05f..0000000
--- a/src/lang_cfg.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import sys
-
-if (len(sys.argv) > 1):
-    if (sys.argv[1] == "ENONLY"):
-        print("#define ENGLISH_ONLY")
-    else:
-        for x in range(1, len(sys.argv)):
-            print("#define LANG_%s"%(sys.argv[x]))
diff --git a/src/language.cpp b/src/language.cpp
index 3b57de1..7457676 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/language.h b/src/language.h
index 4780ab3..7c8eef9 100644
--- a/src/language.h
+++ b/src/language.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index 4cba261..5e7278c 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -171,11 +171,10 @@ QCString LatexDocVisitor::escapeMakeIndexChars(const char *s)
 LatexDocVisitor::LatexDocVisitor(FTextStream &t,CodeOutputInterface &ci,
                                  const char *langExt,bool insideTabbing) 
   : DocVisitor(DocVisitor_Latex), m_t(t), m_ci(ci), m_insidePre(FALSE), 
-    m_insideItem(FALSE), m_hide(FALSE), m_insideTabbing(insideTabbing),
-    m_insideTable(FALSE), m_langExt(langExt), m_currentColumn(0), 
-    m_inRowspan(FALSE), m_inColspan(FALSE)
+    m_insideItem(FALSE), m_hide(FALSE), m_hideCaption(FALSE), m_insideTabbing(insideTabbing),
+    m_langExt(langExt)
 {
-  m_rowSpans.setAutoDelete(TRUE);
+  m_tableStateStack.setAutoDelete(TRUE);
 }
 
   //--------------------------------------
@@ -890,7 +889,7 @@ void LatexDocVisitor::visitPost(DocHtmlDescData *)
 {
 }
 
-static const char *getTableName(const DocNode *n)
+static bool tableIsNested(const DocNode *n)
 {
   bool isNested=FALSE;
   while (n && !isNested)
@@ -898,68 +897,115 @@ static const char *getTableName(const DocNode *n)
     isNested = n->kind()==DocNode::Kind_HtmlTable || n->kind()==DocNode::Kind_ParamSect;
     n  = n->parent();
   }
-  return isNested ? "TabularNC" : "TabularC";
+  return isNested;
 }
 
-void LatexDocVisitor::visitPre(DocHtmlTable *t)
+static void writeStartTableCommand(FTextStream &t,const DocNode *n,int cols)
 {
-  m_rowSpans.clear();
-  m_insideTable=TRUE;
-  if (m_hide) return;
-  if (t->hasCaption())
+  if (tableIsNested(n))
   {
-    m_t << "\\begin{table}[h]";
+    t << "\\begin{tabularx}{\\linewidth}{|*{" << cols << "}{>{\\raggedright\\arraybackslash}X|}}";
   }
-  m_t << "\\begin{" << getTableName(t->parent()) << "}{" << t->numColumns() << "}\n";
-  m_numCols = t->numColumns();
-  m_t << "\\hline\n";
+  else
+  {
+    t << "\\tabulinesep=1mm\n\\begin{longtabu} spread 0pt [c]{*" << cols << "{|X[-1]}|}\n";
+  }
+  //return isNested ? "TabularNC" : "TabularC";
 }
 
-void LatexDocVisitor::visitPost(DocHtmlTable *t)
+static void writeEndTableCommand(FTextStream &t,const DocNode *n)
 {
-  m_insideTable=FALSE;
-  if (m_hide) return;
-  if (t->hasCaption())
+  if (tableIsNested(n))
   {
-    m_t << "\\end{table}\n";
+    t << "\\end{tabularx}\n";
   }
   else
   {
-    m_t << "\\end{" << getTableName(t->parent()) << "}\n";
+    t << "\\end{longtabu}\n";
   }
+  //return isNested ? "TabularNC" : "TabularC";
 }
 
-void LatexDocVisitor::visitPre(DocHtmlCaption *c)
+void LatexDocVisitor::visitPre(DocHtmlTable *t)
 {
   if (m_hide) return;
-  m_t << "\\end{" << getTableName(c->parent()) << "}\n\\centering\n\\caption{";
+  pushTableState();
+  if (t->hasCaption())
+  {
+    DocHtmlCaption *c = t->caption();
+    static bool pdfHyperLinks = Config_getBool("PDF_HYPERLINKS");
+    if (!c->file().isEmpty() && pdfHyperLinks)
+    {
+      m_t << "\\hypertarget{" << stripPath(c->file()) << "_" << c->anchor()
+        << "}{}";
+    }
+    m_t << endl;
+  }
+
+  writeStartTableCommand(m_t,t->parent(),t->numColumns());
+
+  if (t->hasCaption())
+  {
+    DocHtmlCaption *c = t->caption();
+    m_t << "\\caption{";
+    visitCaption(this, c->children());
+    m_t << "}";
+    m_t << "\\label{" << stripPath(c->file()) << "_" << c->anchor() << "}";
+    m_t << "\\\\\n";
+  }
+
+  setNumCols(t->numColumns());
+  m_t << "\\hline\n";
+
+  // check if first row is a heading and then render the row already here
+  // and end it with \endfirsthead (triggered via m_firstRow==TRUE)
+  // then repeat the row as normal and end it with \endhead (m_firstRow==FALSE)
+  DocHtmlRow *firstRow = t->firstRow();
+  if (firstRow && firstRow->isHeading())
+  {
+    setFirstRow(TRUE);
+    firstRow->accept(this);
+    setFirstRow(FALSE);
+  }
 }
 
-void LatexDocVisitor::visitPost(DocHtmlCaption *) 
+void LatexDocVisitor::visitPost(DocHtmlTable *t)
 {
   if (m_hide) return;
-  m_t << "}\n";
+  writeEndTableCommand(m_t,t->parent());
+  popTableState();
+}
+
+void LatexDocVisitor::visitPre(DocHtmlCaption *c)
+{
+  m_hideCaption = m_hide;
+  m_hide        = TRUE;
+}
+
+void LatexDocVisitor::visitPost(DocHtmlCaption *c)
+{
+  m_hide        = m_hideCaption;
 }
 
 void LatexDocVisitor::visitPre(DocHtmlRow *r)
 {
-  m_currentColumn = 0;
-  if (r->isHeading()) m_t << "\\rowcolor{lightgray}";
+  setCurrentColumn(0);
+  if (r->isHeading()) m_t << "\\rowcolor{\\tableheadbgcolor}";
 }
 
 void LatexDocVisitor::visitPost(DocHtmlRow *row) 
 {
   if (m_hide) return;
 
-  int c=m_currentColumn;
-  while (c<=m_numCols) // end of row while inside a row span?
+  int c=currentColumn();
+  while (c<=numCols()) // end of row while inside a row span?
   {
     uint i;
-    for (i=0;i<m_rowSpans.count();i++)
+    for (i=0;i<rowSpans().count();i++)
     {
-      ActiveRowSpan *span = m_rowSpans.at(i);
-      //printf("  founc row span: column=%d rs=%d cs=%d rowIdx=%d cell->rowIdx=%d\n",
-      //    span->column, span->rowSpan,span->colSpan,row->rowIndex(),span->cell->rowIndex());
+      ActiveRowSpan *span = rowSpans().at(i);
+      //printf("  found row span: column=%d rs=%d cs=%d rowIdx=%d cell->rowIdx=%d i=%d c=%d\n",
+      //    span->column, span->rowSpan,span->colSpan,row->rowIndex(),span->cell->rowIndex(),i,c);
       if (span->rowSpan>0 && span->column==c &&  // we are at a cell in a row span
           row->rowIndex()>span->cell->rowIndex() // but not the row that started the span
          )
@@ -969,9 +1015,9 @@ void LatexDocVisitor::visitPost(DocHtmlRow *row)
         {
           m_t << "\\multicolumn{" << span->colSpan << "}{";
           m_t << "p{(\\linewidth-\\tabcolsep*" 
-            << m_numCols << "-\\arrayrulewidth*"
+            << numCols() << "-\\arrayrulewidth*"
             << row->visibleCells() << ")*" 
-            << span->colSpan <<"/"<< m_numCols << "}|}{}";
+            << span->colSpan <<"/"<< numCols() << "}|}{}";
         }
         else // solitary row span
         {
@@ -986,9 +1032,9 @@ void LatexDocVisitor::visitPost(DocHtmlRow *row)
   
   int col = 1;
   uint i;
-  for (i=0;i<m_rowSpans.count();i++)
+  for (i=0;i<rowSpans().count();i++)
   {
-    ActiveRowSpan *span = m_rowSpans.at(i);
+    ActiveRowSpan *span = rowSpans().at(i);
     if (span->rowSpan>0) span->rowSpan--;
     if (span->rowSpan<=0)
     {
@@ -1005,12 +1051,27 @@ void LatexDocVisitor::visitPost(DocHtmlRow *row)
     }
   }
 
-  if (col <= m_numCols)
+  if (col <= numCols())
   {
-    m_t << "\\cline{" << col << "-" << m_numCols << "}";
+    m_t << "\\cline{" << col << "-" << numCols() << "}";
   }
 
   m_t << "\n";
+
+  if (row->isHeading() && row->rowIndex()==1)
+  {
+    if (firstRow())
+    {
+      m_t << "\\endfirsthead" << endl;
+      m_t << "\\hline" << endl;
+      m_t << "\\endfoot" << endl;
+      m_t << "\\hline" << endl;
+    }
+    else
+    {
+      m_t << "\\endhead" << endl;
+    }
+  }
 }
 
 void LatexDocVisitor::visitPre(DocHtmlCell *c)
@@ -1022,68 +1083,60 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
   {
     row = (DocHtmlRow*)c->parent();
   }
-  
-  m_currentColumn++;
+
+  setCurrentColumn(currentColumn()+1);
 
   //Skip columns that span from above.
   uint i;
-  for (i=0;i<m_rowSpans.count();i++)
+  for (i=0;i<rowSpans().count();i++)
   {
-    ActiveRowSpan *span = m_rowSpans.at(i);
-    if (span->rowSpan>0 && span->column==m_currentColumn)
+    ActiveRowSpan *span = rowSpans().at(i);
+    if (span->rowSpan>0 && span->column==currentColumn())
     {
       if (row && span->colSpan>1)
       {
         m_t << "\\multicolumn{" << span->colSpan << "}{";
-        if (m_currentColumn /*c->columnIndex()*/==1) // add extra | for first column
+        if (currentColumn() /*c->columnIndex()*/==1) // add extra | for first column
         {
           m_t << "|";
         }
         m_t << "p{(\\linewidth-\\tabcolsep*" 
-            << m_numCols << "-\\arrayrulewidth*"
+            << numCols() << "-\\arrayrulewidth*"
             << row->visibleCells() << ")*" 
-            << span->colSpan <<"/"<< m_numCols << "}|}{}";
-        m_currentColumn+=span->colSpan;
+            << span->colSpan <<"/"<< numCols() << "}|}{}";
+        setCurrentColumn(currentColumn()+span->colSpan);
       }
       else
       {
-        m_currentColumn++;
+        setCurrentColumn(currentColumn()+1);
       }
       m_t << "&";
     }
   }
 
-#if 0
-  QMap<int, int>::Iterator it = m_rowspanIndices.find(m_currentColumn);
-  if (it!=m_rowspanIndices.end() && it.data()>0)
-  {
-    m_t << "&";
-    m_currentColumn++;
-    it++;
-  }
-#endif
-
   int cs = c->colSpan();
   if (cs>1 && row)
   {
-    m_inColspan = TRUE;
+    setInColSpan(TRUE);
     m_t << "\\multicolumn{" << cs << "}{";
     if (c->columnIndex()==1) // add extra | for first column
     {
       m_t << "|";
     }
     m_t << "p{(\\linewidth-\\tabcolsep*" 
-        << m_numCols << "-\\arrayrulewidth*"
+        << numCols() << "-\\arrayrulewidth*"
         << row->visibleCells() << ")*" 
-        << cs <<"/"<< m_numCols << "}|}{";
-    if (c->isHeading()) m_t << "\\cellcolor{lightgray}";
+        << cs <<"/"<< numCols() << "}|}{";
+    if (c->isHeading()) m_t << "\\cellcolor{\\tableheadbgcolor}";
   }
   int rs = c->rowSpan();
   if (rs>0)
   {
-    m_inRowspan = TRUE;
-    //m_rowspanIndices[m_currentColumn] = rs;
-    m_rowSpans.append(new ActiveRowSpan(c,rs,cs,m_currentColumn));
+    setInRowSpan(TRUE);
+    //printf("adding row span: cell={r=%d c=%d rs=%d cs=%d} curCol=%d\n",
+    //                       c->rowIndex(),c->columnIndex(),c->rowSpan(),c->colSpan(),
+    //                       currentColumn());
+    addRowSpan(new ActiveRowSpan(c,rs,cs,currentColumn()));
     m_t << "\\multirow{" << rs << "}{\\linewidth}{";
   }
   int a = c->alignment();
@@ -1101,7 +1154,7 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
   }
   if (cs>1)
   {
-    m_currentColumn+=cs-1;
+    setCurrentColumn(currentColumn()+cs-1);
   }
 }
 
@@ -1112,14 +1165,14 @@ void LatexDocVisitor::visitPost(DocHtmlCell *c)
   {
     m_t << "}";
   }
-  if (m_inRowspan)
+  if (inRowSpan())
   {
-    m_inRowspan = FALSE;
+    setInRowSpan(FALSE);
     m_t << "}";
   }
-  if (m_inColspan)
+  if (inColSpan())
   {
-    m_inColspan = FALSE;
+    setInColSpan(FALSE);
     m_t << "}";
   }
   if (!c->isLast()) m_t << "&";
@@ -1258,7 +1311,7 @@ void LatexDocVisitor::visitPre(DocRef *ref)
   }
   else
   {
-    if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor());
+    if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor(),ref->refToTable());
   }
   if (!ref->hasLinkText()) filter(ref->targetTitle());
 }
@@ -1574,33 +1627,34 @@ void LatexDocVisitor::filter(const char *str)
   filterLatexString(m_t,str,m_insideTabbing,m_insidePre,m_insideItem);
 }
 
-void LatexDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
+void LatexDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor,bool refToTable)
 {
-  if (ref.isEmpty() && Config_getBool("PDF_HYPERLINKS")) // internal PDF link 
+  static bool pdfHyperLinks = Config_getBool("PDF_HYPERLINKS");
+  if (ref.isEmpty() && pdfHyperLinks) // internal PDF link
   {
-    if (ref.isEmpty()) {
-      m_t << "\\hyperlink{";
-      if (!file.isEmpty()) m_t << stripPath(file);
-      if (!file.isEmpty() && !anchor.isEmpty()) m_t << "_";
-      if (!anchor.isEmpty()) m_t << anchor;
-      m_t << "}{";
+    if (refToTable)
+    {
+      m_t << "\\doxytablelink{";
     }
     else
     {
-      QCString *dest;
-      m_t << "\\href{";
-      if ((dest=Doxygen::tagDestinationDict[ref])) m_t << *dest << "/";
-      if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
-      if (!anchor.isEmpty()) m_t << "#" << anchor;
-      m_t << "}{";
+      m_t << "\\hyperlink{";
     }
+    if (!file.isEmpty()) m_t << stripPath(file);
+    if (!file.isEmpty() && !anchor.isEmpty()) m_t << "_";
+    if (!anchor.isEmpty()) m_t << anchor;
+    m_t << "}{";
+  }
+  else if (ref.isEmpty() && refToTable)
+  {
+    m_t << "\\doxytableref{";
   }
   else if (ref.isEmpty()) // internal non-PDF link
   {
     m_t << "\\doxyref{";
   }
   else // external link
-  { 
+  {
     m_t << "{\\bf ";
   }
 }
@@ -1608,9 +1662,10 @@ void LatexDocVisitor::startLink(const QCString &ref,const QCString &file,const Q
 void LatexDocVisitor::endLink(const QCString &ref,const QCString &file,const QCString &anchor)
 {
   m_t << "}";
-  if (ref.isEmpty() && !Config_getBool("PDF_HYPERLINKS"))
+  static bool pdfHyperLinks = Config_getBool("PDF_HYPERLINKS");
+  if (ref.isEmpty() && !pdfHyperLinks)
   {
-    m_t << "{"; 
+    m_t << "{";
     filter(theTranslator->trPageAbbreviation());
     m_t << "}{" << file;
     if (!file.isEmpty() && !anchor.isEmpty()) m_t << "_";
diff --git a/src/latexdocvisitor.h b/src/latexdocvisitor.h
index 0391dcd..02df1ef 100644
--- a/src/latexdocvisitor.h
+++ b/src/latexdocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -159,7 +159,7 @@ class LatexDocVisitor : public DocVisitor
     
     void filter(const char *str);
     void startLink(const QCString &ref,const QCString &file,
-                   const QCString &anchor);
+                   const QCString &anchor,bool refToTable=FALSE);
     void endLink(const QCString &ref,const QCString &file,
                  const QCString &anchor);
     QCString escapeMakeIndexChars(const char *s);
@@ -190,15 +190,87 @@ class LatexDocVisitor : public DocVisitor
     bool m_insidePre;
     bool m_insideItem;
     bool m_hide;
+    bool m_hideCaption;
     bool m_insideTabbing;
-    bool m_insideTable;
-    int  m_numCols;
     QStack<bool> m_enabled;
     QCString m_langExt;
-    RowSpanList m_rowSpans;
-    int m_currentColumn;
-    bool m_inRowspan;
-    bool m_inColspan;
+
+    struct TableState
+    {
+      TableState() : numCols(0), currentColumn(0), inRowSpan(FALSE), 
+                     inColSpan(FALSE), firstRow(FALSE)
+      { rowSpans.setAutoDelete(TRUE); }
+      RowSpanList rowSpans;
+      int  numCols;
+      int currentColumn;
+      bool inRowSpan;
+      bool inColSpan;
+      bool firstRow;
+    };
+    QStack<TableState> m_tableStateStack; // needed for nested tables
+    RowSpanList m_emptyRowSpanList;
+
+    void pushTableState()
+    {
+      m_tableStateStack.push(new TableState);
+    }
+    void popTableState()
+    {
+      delete m_tableStateStack.pop();
+    }
+    int currentColumn() const
+    {
+      return !m_tableStateStack.isEmpty() ? m_tableStateStack.top()->currentColumn : 0;
+    }
+    void setCurrentColumn(int col)
+    {
+      if (!m_tableStateStack.isEmpty()) m_tableStateStack.top()->currentColumn = col;
+    }
+    int numCols() const
+    {
+      return !m_tableStateStack.isEmpty() ? m_tableStateStack.top()->numCols : 0;
+    }
+    void setNumCols(int num)
+    {
+      if (!m_tableStateStack.isEmpty()) m_tableStateStack.top()->numCols = num;
+    }
+    bool inRowSpan() const
+    {
+      return !m_tableStateStack.isEmpty() ? m_tableStateStack.top()->inRowSpan : FALSE;
+    }
+    void setInRowSpan(bool b)
+    {
+      if (!m_tableStateStack.isEmpty()) m_tableStateStack.top()->inRowSpan = b;
+    }
+    bool inColSpan() const
+    {
+      return !m_tableStateStack.isEmpty() ? m_tableStateStack.top()->inColSpan : FALSE;
+    }
+    void setInColSpan(bool b)
+    {
+      if (!m_tableStateStack.isEmpty()) m_tableStateStack.top()->inColSpan = b;
+    }
+    bool firstRow() const
+    {
+      return !m_tableStateStack.isEmpty() ? m_tableStateStack.top()->firstRow : FALSE;
+    }
+    void setFirstRow(bool b)
+    {
+      if (!m_tableStateStack.isEmpty()) m_tableStateStack.top()->firstRow = b;
+    }
+    const RowSpanList &rowSpans()
+    {
+      return !m_tableStateStack.isEmpty() ? m_tableStateStack.top()->rowSpans : m_emptyRowSpanList;
+    }
+    void addRowSpan(ActiveRowSpan *span)
+    {
+      if (!m_tableStateStack.isEmpty()) m_tableStateStack.top()->rowSpans.append(span);
+    }
+    bool insideTable() const
+    {
+      return !m_tableStateStack.isEmpty();
+    }
+
 };
 
 #endif
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index d4d8fae..66a1f8e 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -38,11 +38,214 @@
 #include "filename.h"
 #include "resourcemgr.h"
 
+//-------------------------------
+
+LatexCodeGenerator::LatexCodeGenerator(FTextStream &t,const QCString &relPath,const QCString &sourceFileName)
+  : m_relPath(relPath), m_sourceFileName(sourceFileName), m_col(0)
+{
+  m_prettyCode=Config_getBool("LATEX_SOURCE_CODE");
+  setTextStream(t);
+}
+
+LatexCodeGenerator::LatexCodeGenerator() : m_col(0), m_streamSet(FALSE)
+{
+  m_prettyCode=Config_getBool("LATEX_SOURCE_CODE");
+}
+
+void LatexCodeGenerator::setTextStream(FTextStream &t)
+{
+  m_streamSet = t.device()!=0;
+  m_t.setDevice(t.device());
+}
+
+void LatexCodeGenerator::setRelativePath(const QCString &path)
+{
+  m_relPath = path;
+}
+
+void LatexCodeGenerator::setSourceFileName(const QCString &name)
+{
+  m_sourceFileName = name;
+}
+
+void LatexCodeGenerator::codify(const char *str)
+{
+  if (str)
+  {
+    const char *p=str;
+    char c;
+    //char cs[5];
+    int spacesToNextTabStop;
+    static int tabSize = Config_getInt("TAB_SIZE");
+    const int maxLineLen = 108;
+    QCString result(4*maxLineLen+1); // worst case for 1 line of 4-byte chars
+    int i;
+    while ((c=*p))
+    {
+      switch(c)
+      {
+        case 0x0c: p++;  // remove ^L
+                   break;
+        case '\t': spacesToNextTabStop =
+                         tabSize - (m_col%tabSize);
+                   m_t << Doxygen::spaces.left(spacesToNextTabStop);
+                   m_col+=spacesToNextTabStop;
+                   p++;
+                   break;
+        case '\n': m_t << '\n'; m_col=0; p++;
+                   break;
+        default:
+                   i=0;
+
+#undef  COPYCHAR
+// helper macro to copy a single utf8 character, dealing with multibyte chars.
+#define COPYCHAR() do {                                           \
+                     result[i++]=c; p++;                          \
+                     if (c<0) /* multibyte utf-8 character */     \
+                     {                                            \
+                       /* 1xxx.xxxx: >=2 byte character */        \
+                       result[i++]=*p++;                          \
+                       if (((uchar)c&0xE0)==0xE0)                 \
+                       {                                          \
+                         /* 111x.xxxx: >=3 byte character */      \
+                         result[i++]=*p++;                        \
+                       }                                          \
+                       if (((uchar)c&0xF0)==0xF0)                 \
+                       {                                          \
+                         /* 1111.xxxx: 4 byte character */        \
+                         result[i++]=*p++;                        \
+                       }                                          \
+                     }                                            \
+                     m_col++;                                       \
+                   } while(0)
+
+                   // gather characters until we find whitespace or are at
+                   // the end of a line
+                   COPYCHAR();
+                   if (m_col>=maxLineLen) // force line break
+                   {
+                     m_t << "\n      ";
+                     m_col=0;
+                   }
+                   else // copy more characters
+                   {
+                     while (m_col<maxLineLen && (c=*p) &&
+                            c!=0x0c && c!='\t' && c!='\n' && c!=' '
+                           )
+                     {
+                       COPYCHAR();
+                     }
+                     if (m_col>=maxLineLen) // force line break
+                     {
+                       m_t << "\n      ";
+                       m_col=0;
+                     }
+                   }
+                   result[i]=0; // add terminator
+                   //if (m_prettyCode)
+                   //{
+                     filterLatexString(m_t,result,FALSE,TRUE);
+                   //}
+                   //else
+                   //{
+                   //  t << result;
+                   //}
+                   break;
+      }
+    }
+  }
+}
+
+
+void LatexCodeGenerator::writeCodeLink(const char *ref,const char *f,
+                                   const char *anchor,const char *name,
+                                   const char *)
+{
+  static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
+  static bool usePDFLatex   = Config_getBool("USE_PDFLATEX");
+  int l = qstrlen(name);
+  if (m_col+l>80)
+  {
+    m_t << "\n      ";
+    m_col=0;
+  }
+  if (!ref && usePDFLatex && pdfHyperlinks)
+  {
+    m_t << "\\hyperlink{";
+    if (f) m_t << stripPath(f);
+    if (f && anchor) m_t << "_"; 
+    if (anchor) m_t << anchor; 
+    m_t << "}{";
+    codify(name);
+    m_t << "}";
+  }
+  else
+  {
+    m_t << name;
+  }
+  m_col+=l;
+}
+
+void LatexCodeGenerator::writeLineNumber(const char *ref,const char *fileName,const char *anchor,int l)
+{
+  static bool usePDFLatex = Config_getBool("USE_PDFLATEX");
+  static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
+  if (m_prettyCode)
+  {
+    QCString lineNumber;
+    lineNumber.sprintf("%05d",l);
+
+    if (fileName && !m_sourceFileName.isEmpty())
+    {
+      QCString lineAnchor;
+      lineAnchor.sprintf("_l%05d",l);
+      lineAnchor.prepend(m_sourceFileName);
+      //if (!m_prettyCode) return;
+      if (usePDFLatex && pdfHyperlinks)
+      {
+        m_t << "\\hypertarget{" << stripPath(lineAnchor) << "}{}";
+      }
+      writeCodeLink(ref,fileName,anchor,lineNumber,0);
+    }
+    else
+    {
+      codify(lineNumber);
+    }
+    m_t << " ";
+  }
+  else
+  {
+    m_t << l << " ";
+  }
+}
+
+
+void LatexCodeGenerator::startCodeLine(bool)
+{
+  m_col=0;
+}
+
+void LatexCodeGenerator::endCodeLine()
+{
+  codify("\n");
+}
+
+void LatexCodeGenerator::startFontClass(const char *name)
+{
+  m_t << "\\textcolor{" << name << "}{";
+}
+
+void LatexCodeGenerator::endFontClass()
+{
+  m_t << "}";
+}
+
+
+//-------------------------------
 
 LatexGenerator::LatexGenerator() : OutputGenerator()
 {
   dir=Config_getString("LATEX_OUTPUT");
-  col=0;
   //printf("LatexGenerator::LatexGenerator() insideTabbing=FALSE\n");
   insideTabbing=FALSE;
   firstDescItem=TRUE;
@@ -332,13 +535,8 @@ static void writeDefaultHeaderPart1(FTextStream &t)
        "\n";
 
   // Define page & text layout
-  QCString paperName;
-  QCString &paperType=Config_getEnum("PAPER_TYPE");
+  QCString paperName=Config_getEnum("PAPER_TYPE");
   // "a4wide" package is obsolete (see bug 563698)
-  if (paperType=="a4wide")
-    paperName="a4";
-  else
-    paperName=paperType;
   t << "% Page & text layout\n"
        "\\usepackage{geometry}\n"
        "\\geometry{%\n"
@@ -355,7 +553,7 @@ static void writeDefaultHeaderPart1(FTextStream &t)
        "\\hbadness=750\n"
        "\\setlength{\\emergencystretch}{15pt}\n"
        "\\setlength{\\parindent}{0cm}\n"
-       "\\setlength{\\parskip}{0.2cm}\n";
+       "\\setlength{\\parskip}{3ex plus 2ex minus 2ex}\n";
   // Redefine paragraph/subparagraph environments, using sectsty fonts
   t << "\\makeatletter\n"
        "\\renewcommand{\\paragraph}{%\n"
@@ -373,11 +571,18 @@ static void writeDefaultHeaderPart1(FTextStream &t)
 
   // Headers & footers
   QGString genString;
+  QCString generatedBy;
+  static bool timeStamp = Config_getBool("LATEX_TIMESTAMP");
   FTextStream tg(&genString);
-  filterLatexString(tg,
-                    theTranslator->trGeneratedAt(dateToString(TRUE),
-                       Config_getString("PROJECT_NAME")),
-                    FALSE,FALSE,FALSE);
+  if (timeStamp)
+  {
+    generatedBy = theTranslator->trGeneratedAt(dateToString(TRUE), Config_getString("PROJECT_NAME"));
+  }
+  else
+  {
+    generatedBy = theTranslator->trGeneratedBy();
+  }
+  filterLatexString(tg, generatedBy, FALSE,FALSE,FALSE);
   t << "% Headers & footers\n"
        "\\usepackage{fancyhdr}\n"
        "\\pagestyle{fancyplain}\n"
@@ -421,7 +626,10 @@ static void writeDefaultHeaderPart1(FTextStream &t)
     const char *pkgName=extraPackages.first();
     while (pkgName)
     {
-      t << "\\usepackage{" << pkgName << "}\n";
+      if ((pkgName[0] == '[') || (pkgName[0] == '{'))
+        t << "\\usepackage" << pkgName << "\n";
+      else
+        t << "\\usepackage{" << pkgName << "}\n";
       pkgName=extraPackages.next();
     }
     t << "\n";
@@ -452,9 +660,12 @@ static void writeDefaultHeaderPart1(FTextStream &t)
        "\\newcommand{\\clearemptydoublepage}{%\n"
        "  \\newpage{\\pagestyle{empty}\\cleardoublepage}%\n"
        "}\n"
-       "\n"
        "\n";
 
+  // caption style definition
+  t << "\\usepackage{caption}\n"
+    << "\\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}\n\n";
+
   // End of preamble, now comes the document contents
   t << "%===== C O N T E N T S =====\n"
        "\n"
@@ -471,7 +682,7 @@ static void writeDefaultHeaderPart1(FTextStream &t)
     // To avoid duplicate page anchors due to reuse of same numbers for
     // the index (be it as roman numbers)
     t << "\\hypersetup{pageanchor=false,\n"
-      << "             bookmarks=true,\n"
+    //  << "             bookmarks=true,\n" // commented out to prevent warning
       << "             bookmarksnumbered=true,\n"
       << "             pdfencoding=unicode\n"
       << "            }\n";
@@ -496,10 +707,11 @@ static void writeDefaultHeaderPart3(FTextStream &t)
 {
   // part 3
   // Finalize project number
-  t << " Doxygen " << versionString << "}\\\\\n"
-       "\\vspace*{0.5cm}\n"
-       "{\\small " << dateToString(TRUE) << "}\\\\\n"
-       "\\end{center}\n"
+  t << " Doxygen " << versionString << "}\\\\\n";
+  if (Config_getBool("LATEX_TIMESTAMP"))
+    t << "\\vspace*{0.5cm}\n"
+         "{\\small " << dateToString(TRUE) << "}\\\\\n";
+  t << "\\end{center}\n"
        "\\end{titlepage}\n";
   bool compactLatex = Config_getBool("COMPACT_LATEX");
   if (!compactLatex)
@@ -535,14 +747,18 @@ static void writeDefaultFooter(FTextStream &t)
   Doxygen::citeDict->writeLatexBibliography(t);
 
   // Index
+  t << "% Index\n";
   QCString unit;
   if (Config_getBool("COMPACT_LATEX"))
+  {
     unit = "section";
+  }
   else
+  {
     unit = "chapter";
-  t << "% Index\n"
-       "\\backmatter\n"
-       "\\newpage\n"
+    t << "\\backmatter\n";
+  }
+  t << "\\newpage\n"
        "\\phantomsection\n"
        "\\clearemptydoublepage\n"
        "\\addcontentsline{toc}{" << unit << "}{" << theTranslator->trRTFGeneralIndex() << "}\n"
@@ -583,15 +799,17 @@ void LatexGenerator::startFile(const char *name,const char *,const char *)
 #endif
   QCString fileName=name;
   relPath = relativePathToRoot(fileName);
-  sourceFileName = stripPath(fileName);
   if (fileName.right(4)!=".tex" && fileName.right(4)!=".sty") fileName+=".tex";
   startPlainFile(fileName);
+  m_codeGen.setTextStream(t);
+  m_codeGen.setRelativePath(relPath);
+  m_codeGen.setSourceFileName(stripPath(fileName));
 }
 
 void LatexGenerator::endFile()
 {
   endPlainFile();
-  sourceFileName.resize(0);
+  m_codeGen.setSourceFileName("");
 }
 
 //void LatexGenerator::writeIndex()
@@ -604,14 +822,6 @@ void LatexGenerator::startProjectNumber()
   t << "\\\\[1ex]\\large "; 
 }
 
-static QCString convertToLaTeX(const QCString &s)
-{
-  QGString result;
-  FTextStream t(&result);
-  filterLatexString(t,s,FALSE,FALSE,FALSE);
-  return result.data();
-}
-
 void LatexGenerator::startIndexSection(IndexSections is)
 {
   bool &compactLatex = Config_getBool("COMPACT_LATEX");
@@ -1194,7 +1404,8 @@ void LatexGenerator::endTextLink()
 void LatexGenerator::writeObjectLink(const char *ref, const char *f,
                                      const char *anchor, const char *text)
 {
-  if (!disableLinks && !ref && Config_getBool("PDF_HYPERLINKS"))
+  static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
+  if (!disableLinks && !ref && pdfHyperlinks)
   {
     t << "\\hyperlink{";
     if (f) t << stripPath(f);
@@ -1225,34 +1436,6 @@ void LatexGenerator::endPageRef(const char *clname, const char *anchor)
   t << "}";
 }
 
-void LatexGenerator::writeCodeLink(const char *ref,const char *f,
-                                   const char *anchor,const char *name,
-                                   const char *)
-{
-  static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
-  static bool usePDFLatex   = Config_getBool("USE_PDFLATEX");
-  int l = qstrlen(name);
-  if (col+l>80)
-  {
-    t << "\n      ";
-    col=0;
-  }
-  if (/*m_prettyCode &&*/ !disableLinks && !ref && usePDFLatex && pdfHyperlinks)
-  {
-    t << "\\hyperlink{";
-    if (f) t << stripPath(f);
-    if (f && anchor) t << "_"; 
-    if (anchor) t << anchor; 
-    t << "}{";
-    codify(name);
-    t << "}";
-  }
-  else
-  {
-    t << name;
-  }
-  col+=l;
-}
 
 void LatexGenerator::startTitleHead(const char *fileName)
 {
@@ -1278,9 +1461,9 @@ void LatexGenerator::endTitleHead(const char *fileName,const char *name)
   if (name)
   {
     t << "\\label{" << stripPath(fileName) << "}\\index{";
-    escapeLabelName(name);
+    t << latexEscapeLabelName(name,insideTabbing);
     t << "@{";
-    escapeMakeIndexChars(name);
+    t << latexEscapeIndexChars(name,insideTabbing);
     t << "}}" << endl;
   }
 }
@@ -1359,53 +1542,56 @@ void LatexGenerator::startMemberDoc(const char *clname,
     t << "\\index{";
     if (clname)
     {
-      escapeLabelName(clname);
+      t << latexEscapeLabelName(clname,insideTabbing);
       t << "@{";
-      escapeMakeIndexChars(clname);
+      t << latexEscapeIndexChars(clname,insideTabbing);
       t << "}!";
     }
-    escapeLabelName(memname);
+    t << latexEscapeLabelName(memname,insideTabbing);
     t << "@{";
-    escapeMakeIndexChars(memname);
+    t << latexEscapeIndexChars(memname,insideTabbing);
     t << "}}" << endl;
 
     t << "\\index{";
-    escapeLabelName(memname);
+    t << latexEscapeLabelName(memname,insideTabbing);
     t << "@{";
-    escapeMakeIndexChars(memname);
+    t << latexEscapeIndexChars(memname,insideTabbing);
     t << "}";
     if (clname)
     {
       t << "!";
-      escapeLabelName(clname);
+      t << latexEscapeLabelName(clname,insideTabbing);
       t << "@{";
-      escapeMakeIndexChars(clname);
+      t << latexEscapeIndexChars(clname,insideTabbing);
       t << "}"; 
     }
     t << "}" << endl;
   }
   static const char *levelLab[] = { "subsubsection","paragraph","subparagraph", "subparagraph" };
   static bool compactLatex = Config_getBool("COMPACT_LATEX");
+  static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
   int level=0;
   if (showInline) level+=2;
   if (compactLatex) level++;
   t << "\\" << levelLab[level]; 
 
-  //if (Config_getBool("PDF_HYPERLINKS") && memname) 
-  //{
-  //  t << "["; 
-  //  escapeMakeIndexChars(this,t,memname);
-  //  t << "]";
-  //}
   t << "[{";
-  escapeMakeIndexChars(title);
+  if (pdfHyperlinks)
+  {
+    t << "\\texorpdfstring{";
+  }
+  t << latexEscapeIndexChars(title,insideTabbing);
+  if (pdfHyperlinks)
+  {
+    t << "}{" << latexEscapePDFString(title) << "}";
+  }
   t << "}]";
   t << "{\\setlength{\\rightskip}{0pt plus 5cm}";
   disableLinks=TRUE;
 }
 
-void LatexGenerator::endMemberDoc(bool) 
-{ 
+void LatexGenerator::endMemberDoc(bool)
+{
   disableLinks=FALSE;
   t << "}";
   //if (Config_getBool("COMPACT_LATEX")) t << "\\hfill";
@@ -1415,6 +1601,10 @@ void LatexGenerator::startDoxyAnchor(const char *fName,const char *,
                                      const char *anchor, const char *,
                                      const char *)
 {
+}
+
+void LatexGenerator::endDoxyAnchor(const char *fName,const char *anchor)
+{
   static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
   static bool usePDFLatex   = Config_getBool("USE_PDFLATEX");
   if (usePDFLatex && pdfHyperlinks)
@@ -1424,10 +1614,6 @@ void LatexGenerator::startDoxyAnchor(const char *fName,const char *,
     if (anchor) t << "_" << anchor;
     t << "}{}";
   }
-}
-
-void LatexGenerator::endDoxyAnchor(const char *fName,const char *anchor)
-{
   t << "\\label{";
   if (fName) t << stripPath(fName);
   if (anchor) t << "_" << anchor;
@@ -1437,18 +1623,18 @@ void LatexGenerator::endDoxyAnchor(const char *fName,const char *anchor)
 void LatexGenerator::writeAnchor(const char *fName,const char *name)
 { 
   //printf("LatexGenerator::writeAnchor(%s,%s)\n",fName,name);
-  t << "\\label{" << name << "}" << endl; 
+  t << "\\label{" << stripPath(name) << "}" << endl; 
   static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
   static bool usePDFLatex   = Config_getBool("USE_PDFLATEX");
   if (usePDFLatex && pdfHyperlinks)
   {
     if (fName)
     {
-      t << "\\hypertarget{" << stripPath(fName) << "_" << name << "}{}" << endl;
+      t << "\\hypertarget{" << stripPath(fName) << "_" << stripPath(name) << "}{}" << endl;
     }
     else
     {
-      t << "\\hypertarget{" << name << "}{}" << endl;
+      t << "\\hypertarget{" << stripPath(name) << "}{}" << endl;
     }
   }
 }
@@ -1464,16 +1650,16 @@ void LatexGenerator::addIndexItem(const char *s1,const char *s2)
   if (s1)
   {
     t << "\\index{";
-    escapeLabelName(s1);
+    t << latexEscapeLabelName(s1,insideTabbing);
     t << "@{";
-    escapeMakeIndexChars(s1);
+    t << latexEscapeIndexChars(s1,insideTabbing);
     t << "}";
     if (s2)
     {
       t << "!";
-      escapeLabelName(s2);
+      t << latexEscapeLabelName(s2,insideTabbing);
       t << "@{";
-      escapeMakeIndexChars(s2);
+      t << latexEscapeIndexChars(s2,insideTabbing);
       t << "}";
     }
     t << "}";
@@ -1529,94 +1715,6 @@ void LatexGenerator::docify(const char *str)
   filterLatexString(t,str,insideTabbing,FALSE,FALSE);
 }
 
-void LatexGenerator::codify(const char *str)
-{
-  if (str)
-  { 
-    const char *p=str;
-    char c;
-    //char cs[5];
-    int spacesToNextTabStop;
-    static int tabSize = Config_getInt("TAB_SIZE");
-    const int maxLineLen = 108;
-    QCString result(4*maxLineLen+1); // worst case for 1 line of 4-byte chars
-    int i;
-    while ((c=*p))
-    {
-      switch(c)
-      {
-        case 0x0c: p++;  // remove ^L
-                   break;
-        case '\t': spacesToNextTabStop =
-                         tabSize - (col%tabSize);
-                   t << Doxygen::spaces.left(spacesToNextTabStop); 
-                   col+=spacesToNextTabStop;
-                   p++;
-                   break; 
-        case '\n': t << '\n'; col=0; p++;
-                   break;
-        default:   
-                   i=0;
-
-#undef  COPYCHAR
-// helper macro to copy a single utf8 character, dealing with multibyte chars.
-#define COPYCHAR() do {                                           \
-                     result[i++]=c; p++;                          \
-                     if (c<0) /* multibyte utf-8 character */     \
-                     {                                            \
-                       /* 1xxx.xxxx: >=2 byte character */        \
-                       result[i++]=*p++;                          \
-                       if (((uchar)c&0xE0)==0xE0)                 \
-                       {                                          \
-                         /* 111x.xxxx: >=3 byte character */      \
-                         result[i++]=*p++;                        \
-                       }                                          \
-                       if (((uchar)c&0xF0)==0xF0)                 \
-                       {                                          \
-                         /* 1111.xxxx: 4 byte character */        \
-                         result[i++]=*p++;                        \
-                       }                                          \
-                     }                                            \
-                     col++;                                       \
-                   } while(0)
-
-                   // gather characters until we find whitespace or are at
-                   // the end of a line
-                   COPYCHAR();
-                   if (col>=maxLineLen) // force line break
-                   {
-                     t << "\n      ";
-                     col=0;
-                   }
-                   else // copy more characters
-                   {
-                     while (col<maxLineLen && (c=*p) && 
-                            c!=0x0c && c!='\t' && c!='\n' && c!=' '
-                           )
-                     {
-                       COPYCHAR();
-                     }
-                     if (col>=maxLineLen) // force line break
-                     {
-                       t << "\n      ";
-                       col=0;
-                     }
-                   }
-                   result[i]=0; // add terminator
-                   //if (m_prettyCode)
-                   //{
-                     filterLatexString(t,result,insideTabbing,TRUE);
-                   //}
-                   //else
-                   //{
-                   //  t << result;
-                   //}
-                   break;
-      }
-    }
-  }
-}
-
 void LatexGenerator::writeChar(char c)
 {
   char cs[2];
@@ -1999,76 +2097,6 @@ void LatexGenerator::endConstraintList()
   t << "\\end{Desc}" << endl;
 }
 
-void LatexGenerator::escapeLabelName(const char *s)
-{
-  if (s==0) return;
-  const char *p=s;
-  char c;
-  QCString result(qstrlen(s)+1); // worst case allocation
-  int i;
-  while ((c=*p++))
-  {
-    switch (c)
-    {
-      case '|': t << "\\texttt{\"|}"; break;
-      case '!': t << "\"!"; break;
-      case '%': t << "\\%";       break;
-      case '{': t << "\\lcurly{}"; break;
-      case '}': t << "\\rcurly{}"; break;
-      case '~': t << "````~"; break; // to get it a bit better in index together with other special characters
-      // NOTE: adding a case here, means adding it to while below as well!
-      default:  
-        i=0;
-        // collect as long string as possible, before handing it to docify
-        result[i++]=c;
-        while ((c=*p) && c!='|' && c!='!' && c!='%' && c!='{' && c!='}' && c!='~')
-        {
-          result[i++]=c;
-          p++;
-        }
-        result[i]=0;
-        docify(result); 
-        break;
-    }
-  }
-}
-
-void LatexGenerator::escapeMakeIndexChars(const char *s)
-{
-  if (s==0) return;
-  const char *p=s;
-  char c;
-  QCString result(qstrlen(s)+1); // worst case allocation
-  int i;
-  while ((c=*p++))
-  {
-    switch (c)
-    {
-      case '!': t << "\"!"; break;
-      case '"': t << "\"\""; break;
-      case '@': t << "\"@"; break;
-      case '|': t << "\\texttt{\"|}"; break;
-      case '[': t << "["; break;
-      case ']': t << "]"; break;
-      case '{': t << "\\lcurly{}"; break;
-      case '}': t << "\\rcurly{}"; break;
-      // NOTE: adding a case here, means adding it to while below as well!
-      default:  
-        i=0;
-        // collect as long string as possible, before handing it to docify
-        result[i++]=c;
-        while ((c=*p) && c!='"' && c!='@' && c!='[' && c!=']' && c!='!' && c!='{' && c!='}' && c!='|')
-        {
-          result[i++]=c;
-          p++;
-        }
-        result[i]=0;
-        docify(result); 
-        break;
-    }
-  }
-}
-
 void LatexGenerator::startCodeFragment()
 {
   t << "\n\\begin{DoxyCode}\n";
@@ -2079,61 +2107,6 @@ void LatexGenerator::endCodeFragment()
   t << "\\end{DoxyCode}\n";
 }
 
-void LatexGenerator::writeLineNumber(const char *ref,const char *fileName,const char *anchor,int l)
-{
-  static bool usePDFLatex = Config_getBool("USE_PDFLATEX");
-  static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
-  if (m_prettyCode)
-  {
-    QCString lineNumber;
-    lineNumber.sprintf("%05d",l);
-
-    if (fileName && !sourceFileName.isEmpty())
-    {
-      QCString lineAnchor;
-      lineAnchor.sprintf("_l%05d",l);
-      lineAnchor.prepend(sourceFileName);
-      //if (!m_prettyCode) return;
-      if (usePDFLatex && pdfHyperlinks)
-      {
-        t << "\\hypertarget{" << stripPath(lineAnchor) << "}{}";
-      }
-      writeCodeLink(ref,fileName,anchor,lineNumber,0);
-    }
-    else
-    { 
-      codify(lineNumber);
-    }
-    t << " ";
-  }
-  else
-  {
-    t << l << " ";
-  }
-}
-
-void LatexGenerator::startCodeLine(bool)
-{
-  col=0;
-}
-
-void LatexGenerator::endCodeLine()
-{
-  codify("\n");
-}
-
-void LatexGenerator::startFontClass(const char *name)
-{
-  //if (!m_prettyCode) return;
-  t << "\\textcolor{" << name << "}{";
-}
-
-void LatexGenerator::endFontClass()
-{
-  //if (!m_prettyCode) return;
-  t << "}";
-}
-
 void LatexGenerator::startInlineHeader()
 {
   if (Config_getBool("COMPACT_LATEX")) 
@@ -2217,3 +2190,4 @@ void LatexGenerator::endLabels()
 {
 }
 
+
diff --git a/src/latexgen.h b/src/latexgen.h
index 60c649a..84382a7 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -24,6 +24,48 @@ class QFile;
 
 static const char *latexStyleExtension = ".sty";
 
+class LatexCodeGenerator : public CodeOutputInterface
+{
+  public:
+    LatexCodeGenerator(FTextStream &t,const QCString &relPath,const QCString &sourceFile);
+    LatexCodeGenerator();
+    void setTextStream(FTextStream &t);
+    void setRelativePath(const QCString &path);
+    void setSourceFileName(const QCString &sourceFileName);
+    void codify(const char *text);
+    void writeCodeLink(const char *ref,const char *file,
+                       const char *anchor,const char *name,
+                       const char *tooltip);
+    void writeTooltip(const char *,
+                      const DocLinkInfo &,
+                      const char *,
+                      const char *,
+                      const SourceLinkInfo &,
+                      const SourceLinkInfo &
+                     ) {}
+    void writeLineNumber(const char *,const char *,const char *,int);
+    void startCodeLine(bool);
+    void endCodeLine();
+    void startFontClass(const char *);
+    void endFontClass();
+    void writeCodeAnchor(const char *) {}
+    void setCurrentDoc(Definition *,const char *,bool) {}
+    void addWord(const char *,bool) {}
+
+  private:
+    void _writeCodeLink(const char *className,
+                        const char *ref,const char *file,
+                        const char *anchor,const char *name,
+                        const char *tooltip);
+    void docify(const char *str);
+    bool m_streamSet;
+    FTextStream m_t;
+    QCString m_relPath;
+    QCString m_sourceFileName;
+    int m_col;
+    bool m_prettyCode;
+};
+
 /** Generator for LaTeX output. */
 class LatexGenerator : public OutputGenerator
 {
@@ -47,6 +89,32 @@ class LatexGenerator : public OutputGenerator
     bool isEnabled(OutputType o) { return (o==Latex && active); } 
     OutputGenerator *get(OutputType o) { return (o==Latex) ? this : 0; }
 
+    // --- CodeOutputInterface
+    void codify(const char *text)
+    { m_codeGen.codify(text); }
+    void writeCodeLink(const char *ref, const char *file,
+                       const char *anchor,const char *name,
+                       const char *tooltip)
+    { m_codeGen.writeCodeLink(ref,file,anchor,name,tooltip); }
+    void writeLineNumber(const char *ref,const char *file,const char *anchor,int lineNumber)
+    { m_codeGen.writeLineNumber(ref,file,anchor,lineNumber); }
+    void writeTooltip(const char *id, const DocLinkInfo &docInfo, const char *decl,
+                      const char *desc, const SourceLinkInfo &defInfo, const SourceLinkInfo &declInfo
+                     )
+    { m_codeGen.writeTooltip(id,docInfo,decl,desc,defInfo,declInfo); }
+    void startCodeLine(bool hasLineNumbers)
+    { m_codeGen.startCodeLine(hasLineNumbers); }
+    void endCodeLine()
+    { m_codeGen.endCodeLine(); }
+    void startFontClass(const char *s)
+    { m_codeGen.startFontClass(s); }
+    void endFontClass()
+    { m_codeGen.endFontClass(); }
+    void writeCodeAnchor(const char *anchor)
+    { m_codeGen.writeCodeAnchor(anchor); }
+    // ---------------------------
+
+
     void writeDoc(DocNode *,Definition *ctx,MemberDef *);
 
     void startFile(const char *name,const char *manName,const char *title);
@@ -83,15 +151,9 @@ class LatexGenerator : public OutputGenerator
     void startIndexItem(const char *ref,const char *file);
     void endIndexItem(const char *ref,const char *file);
     void docify(const char *text);
-    void codify(const char *text);
     void writeObjectLink(const char *ref,const char *file,
                          const char *anchor,const char *name);
-    void writeCodeLink(const char *ref, const char *file,
-                       const char *anchor,const char *name,
-                       const char *tooltip);
-    void writeTooltip(const char *, const DocLinkInfo &, const char *,
-                      const char *, const SourceLinkInfo &, const SourceLinkInfo &
-                     ) {}
+
     void startTextLink(const char *,const char *);
     void endTextLink();
     void startHtmlLink(const char *url);
@@ -137,9 +199,6 @@ class LatexGenerator : public OutputGenerator
     void writeAnchor(const char *fileName,const char *name);
     void startCodeFragment();
     void endCodeFragment();
-    void writeLineNumber(const char *,const char *,const char *,int l);
-    void startCodeLine(bool hasLineNumbers);
-    void endCodeLine();
     void startEmphasis() { t << "{\\em ";  }
     void endEmphasis()   { t << "}"; }
     void startBold()     { t << "{\\bfseries "; }
@@ -267,10 +326,6 @@ class LatexGenerator : public OutputGenerator
     void writeLabel(const char *l,bool isLast);
     void endLabels();
 
-    void startFontClass(const char *); // {}
-    void endFontClass(); // {}
-
-    void writeCodeAnchor(const char *) {}
     void setCurrentDoc(Definition *,const char *,bool) {}
     void addWord(const char *,bool) {}
 
@@ -278,17 +333,14 @@ class LatexGenerator : public OutputGenerator
   private:
     LatexGenerator(const LatexGenerator &);
     LatexGenerator &operator=(const LatexGenerator &);
-    void escapeLabelName(const char *s);
-    void escapeMakeIndexChars(const char *s);
-    int col;
     bool insideTabbing;
     bool firstDescItem;
     bool disableLinks;
     QCString relPath;
-    QCString sourceFileName;
     int m_indent;
     bool templateMemberItem;
     bool m_prettyCode;
+    LatexCodeGenerator m_codeGen;
 };
 
 #endif
diff --git a/src/layout.cpp b/src/layout.cpp
index c364886..2835e77 100644
--- a/src/layout.cpp
+++ b/src/layout.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -888,7 +888,7 @@ class LayoutParser : public QXmlDefaultHandler
         // no MainPage node... add one as the first item of the root node...
         new LayoutNavEntry(m_rootNav,LayoutNavEntry::MainPage, TRUE, 
             /*Config_getBool("GENERATE_TREEVIEW") ? "main" :*/ "index",
-            theTranslator->trMainPage(),TRUE);
+            theTranslator->trMainPage(),"",TRUE);
       }
     }
 
@@ -1269,6 +1269,7 @@ class LayoutParser : public QXmlDefaultHandler
 
   private:
     LayoutParser() : m_sHandler(163), m_eHandler(17), m_invalidEntry(FALSE) { }
+   ~LayoutParser() { delete m_rootNav; }
 
     QDict<StartElementHandler> m_sHandler;
     QDict<EndElementHandler>   m_eHandler;
@@ -1396,7 +1397,8 @@ void LayoutDocManager::parse(QTextStream &t,const char *fileName)
 void writeDefaultLayoutFile(const char *fileName)
 {
   QFile f(fileName);
-  if (!f.open(IO_WriteOnly))
+  bool ok = openOutputFile(fileName,f);
+  if (!ok)
   {
     err("Failed to open file %s for writing!\n",fileName);
     return;
diff --git a/src/layout.h b/src/layout.h
index d50bc7c..0b9ad9e 100644
--- a/src/layout.h
+++ b/src/layout.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/libdoxycfg.pro.in b/src/libdoxycfg.pro.in
deleted file mode 100644
index ab7c36c..0000000
--- a/src/libdoxycfg.pro.in
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-#
-# TMake project file for doxygen
-
-TEMPLATE     =	libdoxycfg.t
-CONFIG       =	console warn_on staticlib $extraopts
-HEADERS      =  config.h configoptions.h portable.h
-SOURCES      =	../generated_src/doxygen/config.cpp ../generated_src/doxygen/configoptions.cpp portable.cpp portable_c.c
-win32:TMAKE_CXXFLAGS       += -DQT_NODLL
-win32-g++:TMAKE_CXXFLAGS   += -fno-exceptions -fno-rtti
-DEPENDPATH                 += ../generated_src/doxygen
-INCLUDEPATH                += ../generated_src/doxygen . ../qtools
-DESTDIR                    =  ../lib
-TARGET                     =  doxycfg
-OBJECTS_DIR                =  ../objects/doxygen
diff --git a/src/libdoxycfg.t.in b/src/libdoxycfg.t.in
deleted file mode 100644
index 89833f6..0000000
--- a/src/libdoxycfg.t.in
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-#!
-#! doxygen.t: This is a custom template for building Doxygen
-#!
-#$ IncludeTemplate("lib.t");
-
-LEX     =   %%FLEX%%
-YACC    =   %%BISON%%
-PYTHON  =   %%PYTHON%%
-
-#${
-sub GenerateDep {
-    my($obj,$src,$dep) = @_;
-    my(@objv,$srcv,$i,$s,$o,$d,$c);
-    @objv = split(/\s+/,$obj);
-    @srcv = split(/\s+/,$src);
-    for $i ( 0..$#objv ) {
-        $s = $srcv[$i];
-        $o = $objv[$i];
-        next if $s eq "";
-        $text .= $o . ": " . $s;
-	$text .= " ${linebreak}\n\t\t" . $dep if $dep ne "";
-        if ( $moc_output{$s} ne "" ) {
-            $text .= " ${linebreak}\n\t\t" . $moc_output{$s};
-        }
-        $d = &make_depend($s);
-        $text .= " ${linebreak}\n\t\t" . $d if $d ne "";
-	$text .= "\n";
-    }
-    chop $text;
-}
-#$} 
-
-####################
-
-#$ GenerateDep("../generated_src/doxygen/config.cpp","config.l");
-	$(LEX) -PconfigYY -t config.l >../generated_src/doxygen/config.cpp 
-
-../generated_src/doxygen/configoptions.cpp: config.xml configgen.py
-	$(PYTHON) configgen.py -cpp config.xml >../generated_src/doxygen/configoptions.cpp
-
diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in
deleted file mode 100644
index 39df3cd..0000000
--- a/src/libdoxygen.pro.in
+++ /dev/null
@@ -1,242 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-#
-# TMake project file for doxygen
-
-TEMPLATE     =	libdoxygen.t
-CONFIG       =	console warn_on staticlib $extraopts
-HEADERS      =	arguments.h \
-                bufstr.h \
-		cite.h \
-		clangparser.h \
-                classdef.h \
-                classlist.h \
-                cmdmapper.h \
-                code.h \
-		commentcnv.h \
-		commentscan.h \
-		condparser.h \
-                config.h \
-		context.h \
-		constexp.h \
-		cppvalue.h \
-		debug.h \
-                declinfo.h \
-                defargs.h \
-                defgen.h \
-                define.h \
-                definition.h \
-                diagram.h \
-                dirdef.h \
-                docparser.h \
-		docsets.h \
-                doctokenizer.h \
-                docvisitor.h \
-		dot.h \
-		doxygen.h \
-		eclipsehelp.h \
-		entry.h \
-		example.h \
-		filedef.h \
-		filename.h \
-		fileparser.h \
-		formula.h \
-		ftextstream.h \
-		ftvhelp.h \
-		groupdef.h \
-		htags.h \
-		htmlattrib.h \
-                htmldocvisitor.h \
-		htmlgen.h \
-		htmlhelp.h \
-		htmlentity.h \
-		image.h \
-		index.h \
-		language.h \
-                latexdocvisitor.h \
-		latexgen.h \
-                layout.h \
-		logos.h \
-		mandocvisitor.h \
-		mangen.h \
-		sqlite3gen.h \
-		markdown.h \
-                marshal.h \
-		memberdef.h \
-		membergroup.h \
-		memberlist.h \
-		membername.h \
-		message.h \
-                msc.h \
-                dia.h \
-		namespacedef.h \
-                objcache.h \
-		outputgen.h \
-		outputlist.h \
-		pagedef.h \
-		perlmodgen.h \
-		lodepng.h \
-		plantuml.h \
-		pre.h \
-                printdocvisitor.h \
-                pycode.h \
-                pyscanner.h \
-                fortrancode.h \
-                fortranscanner.h \
-                dbusxmlscanner.h \
-		qhp.h \
-		qhpxmlwriter.h \
-		reflist.h \
-		resourcemgr.h \
-                rtfdocvisitor.h \
-		rtfgen.h \
-		rtfstyle.h \
-		scanner.h \
-		searchindex.h \
-		section.h \
-		sortdict.h \
-                store.h \
-		tagreader.h \
-		tclscanner.h \
-		template.h \
-                textdocvisitor.h \
-		tooltip.h \
-		translator.h \
-		translator_adapter.h \
-		util.h \
-		version.h \
-		vhdlcode.h \
-		vhdldocgen.h \
-		xmldocvisitor.h \
-                xmlgen.h \
-                docbookvisitor.h \
-                docbookgen.h \
-		vhdljjparser.h 
-		
-
-SOURCES      =	arguments.cpp \
-		cite.cpp \
-		clangparser.cpp \
-		classdef.cpp \
-		classlist.cpp \
-                cmdmapper.cpp \
-		condparser.cpp \
-		context.cpp \
-		cppvalue.cpp \
-                dbusxmlscanner.cpp \
-		debug.cpp \
-                defgen.cpp \
-		define.cpp \
-		definition.cpp \
-		diagram.cpp \
-                dirdef.cpp \
-                docparser.cpp \
-		docsets.cpp \
-		dot.cpp \
-		doxygen.cpp \
-		eclipsehelp.cpp \
-		entry.cpp \
-		filedef.cpp \
-		filename.cpp \
-		fileparser.cpp \
-		formula.cpp \
-		ftextstream.cpp \
-		ftvhelp.cpp \
-		groupdef.cpp \
-		htags.cpp \
-                htmldocvisitor.cpp \
-		htmlgen.cpp \
-		htmlhelp.cpp \
-		htmlentity.cpp \
-		image.cpp \
-		index.cpp \
-		language.cpp \
-                latexdocvisitor.cpp \
-		latexgen.cpp \
-                layout.cpp \
-		lodepng.cpp \
-		logos.cpp \
-		plantuml.cpp \
-		mandocvisitor.cpp \
-		mangen.cpp \
-		sqlite3gen.cpp \
-		markdown.cpp \
-                marshal.cpp \
-		memberdef.cpp \
-		membergroup.cpp \
-		memberlist.cpp \
-		membername.cpp \
-		message.cpp \
-                msc.cpp \
-                dia.cpp \
-		namespacedef.cpp \
-                objcache.cpp \
-		outputgen.cpp \
-		outputlist.cpp \
-		pagedef.cpp \
-		perlmodgen.cpp \
-		qhp.cpp \
-		qhpxmlwriter.cpp \
-		reflist.cpp \
-		resourcemgr.cpp \
-                rtfdocvisitor.cpp \
-		rtfgen.cpp \
-		rtfstyle.cpp \
-		searchindex.cpp \
-                store.cpp \
-		tagreader.cpp \
-		template.cpp \
-                textdocvisitor.cpp \
-                tooltip.cpp \
-		util.cpp \
-		vhdldocgen.cpp \
-		xmldocvisitor.cpp \
-                xmlgen.cpp \
-                docbookvisitor.cpp \
-                docbookgen.cpp \
-                vhdljjparser.cpp \
-	        ../generated_src/doxygen/ce_parse.cpp \
-                ../generated_src/doxygen/constexp.cpp \
-		../generated_src/doxygen/vhdlcode.cpp \
-		../generated_src/doxygen/code.cpp \
-		../generated_src/doxygen/commentcnv.cpp \
-		../generated_src/doxygen/commentscan.cpp \
-		../generated_src/doxygen/declinfo.cpp \
-		../generated_src/doxygen/defargs.cpp \
-                ../generated_src/doxygen/doctokenizer.cpp \
-		../generated_src/doxygen/pre.cpp \
-		../generated_src/doxygen/pycode.cpp \
-		../generated_src/doxygen/pyscanner.cpp \
-		../generated_src/doxygen/scanner.cpp \
-                ../generated_src/doxygen/tclscanner.cpp \
-		../generated_src/doxygen/fortrancode.cpp \
-		../generated_src/doxygen/fortranscanner.cpp \
-		../generated_src/doxygen/version.cpp \
-		../generated_src/doxygen/resources.cpp 
-		
-		
-
-win32:TMAKE_CXXFLAGS       += -DQT_NODLL
-win32-msvc:TMAKE_CXXFLAGS  += -Zm200
-win32-g++:TMAKE_CXXFLAGS   += -fno-exceptions
-linux-g++:TMAKE_CXXFLAGS   += -fno-exceptions
-INCLUDEPATH                += ../generated_src/doxygen ../src ../qtools ../libmd5 ../vhdlparser
-INCLUDEPATH                += %%SQLITE3_INC%%
-INCLUDEPATH                += %%LIBCLANG_INC%%
-DEPENDPATH                 += ../generated_src/doxygen ../qtools ../libmd5 ../vhdlparser
-win32:INCLUDEPATH          += .
-DESTDIR                    =  ../lib
-TARGET                     =  doxygen
-OBJECTS_DIR                =  ../objects/doxygen
-
diff --git a/src/libdoxygen.t.in b/src/libdoxygen.t.in
deleted file mode 100644
index 1d242d0..0000000
--- a/src/libdoxygen.t.in
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# 
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-#!
-#! doxygen.t: This is a custom template for building Doxygen
-#!
-#$ IncludeTemplate("lib.t");
-
-LEX        = %%FLEX%%
-YACC       = %%BISON%%
-PYTHON     = %%PYTHON%%
-PERL       = %%PERL%%
-INCBUFSIZE = $(PYTHON) increasebuffer.py
-GENERATED_SRC = ../generated_src/doxygen
-GENERATED_OBJ = ../objects/doxygen
-
-#${
-sub GenerateDep {
-    my($obj,$src, at deps) = @_;
-    my(@objv,$srcv,$i,$s,$o,$d,$c);
-    @objv = split(/\s+/,$obj);
-    @srcv = split(/\s+/,$src);
-    for $i ( 0..$#objv ) {
-        $s = $srcv[$i];
-        $o = $objv[$i];
-        next if $s eq "";
-        $text .= $o . ": " . $s;
-        foreach my $dep (@deps) {
-	  $text .= " ${linebreak}\n\t\t" . $dep if $dep ne "";
-        }
-        if ( $moc_output{$s} ne "" ) {
-            $text .= " ${linebreak}\n\t\t" . $moc_output{$s};
-        }
-        $d = &make_depend($s);
-        $text .= " ${linebreak}\n\t\t" . $d if $d ne "";
-	$text .= "\n";
-    }
-    chop $text;
-}
-sub GenerateLex {
-    my($name,$caseOpt) = @_;
-    $text = "\t\$(LEX) ";
-    if ($caseOpt) {
-        $text .= "-i ";
-    }
-    $text .= "-P".$name."YY -t ".$name.".l | \$(INCBUFSIZE) > \$(GENERATED_SRC)/".$name.".cpp";
-}
-#$} 
-
-####################
-
-#$ GenerateDep("\$(GENERATED_SRC)/scanner.cpp","scanner.l");
-#$ GenerateLex("scanner",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/code.cpp","code.l");
-#$ GenerateLex("code",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/pyscanner.cpp","pyscanner.l");
-#$ GenerateLex("pyscanner",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/pycode.cpp","pycode.l");
-#$ GenerateLex("pycode",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/fortranscanner.cpp","fortranscanner.l");
-#$ GenerateLex("fortranscanner",1);
-
-#$ GenerateDep("\$(GENERATED_SRC)/fortrancode.cpp","fortrancode.l");
-#$ GenerateLex("fortrancode",1);
-
-#$ GenerateDep("\$(GENERATED_SRC)/vhdlcode.cpp","vhdlcode.l");
-#$ GenerateLex("vhdlcode",1);
-
-#$ GenerateDep("\$(GENERATED_SRC)/tclscanner.cpp","tclscanner.l");
-#$ GenerateLex("tclscanner",1);
-
-#$ GenerateDep("\$(GENERATED_SRC)/pre.cpp","pre.l");
-#$ GenerateLex("pre",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/declinfo.cpp","declinfo.l");
-#$ GenerateLex("declinfo",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/defargs.cpp","defargs.l");
-#$ GenerateLex("defargs",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/doctokenizer.cpp","doctokenizer.l");
-#$ GenerateLex("doctokenizer",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/commentcnv.cpp","commentcnv.l");
-#$ GenerateLex("commentcnv",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/commentscan.cpp","commentscan.l");
-#$ GenerateLex("commentscan",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/constexp.cpp","constexp.l","\$(GENERATED_SRC)/ce_parse.h");
-#$ GenerateLex("constexp",0);
-
-#$ GenerateDep("\$(GENERATED_SRC)/ce_parse.cpp","constexp.y");
-	$(YACC) -l -p constexpYY constexp.y -o \$(GENERATED_SRC)/ce_parse.cpp 
-
-#$ GenerateDep("\$(GENERATED_SRC)/ce_parse.h","constexp.y");
-	$(YACC) -l -d -p ce_parsexpYY constexp.y -o \$(GENERATED_SRC)/ce_parse.c 
-	-rm $(GENERATED_SRC)/ce_parse.c
-
-#$ GenerateDep("layout.cpp","\$(GENERATED_SRC)/layout_default.xml.h");
-
-$(GENERATED_SRC)/version.cpp: ../configure
-	$(PYTHON) version.py $(GENERATED_SRC)
-
-TO_C_CMD=$(PYTHON) to_c_cmd.py < $< > $@
-
-$(GENERATED_SRC)/layout_default.xml.h: layout_default.xml
-	$(TO_C_CMD)
-
-../generated_src/doxygen/resources.cpp: res2cc_cmd.py $(wildcard ../templates/html/*) $(wildcard ../templates/xml) $(wildcard ../templates/latex)
-	$(PYTHON) res2cc_cmd.py ../templates ../generated_src/doxygen/resources.cpp
-
diff --git a/src/lodepng.cpp b/src/lodepng.cpp
index 084f1c8..dbbced5 100644
--- a/src/lodepng.cpp
+++ b/src/lodepng.cpp
@@ -2347,7 +2347,7 @@ unsigned LodePNG_InfoRaw_copy(LodePNG_InfoRaw* dest, const LodePNG_InfoRaw* sour
   LodePNG_InfoRaw_cleanup(dest);
   *dest = *source;
   LodePNG_InfoColor_init(&dest->color);
-  error = LodePNG_InfoColor_copy(&dest->color, &source->color); if(error) return error;
+  error = LodePNG_InfoColor_copy(&dest->color, &source->color);
   return error;
 }
 
diff --git a/src/logos.cpp b/src/logos.cpp
index 9a9e5db..e9e0905 100644
--- a/src/logos.cpp
+++ b/src/logos.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/logos.h b/src/logos.h
index 083d772..95a8a39 100644
--- a/src/logos.h
+++ b/src/logos.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/main.cpp b/src/main.cpp
index b64f700..2061087 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,13 +1,13 @@
 /******************************************************************************
  *
- * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ *
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby 
- * granted. No representations are made about the suitability of this software 
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
  * for any purpose. It is provided "as is" without express or implied warranty.
  * See the GNU General Public License for more details.
  *
@@ -25,7 +25,7 @@
  */
 
 /*! Default main. The idea of separating this from the rest of doxygen,
- *  is to make it possible to write your own main, with a different 
+ *  is to make it possible to write your own main, with a different
  *  generateOutput() function for instance.
  */
 int main(int argc,char **argv)
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index 1fe5409..0cc3959 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/mandocvisitor.h b/src/mandocvisitor.h
index a5906d0..d248c87 100644
--- a/src/mandocvisitor.h
+++ b/src/mandocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/mangen.cpp b/src/mangen.cpp
index b5c2d4d..a88ac26 100644
--- a/src/mangen.cpp
+++ b/src/mangen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -306,6 +306,7 @@ void ManGenerator::docify(const char *str)
     {
       switch(c)
       {
+        case '-':  t << "\\-"; break; // see  bug747780
         case '.':  t << "\\&."; break; // see  bug652277
         case '\\': t << "\\\\"; col++; break;
         case '\n': t << "\n"; col=0; break;
diff --git a/src/mangen.h b/src/mangen.h
index 98ef959..93111cf 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/markdown.cpp b/src/markdown.cpp
index ee66127..6ff8344 100644
--- a/src/markdown.cpp
+++ b/src/markdown.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -56,7 +56,8 @@
 #define isIdChar(i) \
   ((data[i]>='a' && data[i]<='z') || \
    (data[i]>='A' && data[i]<='Z') || \
-   (data[i]>='0' && data[i]<='9'))   \
+   (data[i]>='0' && data[i]<='9') || \
+   (((unsigned char)data[i])>=0x80)) // unicode characters
 
 // is character at position i in data allowed before an emphasis section
 #define isOpenEmphChar(i) \
@@ -588,8 +589,8 @@ static int processHtmlTag(GrowBuf &out,const char *data,int offset,int size)
 static int processEmphasis(GrowBuf &out,const char *data,int offset,int size)
 {
   if ((offset>0 && !isOpenEmphChar(-1)) || // invalid char before * or _
-      (size>1 && data[0]!=data[1] && !isIdChar(1)) || // invalid char after * or _
-      (size>2 && data[0]==data[1] && !isIdChar(2)))   // invalid char after ** or __
+      (size>1 && data[0]!=data[1] && !(isIdChar(1) || data[1]=='[')) || // invalid char after * or _
+      (size>2 && data[0]==data[1] && !(isIdChar(2) || data[2]=='[')))   // invalid char after ** or __
   {
     return 0;
   }
@@ -694,14 +695,26 @@ static int processLink(GrowBuf &out,const char *data,int,int size)
     if (i<size && data[i]=='<') i++;
     linkStart=i;
     nl=0;
-    while (i<size && data[i]!='\'' && data[i]!='"' && data[i]!=')') 
+    int braceCount=1;
+    while (i<size && data[i]!='\'' && data[i]!='"' && braceCount>0)
     {
-      if (data[i]=='\n')
+      if (data[i]=='\n') // unexpected EOL
       {
         nl++;
         if (nl>1) return 0;
       }
-      i++;
+      else if (data[i]=='(')
+      {
+        braceCount++;
+      }
+      else if (data[i]==')')
+      {
+        braceCount--;
+      }
+      if (braceCount>0)
+      {
+        i++;
+      }
     }
     if (i>=size || data[i]=='\n') return 0;
     convertStringFragment(link,data+linkStart,i-linkStart);
@@ -719,7 +732,7 @@ static int processLink(GrowBuf &out,const char *data,int,int size)
       nl=0;
       while (i<size && data[i]!=')')
       {
-        if (data[i]=='\n') 
+        if (data[i]=='\n')
         {
           if (nl>1) return 0;
           nl++;
@@ -888,7 +901,8 @@ static int processLink(GrowBuf &out,const char *data,int,int size)
         out.addStr("\"");
       }
       out.addStr(">");
-      out.addStr(content.simplifyWhiteSpace());
+      content = content.simplifyWhiteSpace();
+      processInline(out,content,content.length());
       out.addStr("</a>");
     }
     else // avoid link to e.g. F[x](y)
@@ -1004,8 +1018,8 @@ static int processSpecialCommand(GrowBuf &out, const char *data, int offset, int
   if (size>1 && data[0]=='\\')
   {
     char c=data[1];
-    if (c=='[' || c==']' || c=='*' || c=='+' || c=='-' ||
-        c=='!' || c=='(' || c==')' || c=='.' || c=='`' || c=='_') 
+    if (c=='[' || c==']' || c=='*' || /* c=='+' || c=='-' || c=='.' || */
+        c=='!' || c=='(' || c==')' || c=='`' || c=='_')
     {
       if (c=='-' && size>3 && data[2]=='-' && data[3]=='-') // \---
       {
@@ -1017,7 +1031,11 @@ static int processSpecialCommand(GrowBuf &out, const char *data, int offset, int
         out.addStr(&data[1],2);
         return 3;
       }
-      out.addStr(&data[1],1);
+      else if (c=='-') // \-
+      {
+        out.addChar(c);
+      }
+      out.addChar(data[1]);
       return 2;
     }
   }
@@ -1365,7 +1383,9 @@ static bool isFencedCodeBlock(const char *data,int size,int refIndent,
   int startTildes=0;
   while (i<size && data[i]==' ') indent++,i++;
   if (indent>=refIndent+4) return FALSE; // part of code block
-  while (i<size && data[i]=='~') startTildes++,i++;
+  char tildaChar='~';
+  if (i<size && data[i]=='`') tildaChar='`';
+  while (i<size && data[i]==tildaChar) startTildes++,i++;
   if (startTildes<3) return FALSE; // not enough tildes
   if (i<size && data[i]=='{') i++; // skip over optional {
   int startLang=i;
@@ -1375,11 +1395,11 @@ static bool isFencedCodeBlock(const char *data,int size,int refIndent,
   start=i;
   while (i<size)
   {
-    if (data[i]=='~')
+    if (data[i]==tildaChar)
     {
       end=i-1;
       int endTildes=0;
-      while (i<size && data[i]=='~') endTildes++,i++; 
+      while (i<size && data[i]==tildaChar) endTildes++,i++;
       while (i<size && data[i]==' ') i++;
       if (i==size || data[i]=='\n') 
       {
@@ -2315,7 +2335,7 @@ QCString processMarkdown(const QCString &fileName,const int lineNr,Entry *e,cons
   // finally process the inline markup (links, emphasis and code spans)
   processInline(out,s,s.length());
   out.addChar(0);
-  Debug::print(Debug::Markdown,0,"======== Markdown =========\n---- input ------- \n%s\n---- output -----\n%s\n---------\n",input.data(),out.get());
+  Debug::print(Debug::Markdown,0,"======== Markdown =========\n---- input ------- \n%s\n---- output -----\n%s\n---------\n",qPrint(input),qPrint(out.get()));
   return out.get();
 }
 
@@ -2348,21 +2368,22 @@ void MarkdownFileParser::parseInput(const char *fileName,
   QCString fn      = QFileInfo(fileName).fileName().utf8();
   static QCString mdfileAsMainPage = Config_getString("USE_MDFILE_AS_MAINPAGE");
   if (id.isEmpty()) id = markdownFileNameToId(fileName);
-  if (title.isEmpty()) title = titleFn;
   if (!mdfileAsMainPage.isEmpty() &&
       (fn==mdfileAsMainPage || // name reference
        QFileInfo(fileName).absFilePath()==
        QFileInfo(mdfileAsMainPage).absFilePath()) // file reference with path
      )
   {
-    docs.prepend("@mainpage\n");
+    docs.prepend("@mainpage "+title+"\n");
   }
   else if (id=="mainpage" || id=="index")
   {
+    if (title.isEmpty()) title = titleFn;
     docs.prepend("@mainpage "+title+"\n");
   }
   else
   {
+    if (title.isEmpty()) title = titleFn;
     docs.prepend("@page "+id+" "+title+"\n");
   }
   int lineNr=1;
diff --git a/src/markdown.h b/src/markdown.h
index 5e35259..e2e3a74 100644
--- a/src/markdown.h
+++ b/src/markdown.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/marshal.h b/src/marshal.h
index 0c61276..206ab04 100644
--- a/src/marshal.h
+++ b/src/marshal.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 9198960..af4a690 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -967,7 +967,7 @@ QCString MemberDef::getOutputFileBase() const
       return baseName;
     }
   }
-  else if (m_impl->nspace)
+  else if (m_impl->nspace && m_impl->nspace->isLinkableInProject())
   {
     baseName=m_impl->nspace->getOutputFileBase();
   }
@@ -1092,7 +1092,8 @@ void MemberDef::_computeLinkableInProject()
     m_isLinkableCached = 1; // in class but class not linkable
     return;
   }
-  if (!m_impl->group && m_impl->nspace && !m_impl->related && !m_impl->nspace->isLinkableInProject())
+  if (!m_impl->group && m_impl->nspace && !m_impl->related && !m_impl->nspace->isLinkableInProject()
+      && (m_impl->fileDef==0 || !m_impl->fileDef->isLinkableInProject()))
   {
     //printf("in a namespace but namespace not linkable!\n");
     m_isLinkableCached = 1; // in namespace but namespace not linkable
@@ -1417,6 +1418,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
   // are explicitly grouped.
   if (!inGroup && m_impl->mtype==MemberType_EnumValue) return;
 
+
   Definition *d=0;
   ASSERT (cd!=0 || nd!=0 || fd!=0 || gd!=0); // member should belong to something
   if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
@@ -1443,19 +1445,21 @@ void MemberDef::writeDeclaration(OutputList &ol,
 
   // If there is no detailed description we need to write the anchor here.
   bool detailsVisible = isDetailedSectionLinkable();
-  if (!detailsVisible)
+  bool writeAnchor = (inGroup || m_impl->group==0) &&     // only write anchors for member that have no details and are
+                     !detailsVisible && !m_impl->annMemb; // rendered inside the group page or are not grouped at all
+  if (writeAnchor)
   {
     QCString doxyArgs=argsString();
-    if (!m_impl->annMemb)
+    QCString doxyName=name();
+    if (!cname.isEmpty())
     {
-      QCString doxyName=name();
-      if (!cname.isEmpty())
-      {
-        doxyName.prepend(cdname+getLanguageSpecificSeparator(getLanguage()));
-      }
-      ol.startDoxyAnchor(cfname,cname,anchor(),doxyName,doxyArgs);
+      doxyName.prepend(cdname+getLanguageSpecificSeparator(getLanguage()));
     }
+    ol.startDoxyAnchor(cfname,cname,anchor(),doxyName,doxyArgs);
+  }
 
+  if (!detailsVisible)
+  {
     ol.pushGeneratorState();
     ol.disable(OutputGenerator::Man);
     ol.disable(OutputGenerator::Latex);
@@ -1512,12 +1516,17 @@ void MemberDef::writeDeclaration(OutputList &ol,
         ol.writeNonBreakableSpace(3);
       }
       QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace();
-      //printf(">>>>>> indDepth=%d ltype=`%s' varName=`%s'\n",indDepth,ltype.data(),varName.data());
+      //printf(">>>>>> ltype=`%s' varName=`%s'\n",ltype.data(),varName.data());
       ol.docify("}");
       if (varName.isEmpty() && (name().isEmpty() || name().at(0)=='@'))
       {
         ol.docify(";");
       }
+      else if (!varName.isEmpty() && (varName.at(0)=='*' || varName.at(0)=='&'))
+      {
+        ol.docify(" ");
+        ol.docify(varName);
+      }
       endAnonScopeNeeded=TRUE;
     }
     else
@@ -1774,7 +1783,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
       ol.endTypewriter();
   }
 
-  if (!detailsVisible && !m_impl->annMemb)
+  if (writeAnchor)
   {
     ol.endDoxyAnchor(cfname,anchor());
   }
@@ -1808,7 +1817,10 @@ void MemberDef::writeDeclaration(OutputList &ol,
         ol.disableAllBut(OutputGenerator::Html);
         //ol.endEmphasis();
         ol.docify(" ");
-        if (separateMemberPages || (m_impl->group!=0 && gd==0)) // forward link to the page or group
+        if (separateMemberPages ||
+            (m_impl->group!=0 && gd==0) ||
+            (m_impl->nspace!=0 && nd==0)
+           ) // forward link to the page or group or namespace
         {
           ol.startTextLink(getOutputFileBase(),anchor());
         }
@@ -1911,7 +1923,7 @@ bool MemberDef::isDetailedSectionVisible(bool inGroup,bool inFile) const
   static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS");
   static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS");
   bool groupFilter = getGroupDef()==0 || inGroup || separateMemPages;
-  bool fileFilter  = getNamespaceDef()==0 || !inFile;
+  bool fileFilter  = getNamespaceDef()==0 || !getNamespaceDef()->isLinkable() || !inFile;
   bool simpleFilter = (hasBriefDescription() || !hideUndocMembers) && inlineSimpleStructs &&
                       getClassDef()!=0 && getClassDef()->isSimple();
 
@@ -2043,7 +2055,7 @@ void MemberDef::getLabels(QStrList &sl,Definition *container) const
 void MemberDef::_writeCallGraph(OutputList &ol)
 {
   // write call graph
-  if ((m_impl->hasCallGraph || Config_getBool("CALL_GRAPH"))
+  if (m_impl->hasCallGraph
       && (isFunction() || isSlot() || isSignal()) && Config_getBool("HAVE_DOT")
      )
   {
@@ -2068,7 +2080,7 @@ void MemberDef::_writeCallGraph(OutputList &ol)
 
 void MemberDef::_writeCallerGraph(OutputList &ol)
 {
-  if ((m_impl->hasCallerGraph || Config_getBool("CALLER_GRAPH"))
+  if (m_impl->hasCallerGraph
       && (isFunction() || isSlot() || isSignal()) && Config_getBool("HAVE_DOT")
      )
   {
@@ -2258,7 +2270,7 @@ void MemberDef::_writeCategoryRelation(OutputList &ol)
         text = theTranslator->trExtendsClass();
         name = m_impl->classDef->categoryOf()->displayName();
       }
-      i=text.find("@1");
+      i=text.find("@0");
       if (i!=-1)
       {
         MemberDef *md = m_impl->categoryRelation;
@@ -2492,7 +2504,7 @@ void MemberDef::_writeGroupInclude(OutputList &ol,bool inGroup)
 
     if (isIDLorJava) ol.docify("\""); else ol.docify("<");
 
-    if (fd && fd->isLinkable())
+    if (fd->isLinkable())
     {
       ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),fd->anchor(),nm);
     }
@@ -2588,6 +2600,10 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
       ldef=ldef.mid(2);
     }
   }
+  else if (isFunction())
+  {
+    title+=argsString();
+  }
   int i=0,l;
   static QRegExp r("@[0-9]+");
 
@@ -2988,13 +3004,13 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
   {
     if (!hasDocumentedParams())
     {
-      warn_doc_error(docFile(),docLine(),
+      warn_doc_error(getDefFileName(),getDefLine(),
           "parameters of member %s are not (all) documented",
           qPrint(qualifiedName()));
     }
     if (!hasDocumentedReturnType() && isFunction() && hasDocumentation())
     {
-      warn_doc_error(docFile(),docLine(),
+      warn_doc_error(getDefFileName(),getDefLine(),
           "return type of member %s is not documented",
           qPrint(qualifiedName()));
     }
@@ -3203,22 +3219,27 @@ void MemberDef::warnIfUndocumented()
   if (cd)
     t="class", d=cd;
   else if (nd)
-    t="namespace", d=nd;
+  {
+    d=nd;
+    if (d->getLanguage() == SrcLangExt_Fortran)
+      t="module";
+    else
+      t="namespace";
+  }
   else if (gd)
     t="group", d=gd;
   else
     t="file", d=fd;
   static bool extractAll = Config_getBool("EXTRACT_ALL");
 
-  //printf("warnIfUndoc: d->isLinkable()=%d isLinkable()=%d "
-  //       "isDocumentedFriendClass()=%d name()=%s prot=%d isReference=%d\n",
-  //       d->isLinkable(),isLinkable(),isDocumentedFriendClass(),
-  //       name().data(),m_impl->prot,isReference());
+  //printf("%s:warnIfUndoc: hasUserDocs=%d isFriendClass=%d protection=%d isRef=%d isDel=%d\n",
+  //    name().data(),
+  //    hasUserDocumentation(),isFriendClass(),protectionLevelVisible(m_impl->prot),isReference(),isDeleted());
   if ((!hasUserDocumentation() && !extractAll) &&
       !isFriendClass() &&
       name().find('@')==-1 && d && d->name().find('@')==-1 &&
       protectionLevelVisible(m_impl->prot) &&
-      !isReference()
+      !isReference() && !isDeleted()
      )
   {
     warn_undoc(getDefFileName(),getDefLine(),"Member %s%s (%s) of %s %s is not documented.",
@@ -3245,11 +3266,16 @@ bool MemberDef::isDocumentedFriendClass() const
          (fcd=getClass(baseName)) && fcd->isLinkable());
 }
 
+bool MemberDef::isDeleted() const
+{
+  return m_impl->defArgList && m_impl->defArgList->isDeleted;
+}
+
 bool MemberDef::hasDocumentation() const
 {
   return Definition::hasDocumentation() ||
          (m_impl->mtype==MemberType_Enumeration && m_impl->docEnumValues) ||  // has enum values
-         (m_impl->defArgList!=0 && m_impl->defArgList->hasDocumentation()); // has doc arguments
+         (m_impl->defArgList!=0 && m_impl->defArgList->hasDocumentation());   // has doc arguments
 }
 
 #if 0
@@ -4463,6 +4489,11 @@ MemberDef *MemberDef::getEnumScope() const
   return m_impl->enumScope;
 }
 
+bool MemberDef::livesInsideEnum() const
+{
+  return m_impl->livesInsideEnum;
+}
+
 MemberList *MemberDef::enumFieldList() const
 {
   return m_impl->enumFields;
diff --git a/src/memberdef.h b/src/memberdef.h
index b68149f..19a37ea 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -176,6 +176,7 @@ class MemberDef : public Definition
     bool protectionVisible() const;
     bool showInCallGraph() const;
     bool isStrongEnumValue() const;
+    bool livesInsideEnum() const;
 
     // derived getters
     bool isFriendToHide() const;
@@ -188,6 +189,7 @@ class MemberDef : public Definition
     bool isLinkable() const;
     bool hasDocumentation() const;  // overrides hasDocumentation in definition.h
     //bool hasUserDocumentation() const; // overrides hasUserDocumentation
+    bool isDeleted() const;
     bool isBriefSectionVisible() const;
     bool isDetailedSectionVisible(bool inGroup,bool inFile) const;
     bool isDetailedSectionLinkable() const;
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index d073173..cbda94d 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -42,7 +42,7 @@ MemberGroup::MemberGroup()
 }
 
 MemberGroup::MemberGroup(Definition *parent,
-      int id,const char *hdr,const char *d,const char *docFile) 
+      int id,const char *hdr,const char *d,const char *docFile,int docLine)
 {
   //printf("New member group id=%d header=%s desc=%s\n",id,hdr,d);
   memberList      = new MemberList(MemberListType_memberGroup);
@@ -56,6 +56,7 @@ MemberGroup::MemberGroup(Definition *parent,
   m_numDocMembers = -1;
   m_parent        = parent;
   m_docFile       = docFile;
+  m_docLine       = docLine;
   m_xrefListItems = 0;
   //printf("Member group docs=`%s'\n",doc.data());
 }
@@ -76,7 +77,7 @@ void MemberGroup::insertMember(MemberDef *md)
   //       md,md->name().data());
 
   MemberDef *firstMd = memberList->getFirst();
-  if (inSameSection && memberList->count()>0 && 
+  if (inSameSection && firstMd &&
       firstMd->getSectionList(m_parent)!=md->getSectionList(m_parent))
   {
     inSameSection=FALSE;
diff --git a/src/membergroup.h b/src/membergroup.h
index daf8ccb..c42efc9 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -42,7 +42,7 @@ class MemberGroup
   public:
     MemberGroup();
     MemberGroup(Definition *parent,int id,const char *header,
-                const char *docs,const char *docFile);
+                const char *docs,const char *docFile,int docLine);
    ~MemberGroup();
     QCString header() const { return grpHeader; }
     int groupId() const { return grpId; }
@@ -89,6 +89,9 @@ class MemberGroup
     Definition *parent() const { return m_parent; }
     QCString anchor() const;
 
+    QCString docFile() const { return m_docFile; }
+    int docLine() const { return m_docLine; }
+
     void marshal(StorageIntf *s);
     void unmarshal(StorageIntf *s);
 
@@ -105,6 +108,7 @@ class MemberGroup
     int  m_numDocMembers;
     Definition *m_parent;
     QCString m_docFile;
+    int m_docLine;
     QList<ListItemInfo> *m_xrefListItems;
 };
 
@@ -137,12 +141,13 @@ class MemberGroupSDict : public SIntDict<MemberGroup>
 /** Data collected for a member group */
 struct MemberGroupInfo
 {
-  MemberGroupInfo() : m_sli(0) {}
+  MemberGroupInfo() : m_sli(0), docLine(-1) {}
  ~MemberGroupInfo() { delete m_sli; m_sli=0; }
   void setRefItems(const QList<ListItemInfo> *sli);
   QCString header;
   QCString doc;
   QCString docFile;
+  int docLine;
   QCString compoundName;
   QList<ListItemInfo> *m_sli;
 };
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index 95726a0..f58ade4 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -324,6 +324,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
                       )
 {
   //printf("----- writePlainDeclaration() ----\n");
+  static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS");
   countDecMembers();
   if (numDecMembers()==0) 
   {
@@ -387,7 +388,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
             }
             // if this is an anonymous enum and there are variables of this
             // enum type (i.e. enumVars>0), then we do not show the enum here.
-            if (enumVars==0) // show enum here
+            if (enumVars==0 && !hideUndocMembers) // show enum here
             {
               //printf("Enum!!\n");
               if (first)
@@ -409,7 +410,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
               {
                 ol.endDoxyAnchor(md->getOutputFileBase(),md->anchor());
               }
-              ol.endMemberItem();
               if (!md->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
               {
                 DocRoot *rootNode = validatingParseDoc(
@@ -436,6 +436,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
                 }
                 delete rootNode;
               }
+              ol.endMemberItem();
               ol.endMemberDeclaration(md->anchor(),inheritId);
             }
             md->warnIfUndocumented();
@@ -627,7 +628,7 @@ void MemberList::writeDeclarations(OutputList &ol,
           {
             //printf("Member group has docs!\n");
             ol.startMemberGroupDocs();
-            ol.generateDoc("[generated]",-1,ctx,0,mg->documentation()+"\n",FALSE,FALSE);
+            ol.generateDoc(mg->docFile(),mg->docLine(),ctx,0,mg->documentation()+"\n",FALSE,FALSE);
             ol.endMemberGroupDocs();
           }
           ol.startMemberGroup();
@@ -681,7 +682,7 @@ void MemberList::writeDocumentation(OutputList &ol,
   }
   if (memberGroupList)
   {
-    //printf("MemberList::writeDocumentation()  --  member groups\n");
+    printf("MemberList::writeDocumentation()  --  member groups %d\n",memberGroupList->count());
     MemberGroupListIterator mgli(*memberGroupList);
     MemberGroup *mg;
     for (;(mg=mgli.current());++mgli)
@@ -968,6 +969,15 @@ void MemberList::writeTagFile(FTextStream &tagFile)
     if (md->getLanguage()!=SrcLangExt_VHDL)
     {
       md->writeTagFile(tagFile);
+      if (md->memberType()==MemberType_Enumeration && md->enumFieldList() && !md->isStrong())
+      {
+        MemberListIterator vmli(*md->enumFieldList());
+        MemberDef *vmd;
+        for ( ; (vmd=vmli.current()) ; ++vmli)
+        {
+          vmd->writeTagFile(tagFile);
+        }
+      }
     }
     else
     {
diff --git a/src/memberlist.h b/src/memberlist.h
index 4cccadc..c293d22 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/membername.cpp b/src/membername.cpp
index a2f7296..a5248c3 100644
--- a/src/membername.cpp
+++ b/src/membername.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/membername.h b/src/membername.h
index 7a2fdc5..143dca1 100644
--- a/src/membername.h
+++ b/src/membername.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/message.cpp b/src/message.cpp
index 4156720..c61de68 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -69,10 +69,10 @@ void initWarningFormat()
 //  {
 //    warnFormatOrder = 6;
 //  }
-//  outputFormat = 
+//  outputFormat =
 //      substitute(
 //        substitute(
-//          substitute( 
+//          substitute(
 //            Config_getString("WARN_FORMAT"),
 //           "$file","%s"
 //          ),
@@ -96,6 +96,11 @@ void initWarningFormat()
   {
     warnFile = stderr;
   }
+
+  if (Config_getBool("WARN_AS_ERROR"))
+  {
+    warning_str = error_str;
+  }
 }
 
 
@@ -130,28 +135,38 @@ static void format_warn(const char *file,int line,const char *text)
     }
   }
   // substitute markers by actual values
-  QCString msgText = 
+  bool warnAsError = Config_getBool("WARN_AS_ERROR");
+  QCString msgText =
       substitute(
         substitute(
           substitute(
-            substitute( 
+            substitute(
               outputFormat,
               "$file",fileSubst
             ),
-            "$text",textSubst
+            "$line",lineSubst
           ),
-          "$line",lineSubst
+          "$version",versionSubst
         ),
-        "$version",versionSubst
-      )+'\n';
+        "$text",textSubst
+      );
+  if (warnAsError)
+  {
+    msgText += " (warning treated as error, aborting now)";
+  }
+  msgText += '\n';
 
   // print resulting message
   fwrite(msgText.data(),1,msgText.length(),warnFile);
+  if (warnAsError)
+  {
+    exit(1);
+  }
 }
 
 static void do_warn(const char *tag, const char *file, int line, const char *prefix, const char *fmt, va_list args)
 {
-  if (!Config_getBool(tag)) return; // warning type disabled
+  if (tag && !Config_getBool(tag)) return; // warning type disabled
   const int bufSize = 40960;
   char text[bufSize];
   int l=0;
@@ -170,7 +185,7 @@ void warn(const char *file,int line,const char *fmt, ...)
   va_list args;
   va_start(args, fmt);
   do_warn("WARNINGS", file, line, warning_str, fmt, args);
-  va_end(args); 
+  va_end(args);
 }
 
 void va_warn(const char *file,int line,const char *fmt,va_list args)
@@ -191,7 +206,7 @@ void warn_undoc(const char *file,int line,const char *fmt, ...)
   do_warn("WARN_IF_UNDOCUMENTED", file, line, warning_str, fmt, args);
   va_end(args);
 }
-  
+
 void warn_doc_error(const char *file,int line,const char *fmt, ...)
 {
   va_list args;
@@ -205,7 +220,7 @@ void warn_uncond(const char *fmt, ...)
   va_list args;
   va_start(args, fmt);
   vfprintf(warnFile, (QCString(warning_str) + fmt).data(), args);
-  va_end(args); 
+  va_end(args);
 }
 
 void err(const char *fmt, ...)
@@ -213,7 +228,15 @@ void err(const char *fmt, ...)
   va_list args;
   va_start(args, fmt);
   vfprintf(warnFile, (QCString(error_str) + fmt).data(), args);
-  va_end(args); 
+  va_end(args);
+}
+
+extern void err_full(const char *file,int line,const char *fmt, ...)
+{
+  va_list args;
+  va_start(args, fmt);
+  do_warn(NULL, file, line, error_str, fmt, args);
+  va_end(args);
 }
 
 void printlex(int dbg, bool enter, const char *lexName, const char *fileName)
@@ -230,15 +253,15 @@ void printlex(int dbg, bool enter, const char *lexName, const char *fileName)
   if (dbg)
   {
     if (fileName)
-      fprintf(stderr,"--%s lexical analyzer: %s (for: %s)\n",enter_txt, lexName, fileName);
+      fprintf(stderr,"--%s lexical analyzer: %s (for: %s)\n",enter_txt, qPrint(lexName), qPrint(fileName));
     else
-      fprintf(stderr,"--%s lexical analyzer: %s\n",enter_txt, lexName);
+      fprintf(stderr,"--%s lexical analyzer: %s\n",enter_txt, qPrint(lexName));
   }
   else
   {
     if (fileName)
-      Debug::print(Debug::Lex,0,"%s lexical analyzer: %s (for: %s)\n",enter_txt_uc, lexName, fileName);
+      Debug::print(Debug::Lex,0,"%s lexical analyzer: %s (for: %s)\n",enter_txt_uc, qPrint(lexName), qPrint(fileName));
     else
-      Debug::print(Debug::Lex,0,"%s lexical analyzer: %s\n",enter_txt_uc, lexName);
+      Debug::print(Debug::Lex,0,"%s lexical analyzer: %s\n",enter_txt_uc, qPrint(lexName));
   }
 }
diff --git a/src/message.h b/src/message.h
index 481e8bf..3b1a294 100644
--- a/src/message.h
+++ b/src/message.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -29,6 +29,7 @@ extern void warn_undoc(const char *file,int line,const char *fmt, ...);
 extern void warn_doc_error(const char *file,int line,const char *fmt, ...);
 extern void warn_uncond(const char *fmt, ...);
 extern void err(const char *fmt, ...);
+extern void err_full(const char *file,int line,const char *fmt, ...);
 void initWarningFormat();
 
 extern void printlex(int dbg, bool enter, const char *lexName, const char *fileName);
diff --git a/src/msc.cpp b/src/msc.cpp
index 3dd8841..7f3c641 100644
--- a/src/msc.cpp
+++ b/src/msc.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/msc.h b/src/msc.h
index 5d71ebd..58fada5 100644
--- a/src/msc.h
+++ b/src/msc.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index f7c8123..948c86a 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -46,8 +46,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl,int dc,
   }
   else
   {
-    fileName="namespace";
-    fileName+=name;
+    setFileName(name);
   }
   classSDict = new ClassSDict(17);
   namespaceSDict = new NamespaceSDict(17);
@@ -89,6 +88,12 @@ NamespaceDef::~NamespaceDef()
   delete m_allMembersDict;
 }
 
+void NamespaceDef::setFileName(const QCString &fn)
+{
+  fileName="namespace";
+  fileName+=fn;
+}
+
 void NamespaceDef::distributeMemberGroupDocumentation()
 {
   MemberGroupSDict::Iterator mgli(*memberGroupSDict);
@@ -979,7 +984,7 @@ void NamespaceSDict::writeDeclaration(OutputList &ol,const char *title,
   ol.startMemberList();
   for (ni.toFirst();(nd=ni.current());++ni)
   {
-    if (nd->isLinkable())
+    if (nd->isLinkable() && nd->hasDocumentation())
     {
       SrcLangExt lang = nd->getLanguage();
       if (lang==SrcLangExt_IDL && (isConstantGroup != nd->isConstantGroup()))
@@ -1136,7 +1141,7 @@ QCString NamespaceDef::title() const
 {
   SrcLangExt lang = getLanguage();
   QCString pageTitle;
-  if (lang==SrcLangExt_Java || lang==SrcLangExt_CSharp)
+  if (lang==SrcLangExt_Java)
   {
     pageTitle = theTranslator->trPackage(displayName());
   }
@@ -1160,10 +1165,14 @@ QCString NamespaceDef::title() const
 QCString NamespaceDef::compoundTypeString() const
 {
   SrcLangExt lang = getLanguage();
-  if (lang==SrcLangExt_Java || lang==SrcLangExt_CSharp)
+  if (lang==SrcLangExt_Java)
   {
     return "package";
   }
+  else if(lang==SrcLangExt_CSharp)
+  {
+	return "namespace";
+  }
   else if (lang==SrcLangExt_Fortran)
   {
     return "module";
@@ -1184,7 +1193,7 @@ QCString NamespaceDef::compoundTypeString() const
     }
     else
     {
-      err("Internal inconsistency: namespace in IDL not module, library or constant group\n");
+      err_full(getDefFileName(),getDefLine(),"Internal inconsistency: namespace in IDL not module, library or constant group");
     }
   }
   return "";
diff --git a/src/namespacedef.h b/src/namespacedef.h
index 800f639..9b734eb 100644
--- a/src/namespacedef.h
+++ b/src/namespacedef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -83,6 +83,7 @@ class NamespaceDef : public Definition
     virtual Definition *findInnerCompound(const char *name);
     void addInnerCompound(Definition *d);
     void addListReferences();
+    void setFileName(const QCString &fn);
 
     bool subGrouping() const { return m_subGrouping; }
     
diff --git a/src/objcache.cpp b/src/objcache.cpp
index a59c67b..a5180d6 100644
--- a/src/objcache.cpp
+++ b/src/objcache.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/objcache.h b/src/objcache.h
index 6e6e95d..224b34b 100644
--- a/src/objcache.h
+++ b/src/objcache.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/outputgen.cpp b/src/outputgen.cpp
index ee9bc48..53d2d7f 100644
--- a/src/outputgen.cpp
+++ b/src/outputgen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -44,11 +44,6 @@ void OutputGenerator::startPlainFile(const char *name)
   //printf("startPlainFile(%s)\n",name);
   fileName=dir+"/"+name;
   file = new QFile(fileName);
-  if (!file)
-  {
-    err("Could not create file object for %s\n",fileName.data());
-    exit(1);
-  }
   if (!file->open(IO_WriteOnly))
   {
     err("Could not open file %s for writing\n",fileName.data());
diff --git a/src/outputgen.h b/src/outputgen.h
index aaf1ba7..c3099df 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/outputlist.cpp b/src/outputlist.cpp
index 754ee7c..79330d8 100644
--- a/src/outputlist.cpp
+++ b/src/outputlist.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/outputlist.h b/src/outputlist.h
index f578d64..4abb100 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/pagedef.cpp b/src/pagedef.cpp
index 919a2d7..20ace23 100644
--- a/src/pagedef.cpp
+++ b/src/pagedef.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -34,6 +34,8 @@ PageDef::PageDef(const char *f,int l,const char *n,
   m_subPageDict = new PageSDict(7);
   m_pageScope = 0;
   m_nestingLevel = 0;
+  static bool shortNames = Config_getBool("SHORT_NAMES");
+  m_fileName = shortNames ? convertNameToFile(n) : QCString(n);
   m_showToc = FALSE;
 }
 
@@ -61,20 +63,11 @@ QCString PageDef::getOutputFileBase() const
     return m_fileName; 
 }
 
-void PageDef::setFileName(const char *name,bool dontEscape) 
-{ 
-  static bool shortNames = Config_getBool("SHORT_NAMES");
-  if (shortNames && !dontEscape)
-  {
-    m_fileName = convertNameToFile(name);
-  }
-  else
-  {
-    m_fileName = name; 
-  }
+void PageDef::setFileName(const char *name)
+{
+  m_fileName = name;
 }
 
-
 void PageDef::addInnerCompound(Definition *def)
 {
   if (def->definitionType()==Definition::TypePage)
diff --git a/src/pagedef.h b/src/pagedef.h
index 694d081..41b84cb 100644
--- a/src/pagedef.h
+++ b/src/pagedef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -33,7 +33,7 @@ class PageDef : public Definition
    ~PageDef();
 
     // setters
-    void setFileName(const char *name,bool dontEscape);
+    void setFileName(const char *name);
     void setShowToc(bool b);
 
     // getters
diff --git a/src/parserintf.h b/src/parserintf.h
index 989fdcf..cc95ea4 100644
--- a/src/parserintf.h
+++ b/src/parserintf.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index c903d3d..6f9eb64 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -3,7 +3,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  * Authors: Dimitri van Heesch, Miguel Lobo.
  *
  * Permission to use, copy, modify, and distribute this software and its
diff --git a/src/perlmodgen.h b/src/perlmodgen.h
index f908959..92bb791 100644
--- a/src/perlmodgen.h
+++ b/src/perlmodgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/plantuml.cpp b/src/plantuml.cpp
index 87e70e1..7d28688 100644
--- a/src/plantuml.cpp
+++ b/src/plantuml.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -43,7 +43,7 @@ QCString writePlantUMLSource(const QCString &outDir,const QCString &fileName,con
   {
     err("Could not open file %s for writing\n",baseName.data());
   }
-  QCString text = "@startuml\n";
+  QCString text = "@startuml";
   text+=content;
   text+="@enduml\n";
   file.writeBlock( text, text.length() );
@@ -96,12 +96,12 @@ void generatePlantUMLOutput(const char *baseName,const char *outDir,PlantUMLOutp
   pumlArgs+=" \"";
   pumlArgs+=baseName;
   pumlArgs+=".pu\" ";
-  pumlArgs+="-charset " + Config_getString("INPUT_ENCODING") + " ";
+  pumlArgs+="-charset UTF-8 ";
   int exitCode;
   //printf("*** running: %s %s outDir:%s %s\n",pumlExe.data(),pumlArgs.data(),outDir,outFile);
   msg("Running PlantUML on generated file %s.pu\n",baseName);
   portable_sysTimerStart();
-  if ((exitCode=portable_system(pumlExe,pumlArgs,FALSE))!=0)
+  if ((exitCode=portable_system(pumlExe,pumlArgs,TRUE))!=0)
   {
     err("Problems running PlantUML. Verify that the command 'java -jar \"%splantuml.jar\" -h' works from the command line. Exit code: %d\n",
         plantumlJarPath.data(),exitCode);
diff --git a/src/plantuml.h b/src/plantuml.h
index 27626d1..54ab8a2 100644
--- a/src/plantuml.h
+++ b/src/plantuml.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/portable.cpp b/src/portable.cpp
index ff29303..5886793 100644
--- a/src/portable.cpp
+++ b/src/portable.cpp
@@ -45,7 +45,7 @@ int portable_system(const char *command,const char *args,bool commandHasConsole)
   fullCmd += " ";
   fullCmd += args;
 #ifndef NODEBUG
-  Debug::print(Debug::ExtCmd,0,"Executing external command `%s`\n",fullCmd.data());
+  Debug::print(Debug::ExtCmd,0,"Executing external command `%s`\n",qPrint(fullCmd));
 #endif
 
 #if !defined(_WIN32) || defined(__CYGWIN__)
diff --git a/src/portable_c.c b/src/portable_c.c
index 944c996..3a79741 100644
--- a/src/portable_c.c
+++ b/src/portable_c.c
@@ -1,9 +1,13 @@
 #if (defined(__APPLE__) || defined(macintosh)) && !defined(DMG_BUILD)
+#include <AvailabilityMacros.h>
+// this hack doesn't seem to be needed on El Captain (10.11)
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11
 // define this before including iconv.h to avoid a mapping of
 // iconv_open and friends to libicon_open (done by mac ports),
 // while the symbols without 'lib' are linked from /usr/lib/libiconv
 #define LIBICONV_PLUG
 #endif
+#endif
 #include <iconv.h>
 
 // These functions are implemented in a C file, because there are different
diff --git a/src/pre.h b/src/pre.h
index b624be5..190673f 100644
--- a/src/pre.h
+++ b/src/pre.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/pre.l b/src/pre.l
index 9e88b0d..18f3b1d 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -14,7 +14,7 @@
  * input used in their production; they are not affected by this license.
  *
  */
-
+%option never-interactive
 %{
 
 /*
@@ -54,12 +54,12 @@
 #include "memberdef.h"
 #include "membername.h"
 
+#define YY_NO_UNISTD_H 1
+
 // Toggle for some debugging info
 //#define DBG_CTX(x) fprintf x
 #define DBG_CTX(x) do { } while(0)
 
-#define YY_NEVER_INTERACTIVE 1
-
 struct CondCtx
 {
   CondCtx(int line,QCString id,bool b) 
@@ -1618,11 +1618,11 @@ static void readIncludeFile(const QCString &inc)
       {
 	if (alreadyIncluded)
 	{
-          Debug::print(Debug::Preprocessor,0,"#include %s: already included! skipping...\n",incFileName.data());
+          Debug::print(Debug::Preprocessor,0,"#include %s: already included! skipping...\n",qPrint(incFileName));
 	}
 	else
 	{
-          Debug::print(Debug::Preprocessor,0,"#include %s: not found! skipping...\n",incFileName.data());
+          Debug::print(Debug::Preprocessor,0,"#include %s: not found! skipping...\n",qPrint(incFileName));
 	}
         //printf("error: include file %s not found\n",yytext);
       }
@@ -1659,6 +1659,7 @@ static void endCondSection()
   {
     CondCtx *ctx = g_condStack.pop();
     g_skip=ctx->skip;
+    delete ctx;
   }
   //printf("endCondSection: skip=%d stack=%d\n",g_skip,g_condStack.count());
 }
@@ -1667,7 +1668,7 @@ static void forceEndCondSection()
 {
   while (!g_condStack.isEmpty())
   {
-    g_condStack.pop();
+    delete g_condStack.pop();
   }
   g_skip=FALSE;
 }
@@ -2452,7 +2453,20 @@ CHARLIT   (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
 <SkipCComment>[\\@][\\@]("f{"|"f$"|"f[") {
   					  outputArray(yytext,(int)yyleng);
   					}
-<SkipCComment>"~~~"[~]*                 {
+<SkipCComment>^({B}*"*"+)?{B}{0,3}"~~~"[~]*   {
+                                          static bool markdownSupport = Config_getBool("MARKDOWN_SUPPORT");
+                                          if (!markdownSupport)
+                                          {
+                                            REJECT;
+                                          }
+                                          else
+                                          {
+  					    outputArray(yytext,(int)yyleng);
+                                            g_fenceSize=yyleng;
+                                            BEGIN(SkipVerbatim);
+                                          }
+                                        }
+<SkipCComment>^({B}*"*"+)?{B}{0,3}"```"[`]*            {
                                           static bool markdownSupport = Config_getBool("MARKDOWN_SUPPORT");
                                           if (!markdownSupport)
                                           {
@@ -2599,7 +2613,14 @@ CHARLIT   (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
 					    BEGIN(SkipCComment);
 					  }
   					}
-<SkipVerbatim>"~~~"[~]*                 {
+<SkipVerbatim>^({B}*"*"+)?{B}{0,3}"~~~"[~]*                 {
+  					  outputArray(yytext,(int)yyleng);
+                                          if (g_fenceSize==yyleng)
+                                          {
+                                            BEGIN(SkipCComment);
+                                          }
+                                        }
+<SkipVerbatim>^({B}*"*"+)?{B}{0,3}"```"[`]*                 {
   					  outputArray(yytext,(int)yyleng);
                                           if (g_fenceSize==yyleng)
                                           {
@@ -2609,7 +2630,7 @@ CHARLIT   (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
 <SkipVerbatim>"*/"|"/*"			{
   					  outputArray(yytext,(int)yyleng);
   					}
-<SkipCComment,SkipVerbatim>[^*\\@\x06~\n\/]+ {
+<SkipCComment,SkipVerbatim>[^*\\@\x06~`\n\/]+ {
   					  outputArray(yytext,(int)yyleng);
   					}
 <SkipCComment,SkipVerbatim>\n		{ 
@@ -2990,8 +3011,8 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output)
   g_includeStack.clear();
   g_expandedDict->setAutoDelete(FALSE);
   g_expandedDict->clear();
-  g_condStack.clear();
   g_condStack.setAutoDelete(TRUE);
+  g_condStack.clear();
   //g_fileDefineDict->clear();
 
   setFileName(fileName);
@@ -3141,6 +3162,7 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output)
     if (ctx->sectionId!=" ") sectionInfo.sprintf(" with label %s ",ctx->sectionId.data()); 
     warn(fileName,ctx->lineNr,"Conditional section%sdoes not have "
 	"a corresponding \\endcond command within this file.",sectionInfo.data());
+    delete ctx;
   }
   // make sure we don't extend a \cond with missing \endcond over multiple files (see bug 624829)
   forceEndCondSection();
@@ -3179,7 +3201,7 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output)
       Define *def;
       for (di.toFirst();(def=di.current());++di)
       {
-        Debug::print(Debug::Preprocessor,0,"%s ",def->name.data());
+        Debug::print(Debug::Preprocessor,0,"%s ",qPrint(def->name));
       }
       Debug::print(Debug::Preprocessor,0,"\n---------\n");
     }
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index 43b6bde..b86670a 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -189,7 +189,7 @@ class PrintDocVisitor : public DocVisitor
     void visit(DocFormula *f)
     {
       indent_leaf();
-      printf("<formula name=%s test=%s/>",f->name().data(),f->text().data());
+      printf("<formula name=%s text=%s/>",f->name().data(),f->text().data());
     }
     void visit(DocIndexEntry *i)
     {
@@ -536,10 +536,11 @@ class PrintDocVisitor : public DocVisitor
       indent_pre();
       printf("<ref ref=\"%s\" file=\"%s\" "
              "anchor=\"%s\" targetTitle=\"%s\""
-             " hasLinkText=\"%s\" refToAnchor=\"%s\" refToSection=\"%s\">\n",
+             " hasLinkText=\"%s\" refToAnchor=\"%s\" refToSection=\"%s\" refToTable=\"%s\">\n",
              ref->ref().data(),ref->file().data(),ref->anchor().data(),
              ref->targetTitle().data(),ref->hasLinkText()?"yes":"no",
-             ref->refToAnchor()?"yes":"no", ref->refToSection()?"yes":"no");
+             ref->refToAnchor()?"yes":"no", ref->refToSection()?"yes":"no",
+             ref->refToTable()?"yes":"no");
     }
     void visitPost(DocRef *) 
     {
diff --git a/src/pycode.h b/src/pycode.h
index 9b0dacb..9817c39 100644
--- a/src/pycode.h
+++ b/src/pycode.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/pycode.l b/src/pycode.l
index 4f9e396..b8ca5ed 100644
--- a/src/pycode.l
+++ b/src/pycode.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -21,7 +21,7 @@
  *  taught by Peter H. Froehlich <phf at acm.org>.
  */
 
-
+%option never-interactive
 %{
 
 #include <stdio.h>
@@ -48,8 +48,8 @@
 //#define DBG_CTX(x) fprintf x
 #define DBG_CTX(x) do { } while(0)
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 static ClassSDict    g_codeClassSDict(17);
 static QCString      g_curClassName;
@@ -90,6 +90,9 @@ static int           g_stringContext;
 
 static QValueStack<uint> g_indents;  //!< Tracks indentation levels for scoping in python
 
+static QCString      g_docBlock;     //!< contents of all lines of a documentation block
+static bool          g_endComment;
+
 static void endFontClass();
 static void adjustScopesAndSuites(unsigned indentLength);
 
@@ -361,11 +364,13 @@ static void startCodeLine()
     Definition *d   = g_sourceFileDef->getSourceDefinition(g_yyLineNr);
     //printf("startCodeLine %d d=%p\n",g_yyLineNr,d);
     //g_code->startLineNumber();
+
     if (!g_includeCodeFragment && d && d->isLinkableInProject())
     {
       g_currentDefinition = d;
       g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr);
       //g_insideBody = FALSE;
+      g_endComment = FALSE;
       g_searchingForBody = TRUE;
       g_realScope = d->name().copy();
       g_classScope = d->name().copy();
@@ -467,6 +472,26 @@ static void writeMultiLineCodeLink(CodeOutputInterface &ol,
   }
 }
 
+static void startFontClass(const char *s)
+{
+  // if font class is already set don't stop and start it.
+  // strcmp does not like null pointers as input.
+  if (!g_currentFontClass || !s || strcmp(g_currentFontClass,s))
+  {
+    endFontClass();
+    g_code->startFontClass(s);
+    g_currentFontClass=s;
+  }
+}
+
+static void endFontClass()
+{
+  if (g_currentFontClass)
+  {
+    g_code->endFontClass();
+    g_currentFontClass=0;
+  }
+}
 
 static void codifyLines(char *text)
 {
@@ -474,6 +499,7 @@ static void codifyLines(char *text)
   char *p=text,*sp=p;
   char c;
   bool done=FALSE;
+  const char *  tmp_currentFontClass = g_currentFontClass;
   while (!done)
   {
     sp=p;
@@ -483,7 +509,15 @@ static void codifyLines(char *text)
       g_yyLineNr++;
       *(p-1)='\0';
       g_code->codify(sp);
-      nextCodeLine();
+      endCodeLine();
+      if (g_yyLineNr<g_inputLines)
+      {
+        startCodeLine();
+      }
+      if (tmp_currentFontClass)
+      {
+        startFontClass(tmp_currentFontClass);
+      }
     }
     else
     {
@@ -493,6 +527,13 @@ static void codifyLines(char *text)
   }
 }
 
+static void codifyLines(const QCString &str)
+{
+  char *tmp= (char *)malloc(str.length()+1);
+  qstrcpy(tmp, str);
+  codifyLines(tmp);
+  free(tmp);
+}
 
 static bool getLinkInScope(const QCString &c,  // scope
                            const QCString &m,  // member
@@ -796,22 +837,6 @@ static void findMemberLink(CodeOutputInterface &ol,char *symName)
   codify(symName);
 }
 
-static void startFontClass(const char *s)
-{
-  endFontClass();
-  g_code->startFontClass(s);
-  g_currentFontClass=s;
-}
-
-static void endFontClass()
-{
-  if (g_currentFontClass)
-  {
-    g_code->endFontClass();
-    g_currentFontClass=0;
-  }
-}
-
 #undef YY_INPUT
 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
 
@@ -842,7 +867,7 @@ PARAMNONEMPTY     [^ \t\n():]
 IDENTIFIER        ({LETTER}|"_")({LETTER}|{DIGIT}|"_")*  
 BORDER            ([^A-Za-z0-9])
 
-POUNDCOMMENT      "#".*
+POUNDCOMMENT      "##"
 
 TRISINGLEQUOTE    "'''"
 TRIDOUBLEQUOTE    "\"\"\""
@@ -938,7 +963,7 @@ TARGET           ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
 
 
 %option noyywrap
-%option nounput
+%option stack
 
 %x Body
 
@@ -960,6 +985,7 @@ TARGET           ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
 %x DoubleQuoteString
 %x TripleString
 
+%x DocBlock
 %%
 
 <Body,Suite>{
@@ -989,6 +1015,14 @@ TARGET           ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
 				        codify("self.");
 				        findMemberLink(*g_code,&yytext[5]);
 	                            }
+      "cls."{IDENTIFIER}/"("       {
+				        codify("cls.");
+				        findMemberLink(*g_code,&yytext[4]);
+	                            }
+      "cls."{IDENTIFIER}           {
+				        codify("cls.");
+				        findMemberLink(*g_code,&yytext[4]);
+	                            }
 }
 
 <ClassDec>{IDENTIFIER}              {
@@ -1168,11 +1202,16 @@ TARGET           ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
 
 
     {POUNDCOMMENT}                     {
-                                          // This eats EVERYTHING
-					  // except the newline
-                                          startFontClass("comment");
-					  codifyLines(yytext);
-		                          endFontClass();
+  				         if (YY_START==SingleQuoteString || 
+				             YY_START==DoubleQuoteString || 
+				             YY_START==TripleString
+				            )
+				         {
+				           REJECT;
+				         }
+                                         yy_push_state(YY_START);
+				         BEGIN(DocBlock);
+				         g_docBlock=yytext;
                                        }
 
     {NEWLINE}                          {
@@ -1341,6 +1380,28 @@ TARGET           ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
   		                 codify(yytext);
 				 BEGIN(DoubleQuoteString);
                                }
+<DocBlock>.*    	       { // contents of current comment line
+                                 g_docBlock+=yytext;
+  			       }
+<DocBlock>"\n"{B}("#")         { // comment block (next line is also comment line)
+				 g_docBlock+=yytext; 
+   			       }
+<DocBlock>{NEWLINE}            { // comment block ends at the end of this line
+                                 // remove special comment (default config)
+				 if (Config_getBool("STRIP_CODE_COMMENTS"))
+				 {
+				    g_yyLineNr+=((QCString)g_docBlock).contains('\n');
+				    g_endComment=TRUE;
+				  }
+				  else // do not remove comment
+				  {
+				    startFontClass("comment");
+				    codifyLines(g_docBlock);
+				    endFontClass();
+				  }
+				  unput(*yytext);
+				  yy_pop_state();
+			       }
 <*>{POUNDCOMMENT}              {
   				 if (YY_START==SingleQuoteString || 
 				     YY_START==DoubleQuoteString || 
@@ -1349,14 +1410,31 @@ TARGET           ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
 				 {
 				   REJECT;
 				 }
-                                 // This eats EVERYTHING
-				 // except the newline
+                                 yy_push_state(YY_START);
+				 BEGIN(DocBlock);
+				 g_docBlock=yytext;
+                               }
+<*>"#".*                       { // normal comment
+  				 if (YY_START==SingleQuoteString || 
+				     YY_START==DoubleQuoteString || 
+				     YY_START==TripleString
+				    )
+				 {
+				   REJECT;
+				 }
                                  startFontClass("comment");
-				 codifyLines(yytext);
-		                 endFontClass();
+                                 codifyLines(yytext);
+                                 endFontClass();
                                }
 <*>{NEWLINE}                   {
-  		                 codifyLines(yytext);
+				  if (g_endComment)
+				  {
+				    g_endComment=FALSE;
+				  }
+				  else
+				  {
+				    codifyLines(yytext);
+				  }
 				 //printf("[pycode] %d NEWLINE [line %d] no match\n",
 				 //       YY_START, g_yyLineNr);
 
@@ -1377,6 +1455,17 @@ TARGET           ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
 				 BEGIN(Body);					
                                }
 
+<*><<EOF>>                     {
+                                 if (YY_START == DocBlock) {
+                                   if (!Config_getBool("STRIP_CODE_COMMENTS"))
+                                   {
+                                     startFontClass("comment");
+                                     codifyLines(g_docBlock);
+                                     endFontClass();
+                                   }
+                                 }
+                                 yyterminate();
+                               }
 %%
 
 /*@ ----------------------------------------------------------------------------
@@ -1503,7 +1592,7 @@ void parsePythonCode(CodeOutputInterface &od,const char * /*className*/,
 extern "C" { // some bogus code to keep the compiler happy
   void pycodeYYdummy() { yy_flex_realloc(0,0); } 
 }
-#elif YY_FLEX_SUBMINOR_VERSION<33
+#elif YY_FLEX_MAJOR_VERSION<=2 && YY_FLEX_MINOR_VERSION<=5 && YY_FLEX_SUBMINOR_VERSION<33
 #error "You seem to be using a version of flex newer than 2.5.4. These are currently incompatible with 2.5.4, and do NOT work with doxygen! Please use version 2.5.4 or expect things to be parsed wrongly! A bug report has been submitted (#732132)."
 #endif
 
diff --git a/src/pyscanner.h b/src/pyscanner.h
index e4e974f..affa7ca 100644
--- a/src/pyscanner.h
+++ b/src/pyscanner.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/pyscanner.l b/src/pyscanner.l
index 6b68849..9ec69be 100644
--- a/src/pyscanner.l
+++ b/src/pyscanner.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -21,7 +21,7 @@
  *  taught by Peter H. Froehlich <phf at acm.org>.
  */
 
-
+%option never-interactive
 %{
 
 /*
@@ -35,7 +35,6 @@
 #include <qarray.h>
 #include <qstack.h>
 #include <qregexp.h>
-#include <unistd.h>
 #include <qfile.h>
 #include <qfileinfo.h>
   
@@ -55,8 +54,8 @@
 //#define DBG_CTX(x) fprintf x
 #define DBG_CTX(x) do { } while(0)
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 /* -----------------------------------------------------------------
  *
@@ -114,6 +113,9 @@ static int              g_braceCount;
 static bool             g_lexInit = FALSE;
 static bool             g_packageCommentAllowed;
 
+static bool             g_start_init = FALSE;
+static int              g_search_count = 0;
+
 //-----------------------------------------------------------------------------
 
 
@@ -399,7 +401,6 @@ static void searchFoundDef()
   current->startLine = yyLineNr;
   current->bodyLine  = yyLineNr;
   current->section = Entry::FUNCTION_SEC;
-  current->protection = protection = Public;
   current->lang = SrcLangExt_Python;
   current->virt = Normal;
   current->stat = gstat;
@@ -459,6 +460,7 @@ OCTNUMBER         "0"[0-7]+[lL]?
 NUMBER            {DIGIT}+[lLjJ]?
 INTNUMBER         {HEXNUMBER}|{OCTNUMBER}|{NUMBER}
 FLOATNUMBER       {DIGIT}+"."{DIGIT}+([eE][+\-]?{DIGIT}+)?[jJ]?
+BOOL              ("True"|"False")
 LETTER            [A-Za-z\x80-\xFF]
 NONEMPTY          [A-Za-z0-9_\x80-\xFF]
 EXPCHAR           [#(){}\[\],:.%/\\=`*~|&<>!;+-]
@@ -484,6 +486,7 @@ STRINGPREFIX      ("r"|"u"|"ur"|"R"|"U"|"UR"|"Ur"|"uR")
 KEYWORD           ("lambda"|"import"|"class"|"assert"|"as"|"from"|"global"|"def"|"True"|"False")
 FLOWKW            ("or"|"and"|"is"|"not"|"print"|"for"|"in"|"if"|"try"|"except"|"yield"|"raise"|"break"|"continue"|"pass"|"if"|"return"|"while"|"elif"|"else"|"finally")
 POUNDCOMMENT      "#"[^#\n][^\n]* 
+SCRIPTCOMMENT      "#!".* 
 
 STARTDOCSYMS      "##"
 
@@ -581,6 +584,7 @@ STARTDOCSYMS      "##"
 			BEGIN(VariableDec);
        	              }
      ^{B}{IDENTIFIER}/{B}"="[^=] { // variable
+                        if (g_search_count) REJECT;
       			g_indent=computeIndent(yytext);
       			current->section   = Entry::VARIABLE_SEC;
 			current->name      = QCString(yytext).stripWhiteSpace();
@@ -590,6 +594,20 @@ STARTDOCSYMS      "##"
 			g_packageCommentAllowed = FALSE;
 			BEGIN(VariableDec);
       		      }
+     {B}{IDENTIFIER}/({B},{B}{IDENTIFIER})*{B}")"*{B}"="[^=] { // list of variables, we cannot place the default value
+                                                               // so we will skip it later on in a general rule
+                                                               // Also note ")" this is to catch also (a,b). the "("
+                                                               // is caught in the rule: [(], the ")" will be handled in [)]
+                        if (g_search_count > 1) REJECT;
+      			g_indent=computeIndent(yytext);
+      			current->section   = Entry::VARIABLE_SEC;
+			current->name      = QCString(yytext).stripWhiteSpace();
+			current->fileName  = yyFileName;
+			current->startLine = yyLineNr;
+			current->bodyLine  = yyLineNr;
+			g_packageCommentAllowed = FALSE;
+			newVariable();
+      		      }
      "'"	      { // start of a single quoted string
        		        g_stringContext=YY_START;
 		        g_copyString=0;
@@ -605,6 +623,9 @@ STARTDOCSYMS      "##"
     "@staticmethod"  {
        			gstat=TRUE;
       		      }
+    {SCRIPTCOMMENT}   { // Unix type script comment
+                        if (yyLineNr != 1) REJECT;
+      		      }
     {POUNDCOMMENT}    { // normal comment 
 			g_packageCommentAllowed = FALSE;
       		      }
@@ -635,6 +656,12 @@ STARTDOCSYMS      "##"
 			initSpecialBlock();
 			BEGIN(SpecialComment);
                       }
+    [(]               { // we have to do something with (
+                        g_search_count += 1;
+                      }
+    [)]               { // we have to do something with )
+                        g_search_count -= 1;
+                      }
     [^\n]             { // any other character...
                         // This is the major default
                         // that should catch everything
@@ -735,7 +762,7 @@ STARTDOCSYMS      "##"
 
 <SearchMemVars>{
     "self."{IDENTIFIER}/{B}"=" {
-                        DBG_CTX((stderr,"Found member variable %s in %s at %d\n",&yytext[5],current_root->name.data(),yyLineNr));
+                        DBG_CTX((stderr,"Found instance method variable %s in %s at %d\n",&yytext[5],current_root->name.data(),yyLineNr));
 			current->name=&yytext[5];
 			current->section=Entry::VARIABLE_SEC;
 			current->fileName  = yyFileName;
@@ -746,9 +773,19 @@ STARTDOCSYMS      "##"
 			{
 			  current->protection=Private;
 			}
-			else
+			newEntry();
+                      }
+    "cls."{IDENTIFIER}/{B}"=" {
+                        DBG_CTX((stderr,"Found class method variable %s in %s at %d\n",&yytext[4],current_root->name.data(),yyLineNr));
+			current->name=&yytext[4];
+			current->section=Entry::VARIABLE_SEC;
+			current->fileName  = yyFileName;
+			current->startLine = yyLineNr;
+			current->bodyLine  = yyLineNr;
+			current->type.resize(0);
+			if (current->name.at(0)=='_') // mark as private
 			{
-			  current->protection=Public;
+			  current->protection=Private;
 			}
 			newEntry();
                       }
@@ -964,11 +1001,13 @@ STARTDOCSYMS      "##"
 			    {
 			      current->argList->getLast()->defval=g_defVal.stripWhiteSpace();
 			    }
-       			    BEGIN(FunctionParams);
+			    if (*yytext == ')')
+			      current->args = argListToString(current->argList);
+			    BEGIN(FunctionParams);
 			  }
 			  else // continue
 			  {
-			    g_braceCount--;
+			    if (*yytext == ')')g_braceCount--;
 			    g_defVal+=*yytext;
 			  }
        			}
@@ -1159,6 +1198,7 @@ STARTDOCSYMS      "##"
 <VariableDec>{
    "="                { // the assignment operator
                         //printf("====== VariableDec at line %d\n",yyLineNr);
+                        g_start_init = TRUE;
 			current->initializer = yytext;
 			current->initializer += " ";
                       }
@@ -1174,6 +1214,11 @@ STARTDOCSYMS      "##"
 			current->initializer += yytext;
 			BEGIN(VariableEnd);
 		      }
+   {BOOL}             { // boolean value
+			current->type = "bool";
+			current->initializer += yytext;
+			BEGIN(VariableEnd);
+		      }
    {STRINGPREFIX}?"'" { // string
 			current->type = "string";
 			current->initializer += yytext;
@@ -1205,8 +1250,8 @@ STARTDOCSYMS      "##"
        			g_stringContext=VariableEnd;
 			BEGIN(TripleString);
                       }
-   "("		      { // tuple
-                        if (current->mtype!=Property)
+   "("		      { // tuple, only when direct after =
+                        if (current->mtype!=Property && g_start_init)
 			{
 			  current->type = "tuple";
 			}
@@ -1217,7 +1262,7 @@ STARTDOCSYMS      "##"
 			BEGIN( VariableAtom );
                       }
    "["                { // list
-			current->type = "list";
+                        if (g_start_init) current->type = "list";
       		        current->initializer+=*yytext;
                         g_atomStart='[';
 			g_atomEnd=']';
@@ -1225,7 +1270,7 @@ STARTDOCSYMS      "##"
 			BEGIN( VariableAtom );
                       }
    "{"		      { // dictionary
-			current->type = "dictionary";
+                        if (g_start_init) current->type = "dictionary";
       		        current->initializer+=*yytext;
                         g_atomStart='{';
 			g_atomEnd='}';
@@ -1236,9 +1281,11 @@ STARTDOCSYMS      "##"
                         BEGIN( VariableEnd ); 
                       }
    {IDENTIFIER}	      {
+                        g_start_init = FALSE;
       		        current->initializer+=yytext;
 	              }
    .		      {
+                        g_start_init = FALSE;
       		        current->initializer+=*yytext;
                       }
    \n		      {
@@ -1263,7 +1310,8 @@ STARTDOCSYMS      "##"
 			}
 			if (g_atomCount==0)
 			{
-			  BEGIN(VariableEnd);
+                          g_start_init = FALSE;
+			  BEGIN(VariableDec);
 			}
                       }
     {TRIDOUBLEQUOTE}  { // start of a comment block
@@ -1279,6 +1327,12 @@ STARTDOCSYMS      "##"
 			initTriSingleQuoteBlock();
 			BEGIN(TripleComment);
                       }
+   "'"	              {
+       			g_stringContext=YY_START;
+			current->initializer+="'";
+			g_copyString=&current->initializer;
+                        BEGIN( SingleQuoteString );
+                      }
    "\""	              {
        			g_stringContext=YY_START;
 			current->initializer+="\"";
@@ -1377,13 +1431,16 @@ STARTDOCSYMS      "##"
 			    docBlock += yytext;
 			  }
       			}
-    [^"'\n \t]+          {
+    [^"'\n \t\\]+       {
 			  docBlock += yytext;
                         }
     \n			{
       			  incLineNr();
 			  docBlock += yytext;
       			}
+    \\.		        { // espaced char
+			  docBlock += yytext;
+      			}
     .			{
 			  docBlock += yytext;
       			}
diff --git a/src/qtbc.h b/src/qtbc.h
index c9ff3ca..e21eff4 100644
--- a/src/qtbc.h
+++ b/src/qtbc.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/reflist.cpp b/src/reflist.cpp
index 3cc7694..5a80b19 100644
--- a/src/reflist.cpp
+++ b/src/reflist.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -37,6 +37,7 @@ RefList::RefList(const char *listName,
   m_dictIterator = 0;
   m_id = 0;
   m_listName = listName;
+  m_fileName = convertNameToFile(listName,FALSE,TRUE);
   m_pageTitle = pageTitle;
   m_secTitle = secTitle;
 }
@@ -99,6 +100,11 @@ QCString RefList::listName() const
   return m_listName;
 }
 
+QCString RefList::fileName() const
+{
+  return m_fileName;
+}
+
 QCString RefList::pageTitle() const
 {
   return m_pageTitle;
@@ -147,9 +153,12 @@ void RefList::generatePage()
     doc += "\n";
     if (item->scope)
     {
-      doc += "\\_setscope ";
-      doc += item->scope->name();
-      doc += " ";
+      if (item->scope->name() != "<globalScope>")
+      {
+        doc += "\\_setscope ";
+        doc += item->scope->name();
+        doc += " ";
+      }
     }
     doc += item->prefix;
     doc += " \\_internalref ";
@@ -174,6 +183,6 @@ void RefList::generatePage()
   }
   doc += "</dl>\n";
   //printf("generatePage('%s')\n",doc.data());
-  addRelatedPage(m_listName,m_pageTitle,doc,0,m_listName,1,0,0,0);
+  addRelatedPage(m_listName,m_pageTitle,doc,0,m_fileName,1,0,0,0);
 }
 
diff --git a/src/reflist.h b/src/reflist.h
index 5b647ea..d064c58 100644
--- a/src/reflist.h
+++ b/src/reflist.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -72,6 +72,7 @@ class RefList
     RefItem *getFirstRefItem();
     RefItem *getNextRefItem();
     QCString listName() const;
+    QCString fileName() const;
     QCString pageTitle() const;
     QCString sectionTitle() const;
 
@@ -85,6 +86,7 @@ class RefList
   private:
     int m_id;
     QCString m_listName;
+    QCString m_fileName;
     QCString m_pageTitle;
     QCString m_secTitle;
     SortedRefItems *m_itemList;
diff --git a/src/res2cc_cmd.py b/src/res2cc_cmd.py
index 772ac84..7e0322d 100755
--- a/src/res2cc_cmd.py
+++ b/src/res2cc_cmd.py
@@ -3,7 +3,7 @@
 # offers an initResources() function, which registers the resources with the resource
 # manager (class ResourceMgr)
 #
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
+# Copyright (C) 1997-2015 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby
diff --git a/src/resourcemgr.cpp b/src/resourcemgr.cpp
index 4b504e4..80bd2ad 100644
--- a/src/resourcemgr.cpp
+++ b/src/resourcemgr.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/resourcemgr.h b/src/resourcemgr.h
index 6347e70..57b3e37 100644
--- a/src/resourcemgr.h
+++ b/src/resourcemgr.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -47,13 +47,13 @@ class ResourceMgr
     /** Copies a registered resource to a given target directory under a given target name */
     bool copyResourceAs(const char *name,const char *targetDir,const char *targetName) const;
 
-    /** Returns a pointer to the resource object with the given name. */
-    const Resource *get(const char *name) const;
-
     /** Gets the resource data as a C string */
     QCString getAsString(const char *name) const;
 
   private:
+    /** Returns a pointer to the resource object with the given name. */
+    const Resource *get(const char *name) const;
+
     ResourceMgr();
    ~ResourceMgr();
     class Private;
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index 20fbf53..2ea35cc 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -1676,7 +1676,8 @@ void RTFDocVisitor::writeDotFile(const QCString &fileName)
   m_t << "{" << endl;
   m_t << rtf_Style_Reset;
   m_t << "\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
-  m_t << baseName << "." << Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  m_t << baseName << "." << imgExt;
   m_t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
   m_t << "}" << endl;
   m_lastIsPara=TRUE;
diff --git a/src/rtfdocvisitor.h b/src/rtfdocvisitor.h
index c50802d..0e759c1 100644
--- a/src/rtfdocvisitor.h
+++ b/src/rtfdocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 3f09eec..749f57b 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Parker Waechter & Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Parker Waechter & Dimitri van Heesch.
  *
  * Style sheet additions by Alexander Bartolich
  *
@@ -95,7 +95,7 @@ RTFGenerator::~RTFGenerator()
 
 void RTFGenerator::writeStyleSheetFile(QFile &file)
 {
-  QTextStream t(&file);
+  FTextStream t(&file);
   t << "# Generated by doxygen " << versionString << "\n\n";
   t << "# This file describes styles used for generating RTF output.\n";
   t << "# All text after a hash (#) is considered a comment and will be ignored.\n";
@@ -112,7 +112,7 @@ void RTFGenerator::writeStyleSheetFile(QFile &file)
 
 void RTFGenerator::writeExtensionsFile(QFile &file)
 {
-  QTextStream t(&file);
+  FTextStream t(&file);
   t << "# Generated by doxygen " << versionString << "\n\n";
   t << "# This file describes extensions used for generating RTF output.\n";
   t << "# All text after a hash (#) is considered a comment and will be ignored.\n";
@@ -541,6 +541,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
   bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
   bool vhdlOpt    = Config_getBool("OPTIMIZE_OUTPUT_VHDL");  
   static bool sourceBrowser = Config_getBool("SOURCE_BROWSER");
+  static QCString projectName = Config_getString("PROJECT_NAME");
 
   switch (is)
   {
@@ -549,7 +550,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
         // User has overridden document title in extensions file
         t << "}" << rtf_title;
       else
-        t << "}" << Config_getString("PROJECT_NAME");
+        t << "}" << projectName;
       break;
     case isTitlePageAuthor:
       {
@@ -578,7 +579,17 @@ void RTFGenerator::endIndexSection(IndexSections is)
         }
 
         t << rtf_Style_Reset << rtf_Style["Title"]->reference << endl; // set to title style
-        t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt TITLE}}\\par" << endl;
+        if (rtf_title)
+          // User has overridden document title in extensions file
+          t << "{\\field\\fldedit {\\*\\fldinst " << rtf_title << " \\\\*MERGEFORMAT}{\\fldrslt " << rtf_title << "}}\\par" << endl;
+        else
+        {
+          DocText *root = validatingParseText(projectName);
+          t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt ";
+          writeDoc(root,0,0);
+          t << "}}\\par" << endl;
+          
+        }
 
         t << rtf_Style_Reset << rtf_Style["SubTitle"]->reference << endl; // set to title style
         t << "\\par\n";
@@ -593,10 +604,14 @@ void RTFGenerator::endIndexSection(IndexSections is)
         t << "\\par\\par\\par\\par\\par\\par\\par\\par\\par\\par\\par\\par\n";
 
         t << rtf_Style_Reset << rtf_Style["SubTitle"]->reference << endl; // set to subtitle style
-        t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt AUTHOR}}\\par" << endl;
-        t << "Version " << Config_getString("PROJECT_NUMBER") << "\\par";
+        if (rtf_author)
+          t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt "<< rtf_author << " }}\\par" << endl;
+        else
+          t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt AUTHOR}}\\par" << endl;
+
+        t << theTranslator->trVersion() << " " << Config_getString("PROJECT_NUMBER") << "\\par";
         t << "{\\field\\fldedit {\\*\\fldinst CREATEDATE \\\\*MERGEFORMAT}"
-          "{\\fldrslt CREATEDATE}}\\par"<<endl;
+          "{\\fldrslt "<< dateToString(FALSE) << " }}\\par"<<endl;
         t << "\\page\\page";
         DBG_RTF(t << "{\\comment End title page}" << endl)
 
@@ -2363,7 +2378,7 @@ static bool preProcessFile(QDir &d,QCString &infName, FTextStream &t, bool bIncl
   // files because the first line before the body
   // ALWAYS contains "{\comment begin body}"
   int len;
-  do
+  for(;;)
   {
     lineBuf.resize(maxLineLength);
     if ((len=f.readLine(lineBuf.rawData(),maxLineLength))==-1)
@@ -2372,8 +2387,9 @@ static bool preProcessFile(QDir &d,QCString &infName, FTextStream &t, bool bIncl
       return FALSE;
     }
     lineBuf.resize(len+1);
+    if (lineBuf.find("\\comment begin body")!=-1) break;
     if (bIncludeHeader) encodeForOutput(t,lineBuf.data());
-  } while (lineBuf.find("\\comment begin body")==-1);
+  }
 
 
   lineBuf.resize(maxLineLength);
@@ -2435,7 +2451,8 @@ void RTFGenerator::endDotGraph(const DotClassGraph &g)
   t << "{" << endl;
   t << rtf_Style_Reset << endl;
   t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
-  t << fn << "." << Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  t << fn << "." << imgExt;
   t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
   t << "}" << endl;
   newParagraph();
@@ -2458,7 +2475,8 @@ void RTFGenerator::endInclDepGraph(const DotInclDepGraph &g)
   t << "{" << endl;
   t << rtf_Style_Reset << endl;
   t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
-  t << fn << "." << Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  t << fn << "." << imgExt;
   t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
   t << "}" << endl;
   DBG_RTF(t << "{\\comment (endInclDepGraph)}"    << endl)
@@ -2488,7 +2506,8 @@ void RTFGenerator::endCallGraph(const DotCallGraph &g)
   t << "{" << endl;
   t << rtf_Style_Reset << endl;
   t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
-  t << fn << "." << Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  t << fn << "." << imgExt;
   t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
   t << "}" << endl;
   DBG_RTF(t << "{\\comment (endCallGraph)}"    << endl)
@@ -2510,7 +2529,8 @@ void RTFGenerator::endDirDepGraph(const DotDirDeps &g)
   t << "{" << endl;
   t << rtf_Style_Reset << endl;
   t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
-  t << fn << "." << Config_getEnum("DOT_IMAGE_FORMAT");
+  QCString imgExt = getDotImageExtension();
+  t << fn << "." << imgExt;
   t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
   t << "}" << endl;
   DBG_RTF(t << "{\\comment (endDirDepGraph)}"    << endl)
@@ -2586,6 +2606,7 @@ bool RTFGenerator::preProcessFileInplace(const char *path,const char *name)
   if (!outf.open(IO_WriteOnly))
   {
     err("Failed to open %s for writing!\n",combinedName.data());
+    QDir::setCurrent(oldDir);
     return FALSE;
   }
   FTextStream outt(&outf);
@@ -2676,6 +2697,7 @@ void RTFGenerator::startSimpleSect(SectionTypes,const char *file,const char *anc
 void RTFGenerator::endSimpleSect()
 {
   DBG_RTF(t << "{\\comment (endSimpleSect)}"    << endl)
+  m_omitParagraph = FALSE;
   newParagraph();
   decrementIndentLevel();
   m_omitParagraph = TRUE;
diff --git a/src/rtfgen.h b/src/rtfgen.h
index 2617ee6..f0f1f6e 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Parker Waechter & Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Parker Waechter & Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/rtfstyle.cpp b/src/rtfstyle.cpp
index f44951a..1ea8868 100644
--- a/src/rtfstyle.cpp
+++ b/src/rtfstyle.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/rtfstyle.h b/src/rtfstyle.h
index ae7e456..60f671f 100644
--- a/src/rtfstyle.h
+++ b/src/rtfstyle.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/scanner.h b/src/scanner.h
index 8c8c3d9..ac574e2 100644
--- a/src/scanner.h
+++ b/src/scanner.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/scanner.l b/src/scanner.l
index 821959c..fc6dc84 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -14,7 +14,7 @@
  * input used in their production; they are not affected by this license.
  *
  */
-  
+%option never-interactive
 %{
 
 /*
@@ -28,7 +28,6 @@
 #include <qarray.h>
 #include <qstack.h>
 #include <qregexp.h>
-#include <unistd.h>
 #include <qfile.h>
   
 #include "scanner.h"
@@ -45,8 +44,8 @@
 
 #include "clangparser.h"
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 /* -----------------------------------------------------------------
  *
@@ -76,6 +75,7 @@ static int              lastCSConstraint;
 static int              lastHereDocContext;
 static int              lastDefineContext;
 static int              lastAlignAsContext;
+static int              lastC11AttributeContext;
 static Protection	protection;
 static Protection	baseProt;
 static int		sharpCount   = 0 ;
@@ -174,6 +174,7 @@ static char             docBlockTerm;
 
 static QCString         idlAttr;
 static QCString         idlProp;
+static bool             odlProp;
 
 static bool             g_lexInit = FALSE;
 static bool             externC;
@@ -667,6 +668,8 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 %x      SkipString
 %x      SkipPHPString
 %x	SkipInits
+%x	SkipC11Inits
+%x      SkipC11Attribute
 %x	SkipCPP
 %x	SkipCPPBlock
 %x	SkipComment
@@ -1816,7 +1819,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 <FindMembers>{B}*{TYPEDEFPREFIX}{IDLATTR}?"enum"({BN}+("class"|"struct"))?{BN}+ { // for IDL: typedef [something] enum
                                           QCString text=yytext;
 					  isTypedef    = text.find("typedef")!=-1;
-                                          bool isStrongEnum = text.find("struct")!=-1 || text.find("class")!=-1;
+                                          bool isStrongEnum = text.find("struct")!=-1 || text.find("class")!=-1 || insideCS;
 					  if (insideJava)
 					  {
 					    current->section = Entry::CLASS_SEC;
@@ -2430,6 +2433,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
                                             }
 					    else
                                             {
+					      externC=FALSE; // see bug759247
 		 			      BEGIN(FindMembers);
                                             }
 					  }
@@ -2803,7 +2807,8 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  }
   					}
 <FindMembers,FindFields,ReadInitializer>"//"([!/]?){B}*{CMD}"}".*|"/*"([!*]?){B}*{CMD}"}"[^*]*"*/"	{
-  					  closeGroup(current,yyFileName,yyLineNr);
+                                          bool insideEnum = YY_START==FindFields || (YY_START==ReadInitializer && lastInitializerContext==FindFields); // see bug746226
+  					  closeGroup(current,yyFileName,yyLineNr,insideEnum);
   					}
 <FindMembers>"="			{ // in PHP code this could also be due to "<?="
   					  current->bodyLine = yyLineNr;
@@ -3390,6 +3395,15 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					    idlAttr.resize(0);
 					    idlProp.resize(0);
 					    current->mtype = mtype;
+
+					    if (Config_getBool("IDL_PROPERTY_SUPPORT") &&
+					         current->mtype == Property)
+					    { // we are inside the properties section of a dispinterface
+					      odlProp = true;
+					      current->spec |= Entry::Gettable;
+					      current->spec |= Entry::Settable;
+					    }
+
 					    BEGIN( IDLAttribute );
 					  }
                                           else if (insideCS &&
@@ -3406,6 +3420,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  {
   					    current->args += yytext ;
 					    squareCount=1;
+					    externC=FALSE; // see bug759247
 					    BEGIN( Array ) ;
 					  }
 					}
@@ -3444,7 +3459,14 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
                            current->spec |= Entry::Optional;
                          }
 <IDLAttribute>"readonly" { // on UNO IDL attribute or property
-					  current->spec |= Entry::Readonly;
+					  if (Config_getBool("IDL_PROPERTY_SUPPORT") && odlProp)
+					  {
+					    current->spec ^= Entry::Settable;
+					  }
+					  else
+					  {
+					    current->spec |= Entry::Readonly;
+					  }
 					}
 <IDLAttribute>"bound" { // on UNO IDL attribute or property
 					  current->spec |= Entry::Bound;
@@ -3471,6 +3493,11 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					}
 <IDLPropName>{BN}*{ID}{BN}*		{
 					  // return type (probably HRESULT) - skip it
+
+					  if (odlProp)
+					  { // property type
+					    idlProp = yytext;
+					  }
 					}
 <IDLPropName>{ID}{BN}*"("		{
   					  current->name = yytext;
@@ -3479,6 +3506,22 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  current->startColumn = yyColNr;
 					  BEGIN( IDLProp );
 					}
+<IDLPropName>{BN}*"("{BN}*{ID}{BN}*")"{BN}*	{
+					   if (odlProp)
+					   {
+					     idlProp += yytext;
+					   }
+					}
+<IDLPropName>{ID}{BN}*/";"		{
+					   if (odlProp)
+					   {
+					     current->name = yytext;
+					     idlProp = idlProp.stripWhiteSpace();
+					     odlProp = false;
+
+					     BEGIN( IDLProp );
+					   }
+					}
 <IDLProp>{BN}*"["[^\]]*"]"{BN}*		{  // attribute of a parameter
 					   idlAttr = yytext;
 					   idlAttr=idlAttr.stripWhiteSpace();
@@ -3554,6 +3597,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  sharpCount++;	
 					}
 <Sharp>{BN}+				{
+                                          current->type += ' ';
   					  lineCount();
 					}
 <Sharp>.				{ current->type += *yytext ; }
@@ -4049,6 +4093,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  current_root->addSubEntry( current ) ;
   					  current=new Entry;
 					  initEntry();
+					  language = current->lang = SrcLangExt_Cpp; // see bug746361
 					  insideObjC=FALSE;
 					  BEGIN( FindMembers ); 
   					}
@@ -4622,6 +4667,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
                                           lineCount();
                                           current->args += " = delete";
 					  current->spec |= Entry::Delete;
+					  current->argList->isDeleted=TRUE;
                                           BEGIN(FuncQual);
                                         }
 <FuncQual,TrailingReturn>{BN}*"="{BN}*"default"{BN}*     { // C++11 explicitly defaulted constructor/assignment operator
@@ -4969,8 +5015,21 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
                                         }
 <SkipInits>{ID}{BN}*"{"                 { // C++11 style initializer (see bug 688647)
                                           lineCount();
+                                          curlyCount=1;
+                                          BEGIN(SkipC11Inits);
+                                        }
+<SkipC11Inits>"{"                       {
                                           ++curlyCount;
                                         }
+<SkipC11Inits>"}"                       {
+  					  if ( --curlyCount<=0 )
+                                          {
+                                            BEGIN(SkipInits);
+                                          }
+                                        }
+<SkipC11Attribute>"]]"                 {
+                                          BEGIN(lastC11AttributeContext);
+                                        }
 <SkipInits>"{"				{ // C++11 style initializer
   					  unput('{');
 					  BEGIN( Function );
@@ -5074,7 +5133,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
   				          //addToBody(yytext);
   					  BEGIN( SkipCurlyCpp );
 					}
-<SkipCurly,SkipInits>\n			{
+<SkipCurly,SkipC11Inits,SkipInits,SkipC11Attribute>\n	{
                                           lineCount();
   				          //addToBody(yytext);
   					}
@@ -5103,22 +5162,22 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
   				          //addToBody(yytext);
                                           lineCount();
 					}
-<SkipInits,SkipCurly,SkipCurlyCpp>"/*"	{
+<SkipInits,SkipC11Inits,SkipCurly,SkipCurlyCpp,SkipC11Attribute>"/*"	{
   				          //addToBody(yytext);
   					  lastCContext = YY_START;
 					  BEGIN(SkipComment);
   					}
-<SkipInits,SkipCurly,SkipCurlyCpp>"//"  {
+<SkipInits,SkipC11Inits,SkipCurly,SkipCurlyCpp,SkipC11Attribute>"//"  {
   				          //addToBody(yytext);
   					  lastCContext = YY_START;
 					  BEGIN(SkipCxxComment);
   					}
-<SkipInits>"("                          {
+<SkipInits,SkipC11Inits,SkipC11Attribute>"("             {
                                           roundCount=0;
                                           lastSkipRoundContext=YY_START;
                                           BEGIN(SkipRound);
                                         }
-<SkipInits>\"				{
+<SkipInits,SkipC11Inits,SkipC11Attribute>\"	        {
   					  lastStringContext=YY_START;
   				          BEGIN( SkipString ); 
 					}
@@ -5153,7 +5212,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					    BEGIN(SkipPHPString);
 					  }
 					}
-<SkipInits,SkipCurly,SkipCurlyCpp>.	{ }
+<SkipInits,SkipC11Inits,SkipCurly,SkipCurlyCpp,SkipC11Attribute>.	{ }
 <SkipString,SkipPHPString>\\.		{ }
 <SkipString>\"				{ 
   					  BEGIN( lastStringContext ); 
@@ -5274,8 +5333,8 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  }
 					}
 <ClassTemplSpec>"<"			{
-  					  current->name += yytext;
-  					  sharpCount++;
+					  current->name += yytext;
+					  if (roundCount==0) sharpCount++;
   					}
 <ClassTemplSpec>.			{
   					  current->name += yytext;
@@ -5324,6 +5383,11 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
     					  unput(';');
 					  current->reset();
 					  initEntry();
+                                          if (insideObjC) // see bug746361
+                                          {
+					    language = current->lang = SrcLangExt_Cpp;
+                                            insideObjC = FALSE;
+                                          }
 					  if (isTypedef) // typedef of a class, put typedef keyword back
 					  {
 					    current->type.prepend("typedef");
@@ -5583,7 +5647,13 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  BEGIN( ClassVar );
 					}
 <ClassVar>":"				{ 
-					  if (current->section==Entry::ENUM_SEC) // enum E:2, see bug 313527, 
+                                          if (current->section==Entry::VARIABLE_SEC) // enum A B:2, see bug 748208
+                                          {
+                                            current->bitfields+=":";
+                                            current->args.resize(0);
+                                            BEGIN(BitFields);
+                                          }
+                                          else if (current->section==Entry::ENUM_SEC) // enum E:2, see bug 313527, 
                                                                                  // or C++11 style enum: 'E : unsigned int {...}'
 					  {
 					    current->args.resize(0);
@@ -5942,7 +6012,7 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					}
 <Comment>.				{ current->program += *yytext ; }
 
-<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits,Bases,OldStyleArgs>("//"{B}*)?"/*!" { 
+<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits,SkipC11Inits,SkipC11Attribute,Bases,OldStyleArgs>("//"{B}*)?"/*!" { 
   					  //printf("Start doc block at %d\n",yyLineNr);
 					  removeSlashes=(yytext[1]=='/');
 					  tmpDocType=-1;
@@ -6214,13 +6284,20 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
                                           g_nestedComment=FALSE;
   					  BEGIN(DocCopyBlock);
   					}
-<DocBlock>"~~~"[~]*                     {
-                                          docBlock+=yytext;
+<DocBlock>^({B}*"*"+)?{B}{0,3}"~~~"[~]*                {
+                                          docBlock+=substitute(yytext,"*"," ");
                                           docBlockName="~~~";
                                           g_fencedSize=yyleng;
                                           g_nestedComment=FALSE;
                                           BEGIN(DocCopyBlock);
                                         }
+<DocBlock>^({B}*"*"+)?{B}{0,3}"```"[`]*                {
+                                          docBlock+=substitute(yytext,"*"," ");
+                                          docBlockName="```";
+                                          g_fencedSize=yyleng;
+                                          g_nestedComment=FALSE;
+                                          BEGIN(DocCopyBlock);
+                                        }
 <DocBlock>{B}*"<code>"                  {
   					  if (insideCS)
 					  {
@@ -6332,8 +6409,15 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					    REJECT;
 					  }
   					}
-<DocCopyBlock>"~~~"[~]*                 {
-                                          docBlock+=yytext;
+<DocCopyBlock>^({B}*"*"+)?{B}{0,3}"~~~"[~]* {
+                                          docBlock+=substitute(yytext,"*"," ");
+                                          if (g_fencedSize==yyleng)
+                                          {
+                                            BEGIN(DocBlock);
+                                          }
+                                        }
+<DocCopyBlock>^({B}*"*"+)?{B}{0,3}"```"[`]*                 {
+                                          docBlock+=substitute(yytext,"*"," ");
                                           if (g_fencedSize==yyleng)
                                           {
                                             BEGIN(DocBlock);
@@ -6457,6 +6541,12 @@ OPERATOR  "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
 					  BEGIN( lastCContext ) ;
 					}
 <SkipComment>[^\*\n]+
+
+"[["                                    { // C++11 attribute
+                                          lastC11AttributeContext = YY_START;
+                                          BEGIN( SkipC11Attribute );
+                                        }
+
 <*>\n					{ lineCount(); }
 <*>\"					{
 					  if (insideIDL && insideCppQuote)
@@ -6677,7 +6767,8 @@ static void parseCompounds(Entry *rt)
       initEntry();
 
       // deep copy group list from parent (see bug 727732)
-      if (rt->groups)
+      static bool autoGroupNested = Config_getBool("GROUP_NESTED_COMPOUNDS");
+      if (autoGroupNested && rt->groups && ce->section!=Entry::ENUM_SEC && !(ce->spec&Entry::Enum))
       {
         QListIterator<Grouping> gli(*rt->groups);
         Grouping *g;
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index d8ec491..9bfe7b0 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -583,70 +583,9 @@ void SearchIndexExternal::write(const char *fileName)
 #include "doxygen.h"
 #include "message.h"
 
-//static const char search_script[]=
-//#include "search.js.h"
-//;
-
-#define SEARCH_INDEX_ALL         0
-#define SEARCH_INDEX_CLASSES     1
-#define SEARCH_INDEX_NAMESPACES  2
-#define SEARCH_INDEX_FILES       3
-#define SEARCH_INDEX_FUNCTIONS   4
-#define SEARCH_INDEX_VARIABLES   5
-#define SEARCH_INDEX_TYPEDEFS    6
-#define SEARCH_INDEX_ENUMS       7
-#define SEARCH_INDEX_ENUMVALUES  8
-#define SEARCH_INDEX_PROPERTIES  9
-#define SEARCH_INDEX_EVENTS     10
-#define SEARCH_INDEX_RELATED    11
-#define SEARCH_INDEX_DEFINES    12
-#define SEARCH_INDEX_GROUPS     13
-#define SEARCH_INDEX_PAGES      14
-#define NUM_SEARCH_INDICES      15
-
-class SearchDefinitionList : public QList<Definition>
-{
-  public:
-    SearchDefinitionList(uint letter) : m_letter(letter) {}
-    uint letter() const { return m_letter; }
-  private:
-    uint m_letter;
-};
+static SearchIndexInfo g_searchIndexInfo[NUM_SEARCH_INDICES];
 
-class SearchIndexList : public SDict< SearchDefinitionList >
-{
-  public:
-    typedef Definition ElementType;
-    SearchIndexList(uint letter) : SDict<SearchDefinitionList>(17,FALSE), m_letter(letter)
-    {
-      setAutoDelete(TRUE);
-    }
-   ~SearchIndexList() {}
-    void append(Definition *d)
-    {
-      SearchDefinitionList *l = find(d->name());
-      if (l==0)
-      {
-        l=new SearchDefinitionList(m_letter);
-        SDict<SearchDefinitionList>::append(d->name(),l);
-      }
-      l->append(d);
-    }
-    uint letter() const { return m_letter; }
-  private:
-    int compareValues(const SearchDefinitionList *md1, const SearchDefinitionList *md2) const
-    {
-      QCString n1 = md1->getFirst()->localName();
-      QCString n2 = md2->getFirst()->localName();
-      return qstricmp(n1.data(),n2.data());
-    }
-    uint m_letter;
-};
-
-static void addMemberToSearchIndex(
-         LetterToIndexMap<SearchIndexList> symbols[NUM_SEARCH_INDICES],
-         int symbolCount[NUM_SEARCH_INDICES],
-         MemberDef *md)
+static void addMemberToSearchIndex(MemberDef *md)
 {
   static bool hideFriendCompounds = Config_getBool("HIDE_FRIEND_COMPOUNDS");
   bool isLinkable = md->isLinkable();
@@ -654,7 +593,7 @@ static void addMemberToSearchIndex(
   NamespaceDef *nd=0;
   FileDef *fd=0;
   GroupDef *gd=0;
-  if (isLinkable && 
+  if (isLinkable &&
       (
        ((cd=md->getClassDef()) && cd->isLinkable() && cd->templateMaster()==0) ||
        ((gd=md->getGroupDef()) && gd->isLinkable())
@@ -662,58 +601,49 @@ static void addMemberToSearchIndex(
      )
   {
     QCString n = md->name();
-    if (!n.isEmpty()) 
+    if (!n.isEmpty())
     {
       uint letter = getUtf8CodeToLower(n,0);
       bool isFriendToHide = hideFriendCompounds &&
-        (QCString(md->typeString())=="friend class" || 
+        (QCString(md->typeString())=="friend class" ||
          QCString(md->typeString())=="friend struct" ||
          QCString(md->typeString())=="friend union");
       if (!(md->isFriend() && isFriendToHide))
       {
-        symbols[SEARCH_INDEX_ALL].append(letter,md);
-        symbolCount[SEARCH_INDEX_ALL]++;
+        g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,md);
       }
       if (md->isFunction() || md->isSlot() || md->isSignal())
       {
-        symbols[SEARCH_INDEX_FUNCTIONS].append(letter,md);
-        symbolCount[SEARCH_INDEX_FUNCTIONS]++;
-      } 
+        g_searchIndexInfo[SEARCH_INDEX_FUNCTIONS].symbolList.append(letter,md);
+      }
       else if (md->isVariable())
       {
-        symbols[SEARCH_INDEX_VARIABLES].append(letter,md);
-        symbolCount[SEARCH_INDEX_VARIABLES]++;
+        g_searchIndexInfo[SEARCH_INDEX_VARIABLES].symbolList.append(letter,md);
       }
       else if (md->isTypedef())
       {
-        symbols[SEARCH_INDEX_TYPEDEFS].append(letter,md);
-        symbolCount[SEARCH_INDEX_TYPEDEFS]++;
+        g_searchIndexInfo[SEARCH_INDEX_TYPEDEFS].symbolList.append(letter,md);
       }
       else if (md->isEnumerate())
       {
-        symbols[SEARCH_INDEX_ENUMS].append(letter,md);
-        symbolCount[SEARCH_INDEX_ENUMS]++;
+        g_searchIndexInfo[SEARCH_INDEX_ENUMS].symbolList.append(letter,md);
       }
       else if (md->isEnumValue())
       {
-        symbols[SEARCH_INDEX_ENUMVALUES].append(letter,md);
-        symbolCount[SEARCH_INDEX_ENUMVALUES]++;
+        g_searchIndexInfo[SEARCH_INDEX_ENUMVALUES].symbolList.append(letter,md);
       }
       else if (md->isProperty())
       {
-        symbols[SEARCH_INDEX_PROPERTIES].append(letter,md);
-        symbolCount[SEARCH_INDEX_PROPERTIES]++;
+        g_searchIndexInfo[SEARCH_INDEX_PROPERTIES].symbolList.append(letter,md);
       }
       else if (md->isEvent())
       {
-        symbols[SEARCH_INDEX_EVENTS].append(letter,md);
-        symbolCount[SEARCH_INDEX_EVENTS]++;
+        g_searchIndexInfo[SEARCH_INDEX_EVENTS].symbolList.append(letter,md);
       }
       else if (md->isRelated() || md->isForeign() ||
                (md->isFriend() && !isFriendToHide))
       {
-        symbols[SEARCH_INDEX_RELATED].append(letter,md);
-        symbolCount[SEARCH_INDEX_RELATED]++;
+        g_searchIndexInfo[SEARCH_INDEX_RELATED].symbolList.append(letter,md);
       }
     }
   }
@@ -727,38 +657,31 @@ static void addMemberToSearchIndex(
     if (!n.isEmpty()) 
     {
       uint letter = getUtf8CodeToLower(n,0);
-      symbols[SEARCH_INDEX_ALL].append(letter,md);
-      symbolCount[SEARCH_INDEX_ALL]++;
+      g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,md);
 
       if (md->isFunction()) 
       {
-        symbols[SEARCH_INDEX_FUNCTIONS].append(letter,md);
-        symbolCount[SEARCH_INDEX_FUNCTIONS]++;
+        g_searchIndexInfo[SEARCH_INDEX_FUNCTIONS].symbolList.append(letter,md);
       }
       else if (md->isVariable()) 
       {
-        symbols[SEARCH_INDEX_VARIABLES].append(letter,md);
-        symbolCount[SEARCH_INDEX_VARIABLES]++;
+        g_searchIndexInfo[SEARCH_INDEX_VARIABLES].symbolList.append(letter,md);
       }
       else if (md->isTypedef())
       {
-        symbols[SEARCH_INDEX_TYPEDEFS].append(letter,md);
-        symbolCount[SEARCH_INDEX_TYPEDEFS]++;
+        g_searchIndexInfo[SEARCH_INDEX_TYPEDEFS].symbolList.append(letter,md);
       }
       else if (md->isEnumerate())
       {
-        symbols[SEARCH_INDEX_ENUMS].append(letter,md);
-        symbolCount[SEARCH_INDEX_ENUMS]++;
+        g_searchIndexInfo[SEARCH_INDEX_ENUMS].symbolList.append(letter,md);
       }
       else if (md->isEnumValue())
       {
-        symbols[SEARCH_INDEX_ENUMVALUES].append(letter,md);
-        symbolCount[SEARCH_INDEX_ENUMVALUES]++;
+        g_searchIndexInfo[SEARCH_INDEX_ENUMVALUES].symbolList.append(letter,md);
       }
       else if (md->isDefine())
       {
-        symbols[SEARCH_INDEX_DEFINES].append(letter,md);
-        symbolCount[SEARCH_INDEX_DEFINES]++;
+        g_searchIndexInfo[SEARCH_INDEX_DEFINES].symbolList.append(letter,md);
       }
     }
   }
@@ -792,55 +715,43 @@ static QCString searchId(const QCString &s)
   return result;
 }
 
-static int g_searchIndexCount[NUM_SEARCH_INDICES];
-static LetterToIndexMap<SearchIndexList> g_searchIndexSymbols[NUM_SEARCH_INDICES];
-static const char *g_searchIndexName[NUM_SEARCH_INDICES] = 
-{ 
-    "all",
-    "classes",
-    "namespaces",
-    "files",
-    "functions",
-    "variables",
-    "typedefs", 
-    "enums", 
-    "enumvalues",
-    "properties", 
-    "events", 
-    "related",
-    "defines",
-    "groups",
-    "pages"
-};
-
-
-class SearchIndexCategoryMapping
+void createJavascriptSearchIndex()
 {
-  public:
-    SearchIndexCategoryMapping()
-    {
-      categoryLabel[SEARCH_INDEX_ALL]        = theTranslator->trAll();
-      categoryLabel[SEARCH_INDEX_CLASSES]    = theTranslator->trClasses();
-      categoryLabel[SEARCH_INDEX_NAMESPACES] = theTranslator->trNamespace(TRUE,FALSE);
-      categoryLabel[SEARCH_INDEX_FILES]      = theTranslator->trFile(TRUE,FALSE);
-      categoryLabel[SEARCH_INDEX_FUNCTIONS]  = theTranslator->trFunctions();
-      categoryLabel[SEARCH_INDEX_VARIABLES]  = theTranslator->trVariables();
-      categoryLabel[SEARCH_INDEX_TYPEDEFS]   = theTranslator->trTypedefs();
-      categoryLabel[SEARCH_INDEX_ENUMS]      = theTranslator->trEnumerations();
-      categoryLabel[SEARCH_INDEX_ENUMVALUES] = theTranslator->trEnumerationValues();
-      categoryLabel[SEARCH_INDEX_PROPERTIES] = theTranslator->trProperties();
-      categoryLabel[SEARCH_INDEX_EVENTS]     = theTranslator->trEvents();
-      categoryLabel[SEARCH_INDEX_RELATED]    = theTranslator->trFriends();
-      categoryLabel[SEARCH_INDEX_DEFINES]    = theTranslator->trDefines();
-      categoryLabel[SEARCH_INDEX_GROUPS]     = theTranslator->trGroup(TRUE,FALSE);
-      categoryLabel[SEARCH_INDEX_PAGES]      = theTranslator->trPage(TRUE,FALSE);
-    }
-    QCString categoryLabel[NUM_SEARCH_INDICES];
-};
-
-void writeJavascriptSearchIndex()
-{
-  if (!Config_getBool("GENERATE_HTML")) return;
+  // set index names
+  g_searchIndexInfo[SEARCH_INDEX_ALL].name        = "all";
+  g_searchIndexInfo[SEARCH_INDEX_CLASSES].name    = "classes";
+  g_searchIndexInfo[SEARCH_INDEX_NAMESPACES].name = "namespaces";
+  g_searchIndexInfo[SEARCH_INDEX_FILES].name      = "files";
+  g_searchIndexInfo[SEARCH_INDEX_FUNCTIONS].name  = "functions";
+  g_searchIndexInfo[SEARCH_INDEX_VARIABLES].name  = "variables";
+  g_searchIndexInfo[SEARCH_INDEX_TYPEDEFS].name   = "typedefs";
+  g_searchIndexInfo[SEARCH_INDEX_ENUMS].name      = "enums";
+  g_searchIndexInfo[SEARCH_INDEX_ENUMVALUES].name = "enumvalues";
+  g_searchIndexInfo[SEARCH_INDEX_PROPERTIES].name = "properties";
+  g_searchIndexInfo[SEARCH_INDEX_EVENTS].name     = "events";
+  g_searchIndexInfo[SEARCH_INDEX_RELATED].name    = "related";
+  g_searchIndexInfo[SEARCH_INDEX_DEFINES].name    = "defines";
+  g_searchIndexInfo[SEARCH_INDEX_GROUPS].name     = "groups";
+  g_searchIndexInfo[SEARCH_INDEX_PAGES].name      = "pages";
+
+  // set index texts
+  g_searchIndexInfo[SEARCH_INDEX_ALL].text        = theTranslator->trAll();
+  g_searchIndexInfo[SEARCH_INDEX_CLASSES].text    = theTranslator->trClasses();
+  g_searchIndexInfo[SEARCH_INDEX_NAMESPACES].text = theTranslator->trNamespace(TRUE,FALSE);
+  g_searchIndexInfo[SEARCH_INDEX_FILES].text      = theTranslator->trFile(TRUE,FALSE);
+  g_searchIndexInfo[SEARCH_INDEX_FUNCTIONS].text  = theTranslator->trFunctions();
+  g_searchIndexInfo[SEARCH_INDEX_VARIABLES].text  = theTranslator->trVariables();
+  g_searchIndexInfo[SEARCH_INDEX_TYPEDEFS].text   = theTranslator->trTypedefs();
+  g_searchIndexInfo[SEARCH_INDEX_ENUMS].text      = theTranslator->trEnumerations();
+  g_searchIndexInfo[SEARCH_INDEX_ENUMVALUES].text = theTranslator->trEnumerationValues();
+  g_searchIndexInfo[SEARCH_INDEX_PROPERTIES].text = theTranslator->trProperties();
+  g_searchIndexInfo[SEARCH_INDEX_EVENTS].text     = theTranslator->trEvents();
+  g_searchIndexInfo[SEARCH_INDEX_RELATED].text    = theTranslator->trFriends();
+  g_searchIndexInfo[SEARCH_INDEX_DEFINES].text    = theTranslator->trDefines();
+  g_searchIndexInfo[SEARCH_INDEX_GROUPS].text     = theTranslator->trGroup(TRUE,FALSE);
+  g_searchIndexInfo[SEARCH_INDEX_PAGES].text      = theTranslator->trPage(TRUE,FALSE);
+
+  // add symbols to letter -> symbol list map
 
   // index classes
   ClassSDict::Iterator cli(*Doxygen::classSDict);
@@ -850,10 +761,8 @@ void writeJavascriptSearchIndex()
     uint letter = getUtf8CodeToLower(cd->localName(),0);
     if (cd->isLinkable() && isId(letter))
     {
-      g_searchIndexSymbols[SEARCH_INDEX_ALL].append(letter,cd);
-      g_searchIndexSymbols[SEARCH_INDEX_CLASSES].append(letter,cd);
-      g_searchIndexCount[SEARCH_INDEX_ALL]++;
-      g_searchIndexCount[SEARCH_INDEX_CLASSES]++;
+      g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,cd);
+      g_searchIndexInfo[SEARCH_INDEX_CLASSES].symbolList.append(letter,cd);
     }
   }
 
@@ -865,10 +774,8 @@ void writeJavascriptSearchIndex()
     uint letter = getUtf8CodeToLower(nd->name(),0);
     if (nd->isLinkable() && isId(letter))
     {
-      g_searchIndexSymbols[SEARCH_INDEX_ALL].append(letter,nd);
-      g_searchIndexSymbols[SEARCH_INDEX_NAMESPACES].append(letter,nd);
-      g_searchIndexCount[SEARCH_INDEX_ALL]++;
-      g_searchIndexCount[SEARCH_INDEX_NAMESPACES]++;
+      g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,nd);
+      g_searchIndexInfo[SEARCH_INDEX_NAMESPACES].symbolList.append(letter,nd);
     }
   }
 
@@ -884,10 +791,8 @@ void writeJavascriptSearchIndex()
       uint letter = getUtf8CodeToLower(fd->name(),0);
       if (fd->isLinkable() && isId(letter))
       {
-        g_searchIndexSymbols[SEARCH_INDEX_ALL].append(letter,fd);
-        g_searchIndexSymbols[SEARCH_INDEX_FILES].append(letter,fd);
-        g_searchIndexCount[SEARCH_INDEX_ALL]++;
-        g_searchIndexCount[SEARCH_INDEX_FILES]++;
+        g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,fd);
+        g_searchIndexInfo[SEARCH_INDEX_FILES].symbolList.append(letter,fd);
       }
     }
   }
@@ -904,7 +809,7 @@ void writeJavascriptSearchIndex()
       // for each member definition
       for (mni.toFirst();(md=mni.current());++mni)
       {
-        addMemberToSearchIndex(g_searchIndexSymbols,g_searchIndexCount,md);
+        addMemberToSearchIndex(md);
       }
     }
   }
@@ -921,7 +826,7 @@ void writeJavascriptSearchIndex()
       // for each member definition
       for (mni.toFirst();(md=mni.current());++mni)
       {
-        addMemberToSearchIndex(g_searchIndexSymbols,g_searchIndexCount,md);
+        addMemberToSearchIndex(md);
       }
     }
   }
@@ -940,10 +845,8 @@ void writeJavascriptSearchIndex()
         uint letter = charCode<128 ? tolower(charCode) : charCode;
         if (isId(letter))
         {
-          g_searchIndexSymbols[SEARCH_INDEX_ALL].append(letter,gd);
-          g_searchIndexSymbols[SEARCH_INDEX_GROUPS].append(letter,gd);
-          g_searchIndexCount[SEARCH_INDEX_ALL]++;
-          g_searchIndexCount[SEARCH_INDEX_GROUPS]++;
+          g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,gd);
+          g_searchIndexInfo[SEARCH_INDEX_GROUPS].symbolList.append(letter,gd);
         }
       }
     }
@@ -963,10 +866,8 @@ void writeJavascriptSearchIndex()
         uint letter = charCode<128 ? tolower(charCode) : charCode;
         if (isId(letter))
         {
-          g_searchIndexSymbols[SEARCH_INDEX_ALL].append(letter,pd);
-          g_searchIndexSymbols[SEARCH_INDEX_PAGES].append(letter,pd);
-          g_searchIndexCount[SEARCH_INDEX_ALL]++;
-          g_searchIndexCount[SEARCH_INDEX_PAGES]++;
+          g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,pd);
+          g_searchIndexInfo[SEARCH_INDEX_PAGES].symbolList.append(letter,pd);
         }
       }
     }
@@ -980,38 +881,40 @@ void writeJavascriptSearchIndex()
       uint letter = charCode<128 ? tolower(charCode) : charCode;
       if (isId(letter))
       {
-        g_searchIndexSymbols[SEARCH_INDEX_ALL].append(letter,Doxygen::mainPage);
-        g_searchIndexSymbols[SEARCH_INDEX_PAGES].append(letter,Doxygen::mainPage);
-        g_searchIndexCount[SEARCH_INDEX_ALL]++;
-        g_searchIndexCount[SEARCH_INDEX_PAGES]++;
+        g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,Doxygen::mainPage);
+        g_searchIndexInfo[SEARCH_INDEX_PAGES].symbolList.append(letter,Doxygen::mainPage);
       }
     }
   }
-  
+
   // sort all lists
   int i;
   for (i=0;i<NUM_SEARCH_INDICES;i++)
   {
-    SIntDict<SearchIndexList>::Iterator it(g_searchIndexSymbols[i]);
+    SIntDict<SearchIndexList>::Iterator it(g_searchIndexInfo[i].symbolList);
     SearchIndexList *sl;
     for (it.toFirst();(sl=it.current());++it)
     {
       sl->sort();
     }
   }
+}
 
+void writeJavascriptSearchIndex()
+{
+  int i;
   // write index files
   QCString searchDirName = Config_getString("HTML_OUTPUT")+"/search";
 
   for (i=0;i<NUM_SEARCH_INDICES;i++) // for each index
   {
-    SIntDict<SearchIndexList>::Iterator it(g_searchIndexSymbols[i]);
+    SIntDict<SearchIndexList>::Iterator it(g_searchIndexInfo[i].symbolList);
     SearchIndexList *sl;
     int p=0;
     for (it.toFirst();(sl=it.current());++it,++p) // for each letter
     {
       QCString baseName;
-      baseName.sprintf("%s_%x",g_searchIndexName[i],p);
+      baseName.sprintf("%s_%x",g_searchIndexInfo[i].name.data(),p);
 
       QCString fileName = searchDirName + "/"+baseName+".html";
       QCString dataFileName = searchDirName + "/"+baseName+".js";
@@ -1083,17 +986,7 @@ void writeJavascriptSearchIndex()
           }
           firstEntry=FALSE;
 
-          QCString dispName = d->localName();
-          if (d->definitionType()==Definition::TypeGroup)
-          {
-            dispName = ((GroupDef*)d)->groupTitle();
-          }
-          else if (d->definitionType()==Definition::TypePage)
-          {
-            dispName = ((PageDef*)d)->title();
-          }
-          ti << "  ['" << searchId(dispName) << "',['" 
-            << convertToXML(dispName) << "',[";
+          ti << "  ['" << dl->id() << "',['" << convertToXML(dl->name()) << "',[";
 
           if (dl->count()==1) // item with a unique name
           {
@@ -1274,12 +1167,12 @@ void writeJavascriptSearchIndex()
       int j=0;
       for (i=0;i<NUM_SEARCH_INDICES;i++)
       {
-        if (g_searchIndexCount[i]>0)
+        if (g_searchIndexInfo[i].symbolList.count()>0)
         {
           if (!first) t << "," << endl;
           t << "  " << j << ": \"";
 
-          SIntDict<SearchIndexList>::Iterator it(g_searchIndexSymbols[i]);
+          SIntDict<SearchIndexList>::Iterator it(g_searchIndexInfo[i].symbolList);
           SearchIndexList *sl;
           for (it.toFirst();(sl=it.current());++it) // for each letter
           {
@@ -1298,10 +1191,10 @@ void writeJavascriptSearchIndex()
       j=0;
       for (i=0;i<NUM_SEARCH_INDICES;i++)
       {
-        if (g_searchIndexCount[i]>0)
+        if (g_searchIndexInfo[i].symbolList.count()>0)
         {
           if (!first) t << "," << endl;
-          t << "  " << j << ": \"" << g_searchIndexName[i] << "\"";
+          t << "  " << j << ": \"" << g_searchIndexInfo[i].name << "\"";
           first=FALSE;
           j++;
         }
@@ -1311,14 +1204,13 @@ void writeJavascriptSearchIndex()
       t << "var indexSectionLabels =" << endl;
       t << "{" << endl;
       first=TRUE;
-      static SearchIndexCategoryMapping map;
       j=0;
       for (i=0;i<NUM_SEARCH_INDICES;i++)
       {
-        if (g_searchIndexCount[i]>0)
+        if (g_searchIndexInfo[i].symbolList.count()>0)
         {
           if (!first) t << "," << endl;
-          t << "  " << j << ": \"" << convertToXML(map.categoryLabel[i]) << "\"";
+          t << "  " << j << ": \"" << convertToXML(g_searchIndexInfo[i].text) << "\"";
           first=FALSE;
           j++;
         }
@@ -1352,6 +1244,55 @@ void writeJavascriptSearchIndex()
   Doxygen::indexList->addStyleSheetFile("search/search.js");
 }
 
+const SearchIndexInfo *getSearchIndices()
+{
+  return g_searchIndexInfo;
+}
+
+//---------------------------------------------------------------------------------------------
+
+SearchIndexList::SearchIndexList(uint letter)
+  : SDict< SearchDefinitionList >(17,FALSE), m_letter(letter)
+{
+  setAutoDelete(TRUE);
+}
+
+SearchIndexList::~SearchIndexList()
+{
+}
+
+void SearchIndexList::append(Definition *d)
+{
+  SearchDefinitionList *l = find(d->name());
+  if (l==0)
+  {
+    QCString dispName = d->localName();
+    if (d->definitionType()==Definition::TypeGroup)
+    {
+      dispName = ((GroupDef*)d)->groupTitle();
+    }
+    else if (d->definitionType()==Definition::TypePage)
+    {
+      dispName = ((PageDef*)d)->title();
+    }
+    l=new SearchDefinitionList(searchId(dispName),dispName);
+    SDict< SearchDefinitionList >::append(d->name(),l);
+  }
+  l->append(d);
+}
+
+uint SearchIndexList::letter() const
+{
+  return m_letter;
+}
+
+int SearchIndexList::compareValues(const SearchDefinitionList *md1, const SearchDefinitionList *md2) const
+{
+  QCString n1 = md1->getFirst()->localName();
+  QCString n2 = md2->getFirst()->localName();
+  return qstricmp(n1.data(),n2.data());
+}
+
 //---------------------------------------------------------------------------------------------
 
 void initSearchIndexer()
diff --git a/src/searchindex.h b/src/searchindex.h
index 17d39a2..e491f47 100644
--- a/src/searchindex.h
+++ b/src/searchindex.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -23,6 +23,9 @@
 #include <qdict.h>
 #include <qintdict.h>
 #include <qvector.h>
+#include "sortdict.h"
+#include "definition.h"
+#include "util.h"
 
 class FTextStream;
 class Definition;
@@ -109,6 +112,56 @@ class SearchIndexExternal : public SearchIndexIntf
 
 //------- client side search index ----------------------
 
+#define SEARCH_INDEX_ALL         0
+#define SEARCH_INDEX_CLASSES     1
+#define SEARCH_INDEX_NAMESPACES  2
+#define SEARCH_INDEX_FILES       3
+#define SEARCH_INDEX_FUNCTIONS   4
+#define SEARCH_INDEX_VARIABLES   5
+#define SEARCH_INDEX_TYPEDEFS    6
+#define SEARCH_INDEX_ENUMS       7
+#define SEARCH_INDEX_ENUMVALUES  8
+#define SEARCH_INDEX_PROPERTIES  9
+#define SEARCH_INDEX_EVENTS     10
+#define SEARCH_INDEX_RELATED    11
+#define SEARCH_INDEX_DEFINES    12
+#define SEARCH_INDEX_GROUPS     13
+#define SEARCH_INDEX_PAGES      14
+#define NUM_SEARCH_INDICES      15
+
+class SearchDefinitionList : public QList<Definition>
+{
+  public:
+    SearchDefinitionList(const QCString &id,const QCString &name) : m_id(id), m_name(name) {}
+    QCString id() const   { return m_id;   }
+    QCString name() const { return m_name; }
+  private:
+    QCString m_id;
+    QCString m_name;
+};
+
+class SearchIndexList : public SDict< SearchDefinitionList >
+{
+  public:
+    typedef Definition ElementType;
+    SearchIndexList(uint letter);
+   ~SearchIndexList();
+    void append(Definition *d);
+    uint letter() const;
+  private:
+    int compareValues(const SearchDefinitionList *md1, const SearchDefinitionList *md2) const;
+    uint m_letter;
+};
+
+struct SearchIndexInfo
+{
+  LetterToIndexMap<SearchIndexList> symbolList;
+  QCString name;
+  QCString text;
+};
+
+void createJavascriptSearchIndex();
 void writeJavascriptSearchIndex();
+const SearchIndexInfo *getSearchIndices();
 
 #endif
diff --git a/src/section.h b/src/section.h
index a1f859e..b6268a9 100644
--- a/src/section.h
+++ b/src/section.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -31,7 +31,8 @@ struct SectionInfo
                      Subsection    = 2, 
                      Subsubsection = 3, 
                      Paragraph     = 4, 
-                     Anchor        = 5 
+                     Anchor        = 5,
+                     Table         = 6
                    };
   SectionInfo(const char *f,const int lin,const char *l,const char *t,
               SectionType st,int lev,const char *r=0) :
diff --git a/src/settings.py b/src/settings.py
deleted file mode 100755
index a9dfa13..0000000
--- a/src/settings.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# 
-
-import sys
-import os
-
-f_sqlite3 = sys.argv[1]
-f_libclang = sys.argv[2]
-
-f1 = open(os.path.join(sys.argv[3],'settings.h'),'w')
-f1.write("#ifndef SETTINGS_H\n")
-f1.write("#define SETTINGS_H\n")
-f1.write("\n")
-if (f_sqlite3 != "NO"):
-  f1.write("#define USE_SQLITE3  1\n")
-else:
-  f1.write("#define USE_SQLITE3  0\n")
-
-if (f_libclang != "NO"):
-  f1.write("#define USE_LIBCLANG 1\n")
-else:
-  f1.write("#define USE_LIBCLANG 0\n")
-
-f1.write("\n")
-f1.write("#define IS_SUPPORTED(x) \\\n")
-f1.write("  ((USE_SQLITE3  && strcmp(\"USE_SQLITE3\",(x))==0)  || \\\n")
-f1.write("   (USE_LIBCLANG && strcmp(\"USE_LIBCLANG\",(x))==0) || \\\n")
-f1.write("  0)\n")
-f1.write("\n")
-f1.write("#endif\n")
diff --git a/src/sortdict.h b/src/sortdict.h
index f79a335..f4d23f2 100644
--- a/src/sortdict.h
+++ b/src/sortdict.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp
index 42a0307..ba72b55 100644
--- a/src/sqlite3gen.cpp
+++ b/src/sqlite3gen.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -47,134 +47,154 @@
 
 const char * schema_queries[][2] = {
   { "includes",
-    "CREATE TABLE IF NOT EXISTS includes ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
-      "local INTEGER NOT NULL,"
-      "id_src INTEGER NOT NULL,"
-      "id_dst INTEGER NOT NULL);"
-    "CREATE UNIQUE INDEX idx_includes ON includes "
-      "(local, id_src, id_dst);"
+    "CREATE TABLE IF NOT EXISTS includes (\n"
+      "\t-- #include relations.\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\tlocal        INTEGER NOT NULL,\n"
+      "\tid_src       INTEGER NOT NULL,  -- File id of the includer.\n"
+      "\tid_dst       INTEGER NOT NULL   -- File id of the includee.\n"
+      ");\n"
+    "CREATE UNIQUE INDEX idx_includes ON includes\n"
+      "\t(local, id_src, id_dst);"
   },
   { "innerclass",
-    "CREATE TABLE IF NOT EXISTS innerclass ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
-      "refid TEXT NOT NULL,"
-      "prot INTEGER NOT NULL,"
-      "name TEXT NOT NULL)"
+    "CREATE TABLE IF NOT EXISTS innerclass (\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\trefid        TEXT NOT NULL,\n"
+      "\tprot         INTEGER NOT NULL,\n"
+      "\tname         TEXT NOT NULL\n"
+      ");"
   },
   { "files",
-    "CREATE TABLE IF NOT EXISTS files ("
-      "name TEXT PRIMARY KEY NOT NULL);"
+    "CREATE TABLE IF NOT EXISTS files (\n"
+      "\t-- Names of source files and includes.\n"
+      "\tname         TEXT PRIMARY KEY NOT NULL\n"
+      ");"
   },
   { "refids",
-    "CREATE TABLE IF NOT EXISTS refids ("
-      "refid TEXT PRIMARY KEY NOT NULL);"
+    "CREATE TABLE IF NOT EXISTS refids (\n"
+      "\trefid        TEXT PRIMARY KEY NOT NULL\n"
+      ");"
   },
   { "xrefs",
-    "CREATE TABLE IF NOT EXISTS xrefs ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
-      "refid_src INTEGER NOT NULL, "
-      "refid_dst INTEGER NOT NULL, "
-      "id_file INTEGER NOT NULL, "
-      "line INTEGER NOT NULL, "
-      "column INTEGER NOT NULL);"
-    "CREATE UNIQUE INDEX idx_xrefs ON xrefs "
-      "(refid_src, refid_dst, id_file, line, column);"
+    "CREATE TABLE IF NOT EXISTS xrefs (\n"
+      "\t-- Cross reference relation.\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\trefid_src    INTEGER NOT NULL, -- referrer id.\n"
+      "\trefid_dst    INTEGER NOT NULL, -- referee id.\n"
+      "\tid_file      INTEGER NOT NULL, -- file where the reference is happening.\n"
+      "\tline         INTEGER NOT NULL, -- line where the reference is happening.\n"
+      "\tcolumn       INTEGER NOT NULL  -- column where the reference is happening.\n"
+      ");\n"
+    "CREATE UNIQUE INDEX idx_xrefs ON xrefs\n"
+      "\t(refid_src, refid_dst, id_file, line, column);"
   },
   { "memberdef",
-    "CREATE TABLE IF NOT EXISTS memberdef ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
-      "id_file INTEGER NOT NULL,"
-      "line INTEGER NOT NULL,"
-      "column INTEGER NOT NULL,"
-      "refid TEXT NOT NULL,"
-      "name TEXT NOT NULL,"
-      "definition TEXT,"
-      "type TEXT,"
-      "argsstring TEXT,"
-      "scope TEXT,"
-      "initializer TEXT,"
-      "prot INTEGER,"
-      "const INTEGER,"
-      "virt INTEGER,"
-      "static INTEGER NOT NULL,"
-      "explicit INTEGER,"
-      "inline INTEGER,"
-      "final INTEGER,"
-      "sealed INTEGER,"
-      "new INTEGER,"
-      "optional INTEGER,"
-      "required INTEGER,"
-      "mutable INTEGER,"
-      "initonly INTEGER,"
-      "readable INTEGER,"
-      "writable INTEGER,"
-      "gettable INTEGER,"
-      "settable INTEGER,"
-      "accessor INTEGER,"
-      "addable INTEGER,"
-      "removable INTEGER,"
-      "raisable INTEGER,"
-      "kind INTEGER,"
-      "id_bodyfile INTEGER,"
-      "bodystart INTEGER,"
-      "bodyend INTEGER,"
-      "detaileddescription TEXT,"
-      "briefdescription TEXT,"
-      "inbodydescription TEXT"
-      ")"
+    "CREATE TABLE IF NOT EXISTS memberdef (\n"
+      "\t-- All processed identifiers.\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\tid_file      INTEGER NOT NULL,  -- file where this identifier is located\n"
+      "\tline         INTEGER NOT NULL,  -- line where this identifier is located\n"
+      "\tcolumn       INTEGER NOT NULL,  -- column where this identifier is located\n"
+      "\trefid        TEXT NOT NULL,     -- see the refids table\n"
+      "\tname         TEXT NOT NULL,\n"
+      "\tdefinition   TEXT,\n"
+      "\ttype         TEXT,\n"
+      "\targsstring   TEXT,\n"
+      "\tscope        TEXT,\n"
+      "\tinitializer  TEXT,\n"
+      "\tprot         INTEGER DEFAULT 0, -- 0:public 1:protected 2:private 3:package\n"
+      "\tconst        INTEGER DEFAULT 0, -- 0:non-constant 1:constant\n"
+      "\tvirt         INTEGER DEFAULT 0, -- 0:non-virtual 1:virtual 2:pure-virtual\n"
+      "\tstatic       INTEGER DEFAULT 0, -- 0:non-static 1:static\n"
+      "\texplicit     INTEGER DEFAULT 0,\n"
+      "\tinline       INTEGER DEFAULT 0,\n"
+      "\tfinal        INTEGER DEFAULT 0,\n"
+      "\tsealed       INTEGER DEFAULT 0,\n"
+      "\tnew          INTEGER DEFAULT 0,\n"
+      "\toptional     INTEGER DEFAULT 0,\n"
+      "\trequired     INTEGER DEFAULT 0,\n"
+      "\tmutable      INTEGER DEFAULT 0,\n"
+      "\tinitonly     INTEGER DEFAULT 0,\n"
+      "\treadable     INTEGER DEFAULT 0,\n"
+      "\twritable     INTEGER DEFAULT 0,\n"
+      "\tgettable     INTEGER DEFAULT 0,\n"
+      "\tsettable     INTEGER DEFAULT 0,\n"
+      "\taccessor     INTEGER DEFAULT 0,\n"
+      "\taddable      INTEGER DEFAULT 0,\n"
+      "\tremovable    INTEGER DEFAULT 0,\n"
+      "\traisable     INTEGER DEFAULT 0,\n"
+      /// @todo make a `kind' table
+      "\tkind         INTEGER DEFAULT 0, -- 0:define 1:function 2:variable 3:typedef 4:enum 5:enumvalue 6:signal 7:slot 8:friend 9:DCOP 10:property 11:event\n"
+      "\tid_bodyfile  INTEGER DEFAULT 0, -- file of definition\n"
+      "\tbodystart    INTEGER DEFAULT 0, -- starting line of definition\n"
+      "\tbodyend      INTEGER DEFAULT 0, -- ending line of definition\n"
+      /// @todo make a `detaileddescription' table
+      "\tdetaileddescription  TEXT,\n"
+      "\tbriefdescription     TEXT,\n"
+      "\tinbodydescription    TEXTi\n"
+      ");"
   },
   { "compounddef",
-    "CREATE TABLE IF NOT EXISTS compounddef ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
-      "name TEXT NOT NULL,"
-      "kind TEXT NOT NULL,"
-      "prot INTEGER NOT NULL,"
-      "refid TEXT NOT NULL,"
-      "id_file INTEGER NOT NULL,"
-      "line INTEGER NOT NULL,"
-      "column INTEGER NOT NULL)"
+    "CREATE TABLE IF NOT EXISTS compounddef (\n"
+      "\t-- class/struct definitions.\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\tname         TEXT NOT NULL,\n"
+      "\tkind         TEXT NOT NULL,\n"
+      "\trefid        TEXT NOT NULL,\n"
+      "\tprot         INTEGER NOT NULL,\n"
+      "\tid_file      INTEGER NOT NULL,\n"
+      "\tline         INTEGER NOT NULL,\n"
+      "\tcolumn       INTEGER NOT NULL\n"
+      ");"
   },
   { "basecompoundref",
-    "CREATE TABLE IF NOT EXISTS basecompoundref ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
-      "base TEXT NOT NULL,"
-      "derived TEXT NOT NULL,"
-      "refid TEXT NOT NULL,"
-      "prot INTEGER NOT NULL,"
-      "virt INTEGER NOT NULL)"
+    "CREATE TABLE IF NOT EXISTS basecompoundref (\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\tbase         TEXT NOT NULL,\n"
+      "\tderived      TEXT NOT NULL,\n"
+      "\trefid        TEXT NOT NULL,\n"
+      "\tprot         INTEGER NOT NULL,\n"
+      "\tvirt         INTEGER NOT NULL\n"
+      ");"
   },
   { "derivedcompoundref",
-    "CREATE TABLE IF NOT EXISTS derivedcompoundref ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
-      "base TEXT NOT NULL,"
-      "derived TEXT NOT NULL,"
-      "refid TEXT NOT NULL,"
-      "prot INTEGER NOT NULL,"
-      "virt INTEGER NOT NULL)"
+    "CREATE TABLE IF NOT EXISTS derivedcompoundref (\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\tbase         TEXT NOT NULL,\n"
+      "\tderived      TEXT NOT NULL,\n"
+      "\trefid        TEXT NOT NULL,\n"
+      "\tprot         INTEGER NOT NULL,\n"
+      "\tvirt         INTEGER NOT NULL\n"
+      ");"
   },
   { "params",
-    "CREATE TABLE IF NOT EXISTS params ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
-      "attributes TEXT,"
-      "type TEXT,"
-      "declname TEXT,"
-      "defnname TEXT,"
-      "array TEXT,"
-      "defval TEXT,"
-      "briefdescription TEXT)"
+    "CREATE TABLE IF NOT EXISTS params (\n"
+      "\t-- All processed parameters.\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\tattributes   TEXT,\n"
+      "\ttype         TEXT,\n"
+      "\tdeclname     TEXT,\n"
+      "\tdefnname     TEXT,\n"
+      "\tarray        TEXT,\n"
+      "\tdefval       TEXT,\n"
+      "\tbriefdescription TEXT\n"
+      ");"
   },
   { "memberdef_params",
-    "CREATE TABLE IF NOT EXISTS memberdef_params ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
-      "id_memberdef INTEGER NOT NULL,"
-      "id_param INTEGER NOT NULL)"
+    "CREATE TABLE IF NOT EXISTS memberdef_params (\n"
+      "\t-- Junction table for memberdef parameters.\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\tid_memberdef INTEGER NOT NULL,\n"
+      "\tid_param     INTEGER NOT NULL\n"
+      ");"
   },
   { "innernamespaces",
-    "CREATE TABLE IF NOT EXISTS innernamespaces ("
-      "rowid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
-      "refid TEXT NOT NULL,"
-      "name TEXT NOT NULL)"
+    "CREATE TABLE IF NOT EXISTS innernamespaces (\n"
+      "\trowid        INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
+      "\trefid        TEXT NOT NULL,\n"
+      "\tname         TEXT NOT NULL\n"
+      ");"
   }
 };
 
@@ -407,7 +427,7 @@ static void insertMemberReference(sqlite3 *db, MemberDef *src, MemberDef *dst, c
       int rv = sscanf(floc,"%[^:]:%d:%d",file,&line,&column);
       if (rv!=3)
       {
-        msg("unable to read file loc from[%s]\n",floc);
+        msg("unable to read file:line:col location from string [%s]\n",floc);
         return;
       }
     }
@@ -740,10 +760,11 @@ static void generateSqlite3ForMember(sqlite3*db,MemberDef *md,Definition *def)
     default:
       break;
   }
+
   if (isFunc)
   {
     ArgumentList *al = md->argumentList();
-    if (al!=0 && al->constSpecifier)
+    if (al!=0)
     {
       bindIntParameter(memberdef_insert,":const",al->constSpecifier);
     }
@@ -754,7 +775,7 @@ static void generateSqlite3ForMember(sqlite3*db,MemberDef *md,Definition *def)
     bindIntParameter(memberdef_insert,":new",md->isNew());
     bindIntParameter(memberdef_insert,":optional",md->isOptional());
     bindIntParameter(memberdef_insert,":required",md->isRequired());
-    
+
     bindIntParameter(memberdef_insert,":virt",md->virtualness());
   }
   // place in the arguments and linkify the arguments
@@ -1027,9 +1048,16 @@ static void generateSqlite3ForClass(sqlite3 *db, ClassDef *cd)
     BaseClassDef *bcd;
     for (bcli.toFirst();(bcd=bcli.current());++bcli)
     {
-      bindTextParameter(derivedcompoundref_insert,":base",cd->displayName());
-      bindTextParameter(derivedcompoundref_insert,":dervied",bcd->classDef->displayName());
-      bindTextParameter(derivedcompoundref_insert,":refid",bcd->classDef->getOutputFileBase());
+      bindTextParameter(derivedcompoundref_insert,":base",cd->displayName(),FALSE);
+      if (!bcd->templSpecifiers.isEmpty())
+      {
+        bindTextParameter(derivedcompoundref_insert,":derived",insertTemplateSpecifierInScope(bcd->classDef->name(),bcd->templSpecifiers),FALSE);
+      }
+      else
+      {
+        bindTextParameter(derivedcompoundref_insert,":derived",bcd->classDef->displayName(),FALSE);
+      }
+      bindTextParameter(derivedcompoundref_insert,":refid",bcd->classDef->getOutputFileBase(),FALSE);
       bindIntParameter(derivedcompoundref_insert,":prot",bcd->prot);
       bindIntParameter(derivedcompoundref_insert,":virt",bcd->virt);
       step(db,derivedcompoundref_insert);
diff --git a/src/sqlite3gen.h b/src/sqlite3gen.h
index 59664dd..6396d3a 100644
--- a/src/sqlite3gen.h
+++ b/src/sqlite3gen.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/store.cpp b/src/store.cpp
index 8d9a0cd..c09dcfb 100644
--- a/src/store.cpp
+++ b/src/store.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/store.h b/src/store.h
index 597ea63..39917df 100644
--- a/src/store.h
+++ b/src/store.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/tagreader.cpp b/src/tagreader.cpp
index be0472a..290399a 100644
--- a/src/tagreader.cpp
+++ b/src/tagreader.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/tagreader.h b/src/tagreader.h
index 1b5f7e3..6ea2d81 100644
--- a/src/tagreader.h
+++ b/src/tagreader.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/tclscanner.h b/src/tclscanner.h
index baa8e84..aa1673c 100644
--- a/src/tclscanner.h
+++ b/src/tclscanner.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  * Copyright (C) 2010-2011 by Rene Zaumseil
  *
  * Permission to use, copy, modify, and distribute this software and its
diff --git a/src/tclscanner.l b/src/tclscanner.l
index 6ad2e26..5e249a6 100644
--- a/src/tclscanner.l
+++ b/src/tclscanner.l
@@ -14,12 +14,12 @@
  * input used in their production; they are not affected by this license.
  *
  */ 
+%option never-interactive
 %{
 #include <stdio.h> 
 #include <stdlib.h>
 #include <assert.h>
 #include <ctype.h>
-#include <unistd.h> 
 
 #include <qstring.h>
 #include <qstringlist.h>
@@ -51,8 +51,8 @@
 #include "namespacedef.h"
 #include "filedef.h"
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
 
 #define MAX_INCLUDE_DEPTH 10
 
@@ -666,7 +666,9 @@ static void tcl_codify(const char *s,const char *str)
     tcl.code->startFontClass(s);
     tcl.code_font=s;
   }
-  const char *p=str,*sp=p;
+  char *tmp = (char *) malloc(strlen(str)+1);
+  strcpy(tmp, str);
+  char *p=tmp,*sp=p;
   char c;
   bool done=FALSE;
   while (!done)
@@ -676,7 +678,10 @@ static void tcl_codify(const char *s,const char *str)
     if (c=='\n')
     {
       tcl.code_line++;
-      // *(p-1)='\0'; // Dimitri: is this really needed?
+      *(p-1)='\0'; // Dimitri: is this really needed?
+                   // wtschueller: As far as I can see: yes.
+                   // Deletes that \n that would produce ugly source listings otherwise.
+                   // However, there may exist more sophisticated solutions.
       tcl.code->codify(sp);
       if (tcl.code_font)
       {
@@ -699,6 +704,7 @@ static void tcl_codify(const char *s,const char *str)
       done=TRUE;
     }
   }
+  free(tmp);
   tcl_font_end();
 }
 
diff --git a/src/template.cpp b/src/template.cpp
index 2a73b89..527148c 100644
--- a/src/template.cpp
+++ b/src/template.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -98,6 +98,36 @@ static QValueList<QCString> split(const QCString &str,const QCString &sep,
 
 //----------------------------------------------------------------------------
 
+/** Strips spaces surrounding `=` from string \a in, so
+ *  `foo = 10 bar=5 baz= 'hello'` will become `foo=10 bar=5 baz='hello'`
+ */
+static QCString removeSpacesAroundEquals(const char *s)
+{
+  QCString result(s);
+  const char *p=result.data();
+  char *q = result.rawData();
+  char c;
+  while ((c=*p++))
+  {
+    if (c==' ') // found a space, see if there is a = as well
+    {
+      const char *t = p;
+      bool found=FALSE;
+      while (*t==' ' || *t=='=') { if (*t++=='=') found=TRUE; }
+      if (found)
+      {
+        c='=';
+        p=t; // move p to end of '\s*=\s*' sequence
+      }
+    }
+    *q++=c;
+  }
+  if (q<p) result.resize(q-result.data()+1);
+  return result;
+}
+
+//----------------------------------------------------------------------------
+
 #if ENABLE_TRACING
 static QCString replace(const char *s,char csrc,char cdst)
 {
@@ -112,92 +142,38 @@ static QCString replace(const char *s,char csrc,char cdst)
 
 //- TemplateVariant implementation -------------------------------------------
 
-/** @brief Private data of a template variant object */
-class TemplateVariant::Private
-{
-  public:
-    Private(Type t) : type(t), intVal(0), boolVal(TRUE), strukt(0), list(0), raw(FALSE) {}
-    Type                type;
-    int                 intVal;
-    QCString            strVal;
-    bool                boolVal;
-    TemplateStructIntf *strukt;
-    TemplateListIntf   *list;
-    Delegate            delegate;
-    bool                raw;
-};
-
-TemplateVariant::TemplateVariant()
-{
-  p = new Private(None);
-}
-
-TemplateVariant::TemplateVariant(bool b)
-{
-  p = new Private(Bool);
-  p->boolVal = b;
-}
-
-TemplateVariant::TemplateVariant(int v)
-{
-  p = new Private(Integer);
-  p->intVal = v;
-}
-
-TemplateVariant::TemplateVariant(const char *s,bool raw)
-{
-  p = new Private(String);
-  p->strVal = s;
-  p->raw = raw;
-}
-
-TemplateVariant::TemplateVariant(const QCString &s,bool raw)
-{
-  p = new Private(String);
-  p->strVal = s;
-  p->raw = raw;
-}
 
 TemplateVariant::TemplateVariant(TemplateStructIntf *s)
+  : m_type(Struct), m_strukt(s), m_raw(FALSE)
 {
-  p = new Private(Struct);
-  p->strukt = s;
-  p->strukt->addRef();
+  m_strukt->addRef();
 }
 
 TemplateVariant::TemplateVariant(TemplateListIntf *l)
+  : m_type(List), m_list(l), m_raw(FALSE)
 {
-  p = new Private(List);
-  p->list = l;
-  p->list->addRef();
-}
-
-TemplateVariant::TemplateVariant(const TemplateVariant::Delegate &delegate)
-{
-  p = new Private(Function);
-  p->delegate = delegate;
+  m_list->addRef();
 }
 
 TemplateVariant::~TemplateVariant()
 {
-  if (p->type==Struct) p->strukt->release();
-  else if (p->type==List) p->list->release();
-  delete p;
+  if      (m_type==Struct) m_strukt->release();
+  else if (m_type==List)   m_list->release();
 }
 
 TemplateVariant::TemplateVariant(const TemplateVariant &v)
+  : m_type(v.m_type), m_strukt(0), m_raw(FALSE)
 {
-  p = new Private(v.p->type);
-  p->raw     = v.p->raw;
-  switch (p->type)
+  m_raw = v.m_raw;
+  switch (m_type)
   {
     case None: break;
-    case Bool:     p->boolVal = v.p->boolVal; break;
-    case Integer:  p->intVal  = v.p->intVal;  break;
-    case String:   p->strVal  = v.p->strVal;  break;
-    case Struct:   p->strukt  = v.p->strukt;  p->strukt->addRef(); break;
-    case List:     p->list    = v.p->list;    p->list->addRef();   break;
-    case Function: p->delegate= v.p->delegate;break;
+    case Bool:     m_boolVal = v.m_boolVal; break;
+    case Integer:  m_intVal  = v.m_intVal;  break;
+    case String:   m_strVal  = v.m_strVal;  break;
+    case Struct:   m_strukt  = v.m_strukt;  m_strukt->addRef(); break;
+    case List:     m_list    = v.m_list;    m_list->addRef();   break;
+    case Function: m_delegate= v.m_delegate;break;
   }
 }
 
@@ -205,21 +181,21 @@ TemplateVariant &TemplateVariant::operator=(const TemplateVariant &v)
 {
   // assignment can change the type of the variable, so we have to be
   // careful with reference counted content.
-  TemplateStructIntf *tmpStruct = p->type==Struct ? p->strukt : 0;
-  TemplateListIntf   *tmpList   = p->type==List   ? p->list   : 0;
-  Type tmpType = p->type;
+  TemplateStructIntf *tmpStruct = m_type==Struct ? m_strukt : 0;
+  TemplateListIntf   *tmpList   = m_type==List   ? m_list   : 0;
+  Type tmpType = m_type;
 
-  p->type    = v.p->type;
-  p->raw     = v.p->raw;
-  switch (p->type)
+  m_type    = v.m_type;
+  m_raw     = v.m_raw;
+  switch (m_type)
   {
     case None: break;
-    case Bool:     p->boolVal = v.p->boolVal; break;
-    case Integer:  p->intVal  = v.p->intVal;  break;
-    case String:   p->strVal  = v.p->strVal;  break;
-    case Struct:   p->strukt  = v.p->strukt;  p->strukt->addRef(); break;
-    case List:     p->list    = v.p->list;    p->list->addRef();   break;
-    case Function: p->delegate= v.p->delegate;break;
+    case Bool:     m_boolVal = v.m_boolVal; break;
+    case Integer:  m_intVal  = v.m_intVal;  break;
+    case String:   m_strVal  = v.m_strVal;  break;
+    case Struct:   m_strukt  = v.m_strukt;  m_strukt->addRef(); break;
+    case List:     m_list    = v.m_list;    m_list->addRef();   break;
+    case Function: m_delegate= v.m_delegate;break;
   }
 
   // release overwritten reference counted values
@@ -228,161 +204,34 @@ TemplateVariant &TemplateVariant::operator=(const TemplateVariant &v)
   return *this;
 }
 
-QCString TemplateVariant::toString() const
-{
-  QCString result;
-  switch (p->type)
-  {
-    case None:
-      break;
-    case Bool:
-      result=p->boolVal ? "true" : "false";
-      break;
-    case Integer:
-      result=QCString().setNum(p->intVal);
-      break;
-    case String:
-      result=p->strVal;
-      break;
-    case Struct:
-      result="[struct]";
-      break;
-    case List:
-      result="[list]";
-      break;
-    case Function:
-      result="[function]";
-      break;
-  }
-  return result;
-}
-
 bool TemplateVariant::toBool() const
 {
-  bool result=FALSE;
-  switch (p->type)
+  switch (m_type)
   {
-    case None:
-      break;
-    case Bool:
-      result = p->boolVal;
-      break;
-    case Integer:
-      result = p->intVal!=0;
-      break;
-    case String:
-      result = !p->strVal.isEmpty(); // && p->strVal!="false" && p->strVal!="0";
-      break;
-    case Struct:
-      result = TRUE;
-      break;
-    case List:
-      result = p->list->count()!=0;
-      break;
-    case Function:
-      result = FALSE;
-      break;
+    case None:     return FALSE;
+    case Bool:     return m_boolVal;
+    case Integer:  return m_intVal!=0;
+    case String:   return !m_strVal.isEmpty();
+    case Struct:   return TRUE;
+    case List:     return m_list->count()!=0;
+    case Function: return FALSE;
   }
-  return result;
+  return FALSE;
 }
 
 int TemplateVariant::toInt() const
 {
-  int result=0;
-  switch (p->type)
-  {
-    case None:
-      break;
-    case Bool:
-      result = p->boolVal ? 1 : 0;
-      break;
-    case Integer:
-      result = p->intVal;
-      break;
-    case String:
-      result = p->strVal.toInt();
-      break;
-    case Struct:
-      break;
-    case List:
-      result = p->list->count();
-      break;
-    case Function:
-      result = 0;
-      break;
-  }
-  return result;
-}
-
-TemplateStructIntf *TemplateVariant::toStruct() const
-{
-  return p->type==Struct ? p->strukt : 0;
-}
-
-TemplateListIntf *TemplateVariant::toList() const
-{
-  return p->type==List ? p->list : 0;
-}
-
-TemplateVariant TemplateVariant::call(const QValueList<TemplateVariant> &args)
-{
-  if (p->type==Function) return p->delegate(args);
-  return TemplateVariant();
-}
-
-bool TemplateVariant::operator==(TemplateVariant &other)
-{
-  if (p->type==None)
-  {
-    return FALSE;
-  }
-  if (p->type==TemplateVariant::List && other.p->type==TemplateVariant::List)
-  {
-    return p->list==other.p->list; // TODO: improve me
-  }
-  else if (p->type==TemplateVariant::Struct && other.p->type==TemplateVariant::Struct)
-  {
-    return p->strukt==other.p->strukt; // TODO: improve me
-  }
-  else
-  {
-    return toString()==other.toString();
-  }
-}
-
-TemplateVariant::Type TemplateVariant::type() const
-{
-  return p->type;
-}
-
-QCString TemplateVariant::typeAsString() const
-{
-  switch (p->type)
+  switch (m_type)
   {
-    case None:     return "none";
-    case Bool:     return "bool";
-    case Integer:  return "integer";
-    case String:   return "string";
-    case Struct:   return "struct";
-    case List:     return "list";
-    case Function: return "function";
+    case None:     return 0;
+    case Bool:     return m_boolVal ? 1 : 0;
+    case Integer:  return m_intVal;
+    case String:   return m_strVal.toInt();
+    case Struct:   return 0;
+    case List:     return m_list->count();
+    case Function: return 0;
   }
-  return "invalid";
-}
-
-bool TemplateVariant::isValid() const
-{
-  return p->type!=None;
-}
-
-void TemplateVariant::setRaw(bool b)
-{
-  p->raw = b;
-}
-
-bool TemplateVariant::raw() const
-{
-  return p->raw;
+  return 0;
 }
 
 //- Template struct implementation --------------------------------------------
@@ -699,6 +548,10 @@ class TemplateContextImpl : public TemplateContext
                                                    m_spacelessEnabled=b;
                                                  }
     bool spacelessEnabled() const                { return m_spacelessEnabled && m_spacelessIntf; }
+    void enableTabbing(bool b)                   { m_tabbingEnabled=b;
+                                                   if (m_activeEscapeIntf) m_activeEscapeIntf->enableTabbing(b);
+                                                 }
+    bool tabbingEnabled() const                  { return m_tabbingEnabled; }
     void warn(const char *fileName,int line,const char *fmt,...) const;
 
     // index related functions
@@ -717,6 +570,7 @@ class TemplateContextImpl : public TemplateContext
     TemplateEscapeIntf *m_activeEscapeIntf;
     TemplateSpacelessIntf *m_spacelessIntf;
     bool m_spacelessEnabled;
+    bool m_tabbingEnabled;
     TemplateAutoRef<TemplateStruct> m_indices;
     QDict< QStack<TemplateVariant> > m_indexStacks;
 };
@@ -783,6 +637,87 @@ class FilterGet
     }
 };
 
+//-----------------------------------------------------------------------------
+
+/** @brief The implementation of the "raw" filter */
+class FilterRaw
+{
+  public:
+    static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &)
+    {
+      if (v.isValid() && (v.type()==TemplateVariant::String || v.type()==TemplateVariant::Integer))
+      {
+        return TemplateVariant(v.toString(),TRUE);
+      }
+      else
+      {
+        return v;
+      }
+    }
+};
+
+//-----------------------------------------------------------------------------
+
+/** @brief The implementation of the "list" filter */
+class FilterList
+{
+  public:
+    static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &)
+    {
+      if (v.isValid())
+      {
+        if (v.type()==TemplateVariant::List) // input is already a list
+        {
+          return v;
+        }
+        // create a list with v as the only element
+        TemplateList *list = TemplateList::alloc();
+        list->append(v);
+        return list;
+      }
+      else
+      {
+        return v;
+      }
+    }
+};
+
+//-----------------------------------------------------------------------------
+/** @brief The implementation of the "texlabel" filter */
+class FilterTexLabel
+{
+  public:
+    static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &)
+    {
+      if (v.isValid() && (v.type()==TemplateVariant::String))
+      {
+        return TemplateVariant(latexEscapeLabelName(v.toString(),FALSE),TRUE);
+      }
+      else
+      {
+        return v;
+      }
+    }
+};
+
+//-----------------------------------------------------------------------------
+
+/** @brief The implementation of the "texindex" filter */
+class FilterTexIndex
+{
+  public:
+    static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &)
+    {
+      if (v.isValid() && (v.type()==TemplateVariant::String))
+      {
+        return TemplateVariant(latexEscapeIndexChars(v.toString(),FALSE),TRUE);
+      }
+      else
+      {
+        return v;
+      }
+    }
+};
 
 //-----------------------------------------------------------------------------
 
@@ -793,7 +728,7 @@ class FilterAppend
     static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &arg)
     {
       if ((v.type()==TemplateVariant::String || v.type()==TemplateVariant::Integer) &&
-          arg.type()==TemplateVariant::String)
+          (arg.type()==TemplateVariant::String || arg.type()==TemplateVariant::Integer))
       {
         return TemplateVariant(v.toString() + arg.toString());
       }
@@ -1088,6 +1023,25 @@ class FilterGroupBy
 
 //--------------------------------------------------------------------
 
+/** @brief The implementation of the "relative" filter */
+class FilterRelative
+{
+  public:
+    static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &)
+    {
+      if (v.isValid() && v.type()==TemplateVariant::String && v.toString().left(2)=="..")
+      {
+        return TRUE;
+      }
+      else
+      {
+        return FALSE;
+      }
+    }
+};
+
+//--------------------------------------------------------------------
+
 /** @brief The implementation of the "paginate" filter */
 class FilterPaginate
 {
@@ -1158,16 +1112,19 @@ class FilterAlphaIndex
     static QCString keyToLabel(uint startLetter)
     {
       char s[11]; // 0x12345678 + '\0'
-      if (startLetter>0x20 && startLetter<=0x7f) // printable ASCII character
+      if ((startLetter>='0' && startLetter<='9') ||
+          (startLetter>='a' && startLetter<='z') ||
+          (startLetter>='A' && startLetter<='Z'))
       {
-        s[0]=tolower((char)startLetter);
-        s[1]=0;
+        int i=0;
+        if (startLetter>='0' && startLetter<='9') s[i++] = 'x';
+        s[i++]=tolower((char)startLetter);
+        s[i++]=0;
       }
       else
       {
         const char hex[]="0123456789abcdef";
         int i=0;
-        s[i++]='0';
         s[i++]='x';
         if (startLetter>(1<<24)) // 4 byte character
         {
@@ -1381,6 +1338,8 @@ class TemplateFilterFactory
 // register a handlers for each filter we support
 static TemplateFilterFactory::AutoRegister<FilterAdd>         fAdd("add");
 static TemplateFilterFactory::AutoRegister<FilterGet>         fGet("get");
+static TemplateFilterFactory::AutoRegister<FilterRaw>         fRaw("raw");
+static TemplateFilterFactory::AutoRegister<FilterList>        fList("list");
 static TemplateFilterFactory::AutoRegister<FilterAppend>      fAppend("append");
 static TemplateFilterFactory::AutoRegister<FilterLength>      fLength("length");
 static TemplateFilterFactory::AutoRegister<FilterNoWrap>      fNoWrap("nowrap");
@@ -1388,7 +1347,10 @@ static TemplateFilterFactory::AutoRegister<FilterFlatten>     fFlatten("flatten"
 static TemplateFilterFactory::AutoRegister<FilterDefault>     fDefault("default");
 static TemplateFilterFactory::AutoRegister<FilterPrepend>     fPrepend("prepend");
 static TemplateFilterFactory::AutoRegister<FilterGroupBy>     fGroupBy("groupBy");
+static TemplateFilterFactory::AutoRegister<FilterRelative>    fRelative("relative");
 static TemplateFilterFactory::AutoRegister<FilterListSort>    fListSort("listsort");
+static TemplateFilterFactory::AutoRegister<FilterTexLabel>    fTexLabel("texLabel");
+static TemplateFilterFactory::AutoRegister<FilterTexIndex>    fTexIndex("texIndex");
 static TemplateFilterFactory::AutoRegister<FilterPaginate>    fPaginate("paginate");
 static TemplateFilterFactory::AutoRegister<FilterStripPath>   fStripPath("stripPath");
 static TemplateFilterFactory::AutoRegister<FilterAlphaIndex>  fAlphaIndex("alphaIndex");
@@ -1447,6 +1409,10 @@ class ExprAstFunctionVariable : public ExprAst
     { TRACE(("ExprAstFunctionVariable()\n"));
       m_args.setAutoDelete(TRUE);
     }
+   ~ExprAstFunctionVariable()
+    {
+      delete m_var;
+    }
     virtual TemplateVariant resolve(TemplateContext *c)
     {
       QValueList<TemplateVariant> args;
@@ -1978,17 +1944,6 @@ class ExpressionParser
       TRACE(("{parseLiteral(%s)\n",m_curToken.id.data()));
       ExprAst *expr = new ExprAstLiteral(m_curToken.id);
       getNextToken();
-      if (expr)
-      {
-        while (m_curToken.type==ExprToken::Operator &&
-               m_curToken.op==Operator::Filter)
-        {
-          getNextToken();
-          ExprAstFilter *filter = parseFilter();
-          if (!filter) break;
-          expr = new ExprAstFilterAppl(expr,filter);
-        }
-      }
       TRACE(("}parseLiteral()\n"));
       return expr;
     }
@@ -2307,7 +2262,9 @@ class TemplateNodeList : public QList<TemplateNode>
 class TemplateImpl : public TemplateNode, public Template
 {
   public:
-    TemplateImpl(TemplateEngine *e,const QCString &name,const char *data,int size);
+    TemplateImpl(TemplateEngine *e,const QCString &name,const QCString &data,
+                 const QCString &extension);
+   ~TemplateImpl();
     void render(FTextStream &ts, TemplateContext *c);
 
     TemplateEngine *engine() const { return m_engine; }
@@ -2322,10 +2279,26 @@ class TemplateImpl : public TemplateNode, public Template
 
 //----------------------------------------------------------
 
+/** @brief Weak reference wrapper for TemplateStructIntf that provides access to the
+ *  wrapped struct without holding a reference.
+ */
+class TemplateStructWeakRef : public TemplateStructIntf
+{
+  public:
+    TemplateStructWeakRef(TemplateStructIntf *ref) : m_ref(ref), m_refCount(0) {}
+    virtual TemplateVariant get(const char *name) const { return m_ref->get(name); }
+    virtual int addRef() { return ++m_refCount; }
+    virtual int release() { int count=--m_refCount; if (count<=0) { delete this; } return count; }
+  private:
+    TemplateStructIntf *m_ref;
+    int m_refCount;
+};
+
+//----------------------------------------------------------
 
 TemplateContextImpl::TemplateContextImpl(const TemplateEngine *e)
   : m_engine(e), m_templateName("<unknown>"), m_line(1), m_activeEscapeIntf(0),
-    m_spacelessIntf(0), m_spacelessEnabled(FALSE), m_indices(TemplateStruct::alloc())
+    m_spacelessIntf(0), m_spacelessEnabled(FALSE), m_tabbingEnabled(FALSE), m_indices(TemplateStruct::alloc())
 {
   m_indexStacks.setAutoDelete(TRUE);
   m_contextStack.setAutoDelete(TRUE);
@@ -2358,9 +2331,8 @@ TemplateVariant TemplateContextImpl::get(const QCString &name) const
   }
   else // obj.prop
   {
-    TemplateVariant v;
     QCString objName = name.left(i);
-    v = getPrimary(objName);
+    TemplateVariant v = getPrimary(objName);
     QCString propName = name.mid(i+1);
     while (!propName.isEmpty())
     {
@@ -2467,7 +2439,7 @@ void TemplateContextImpl::warn(const char *fileName,int line,const char *fmt,...
 
 void TemplateContextImpl::openSubIndex(const QCString &indexName)
 {
-  //printf("TemplateContextImpl::openSubIndex(%s)\n",indexName.data());
+  printf("TemplateContextImpl::openSubIndex(%s)\n",indexName.data());
   QStack<TemplateVariant> *stack = m_indexStacks.find(indexName);
   if (!stack || stack->isEmpty() || stack->top()->type()==TemplateVariant::List) // error: no stack yet or no entry
   {
@@ -2488,7 +2460,7 @@ void TemplateContextImpl::openSubIndex(const QCString &indexName)
 
 void TemplateContextImpl::closeSubIndex(const QCString &indexName)
 {
-  //printf("TemplateContextImpl::closeSubIndex(%s)\n",indexName.data());
+  printf("TemplateContextImpl::closeSubIndex(%s)\n",indexName.data());
   QStack<TemplateVariant> *stack = m_indexStacks.find(indexName);
   if (!stack || stack->count()<3)
   {
@@ -2511,6 +2483,7 @@ void TemplateContextImpl::closeSubIndex(const QCString &indexName)
       }
     }
   }
+  //fprintf(stderr,"TemplateContextImpl::closeSubIndex(%s) end g_count=%d\n\n",indexName.data(),g_count);
 }
 
 static void getPathListFunc(TemplateStructIntf *entry,TemplateList *list)
@@ -2569,7 +2542,9 @@ void TemplateContextImpl::addIndexEntry(const QCString &indexName,const QValueLi
     if (stack->count()>1)
     {
       TemplateVariant *tmp = stack->pop();
-      parent = *stack->top();
+      // To prevent a cyclic dependency between parent and child which causes a memory
+      // leak, we wrap the parent into a weak reference version.
+      parent = new TemplateStructWeakRef(stack->top()->toStruct());
       stack->push(tmp);
       ASSERT(parent.type()==TemplateVariant::Struct);
     }
@@ -2661,7 +2636,6 @@ class TemplateNodeVariable : public TemplateNode
         {
           v = v.call(QValueList<TemplateVariant>());
         }
-        //printf("TemplateNodeVariable::render(%s) raw=%d\n",value.data(),v.raw());
         if (ci->escapeIntf() && !v.raw())
         {
           ts << ci->escapeIntf()->escape(v.toString());
@@ -3482,6 +3456,24 @@ class TemplateNodeInclude : public TemplateNodeCreator<TemplateNodeInclude>
 
 //----------------------------------------------------------
 
+static void stripLeadingWhiteSpace(QGString &s)
+{
+  const char *src = s.data();
+  if (src)
+  {
+    char *dst = s.data();
+    char c;
+    bool skipSpaces=TRUE;
+    while ((c=*src++))
+    {
+      if (c=='\n') { *dst++=c; skipSpaces=TRUE; }
+      else if (c==' ' && skipSpaces) {}
+      else { *dst++=c; skipSpaces=FALSE; }
+    }
+    *dst='\0';
+  }
+}
+
 /** @brief Class representing an 'create' tag in a template */
 class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate>
 {
@@ -3545,17 +3537,18 @@ class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate>
           TemplateImpl *t = getTemplate();
           if (t)
           {
+            QCString extension=outputFile;
+            int i=extension.findRev('.');
+            if (i!=-1)
+            {
+              extension=extension.right(extension.length()-i-1);
+            }
+            t->engine()->setOutputExtension(extension);
             Template *ct = t->engine()->loadByName(templateFile,m_line);
             TemplateImpl *createTemplate = ct ? dynamic_cast<TemplateImpl*>(ct) : 0;
             if (createTemplate)
             {
               mkpath(ci,outputFile);
-              QCString extension=outputFile;
-              int i=extension.findRev('.');
-              if (i!=-1)
-              {
-                extension=extension.right(extension.length()-i-1);
-              }
               if (!ci->outputDirectory().isEmpty())
               {
                 outputFile.prepend(ci->outputDirectory()+"/");
@@ -3567,7 +3560,11 @@ class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate>
                 TemplateEscapeIntf *escIntf = ci->escapeIntf();
                 ci->selectEscapeIntf(extension);
                 FTextStream ts(&f);
-                createTemplate->render(ts,c);
+                QGString out;
+                FTextStream os(&out);
+                createTemplate->render(os,c);
+                stripLeadingWhiteSpace(out);
+                ts << out;
                 t->engine()->unload(t);
                 ci->setActiveEscapeIntf(escIntf);
               }
@@ -3580,6 +3577,7 @@ class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate>
             {
               ci->warn(m_templateName,m_line,"failed to load template '%s' for include",templateFile.data());
             }
+            t->engine()->setOutputExtension("");
           }
         }
       }
@@ -3678,6 +3676,7 @@ class TemplateNodeTree : public TemplateNodeCreator<TemplateNodeTree>
         }
       }
       c->pop();
+      delete it;
       return result.data();
     }
     void render(FTextStream &ts, TemplateContext *c)
@@ -3868,7 +3867,8 @@ class TemplateNodeWith : public TemplateNodeCreator<TemplateNodeWith>
       TRACE(("{TemplateNodeWith(%s)\n",data.data()));
       m_args.setAutoDelete(TRUE);
       ExpressionParser expParser(parser,line);
-      QValueList<QCString> args = split(data," ");
+      QCString filteredData = removeSpacesAroundEquals(data);
+      QValueList<QCString> args = split(filteredData," ");
       QValueListIterator<QCString> it = args.begin();
       while (it!=args.end())
       {
@@ -3920,7 +3920,7 @@ class TemplateNodeWith : public TemplateNodeCreator<TemplateNodeWith>
 
 //----------------------------------------------------------
 
-/** @brief Class representing an 'set' tag in a template */
+/** @brief Class representing an 'cycle' tag in a template */
 class TemplateNodeCycle : public TemplateNodeCreator<TemplateNodeCycle>
 {
   public:
@@ -4083,6 +4083,11 @@ class TemplateNodeMarkers : public TemplateNodeCreator<TemplateNodeMarkers>
       parser->removeNextToken(); // skip over endmarkers
       TRACE(("}TemplateNodeMarkers(%s)\n",data.data()));
     }
+   ~TemplateNodeMarkers()
+    {
+      delete m_listExpr;
+      delete m_patternExpr;
+    }
     void render(FTextStream &ts, TemplateContext *c)
     {
       TemplateContextImpl *ci = dynamic_cast<TemplateContextImpl*>(c);
@@ -4134,6 +4139,7 @@ class TemplateNodeMarkers : public TemplateNodeCreator<TemplateNodeMarkers>
             }
             ts << str.right(str.length()-index); // write text after last marker
             c->pop();
+            delete it;
           }
           else
           {
@@ -4155,6 +4161,36 @@ class TemplateNodeMarkers : public TemplateNodeCreator<TemplateNodeMarkers>
 
 //----------------------------------------------------------
 
+/** @brief Class representing an 'tabbing' tag in a template */
+class TemplateNodeTabbing : public TemplateNodeCreator<TemplateNodeTabbing>
+{
+  public:
+    TemplateNodeTabbing(TemplateParser *parser,TemplateNode *parent,int line,const QCString &)
+      : TemplateNodeCreator<TemplateNodeTabbing>(parser,parent,line)
+    {
+      TRACE(("{TemplateNodeTabbing()\n"));
+      QStrList stopAt;
+      stopAt.append("endtabbing");
+      parser->parse(this,line,stopAt,m_nodes);
+      parser->removeNextToken(); // skip over endtabbing
+      TRACE(("}TemplateNodeTabbing()\n"));
+    }
+    void render(FTextStream &ts, TemplateContext *c)
+    {
+      TemplateContextImpl *ci = dynamic_cast<TemplateContextImpl*>(c);
+      if (ci==0) return; // should not happen
+      ci->setLocation(m_templateName,m_line);
+      bool wasTabbing = ci->tabbingEnabled();
+      ci->enableTabbing(TRUE);
+      m_nodes.render(ts,c);
+      ci->enableTabbing(wasTabbing);
+    }
+  private:
+    TemplateNodeList m_nodes;
+};
+
+//----------------------------------------------------------
+
 /** @brief Class representing an 'markers' tag in a template */
 class TemplateNodeResource : public TemplateNodeCreator<TemplateNodeResource>
 {
@@ -4290,6 +4326,7 @@ static TemplateNodeFactory::AutoRegister<TemplateNodeCreate>        autoRefCreat
 static TemplateNodeFactory::AutoRegister<TemplateNodeRepeat>        autoRefRepeat("repeat");
 static TemplateNodeFactory::AutoRegister<TemplateNodeInclude>       autoRefInclude("include");
 static TemplateNodeFactory::AutoRegister<TemplateNodeMarkers>       autoRefMarkers("markers");
+static TemplateNodeFactory::AutoRegister<TemplateNodeTabbing>       autoRefTabbing("tabbing");
 static TemplateNodeFactory::AutoRegister<TemplateNodeResource>      autoRefResource("resource");
 static TemplateNodeFactory::AutoRegister<TemplateNodeSpaceless>     autoRefSpaceless("spaceless");
 static TemplateNodeFactory::AutoRegister<TemplateNodeIndexEntry>    autoRefIndexEntry("indexentry");
@@ -4378,8 +4415,10 @@ void TemplateBlockContext::push(TemplateNodeBlock *block)
 class TemplateLexer
 {
   public:
-    TemplateLexer(const TemplateEngine *engine,const QCString &fileName,const char *data,int size);
+    TemplateLexer(const TemplateEngine *engine,const QCString &fileName,const QCString &data);
     void tokenize(QList<TemplateToken> &tokens);
+    void setOpenCloseCharacters(char openChar,char closeChar)
+    { m_openChar=openChar; m_closeChar=closeChar; }
   private:
     void addToken(QList<TemplateToken> &tokens,
                   const char *data,int line,int startPos,int endPos,
@@ -4388,14 +4427,15 @@ class TemplateLexer
     const TemplateEngine *m_engine;
     QCString m_fileName;
     QCString m_data;
+    char m_openChar;
+    char m_closeChar;
 };
 
-TemplateLexer::TemplateLexer(const TemplateEngine *engine,const QCString &fileName,const char *data,int size) :
-  m_engine(engine), m_fileName(fileName)
+TemplateLexer::TemplateLexer(const TemplateEngine *engine,const QCString &fileName,const QCString &data) :
+  m_engine(engine), m_fileName(fileName), m_data(data)
 {
-  m_data.resize(size+1);
-  memcpy(m_data.rawData(),data,size);
-  m_data[size]=0;
+  m_openChar='{';
+  m_closeChar='}';
 }
 
 void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
@@ -4414,6 +4454,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
   };
 
   const char *p=m_data.data();
+  if (p==0) return;
   int  state=StateText;
   int  pos=0;
   int  lastTokenPos=0;
@@ -4427,7 +4468,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
     switch (state)
     {
       case StateText:
-        if (c=='{') // {{ or {% or {# or something else
+        if (c==m_openChar) // {{ or {% or {# or something else
         {
           state=StateBeginTemplate;
         }
@@ -4448,7 +4489,14 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
             markStartPos=pos-1;
             break;
           case '{': // {{
-            state=StateMaybeVar;
+            if (m_openChar=='{')
+            {
+              state=StateMaybeVar;
+            }
+            else
+            {
+              state=StateVariable;
+            }
             markStartPos=pos-1;
             break;
           default:
@@ -4460,7 +4508,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
       case StateTag:
         if (c=='\n')
         {
-          warn(m_fileName,line,"unexpected new line inside {%%...%%} block");
+          warn(m_fileName,line,"unexpected new line inside %c%%...%%%c block",m_openChar,m_closeChar);
           m_engine->printIncludeContext(m_fileName,line);
         }
         else if (c=='%') // %} or something else
@@ -4469,7 +4517,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
         }
         break;
       case StateEndTag:
-        if (c=='}') // %}
+        if (c==m_closeChar) // %}
         {
           // found tag!
           state=StateText;
@@ -4484,7 +4532,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
         {
           if (c=='\n')
           {
-            warn(m_fileName,line,"unexpected new line inside {%%...%%} block");
+            warn(m_fileName,line,"unexpected new line inside %c%%...%%%c block",m_openChar,m_closeChar);
             m_engine->printIncludeContext(m_fileName,line);
           }
           state=StateTag;
@@ -4493,7 +4541,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
       case StateComment:
         if (c=='\n')
         {
-          warn(m_fileName,line,"unexpected new line inside {#...#} block");
+          warn(m_fileName,line,"unexpected new line inside %c#...#%c block",m_openChar,m_closeChar);
           m_engine->printIncludeContext(m_fileName,line);
         }
         else if (c=='#') // #} or something else
@@ -4502,7 +4550,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
         }
         break;
       case StateEndComment:
-        if (c=='}') // #}
+        if (c==m_closeChar) // #}
         {
           // found comment tag!
           state=StateText;
@@ -4515,7 +4563,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
         {
           if (c=='\n')
           {
-            warn(m_fileName,line,"unexpected new line inside {#...#} block");
+            warn(m_fileName,line,"unexpected new line inside %c#...#%c block",m_openChar,m_closeChar);
             m_engine->printIncludeContext(m_fileName,line);
           }
           state=StateComment;
@@ -4538,9 +4586,10 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
         }
         break;
       case StateVariable:
+        emptyOutputLine=FALSE; // assume a variable expands to content
         if (c=='\n')
         {
-          warn(m_fileName,line,"unexpected new line inside {{...}} block");
+          warn(m_fileName,line,"unexpected new line inside %c{...}%c block",m_openChar,m_closeChar);
           m_engine->printIncludeContext(m_fileName,line);
         }
         else if (c=='}') // }} or something else
@@ -4549,7 +4598,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
         }
         break;
       case StateEndVariable:
-        if (c=='}') // }}
+        if (c==m_closeChar) // }}
         {
           // found variable tag!
           state=StateText;
@@ -4564,7 +4613,7 @@ void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
         {
           if (c=='\n')
           {
-            warn(m_fileName,line,"unexpected new line inside {{...}} block");
+            warn(m_fileName,line,"unexpected new line inside %c{...}%c block",m_openChar,m_closeChar);
             m_engine->printIncludeContext(m_fileName,line);
           }
           state=StateVariable;
@@ -4666,7 +4715,7 @@ void TemplateParser::parse(
                    command=="endrecursetree" || command=="endspaceless" ||
                    command=="endmarkers"     || command=="endmsg"       ||
                    command=="endrepeat"      || command=="elif"         ||
-                   command=="endrange")
+                   command=="endrange"       || command=="endtabbing")
           {
             warn(m_templateName,tok->line,"Found tag '%s' without matching start tag",command.data());
           }
@@ -4734,12 +4783,17 @@ void TemplateParser::warn(const char *fileName,int line,const char *fmt,...) con
 //----------------------------------------------------------
 
 
-TemplateImpl::TemplateImpl(TemplateEngine *engine,const QCString &name,const char *data,int size)
+TemplateImpl::TemplateImpl(TemplateEngine *engine,const QCString &name,const QCString &data,
+    const QCString &extension)
   : TemplateNode(0)
 {
   m_name = name;
   m_engine = engine;
-  TemplateLexer lexer(engine,name,data,size);
+  TemplateLexer lexer(engine,name,data);
+  if (extension=="tex")
+  {
+    lexer.setOpenCloseCharacters('<','>');
+  }
   QList<TemplateToken> tokens;
   tokens.setAutoDelete(TRUE);
   lexer.tokenize(tokens);
@@ -4747,6 +4801,11 @@ TemplateImpl::TemplateImpl(TemplateEngine *engine,const QCString &name,const cha
   parser.parse(this,1,QStrList(),m_nodes);
 }
 
+TemplateImpl::~TemplateImpl()
+{
+  //printf("deleting template %s\n",m_name.data());
+}
+
 void TemplateImpl::render(FTextStream &ts, TemplateContext *c)
 {
   TemplateContextImpl *ci = dynamic_cast<TemplateContextImpl*>(c);
@@ -4809,30 +4868,12 @@ class TemplateEngine::Private
       Template *templ = m_templateCache.find(fileName);
       if (templ==0)
       {
-        const Resource *res = ResourceMgr::instance().get(fileName);
-        if (res)
+        const QCString data = ResourceMgr::instance().getAsString(fileName);
+        if (!data.isEmpty())
         {
-          templ = new TemplateImpl(m_engine,fileName,(const char *)res->data,res->size);
+          templ = new TemplateImpl(m_engine,fileName,data,m_extension);
           m_templateCache.insert(fileName,templ);
         }
-#if 0
-        QFile f(fileName);
-        if (f.open(IO_ReadOnly))
-        {
-          uint size=f.size();
-          char *data = new char[size+1];
-          if (data)
-          {
-            data[size]=0;
-            if (f.readBlock(data,f.size()))
-            {
-              templ = new TemplateImpl(m_engine,fileName,data);
-              m_templateCache.insert(fileName,templ);
-            }
-            delete[] data;
-          }
-        }
-#endif
         else
         {
           err("Cound not open template file %s\n",fileName.data());
@@ -4889,11 +4930,22 @@ class TemplateEngine::Private
       }
     }
 
+    void setOutputExtension(const char *extension)
+    {
+      m_extension = extension;
+    }
+
+    QCString outputExtension() const
+    {
+      return m_extension;
+    }
+
   private:
     QDict<Template> m_templateCache;
     //mutable int m_indent;
     TemplateEngine *m_engine;
     QList<IncludeEntry> m_includeStack;
+    QCString m_extension;
 };
 
 TemplateEngine::TemplateEngine()
@@ -4941,3 +4993,15 @@ void TemplateEngine::printIncludeContext(const char *fileName,int line) const
   p->printIncludeContext(fileName,line);
 }
 
+void TemplateEngine::setOutputExtension(const char *extension)
+{
+  p->setOutputExtension(extension);
+}
+
+QCString TemplateEngine::outputExtension() const
+{
+  return p->outputExtension();
+}
+
+
+
diff --git a/src/template.h b/src/template.h
index ef9792c..7d6e2ff 100644
--- a/src/template.h
+++ b/src/template.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -139,28 +139,41 @@ class TemplateVariant
     enum Type { None, Bool, Integer, String, Struct, List, Function };
 
     /** Returns the type of the value stored in the variant */
-    Type type() const;
+    Type type() const { return m_type; }
 
     /** Return a string representation of the type of the value stored in the variant */
-    QCString typeAsString() const;
+    QCString typeAsString() const
+    {
+      switch (m_type)
+      {
+        case None:     return "none";
+        case Bool:     return "bool";
+        case Integer:  return "integer";
+        case String:   return "string";
+        case Struct:   return "struct";
+        case List:     return "list";
+        case Function: return "function";
+      }
+      return "invalid";
+    }
 
     /** Returns TRUE if the variant holds a valid value, or FALSE otherwise */
-    bool isValid() const;
+    bool isValid() const { return m_type!=None; }
 
     /** Constructs an invalid variant. */
-    TemplateVariant();
+    TemplateVariant() : m_type(None), m_strukt(0), m_raw(FALSE) {}
 
     /** Constructs a new variant with a boolean value \a b. */
-    explicit TemplateVariant(bool b);
+    explicit TemplateVariant(bool b) : m_type(Bool), m_boolVal(b), m_raw(FALSE) {}
 
     /** Constructs a new variant with a integer value \a v. */
-    TemplateVariant(int v);
+    TemplateVariant(int v) : m_type(Integer), m_intVal(v), m_raw(FALSE) {}
 
     /** Constructs a new variant with a string value \a s. */
-    TemplateVariant(const char *s,bool raw=FALSE);
+    TemplateVariant(const char *s,bool raw=FALSE) : m_type(String), m_strVal(s), m_strukt(0), m_raw(raw) {}
 
     /** Constructs a new variant with a string value \a s. */
-    TemplateVariant(const QCString &s,bool raw=FALSE);
+    TemplateVariant(const QCString &s,bool raw=FALSE) : m_type(String), m_strVal(s), m_strukt(0), m_raw(raw) {}
 
     /** Constructs a new variant with a struct value \a s.
      *  @note. The variant will hold a reference to the object.
@@ -179,7 +192,7 @@ class TemplateVariant
      *  TemplateVariant::Delegate::fromFunction() to create
      *  Delegate objects.
      */
-    TemplateVariant(const Delegate &delegate);
+    TemplateVariant(const Delegate &delegate) : m_type(Function), m_strukt(0), m_delegate(delegate), m_raw(FALSE) {}
 
     /** Destroys the Variant object */
     ~TemplateVariant();
@@ -195,46 +208,96 @@ class TemplateVariant
     /** Compares this QVariant with v and returns true if they are equal;
      *  otherwise returns false.
      */
-    bool operator==(TemplateVariant &other);
+    bool operator==(TemplateVariant &other)
+    {
+      if (m_type==None)
+      {
+        return FALSE;
+      }
+      if (m_type==TemplateVariant::List && other.m_type==TemplateVariant::List)
+      {
+        return m_list==other.m_list; // TODO: improve me
+      }
+      else if (m_type==TemplateVariant::Struct && other.m_type==TemplateVariant::Struct)
+      {
+        return m_strukt==other.m_strukt; // TODO: improve me
+      }
+      else
+      {
+        return toString()==other.toString();
+      }
+    }
 
     /** Returns the variant as a string. */
-    QCString            toString() const;
+    QCString toString() const
+    {
+      switch (m_type)
+      {
+        case None:     return QCString();
+        case Bool:     return m_boolVal ? "true" : "false";
+        case Integer:  return QCString().setNum(m_intVal);
+        case String:   return m_strVal;
+        case Struct:   return "[struct]";
+        case List:     return "[list]";
+        case Function: return "[function]";
+      }
+      return QCString();
+    }
 
     /** Returns the variant as a boolean. */
-    bool                toBool() const;
+    bool toBool() const;
 
     /** Returns the variant as an integer. */
-    int                 toInt() const;
+    int toInt() const;
 
     /** Returns the pointer to list referenced by this variant
      *  or 0 if this variant does not have list type.
      */
-    TemplateListIntf   *toList() const;
+    TemplateListIntf   *toList() const
+    {
+      return m_type==List ? m_list : 0;
+    }
 
     /** Returns the pointer to struct referenced by this variant
      *  or 0 if this variant does not have struct type.
      */
-    TemplateStructIntf *toStruct() const;
+    TemplateStructIntf *toStruct() const
+    {
+      return m_type==Struct ? m_strukt : 0;
+    }
 
     /** Return the result of apply this function with \a args.
      *  Returns an empty string if the variant type is not a function.
      */
-    TemplateVariant call(const QValueList<TemplateVariant> &args);
+    TemplateVariant call(const QValueList<TemplateVariant> &args)
+    {
+      if (m_type==Function) return m_delegate(args);
+      return TemplateVariant();
+    }
 
     /** Sets whether or not the value of the Variant should be
      *  escaped or written as-is (raw).
      *  @param[in] b TRUE means write as-is, FALSE means apply escaping.
      */
-    void setRaw(bool b);
+    void setRaw(bool b) { m_raw = b; }
 
     /** Returns whether or not the value of the Value is raw.
      *  @see setRaw()
      */
-    bool raw() const;
+    bool raw() const { return m_raw; }
 
   private:
-    class Private;
-    Private *p;
+    Type                  m_type;
+    QCString              m_strVal;
+    union
+    {
+      int                 m_intVal;
+      bool                m_boolVal;
+      TemplateStructIntf *m_strukt;
+      TemplateListIntf   *m_list;
+    };
+    Delegate              m_delegate;
+    bool                  m_raw;
 };
 
 //------------------------------------------------------------------------
@@ -396,6 +459,8 @@ class TemplateEscapeIntf
   public:
     /** Returns the \a input after escaping certain characters */
     virtual QCString escape(const QCString &input) = 0;
+    /** Setting tabbing mode on or off (for LaTeX) */
+    virtual void enableTabbing(bool b) = 0;
 };
 
 //------------------------------------------------------------------------
@@ -453,7 +518,7 @@ class TemplateContext
      */
     virtual const TemplateVariant *getRef(const QCString &name) const = 0;
 
-    /** When files are create (i.e. by {% create ... %}) they written
+    /** When files are created (i.e. by {% create ... %}) they written
      *  to the directory \a dir.
      */
     virtual void setOutputDirectory(const QCString &dir) = 0;
@@ -510,11 +575,10 @@ class TemplateEngine
      */
     void destroyContext(TemplateContext *ctx);
 
-    /** Creates a new template whole contents are in a file.
-     *  @param[in] fileName The name of the file containing the
-     *             template data
+    /** Creates a new template whose contents are in a file.
+     *  @param[in] fileName The name of the file containing the template data
      *  @param[in] fromLine The line number of the statement that triggered the load
-     *  @return the new template, the caller will be the owner.
+     *  @return the new template, the engine will keep ownership of the object.
      */
     Template *loadByName(const QCString &fileName,int fromLine);
 
@@ -523,13 +587,24 @@ class TemplateEngine
      */
     void unload(Template *t);
 
+    /** Prints the current template file include stack */
     void printIncludeContext(const char *fileName,int line) const;
 
   private:
     friend class TemplateNodeBlock;
+    friend class TemplateNodeCreate;
+
     void enterBlock(const QCString &fileName,const QCString &blockName,int line);
     void leaveBlock();
 
+    /** Sets the extension of the output file. This is used to control the
+     *  format of 'special' tags in the template
+     */
+    void setOutputExtension(const char *extension);
+
+    /** Returns the output extension, set via setOutputExtension() */
+    QCString outputExtension() const;
+
     class Private;
     Private *p;
 };
diff --git a/src/textdocvisitor.cpp b/src/textdocvisitor.cpp
index 6f3151f..8c8ecad 100644
--- a/src/textdocvisitor.cpp
+++ b/src/textdocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/textdocvisitor.h b/src/textdocvisitor.h
index b17065d..1bbc357 100644
--- a/src/textdocvisitor.h
+++ b/src/textdocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/tooltip.cpp b/src/tooltip.cpp
index 8db0394..957c661 100644
--- a/src/tooltip.cpp
+++ b/src/tooltip.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/tooltip.h b/src/tooltip.h
index ea8948d..34a578a 100644
--- a/src/tooltip.h
+++ b/src/tooltip.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator.h b/src/translator.h
index 32eaf09..7092174 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_am.h b/src/translator_am.h
index 9eaba0e..b50aec2 100644
--- a/src/translator_am.h
+++ b/src/translator_am.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -994,7 +994,7 @@ class TranslatorArmenian : public TranslatorAdapter_1_8_0
         "};\n"
         "\\endcode\n"
         "Սրանով կստանանք հետևյալ գրաֆը."
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Այս գրաֆի ուղղանկյունները ունեն հետևյալ իմաստը.\n"
         "<ul>\n"
diff --git a/src/translator_ar.h b/src/translator_ar.h
index 5d37b69..5daaa4c 100644
--- a/src/translator_ar.h
+++ b/src/translator_ar.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1044,14 +1044,14 @@ class TranslatorArabic : public TranslatorAdapter_1_4_6
         "\\endcode\n"
         "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file "
         "is set to 240 this will result in the following graph:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "The boxes in the above graph have the following meaning:\n"
         "<ul>\n"
         "<li>%A filled black box represents the struct or class for which the "
         "graph is generated.\n"
         "<li>%A box with a black border denotes a documented struct or class.\n"
-        "<li>%A box with a grey border denotes an undocumented struct or class.\n"
+        "<li>%A box with a gray border denotes an undocumented struct or class.\n"
         "<li>%A box with a red border denotes a documented struct or class for"
         "which not all inheritance/containment relations are shown. %A graph is "
         "truncated if it does not fit within the specified boundaries.\n"
diff --git a/src/translator_br.h b/src/translator_br.h
index b7bd604..f9fe664 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1007,7 +1007,7 @@ class TranslatorBrazilian : public Translator
         "};\n"
         "\\endcode\n"
         "Isto irá gerar o seguinte gráfo:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "As caixas no grafo acima tem as seguintes interpretações:\n"
         "<ul>\n"
@@ -1903,7 +1903,7 @@ class TranslatorBrazilian : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Provido pela categoria @1.";
+      return "Provido pela categoria @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1912,7 +1912,7 @@ class TranslatorBrazilian : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "estende a classe @1.";
+      return "estende a classe @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_ca.h b/src/translator_ca.h
index 5c3e595..d4aca52 100644
--- a/src/translator_ca.h
+++ b/src/translator_ca.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1019,7 +1019,7 @@ class TranslatorCatalan : public TranslatorAdapter_1_8_0
         "};\n"
         "\\endcode\n"
         "Resultarà el gràfic següent:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Les caixes del gràfic superior tenen aquesta interpretació:\n"
         "<ul>\n"
diff --git a/src/translator_cn.h b/src/translator_cn.h
index fc01ce0..eae4014 100644
--- a/src/translator_cn.h
+++ b/src/translator_cn.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -24,7 +24,7 @@
 */
 #define CN_SPC " "
 
-class TranslatorChinese : public TranslatorAdapter_1_8_2
+class TranslatorChinese : public Translator
 {
   public:
     /*! Used for identification of the language. The identification
@@ -110,7 +110,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
 
     /*! this is the first part of a sentence that is followed by a class name */
     virtual QCString trThisIsTheListOfAllMembers()
-    { return "成员的完整列表,这些成员属于"CN_SPC; }
+    { return "成员的完整列表,这些成员属于" CN_SPC; }
 
     /*! this is the remainder of the sentence after the class name */
     virtual QCString trIncludingInheritedMembers()
@@ -121,8 +121,8 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
      */
     virtual QCString trGeneratedAutomatically(const char *s)
     { QCString result;
-      result = "由"CN_SPC"Doyxgen"CN_SPC"通过分析"CN_SPC;
-      if (s) result += ((QCString)s+CN_SPC"的"CN_SPC);
+      result = "由" CN_SPC "Doyxgen" CN_SPC "通过分析" CN_SPC;
+      if (s) result += ((QCString)s+CN_SPC "的" CN_SPC);
       result+= "源代码自动生成.";
       return result;
     }
@@ -137,7 +137,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
 
     /*! put after an undocumented member in the list of all members */
     virtual QCString trDefinedIn()
-    { return "定义于"CN_SPC; }
+    { return "定义于" CN_SPC; }
 
     // quick reference sections
 
@@ -199,7 +199,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     { return "搜索"; }
 
     virtual QCString trClassHierarchyDescription()
-    { return "此继承关系列表按字典顺序粗略的排序:"CN_SPC; }
+    { return "此继承关系列表按字典顺序粗略的排序:" CN_SPC; }
 
     virtual QCString trFileListDescription(bool extractAll)
     {
@@ -376,15 +376,15 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     }
 
     virtual QCString trGeneratedAt(const char *date,const char *projName)
-    { QCString result=(QCString)"生成于"CN_SPC+date;
-      if (projName) result+=(QCString)CN_SPC", 为"CN_SPC+projName;
-      result+=(QCString)"使用"CN_SPC;
+    { QCString result=(QCString)"生成于" CN_SPC+date;
+      if (projName) result+=(QCString)CN_SPC ", 为" CN_SPC+projName;
+      result+=(QCString)"使用" CN_SPC;
       return result;
     }
 
     virtual QCString trClassDiagram(const char *clName)
     {
-      return (QCString)"类"CN_SPC+clName+CN_SPC"继承关系图:";
+      return (QCString)"类" CN_SPC+clName+CN_SPC "继承关系图:";
     }
 
      virtual QCString trForInternalUseOnly()
@@ -449,7 +449,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
       // used as the title of the HTML page of a class/struct/union
     {
        QCString result=(QCString)clName;
-      if (isTemplate) result+=CN_SPC"模板";
+      if (isTemplate) result+=CN_SPC "模板";
       switch(compType)
       {
         case ClassDef::Class:  result+="类"; break;
@@ -461,7 +461,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
         case ClassDef::Exception:  result+="异常"; break;
         default: break;
       }
-      result+=CN_SPC"参考";
+      result+=CN_SPC "参考";
       return result;
     }
 
@@ -469,14 +469,14 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     virtual QCString trFileReference(const char *fileName)
     {
       QCString result=fileName;
-      result+=CN_SPC"文件参考";
+      result+=CN_SPC "文件参考";
       return result;
     }
 
     /*! used as the title of the HTML page of a namespace */
     virtual QCString trNamespaceReference(const char *namespaceName)
     { QCString result=namespaceName;
-      result+=CN_SPC"命名空间参考";
+      result+=CN_SPC "命名空间参考";
       return result;
     }
 
@@ -528,9 +528,9 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
         if (i!=numEntries-1)  // not the last entry, so we need a separator
         {
           if (i<numEntries-2) // not the fore last entry
-            result+=","CN_SPC;
+            result+="," CN_SPC;
           else                // the fore last entry
-            result+=CN_SPC", 以及"CN_SPC;
+            result+=CN_SPC ", 以及" CN_SPC;
         }
       }
       return result;
@@ -540,14 +540,14 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
      *  if class diagrams are disabled.
      */
     virtual QCString trInheritsList(int numEntries)
-    { return "继承自"CN_SPC+trWriteList(numEntries)+CN_SPC".";  }
+    { return "继承自" CN_SPC+trWriteList(numEntries)+CN_SPC ".";  }
 
     /*! used in class documentation to produce a list of super classes,
      *  if class diagrams are disabled.
      */
     virtual QCString trInheritedByList(int numEntries)
     {
-      return "被"CN_SPC+trWriteList(numEntries)+CN_SPC"继承.";
+      return "被" CN_SPC+trWriteList(numEntries)+CN_SPC "继承.";
     }
 
     /*! used in member documentation blocks to produce a list of
@@ -555,7 +555,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
      */
     virtual QCString trReimplementedFromList(int numEntries)
     {
-      return "重载"CN_SPC+trWriteList(numEntries)+CN_SPC".";
+      return "重载" CN_SPC+trWriteList(numEntries)+CN_SPC ".";
     }
 
     /*! used in member documentation blocks to produce a list of
@@ -563,7 +563,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
      */
     virtual QCString trReimplementedInList(int numEntries)
     {
-      return "被"CN_SPC+trWriteList(numEntries)+CN_SPC"重载.";
+      return "被" CN_SPC+trWriteList(numEntries)+CN_SPC "重载.";
     }
 
     /*! This is put above each page as a link to all members of namespaces. */
@@ -659,12 +659,12 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
 
     virtual QCString trDefinedAtLineInSourceFile()
     {
-      return "在文件"CN_SPC"@1"CN_SPC"第"CN_SPC"@0"CN_SPC"行定义.";
+      return "在文件" CN_SPC "@1" CN_SPC "第" CN_SPC "@0" CN_SPC "行定义.";
     }
 
     virtual QCString trDefinedInSourceFile()
     {
-      return "在文件"CN_SPC"@0"CN_SPC"中定义.";
+      return "在文件" CN_SPC "@0" CN_SPC "中定义.";
     }
 
 //////////////////////////////////////////////////////////////////////////
@@ -683,13 +683,13 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     /*! this text is put before a collaboration diagram */
     virtual QCString trCollaborationDiagram(const char *clName)
     {
-      return (QCString)clName+CN_SPC"的协作图:";
+      return (QCString)clName+CN_SPC "的协作图:";
     }
 
     /*! this text is put before an include dependency graph */
     virtual QCString trInclDepGraph(const char *fName)
     {
-      return (QCString)fName+CN_SPC"的引用(Include)关系图:";
+      return (QCString)fName+CN_SPC "的引用(Include)关系图:";
     }
 
     /*! header that is put before the list of constructor/destructors. */
@@ -879,7 +879,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     /*! page explaining how the dot graph's should be interpreted */
     virtual QCString trLegendDocs()
     {
-      return "本页将向您解释如何理解由"CN_SPC"doxygen"CN_SPC"生成的图.<p>\n"
+      return "本页将向您解释如何理解由" CN_SPC "doxygen" CN_SPC "生成的图.<p>\n"
         "考虑如下例子:\n"
         "\\code\n"
         "/*! 由于截断而使 Invisible 不可见 */\n"
@@ -910,7 +910,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
         "};\n"
         "\\endcode\n"
         "结果将会生成以下图:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "上图中的矩形有如下意义:\n"
         "</p>\n"
@@ -991,7 +991,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     /*! Used as the title of a Java package */
     virtual QCString trPackage(const char *name)
     {
-      return (QCString)"包"CN_SPC+name;
+      return (QCString)"包" CN_SPC+name;
     }
 
     /*! Title of the package index page */
@@ -1028,7 +1028,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
 
     virtual QCString trBugList ()
     {
-      return "Bug"CN_SPC"列表";
+      return "Bug" CN_SPC "列表";
     }
 
 //////////////////////////////////////////////////////////////////////////
@@ -1217,7 +1217,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     virtual QCString trImplementedFromList(int numEntries)
     {
       /* return "Implements "+trWriteList(numEntries)+"."; */
-      return "实现了"CN_SPC+trWriteList(numEntries)+".";
+      return "实现了" CN_SPC+trWriteList(numEntries)+".";
     }
 
     /*! used in member documentation blocks to produce a list of
@@ -1226,7 +1226,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     virtual QCString trImplementedInList(int numEntries)
     {
       /* return "Implemented in "+trWriteList(numEntries)+"."; */
-      return "在"CN_SPC+trWriteList(numEntries)+CN_SPC"内被实现.";
+      return "在" CN_SPC+trWriteList(numEntries)+CN_SPC "内被实现.";
     }
 
 //////////////////////////////////////////////////////////////////////////
@@ -1386,7 +1386,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     virtual QCString trSourceFile(QCString& filename)
     {
       /* return filename + " Source File"; */
-      return filename + CN_SPC"源文件";
+      return filename + CN_SPC "源文件";
     }
 //////////////////////////////////////////////////////////////////////////
 // new since 1.3.9
@@ -1419,7 +1419,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
      */
     virtual QCString trDirDescription()
     {
-      return "此继承关系列表按字典顺序粗略的排序:"CN_SPC;
+      return "此继承关系列表按字典顺序粗略的排序:" CN_SPC;
     }
 
     /*! This returns the title of a directory page. The name of the
@@ -1428,7 +1428,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     virtual QCString trDirReference(const char *dirName)
     {
       QCString result=dirName;
-      result+=CN_SPC"目录参考";
+      result+=CN_SPC "目录参考";
       return result;
     }
 
@@ -1565,16 +1565,16 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
       QCString result=(QCString)clName;
       switch(compType)
       {
-        case ClassDef::Class:      result+=CN_SPC"模块"; break;
-        case ClassDef::Struct:     result+=CN_SPC"类型"; break;
-        case ClassDef::Union:      result+=CN_SPC"联合体"; break;
-        case ClassDef::Interface:  result+=CN_SPC"接口"; break;
-        case ClassDef::Protocol:   result+=CN_SPC"协议"; break;
-        case ClassDef::Category:   result+=CN_SPC"目录"; break;
-        case ClassDef::Exception:  result+=CN_SPC"异常"; break;
+        case ClassDef::Class:      result+=CN_SPC "模块"; break;
+        case ClassDef::Struct:     result+=CN_SPC "类型"; break;
+        case ClassDef::Union:      result+=CN_SPC "联合体"; break;
+        case ClassDef::Interface:  result+=CN_SPC "接口"; break;
+        case ClassDef::Protocol:   result+=CN_SPC "协议"; break;
+        case ClassDef::Category:   result+=CN_SPC "目录"; break;
+        case ClassDef::Exception:  result+=CN_SPC "异常"; break;
         default: break;
       }
-      if (isTemplate) result+="模板"CN_SPC;
+      if (isTemplate) result+="模板" CN_SPC;
       result+="参考手册";
       return result;
     }
@@ -1583,7 +1583,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     virtual QCString trModuleReference(const char *namespaceName)
     {
       QCString result=namespaceName;
-      result += CN_SPC"模块参考手册";
+      result += CN_SPC "模块参考手册";
       return result;
     }
 
@@ -1640,16 +1640,16 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
       QCString result="该";
       switch(compType)
       {
-        case ClassDef::Class:      result+=CN_SPC"模块"; break;
-        case ClassDef::Struct:     result+=CN_SPC"结构体"; break;
-        case ClassDef::Union:      result+=CN_SPC"联合体"; break;
-        case ClassDef::Interface:  result+=CN_SPC"接口"; break;
-        case ClassDef::Protocol:   result+=CN_SPC"协议"; break;
-        case ClassDef::Category:   result+=CN_SPC"目录"; break;
-        case ClassDef::Exception:  result+=CN_SPC"异常"; break;
+        case ClassDef::Class:      result+=CN_SPC "模块"; break;
+        case ClassDef::Struct:     result+=CN_SPC "结构体"; break;
+        case ClassDef::Union:      result+=CN_SPC "联合体"; break;
+        case ClassDef::Interface:  result+=CN_SPC "接口"; break;
+        case ClassDef::Protocol:   result+=CN_SPC "协议"; break;
+        case ClassDef::Category:   result+=CN_SPC "目录"; break;
+        case ClassDef::Exception:  result+=CN_SPC "异常"; break;
         default: break;
       }
-      result+=CN_SPC"的文档由以下文件生成:";
+      result+=CN_SPC "的文档由以下文件生成:";
       return result;
     }
 
@@ -1684,7 +1684,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
   {
     // return QCString(name)+" Relation";
     // unsure
-    return QCString(name)+CN_SPC"关系";
+    return QCString(name)+CN_SPC "关系";
   }
 
     virtual QCString trLoading()
@@ -1718,7 +1718,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
 
   virtual QCString trIncludesFileIn(const char *name)
   {
-    return (QCString)"在"CN_SPC+name+CN_SPC"中引用";
+    return (QCString)"在" CN_SPC+name+CN_SPC "中引用";
   }
 
   virtual QCString trDateTime(int year,int month,int day,int dayOfWeek,
@@ -1730,7 +1730,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
 
     QCString sdate;
 
-    sdate.sprintf("%d年"CN_SPC"%s月"CN_SPC"%d日"CN_SPC"星期%s",year, months[month-1], day, days[dayOfWeek-1]);
+    sdate.sprintf("%d年" CN_SPC "%s月" CN_SPC "%d日" CN_SPC "星期%s",year, months[month-1], day, days[dayOfWeek-1]);
 
     if (includeTime)
     {
@@ -1756,7 +1756,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     /*! Header for the graph showing the directory dependencies */
     virtual QCString trDirDepGraph(const char *name)
     {
-      return QCString(name)+CN_SPC"的目录依赖关系图";
+      return QCString(name)+CN_SPC "的目录依赖关系图";
     }
 
 //////////////////////////////////////////////////////////////////////////
@@ -1773,7 +1773,7 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
 
     /*! Used in dot graph when UML_LOOK is enabled and there are many fields */
     virtual QCString trAndMore(const QCString &number)
-    { return "和"CN_SPC+number+CN_SPC"更多..."; }
+    { return "和" CN_SPC+number+CN_SPC "更多..."; }
 
     /*! Used file list for a Java enum */
     virtual QCString trEnumGeneratedFromFiles(bool /*single*/)
@@ -1781,11 +1781,11 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
 
     /*! Header of a Java enum page (Java enums are represented as classes). */
     virtual QCString trEnumReference(const char *name)
-    { return QCString(name)+CN_SPC"枚举类型参考"; }
+    { return QCString(name)+CN_SPC "枚举类型参考"; }
 
     /*! Used for a section containing inherited members */
     virtual QCString trInheritedFrom(const char *members,const char *what)
-    { return QCString(members)+CN_SPC"继承自"CN_SPC+what; }
+    { return QCString(members)+CN_SPC "继承自" CN_SPC+what; }
 
     /*! Header of the sections with inherited members specific for the
      *  base class(es)
@@ -1794,6 +1794,121 @@ class TranslatorChinese : public TranslatorAdapter_1_8_2
     { return "额外继承的成员函数"; }
 
 //////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.2
+//////////////////////////////////////////////////////////////////////////
+
+    /*! Used as a tooltip for the toggle button that appears in the
+     *  navigation tree in the HTML output when GENERATE_TREEVIEW is
+     *  enabled. This tooltip explains the meaning of the button.
+     */
+    virtual QCString trPanelSynchronisationTooltip(bool enable)
+    {
+      QCString opt = enable ? "开启" : "关闭";
+      return "点击" CN_SPC+opt+CN_SPC "面板同步";
+    }
+
+    /*! Used in a method of an Objective-C class that is declared in a
+     *  a category. Note that the @1 marker is required and is replaced
+     *  by a link.
+     */
+    virtual QCString trProvidedByCategory()
+    {
+      return "由 category @0 提供.";
+    }
+
+    /*! Used in a method of an Objective-C category that extends a class.
+     *  Note that the @1 marker is required and is replaced by a link to
+     *  the class method.
+     */
+    virtual QCString trExtendsClass()
+    {
+      return "扩展类 @0.";
+    }
+
+    /*! Used as the header of a list of class methods in Objective-C.
+     *  These are similar to static public member functions in C++.
+     */
+    virtual QCString trClassMethods()
+    {
+      return "类方法";
+    }
+
+    /*! Used as the header of a list of instance methods in Objective-C.
+     *  These are similar to public member functions in C++.
+     */
+    virtual QCString trInstanceMethods()
+    {
+      return "构造函数";
+    }
+
+    /*! Used as the header of the member functions of an Objective-C class.
+     */
+    virtual QCString trMethodDocumentation()
+    {
+      return "函数文档";
+    }
+
+    /*! Used as the title of the design overview picture created for the
+     *  VHDL output.
+     */
+    virtual QCString trDesignOverview()
+    {
+      return "设计概要";
+    }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.4
+//////////////////////////////////////////////////////////////////////////
+
+    /** old style UNO IDL services: implemented interfaces */
+    virtual QCString trInterfaces()
+    { return "导出的接口"; }
+
+    /** old style UNO IDL services: inherited services */
+    virtual QCString trServices()
+    { return "包含的服务"; }
+
+    /** UNO IDL constant groups */
+    virtual QCString trConstantGroups()
+    { return "常量组"; }
+
+    /** UNO IDL constant groups */
+    virtual QCString trConstantGroupReference(const char *namespaceName)
+    {
+      QCString result=namespaceName;
+      result+= CN_SPC "常量组参考";
+      return result;
+    }
+    /** UNO IDL service page title */
+    virtual QCString trServiceReference(const char *sName)
+    {
+      QCString result=(QCString)sName;
+      result+= CN_SPC "服务参考";
+      return result;
+    }
+    /** UNO IDL singleton page title */
+    virtual QCString trSingletonReference(const char *sName)
+    {
+      QCString result=(QCString)sName;
+      result+= CN_SPC "单例参考";
+      return result;
+    }
+    /** UNO IDL service page */
+    virtual QCString trServiceGeneratedFromFiles(bool single)
+    {
+      // single is true implies a single file
+      return "该服务的文档由下列文件生成:";
+    }
+    /** UNO IDL singleton page */
+    virtual QCString trSingletonGeneratedFromFiles(bool single)
+    {
+      // single is true implies a single file
+      return "该单例的文档由下列文件生成:";
+    }
+
+//////////////////////////////////////////////////////////////////////////
 };
 
 #endif
diff --git a/src/translator_cz.h b/src/translator_cz.h
index b83eb92..e4a5692 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1070,7 +1070,7 @@ class TranslatorCzech : public Translator
         "};\n"
         "\\endcode\n"
         "K výše uvedenému bude vygenerován následující graf:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Bloky (tj. uzly) v uvedeném grafu mají následující význam:\n"
         "<ul>\n"
@@ -1936,7 +1936,7 @@ class TranslatorCzech : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Deklarováno v kategorii @1.";
+      return "Deklarováno v kategorii @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1945,7 +1945,7 @@ class TranslatorCzech : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Rozšiřuje třídu @1.";
+      return "Rozšiřuje třídu @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_de.h b/src/translator_de.h
index d936bf1..7d3d63a 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1116,7 +1116,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_4
         "};\n"
         "\\endcode\n"
         "Dies liefert den folgenden Graphen:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "Die Rechtecke in obigem Graphen bedeuten:\n"
         "</p>\n"
@@ -1995,7 +1995,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_4
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Bestandteil der Kategorie @1.";
+      return "Bestandteil der Kategorie @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -2004,7 +2004,7 @@ class TranslatorGerman : public TranslatorAdapter_1_8_4
      */
     virtual QCString trExtendsClass()
     {
-      return "Erweitert Klasse @1.";
+      return "Erweitert Klasse @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_dk.h b/src/translator_dk.h
index 74b07f4..9ea5b28 100644
--- a/src/translator_dk.h
+++ b/src/translator_dk.h
@@ -3,7 +3,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -993,7 +993,7 @@ class TranslatorDanish : public TranslatorAdapter_1_8_0
         "\\endcode\n"
         "Hvis \\c MAX_DOT_GRAPH_HEIGHT i konfigurationsfilen "
         "er sat til 240, vil dette resultere i følgende graf:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "De forskellige slags kasser i ovenstående graf har følgende "
 		"betydninger:\n"
diff --git a/src/translator_en.h b/src/translator_en.h
index 5937ed3..a72c05a 100644
--- a/src/translator_en.h
+++ b/src/translator_en.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1014,7 +1014,7 @@ class TranslatorEnglish : public Translator
         "};\n"
         "\\endcode\n"
         "This will result in the following graph:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "The boxes in the above graph have the following meaning:\n"
         "</p>\n"
@@ -1022,7 +1022,7 @@ class TranslatorEnglish : public Translator
         "<li>%A filled gray box represents the struct or class for which the "
         "graph is generated.</li>\n"
         "<li>%A box with a black border denotes a documented struct or class.</li>\n"
-        "<li>%A box with a grey border denotes an undocumented struct or class.</li>\n"
+        "<li>%A box with a gray border denotes an undocumented struct or class.</li>\n"
         "<li>%A box with a red border denotes a documented struct or class for"
         "which not all inheritance/containment relations are shown. %A graph is "
         "truncated if it does not fit within the specified boundaries.</li>\n"
@@ -1893,7 +1893,7 @@ class TranslatorEnglish : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Provided by category @1.";
+      return "Provided by category @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1902,7 +1902,7 @@ class TranslatorEnglish : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Extends class @1.";
+      return "Extends class @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_eo.h b/src/translator_eo.h
index e1513cb..5415e81 100644
--- a/src/translator_eo.h
+++ b/src/translator_eo.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1017,7 +1017,7 @@ class TranslatorEsperanto : public TranslatorAdapter_1_8_4
         "};\n"
         "\\endcode\n"
         "Tio ĉi liveros la sekvan diagramon:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "La skatoloj de la supra diagramo havas la sekvajn signifojn:\n"
         "<ul>\n"
@@ -1898,7 +1898,7 @@ class TranslatorEsperanto : public TranslatorAdapter_1_8_4
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Provizita de kategorio @1.";
+      return "Provizita de kategorio @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1907,7 +1907,7 @@ class TranslatorEsperanto : public TranslatorAdapter_1_8_4
      */
     virtual QCString trExtendsClass()
     {
-      return "Etendi klason @1.";
+      return "Etendi klason @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_es.h b/src/translator_es.h
index ba6e823..1b75465 100644
--- a/src/translator_es.h
+++ b/src/translator_es.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1045,7 +1045,7 @@ class TranslatorSpanish : public Translator
         "};\n"
         "\\endcode\n"
         "Dará como resultado el siguiente gráfico:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "Las cajas en el gráfico arriba tienen el siguiente significado:\n"
         "</p>\n"
@@ -1957,7 +1957,7 @@ class TranslatorSpanish : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Proporcionado por categoría @1.";
+      return "Proporcionado por categoría @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1966,7 +1966,7 @@ class TranslatorSpanish : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Extiende la clase @1.";
+      return "Extiende la clase @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_fa.h b/src/translator_fa.h
index 7b6f9d7..7effafe 100644
--- a/src/translator_fa.h
+++ b/src/translator_fa.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1015,14 +1015,14 @@ class TranslatorPersian : public TranslatorAdapter_1_7_5
         "\\endcode\n"
         "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file "
         "is set to 240 this will result in the following graph:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "The boxes in the above graph have the following meaning:\n"
         "<ul>\n"
         "<li>%A filled black box represents the struct or class for which the "
         "graph is generated.\n"
         "<li>%A box with a black border denotes a documented struct or class.\n"
-        "<li>%A box with a grey border denotes an undocumented struct or class.\n"
+        "<li>%A box with a gray border denotes an undocumented struct or class.\n"
         "<li>%A box with a red border denotes a documented struct or class for"
         "which not all inheritance/containment relations are shown. %A graph is "
         "truncated if it does not fit within the specified boundaries.\n"
diff --git a/src/translator_fi.h b/src/translator_fi.h
index eeeb9a5..8343cdd 100644
--- a/src/translator_fi.h
+++ b/src/translator_fi.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1101,7 +1101,7 @@ class TranslatorFinnish : public TranslatorAdapter_1_6_0
         "{\n"
         "  private:\n"
         "    Kaytetty *m_kaytettyLuokka;\n"
-        "}\n";
+        "}\n"
         // "class Inherited : public PublicBase,\n"
         // "                  protected ProtectedBase,\n"
         // "                  private PrivateBase,\n"
@@ -1114,7 +1114,7 @@ class TranslatorFinnish : public TranslatorAdapter_1_6_0
         "\\endcode\n"
         "Tuloksena on seuraavanlainen kaavio:"
         //"This will result in the following graph:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Ylläolevassa kaaviossa laatikoilla on seuraavat merkitykset\n:"
         // "The boxes in the above graph have the following meaning:\n"
diff --git a/src/translator_fr.h b/src/translator_fr.h
index 2c548c2..65e77df 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1077,7 +1077,7 @@ class TranslatorFrench : public Translator
             "};\n"
             "\\endcode\n"
             "Cela aboutira au graphe suivant :"
-            "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+            "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
             "<p>\n"
             "Les rectangles du graphe ci-dessus ont la signification suivante :\n"
             "<ul>\n"
@@ -1954,7 +1954,7 @@ class TranslatorFrench : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Déclarée dans la catégorie @1.";
+      return "Déclarée dans la catégorie @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1963,7 +1963,7 @@ class TranslatorFrench : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Dérive la classe @1.";
+      return "Dérive la classe @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
@@ -2057,4 +2057,4 @@ class TranslatorFrench : public Translator
 
 };
 
-#endif
\ No newline at end of file
+#endif
diff --git a/src/translator_gr.h b/src/translator_gr.h
index fa7a682..713b4bb 100644
--- a/src/translator_gr.h
+++ b/src/translator_gr.h
@@ -20,13 +20,29 @@
  *               Harry Kalogirou <no email>
  *
  * 01 Jan 2009 : Greek maintenance by
- *               Paul Gessos <gessos.paul at yahoo.gr>
+ *               Paul Gessos <gessos.paul at gmail.com>
+ *
+ * Last update : 06 Jan 2015
  */
 
+/*	English to Greek keyword dictionary
+	(Many words have more clear meaning in English than Greek)
+	template -> πρότυπο
+	instance -> υπόσταση
+	module -> υπομονάδα
+	interface -> διεπαφή (ενναλλακτικά μπορεί να χρησιμοποιηθεί: διασύνδεση)
+	singleton -> μονοσύνολο
+	service -> υπηρεσία
+	exception -> εξαίρεση
+	namespace -> χώρος ονομάτων
+	enumeration -> απαρίθμηση
+*/ 
+ 
+ 
 #ifndef TRANSLATOR_GR_H
 #define TRANSLATOR_GR_H
 
-class TranslatorGreek : public TranslatorAdapter_1_8_4
+class TranslatorGreek : public Translator
 {
   public:
 
@@ -63,7 +79,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
 
     /*! header that is put before the list of typedefs. */
     virtual QCString trMemberTypedefDocumentation()
-    { return "Τεκμηρίωση Μελών Typedef"; }
+    { return "Τεκμηρίωση Μελών Ορισμών Τύπων"; }
 
     /*! header that is put before the list of enumerations. */
     virtual QCString trMemberEnumerationDocumentation()
@@ -118,7 +134,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
 
     /*! put after an enum name in the list of all members */
     virtual QCString trEnumName()
-    { return "όνομα απαρύθμισης"; }
+    { return "όνομα απαρίθμησης"; }
 
     /*! put after an enum value in the list of all members */
     virtual QCString trEnumValue()
@@ -134,7 +150,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      *  compounds or files (see the \\group command).
      */
     virtual QCString trModules()
-    { return "Κομμάτια"; }
+    { return "Υπομονάδες"; }
 
     /*! This is put above each page as a link to the class hierarchy */
     virtual QCString trClassHierarchy()
@@ -214,12 +230,12 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
 
       if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
       {
-        return "Ακολουθούνε οι δομές δεδομένων με σύντομες περιγραφές:";
+        return "Ακολουθούν οι δομές δεδομένων με σύντομες περιγραφές:";
       }
       else
       {
-        return "Ακολουθούνε οι κλάσεις, δομές, "
-               "ενώσεις και οι διασυνδέσεις με σύντομες περιγραφές:";
+        return "Ακολουθούν οι κλάσεις, οι δομές, "
+               "οι ενώσεις και οι διασυνδέσεις με σύντομες περιγραφές:";
       }
     }
 
@@ -297,7 +313,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
 
     /*! This is an introduction to the page with the list of class/file groups */
     virtual QCString trModulesDescription()
-    { return "Ακολουθεί η λίστα όλων των μονάδων:"; }
+    { return "Ακολουθεί η λίστα όλων των υπομονάδων:"; }
 
     // index titles (the project name is prepended for these)
 
@@ -310,7 +326,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      * index of all groups.
      */
     virtual QCString trModuleIndex()
-    { return "Ευρετήριο μονάδων"; }
+    { return "Ευρετήριο υπομονάδων"; }
 
     /*! This is used in LaTeX as the title of the chapter with the
      * class hierarchy.
@@ -337,13 +353,13 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      * list of all files.
      */
     virtual QCString trFileIndex()
-    { return "Ευρετήτιο Αρχείων"; }
+    { return "Ευρετήριο Αρχείων"; }
 
     /*! This is used in LaTeX as the title of the chapter containing
      *  the documentation of all groups.
      */
     virtual QCString trModuleDocumentation()
-    { return "Τεκμηρίωση Μονάδων"; }
+    { return "Τεκμηρίωση Υπομονάδων"; }
 
     /*! This is used in LaTeX as the title of the chapter containing
      *  the documentation of all classes, structs and unions.
@@ -380,7 +396,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
 
     /*! This is used in LaTeX as the title of the document */
     virtual QCString trReferenceManual()
-    { return "Εγχειρίδιο Αναφοράς"; }
+    { return "Εγχειρίδιο Τεκμηρίωσης"; }
 
     /*! This is used in the documentation of a file as a header before the
      *  list of defines
@@ -494,7 +510,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
 
     /*! this text is generated when the \\date command is used. */
     virtual QCString trDate()
-    { return "Ημ/νια"; }
+    { return "Ημερομηνία"; }
 
     /*! this text is generated when the \\return command is used. */
     virtual QCString trReturns()
@@ -558,14 +574,14 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
                                     ClassDef::CompoundType compType,
                                     bool isTemplate)
     {
-      QCString result=(QCString)"Αναφορά";
+      QCString result=(QCString)"Τεκμηρίωση";
       if (isTemplate) result+=" Προτύπου";
       switch(compType)
       {
         case ClassDef::Class:      result+=" Κλάσης "; break;
         case ClassDef::Struct:     result+=" Δομής "; break;
         case ClassDef::Union:      result+=" Ένωσης "; break;
-        case ClassDef::Interface:  result+=" Διασύνδεσης "; break;
+        case ClassDef::Interface:  result+=" Διεπαφής "; break;
         case ClassDef::Protocol:   result+=" Πρωτοκόλλου "; break;
         case ClassDef::Category:   result+=" Κατηγορίας "; break;
         case ClassDef::Exception:  result+=" Εξαίρεσης "; break;
@@ -578,7 +594,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
     /*! used as the title of the HTML page of a file */
     virtual QCString trFileReference(const char *fileName)
     {
-      QCString result="Αναφορά Αρχείου ";
+      QCString result="Τεκμηρίωση Αρχείου ";
       result+=fileName;
       return result;
     }
@@ -586,7 +602,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
     /*! used as the title of the HTML page of a namespace */
     virtual QCString trNamespaceReference(const char *namespaceName)
     {
-      QCString result="Αναφορά Χώρου Ονομάτων ";
+      QCString result="Τεκμηρίωση Χώρου Ονομάτων ";
       result+=namespaceName;
       return result;
     }
@@ -594,21 +610,21 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
     virtual QCString trPublicMembers()
     { return "Δημόσιες Μέθοδοι"; }
     virtual QCString trPublicSlots()
-    { return "Δημόσια Slots"; }
+    { return "Δημόσιες Υποδοχές"; }
     virtual QCString trSignals()
     { return "Σήματα"; }
     virtual QCString trStaticPublicMembers()
-    { return "Στατικές Δημόσιες Μέδοδοι"; }
+    { return "Στατικές Δημόσιες Μέθοδοι"; }
     virtual QCString trProtectedMembers()
-    { return "Προστατευμένες Μέδοδοι"; }
+    { return "Προστατευμένες Μέθοδοι"; }
     virtual QCString trProtectedSlots()
-    { return "Προστατευμένα Slots"; }
+    { return "Προστατευμένες Υποδοχές"; }
     virtual QCString trStaticProtectedMembers()
-    { return "Στατικές Προστατευμένες Μέδοδοι"; }
+    { return "Στατικές Προστατευμένες Μέθοδοι"; }
     virtual QCString trPrivateMembers()
     { return "Ιδιωτικές Μέθοδοι"; }
     virtual QCString trPrivateSlots()
-    { return "Ιδιοτικά Slots"; }
+    { return "Ιδιωτικές Υποδοχές"; }
     virtual QCString trStaticPrivateMembers()
     { return "Στατικές Ιδιωτικές Μέθοδοι"; }
 
@@ -642,7 +658,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      */
     virtual QCString trInheritsList(int numEntries)
     {
-      return "Κληρονομεί "+trWriteList(numEntries)+".";
+      return QCString("Κληρονομεί ")+(numEntries==1?"την ":"τις ")+trWriteList(numEntries)+".";
     }
 
     /*! used in class documentation to produce a list of super classes,
@@ -650,7 +666,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      */
     virtual QCString trInheritedByList(int numEntries)
     {
-      return "Κληρονομείται από "+trWriteList(numEntries)+".";
+      return QCString("Κληρονομείται από ")+(numEntries==1?"την ":"τις ")+trWriteList(numEntries)+".";
     }
 
     /*! used in member documentation blocks to produce a list of
@@ -658,7 +674,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      */
     virtual QCString trReimplementedFromList(int numEntries)
     {
-      return "Επαναϋλοποιείται από "+trWriteList(numEntries)+".";
+      return QCString("Επαναϋλοποιείται από ")+(numEntries==1?"την ":"τις ")+trWriteList(numEntries)+".";
     }
 
     /*! used in member documentation blocks to produce a list of
@@ -666,7 +682,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      */
     virtual QCString trReimplementedInList(int numEntries)
     {
-      return "Επαναϋλοποιείται στην "+trWriteList(numEntries)+".";
+      return QCString("Επαναϋλοποιείται ")+(numEntries==1?"στην ":"στις ")+trWriteList(numEntries)+".";
     }
 
     /*! This is put above each page as a link to all members of namespaces. */
@@ -724,14 +740,14 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
         case ClassDef::Class:      result+="αυτή την κλάση"; break;
         case ClassDef::Struct:     result+="αυτή τη δομή"; break;
         case ClassDef::Union:      result+="αυτή την ένωση"; break;
-        case ClassDef::Interface:  result+="αυτή τη διασύνδεση"; break;
+        case ClassDef::Interface:  result+="αυτή τη διεπαφή"; break;
         case ClassDef::Protocol:   result+="αυτό το πρωτόκολλο"; break;
         case ClassDef::Category:   result+="αυτή την κατηγορία"; break;
         case ClassDef::Exception:  result+="αυτή την εξαίρεση"; break;
         default: break;
       }
-      result+=" δημιουργήθηκε απο τ";
-      if (single) result+="ο ακόλουθο αρχείο:"; else result+="α ακόλουθα αρχεία:";
+      result+=" δημιουργήθηκε από ";
+      if (single) result+="το ακόλουθο αρχείο:"; else result+="τα ακόλουθα αρχεία:";
       return result;
     }
 
@@ -783,7 +799,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
     /*! this text is put before a collaboration diagram */
     virtual QCString trCollaborationDiagram(const char *clName)
     {
-      return (QCString)"Δίαγραμμα Συνεργασίας για την κλάση "+clName+":";
+      return (QCString)"Διάγραμμα Συνεργασίας για την κλάση "+clName+":";
     }
     /*! this text is put before an include dependency graph */
     virtual QCString trInclDepGraph(const char *fName)
@@ -987,7 +1003,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
         "};\n"
         "\\endcode\n"
         "Αυτό οδηγεί στο επόμενο διάγραμμα:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "Τα κουτιά στο παραπάνω διάγραμμα έχουν την ακόλουθη σημασία:\n"
         "</p>\n"
@@ -1011,8 +1027,8 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
         "<li>Ένα μωβ διακεκομένο βέλος χρησιμοποιείται αν μία κλάση περιέχεται ή χρησιμοποιείται "
         "από μία άλλη κλάση. Το βέλος ονομάζεται από το όνομα της μεταβλητής(ων) "
         "μέσω της οποίας η κλάση ή δομή είναι προσβάσιμη.</li>\n"
-        "<li>Ένα κίτρινο διακεκομμένο βέλος χρησιμοποιείται για μια σχέση μεταξύ ενός template αντικειμένου και "
-        "της template κλάσης από την οποία δημιουργήθηκε. Το βέλος ονομάζεται με τις παραμέτρους του template "
+        "<li>Ένα κίτρινο διακεκομμένο βέλος χρησιμοποιείται για μια σχέση μεταξύ ενός προτύπου αντικειμένου και "
+        "της πρότυπης κλάσης από την οποία δημιουργήθηκε. Το βέλος ονομάζεται με τις παραμέτρους του προτύπου "
         "του αντικειμένου.</li>\n"
         "</ul>\n";
     }
@@ -1185,8 +1201,9 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      */
     virtual QCString trNamespace(bool first_capital, bool singular)
     {
-      QCString result((first_capital ? "Namespace" : "namespace"));
-      if (!singular)  result+="s";
+      QCString result((first_capital ? "Χ" : "χ"));
+      if (!singular)  result+="ώροι"; else result+="ώρος";
+	  result+=" ονομάτων";
       return result;
     }
 
@@ -1503,7 +1520,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      *  of documentation blocks for enumeration values
      */
     virtual QCString trEnumerationValueDocumentation()
-    { return "Enumerator Documentation"; }
+    { return "Τεκμηρίωση Απαρίθμησης"; }
 
 //////////////////////////////////////////////////////////////////////////
 // new since 1.5.4 (mainly for Fortran)
@@ -1600,7 +1617,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
         case ClassDef::Class:      result+=" Υπομονάδα"; break;
         case ClassDef::Struct:     result+=" Τύπος"; break;
         case ClassDef::Union:      result+=" Ένωση"; break;
-        case ClassDef::Interface:  result+=" Interface"; break;
+        case ClassDef::Interface:  result+=" Διεπαφή"; break;
         case ClassDef::Protocol:   result+=" Πρωτόκολλο"; break;
         case ClassDef::Category:   result+=" Κατηγορία"; break;
         case ClassDef::Exception:  result+=" Εξαίρεση"; break;
@@ -1668,7 +1685,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
         case ClassDef::Class:      result+="αυτή την υπομονάδα"; break;
         case ClassDef::Struct:     result+="αυτό τον τύπο δεδομένων"; break;
         case ClassDef::Union:      result+="αυτή την ένωση"; break;
-        case ClassDef::Interface:  result+="αυτό το interface"; break;
+        case ClassDef::Interface:  result+="αυτή τη διεπαφή"; break;
         case ClassDef::Protocol:   result+="αυτό το πρωτόκολλο"; break;
         case ClassDef::Category:   result+="αυτή την κατηγορία"; break;
         case ClassDef::Exception:  result+="αυτή την εξαίρεση"; break;
@@ -1864,7 +1881,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Παρέχεται από την κατηγορία @1.";
+      return "Παρέχεται από την κατηγορία @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1873,7 +1890,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      */
     virtual QCString trExtendsClass()
     {
-      return "Κληρονομει την κλάση @1.";
+      return "Κληρονομει την κλάση @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
@@ -1889,7 +1906,7 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
      */
     virtual QCString trInstanceMethods()
     {
-      return "Μέθοδοι Αντικειμένου";
+      return "Μέθοδοι Υπόστασης";
     }
 
     /*! Used as the header of the member functions of an Objective-C class.
@@ -1907,15 +1924,61 @@ class TranslatorGreek : public TranslatorAdapter_1_8_4
       return "Επισκόπηση σχεδίασης";
     }
 
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.4
+//////////////////////////////////////////////////////////////////////////
 
-/* Future strategy of changes
-	Many words have more clear meaning in English and not in Greek:
-	template -> πρότυπο
-	instance -> αντικείμενο? (μπορεί να μιλάμε για template instantiation ή class instantiation)
-	interface -> διασύνδεση
-*/
+    /** old style UNO IDL services: implemented interfaces */
+    virtual QCString trInterfaces()
+    { return "Εξαγόμενες Διεπαφές"; }
 
-//////////////////////////////////////////////////////////////////////////
+    /** old style UNO IDL services: inherited services */
+    virtual QCString trServices()
+    { return "Συμπεριλαμβανόμενες Υπηρεσίες"; }
+
+    /** UNO IDL constant groups */
+    virtual QCString trConstantGroups()
+    { return "Ομάδες Σταθερών"; }
+
+    /** UNO IDL constant groups */
+    virtual QCString trConstantGroupReference(const char *namespaceName)
+    {
+      QCString result=namespaceName;
+      result+=" Τεκμηρίωση Ομάδας Σταθερών";
+      return result;
+    }
+    /** UNO IDL service page title */
+    virtual QCString trServiceReference(const char *sName)
+    {
+      QCString result=(QCString)sName;
+      result+=" Τεκμηρίωση Υπηρεσίας";
+      return result;
+    }
+    /** UNO IDL singleton page title */
+    virtual QCString trSingletonReference(const char *sName)
+    {
+      QCString result=(QCString)sName;
+      result+=" Τεκμηρίωση Μονοσύνολου";
+      return result;
+    }
+    /** UNO IDL service page */
+    virtual QCString trServiceGeneratedFromFiles(bool single)
+    {
+      // single is true implies a single file
+      QCString result=(QCString)"Η τεκμηρίωση για την υπηρεσία αυτή "
+                                "δημιουργήθηκε από ";
+      if (single) result+="το ακόλουθο αρχείο:"; else result+="τα ακόλουθα αρχεία:";
+      return result;
+    }
+    /** UNO IDL singleton page */
+    virtual QCString trSingletonGeneratedFromFiles(bool single)
+    {
+      // single is true implies a single file
+      QCString result=(QCString)"Η τεκμηρίωση για αυτό το μονοσύνολο "
+                                "δημιουργήθηκε από ";
+      if (single) result+="το ακόλουθο αρχείο:"; else result+="τα ακόλουθα αρχεία:";
+      return result;
+    }
 
 };
 
diff --git a/src/translator_hr.h b/src/translator_hr.h
index 98a746a..cfefa32 100644
--- a/src/translator_hr.h
+++ b/src/translator_hr.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -753,7 +753,7 @@ class TranslatorCroatian : public TranslatorAdapter_1_8_2
         "};\n"
         "\\endcode\n"
         "To će rezultirati grafikonom:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Pravokutnici imaju slijedeće značenje:\n"
         "<ul>\n"
diff --git a/src/translator_hu.h b/src/translator_hu.h
index 610af8e..4bf3f71 100644
--- a/src/translator_hu.h
+++ b/src/translator_hu.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -997,7 +997,7 @@ class TranslatorHungarian : public TranslatorAdapter_1_4_6
         "\\endcode\n"
         "Ha a konfigurációs fájl \\c MAX_DOT_GRAPH_HEIGHT elemének értékét "
         "240-re állítjuk, az eredmény a következő ábra lesz:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Az ábrán levő dobozok jelentése:\n"
         "<ul>\n"
diff --git a/src/translator_id.h b/src/translator_id.h
index 5647bc0..c5c58fa 100644
--- a/src/translator_id.h
+++ b/src/translator_id.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1001,7 +1001,7 @@ class TranslatorIndonesian : public TranslatorAdapter_1_8_0
         "\\endcode\n"
         "Apabila tag \\c MAX_DOT_GRAPH_HEIGHT di file konfigurasi "
         "diset ke 240 kode di atas akan menghasilkan bagan berikut:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Kotak-kotak pada bagan di atas mempunyai arti sebagai berikut:\n"
         "<ul>\n"
diff --git a/src/translator_it.h b/src/translator_it.h
index 59799a3..e2c51c7 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -19,13 +19,17 @@
  *
  * Revision history
  *
+ *  2015/07: updated translation of new items used since version 1.8.2 and 1.8.4
+ *           corrected a typo
+ *           updated translator mail address
  *  2012/04: updated translation of new items used since version 1.7.5 and 1.8.0
  *  2010/08: updated translation of new items used since version 1.6.0 and 1.6.3
  *           completely reviewed the translation in the trLegendDocs() function
  *           corrected some typos all around
  *           reviewed some translations all around
  *  2007/11: updated translation of new items used since version 1.5.4
- *  2007/10: Included corrections provided by Arialdo Martini <arialdomartini at bebox.it>, updated some strings marked with 'translate me' comment
+ *  2007/10: Included corrections provided by Arialdo Martini <arialdomartini at bebox.it>
+ *           updated some strings marked with 'translate me' comment
  *  2006/10: made class to derive directly from Translator class (reported in Petr Prikryl October 9 translator report)
  *  2006/06: updated translation of new items used since version 1.4.6
  *  2006/05: translated new items used since version 1.4.6
@@ -79,13 +83,13 @@
  * tecnica (ad es. "lista dei file" e non "lista dei files")
  *
  * Se avete suggerimenti sulla traduzione di alcuni termini o volete segnalare
- * eventuali sviste potete scrivermi all'indirizzo: alessandro at falappa.net
+ * eventuali sviste potete scrivermi all'indirizzo: alex.falappa at gmail.com
  */
 
 #ifndef TRANSLATOR_IT_H
 #define TRANSLATOR_IT_H
 
-class TranslatorItalian : public TranslatorAdapter_1_8_2
+class TranslatorItalian : public Translator
 {
   public:
 
@@ -1028,7 +1032,7 @@ class TranslatorItalian : public TranslatorAdapter_1_8_2
         "};\n"
         "\\endcode\n"
         "Verrà prodotto il grafo seguente:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "I riquadri nel grafo qui sopra hanno il seguente significato:\n"
         "</p>\n"
@@ -1832,7 +1836,7 @@ class TranslatorItalian : public TranslatorAdapter_1_8_2
 
     /*! Used file list for a Java enum */
     virtual QCString trEnumGeneratedFromFiles(bool single)
-    { QCString result = "La documentazione per questo tipo enumerato è stata generata";
+    { QCString result = "La documentazione per questo tipo enumerato è stata generata a partire";
       if (!single) result += " dai seguenti";
       else result += " dal seguente";
       result+=" file:";
@@ -1853,6 +1857,127 @@ class TranslatorItalian : public TranslatorAdapter_1_8_2
     virtual QCString trAdditionalInheritedMembers()
     { return "Altri membri ereditati"; }
 
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.2
+//////////////////////////////////////////////////////////////////////////
+
+    /*! Used as a tooltip for the toggle button that appears in the
+     *  navigation tree in the HTML output when GENERATE_TREEVIEW is
+     *  enabled. This tooltip explains the meaning of the button.
+     */
+    virtual QCString trPanelSynchronisationTooltip(bool enable)
+    {
+      QCString opt = enable ? "abilitare" : "disabilitare";
+      return "cliccare per "+opt+" la sincronizzazione del pannello";
+    }
+
+    /*! Used in a method of an Objective-C class that is declared in a
+     *  a category. Note that the @1 marker is required and is replaced
+     *  by a link.
+     */
+    virtual QCString trProvidedByCategory()
+    {
+      return "Fornito dalla categoria @0.";
+    }
+
+    /*! Used in a method of an Objective-C category that extends a class.
+     *  Note that the @1 marker is required and is replaced by a link to
+     *  the class method.
+     */
+    virtual QCString trExtendsClass()
+    {
+      return "Estende la classe @0.";
+    }
+
+    /*! Used as the header of a list of class methods in Objective-C.
+     *  These are similar to static public member functions in C++.
+     */
+    virtual QCString trClassMethods()
+    {
+      return "Metodi della classe";
+    }
+
+    /*! Used as the header of a list of instance methods in Objective-C.
+     *  These are similar to public member functions in C++.
+     */
+    virtual QCString trInstanceMethods()
+    {
+      return "Metodi di instanza";
+    }
+
+    /*! Used as the header of the member functions of an Objective-C class.
+     */
+    virtual QCString trMethodDocumentation()
+    {
+      return "Documentazione dei metodi";
+    }
+
+    /*! Used as the title of the design overview picture created for the
+     *  VHDL output.
+     */
+    virtual QCString trDesignOverview()
+    {
+      return "Panoramica del progetto";
+    }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.4
+//////////////////////////////////////////////////////////////////////////
+
+    /** old style UNO IDL services: implemented interfaces */
+    virtual QCString trInterfaces()
+    { return "Interfacce esportate"; }
+
+    /** old style UNO IDL services: inherited services */
+    virtual QCString trServices()
+    { return "Servizi inclusi"; }
+
+    /** UNO IDL constant groups */
+    virtual QCString trConstantGroups()
+    { return "Gruppi di costanti"; }
+
+    /** UNO IDL constant groups */
+    virtual QCString trConstantGroupReference(const char *namespaceName)
+    {
+      QCString result="Riferimenti per il gruppo di costanti ";
+      result+=namespaceName;
+      return result;
+    }
+    /** UNO IDL service page title */
+    virtual QCString trServiceReference(const char *sName)
+    {
+      QCString result=(QCString)"Riferimenti per il servizio ";
+      result+=sName;
+      return result;
+    }
+    /** UNO IDL singleton page title */
+    virtual QCString trSingletonReference(const char *sName)
+    {
+      QCString result=(QCString)"Riferimenti per il singleton ";
+      result+=sName;
+      return result;
+    }
+    /** UNO IDL service page */
+    virtual QCString trServiceGeneratedFromFiles(bool single)
+    {
+      // single is true implies a single file
+      QCString result=(QCString)"La documentazione per questo servizio "
+                                "è stata generata a partire ";
+      if (single) result+="dal seguente file:"; else result+="dai seguenti file:";
+      return result;
+    }
+    /** UNO IDL singleton page */
+    virtual QCString trSingletonGeneratedFromFiles(bool single)
+    {
+      // single is true implies a single file
+      QCString result=(QCString)"La documentazione per questo singleton "
+                                "è stata generata a partire ";
+      if (single) result+="dal seguente file:"; else result+="dai seguenti file:";
+      return result;
+    }
+
+//////////////////////////////////////////////////////////////////////////
+
 };
 
 #endif
diff --git a/src/translator_je.h b/src/translator_je.h
index 4dbcb4e..835a516 100644
--- a/src/translator_je.h
+++ b/src/translator_je.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_jp.h b/src/translator_jp.h
index ae3605a..4dc9cba 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1037,7 +1037,7 @@ class TranslatorJapanese : public Translator
         "\\c MAX_DOT_GRAPH_" /* わざわざちょん切っているのは doc/translator.py の検出回避のため */
         "HEIGHT タグに 200 を与えた設定ファイル"
         "を使うと、次のようなグラフとなります。"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "グラフ内の矩形は構造体やクラスを表しています。色の意味は次の通りです。\n"
         "<ul>\n"
@@ -1878,7 +1878,7 @@ class TranslatorJapanese : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "@1 カテゴリーから提供されています。";
+      return "@0 カテゴリーから提供されています。";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1887,7 +1887,7 @@ class TranslatorJapanese : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "@1 を拡張しています。";
+      return "@0 を拡張しています。";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_ke.h b/src/translator_ke.h
index 56a70b3..525cf84 100644
--- a/src/translator_ke.h
+++ b/src/translator_ke.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_kr.h b/src/translator_kr.h
index 18337a5..2ef50e8 100644
--- a/src/translator_kr.h
+++ b/src/translator_kr.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1035,7 +1035,7 @@ class TranslatorKorean : public Translator
         "};\n"
         "\\endcode\n"
         "다음과 같은 그래프가 출력될 것입니다. :"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "위 그래프의 박스들은 다음과 같은 의미를 가집니다. :\n"
         "<ul>\n"
@@ -1903,7 +1903,7 @@ class TranslatorKorean : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "카테고리 @1에 의해 제공됨.";
+      return "카테고리 @0에 의해 제공됨.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1912,7 +1912,7 @@ class TranslatorKorean : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "클래스 @1 확장.";
+      return "클래스 @0 확장.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_lt.h b/src/translator_lt.h
index 174170e..faf4197 100644
--- a/src/translator_lt.h
+++ b/src/translator_lt.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1006,14 +1006,14 @@ class TranslatorLithuanian : public TranslatorAdapter_1_4_6
         "\\endcode\n"
         "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file "
         "is set to 240 this will result in the following graph:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "The boxes in the above graph have the following meaning:\n"
         "<ul>\n"
         "<li>%A filled black box represents the struct or class for which the "
         "graph is generated.\n"
         "<li>%A box with a black border denotes a documented struct or class.\n"
-        "<li>%A box with a grey border denotes an undocumented struct or class.\n"
+        "<li>%A box with a gray border denotes an undocumented struct or class.\n"
         "<li>%A box with a red border denotes a documented struct or class for"
         "which not all inheritance/containment relations are shown. %A graph is "
         "truncated if it does not fit within the specified boundaries.\n"
diff --git a/src/translator_lv.h b/src/translator_lv.h
index 135cd11..35aab0f 100644
--- a/src/translator_lv.h
+++ b/src/translator_lv.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1020,7 +1020,7 @@ class TranslatorLatvian : public TranslatorAdapter_1_8_4
         "};\n"
         "\\endcode\n"
         "This will result in the following graph:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "The boxes in the above graph have the following meaning:\n"
         "</p>\n"
@@ -1028,7 +1028,7 @@ class TranslatorLatvian : public TranslatorAdapter_1_8_4
         "<li>%A filled gray box represents the struct or class for which the "
         "graph is generated.</li>\n"
         "<li>%A box with a black border denotes a documented struct or class.</li>\n"
-        "<li>%A box with a grey border denotes an undocumented struct or class.</li>\n"
+        "<li>%A box with a gray border denotes an undocumented struct or class.</li>\n"
         "<li>%A box with a red border denotes a documented struct or class for"
         "which not all inheritance/containment relations are shown. %A graph is "
         "truncated if it does not fit within the specified boundaries.</li>\n"
@@ -1901,7 +1901,7 @@ class TranslatorLatvian : public TranslatorAdapter_1_8_4
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Nodrošina kategorija @1.";
+      return "Nodrošina kategorija @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1910,7 +1910,7 @@ class TranslatorLatvian : public TranslatorAdapter_1_8_4
      */
     virtual QCString trExtendsClass()
     {
-      return "Paplašina klasi @1.";
+      return "Paplašina klasi @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_mk.h b/src/translator_mk.h
index 510561e..d963dfc 100644
--- a/src/translator_mk.h
+++ b/src/translator_mk.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1003,7 +1003,7 @@ class TranslatorMacedonian : public TranslatorAdapter_1_6_0
         "\\endcode\n"
         "Ако вредноста на \\c MAX_DOT_GRAPH_HEIGHT во конфигурациската датотека "
         "е 240 тогаш примерот ќе го создаде следниов дијаграм:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Правоаголниците во дијаграмот погоре го имаат следново значење:\n"
         "<ul>\n"
diff --git a/src/translator_nl.h b/src/translator_nl.h
index 2ffacb6..241cf97 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -656,7 +656,7 @@ class TranslatorDutch : public Translator
         "};\n"
         "\\endcode\n"
         "Dit voorbeeld zal resulteren in de volgende graaf:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "De rechthoeken in the bovenstaande graaf hebben de volgende betekenis:\n"
         "<ul>\n"
@@ -1488,7 +1488,7 @@ class TranslatorDutch : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Wordt aangeboden door category @1.";
+      return "Wordt aangeboden door category @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1497,7 +1497,7 @@ class TranslatorDutch : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Uitbereiding van klasse @1.";
+      return "Uitbereiding van klasse @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_no.h b/src/translator_no.h
index 2662e47..40d3287 100644
--- a/src/translator_no.h
+++ b/src/translator_no.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1048,7 +1048,7 @@ class TranslatorNorwegian : public TranslatorAdapter_1_4_6
         "\\endcode\n"
         "Hvis \\c MAX_DOT_GRAPH_HEIGHT er satt til 200 i "
         "konfigurasjonsfila vil dette resultere i følgende graf:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Boksene i grafen over betyr følgende:\n"
         "<ul>\n"
diff --git a/src/translator_pl.h b/src/translator_pl.h
index 6f2e14c..f1bec57 100644
--- a/src/translator_pl.h
+++ b/src/translator_pl.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1012,7 +1012,7 @@ class TranslatorPolish : public TranslatorAdapter_1_8_2
         "};\n"
         "\\endcode\n"
         "Rezultat na następującym wykresie:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center></p>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "Prostokąty w powyższym wykresie mają następujące znaczenie:\n"
         "</p>\n"
diff --git a/src/translator_pt.h b/src/translator_pt.h
index 13422f6..5df58d7 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1016,7 +1016,7 @@ class TranslatorPortuguese : public Translator
         "};\n"
         "\\endcode\n"
         "Isto irá gerar o seguinte gráfo:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "As caixas no grafo anterior têm as seguintes interpretações:\n"
         "<ul>\n"
@@ -1903,7 +1903,7 @@ class TranslatorPortuguese : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Provido pela categoria @1.";
+      return "Provido pela categoria @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1912,7 +1912,7 @@ class TranslatorPortuguese : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "estende a classe @1.";
+      return "estende a classe @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_ro.h b/src/translator_ro.h
index ea0988d..eba7d47 100644
--- a/src/translator_ro.h
+++ b/src/translator_ro.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1031,7 +1031,7 @@ class TranslatorRomanian : public Translator
         "\\endcode\n"
         "Dacă tagul \\c MAX_DOT_GRAPH_HEIGHT din fişierul de configurare "
         "este setat la 200, acesta este graful rezultat:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Căsuţele din partea de sus au următoarea semnificaţie:\n"
         "<ul>\n"
@@ -1908,7 +1908,7 @@ class TranslatorRomanian : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Furnizat de categoria @1.";
+      return "Furnizat de categoria @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1917,7 +1917,7 @@ class TranslatorRomanian : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Extinde clasa @1.";
+      return "Extinde clasa @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_ru.h b/src/translator_ru.h
index c06d911..2162a34 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1004,7 +1004,7 @@ class TranslatorRussian : public Translator
         "\\endcode\n"
         "Если \\c MAX_DOT_GRAPH_HEIGHT в конфигурационном файле "
         "установлен в 240, получится следующий граф:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Прямоугольники в этом графе имеют следующее значение:\n"
         "<ul>\n"
@@ -1869,7 +1869,7 @@ class TranslatorRussian : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "По группам @1.";
+      return "По группам @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1878,7 +1878,7 @@ class TranslatorRussian : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Расширяет класс @1.";
+      return "Расширяет класс @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_sc.h b/src/translator_sc.h
index 84e8756..388af8c 100644
--- a/src/translator_sc.h
+++ b/src/translator_sc.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1033,7 +1033,7 @@ class TranslatorSerbianCyrillic : public TranslatorAdapter_1_6_0
         "\\endcode\n"
         "Ако је \\c MAX_DOT_GRAPH_HEIGHT таг у конфигурационој датотеци "
         "подешен на 240, то ће резултовати на следећи начин:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Правоугаоници имају следеће значење:\n"
         "<ul>\n"
diff --git a/src/translator_si.h b/src/translator_si.h
index 33bc27a..97a1931 100644
--- a/src/translator_si.h
+++ b/src/translator_si.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -684,14 +684,14 @@ class TranslatorSlovene : public TranslatorAdapter_1_4_6
         "\\endcode\n"
         "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file "
         "is set to 200 this will result in the following graph:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "The boxes in the above graph have the following meaning:\n"
         "<ul>\n"
         "<li>%A filled black box represents the struct or class for which the "
         "graph is generated.\n"
         "<li>%A box with a black border denotes a documented struct or class.\n"
-        "<li>%A box with a grey border denotes an undocumented struct or class.\n"
+        "<li>%A box with a gray border denotes an undocumented struct or class.\n"
         "<li>%A box with a red border denotes a documented struct or class for\n"
         "which not all inheritance/containment relations are shown. %A graph is "
         "truncated if it does not fit within the specified boundaries."
diff --git a/src/translator_sk.h b/src/translator_sk.h
index 0fc826b..d6d94a6 100644
--- a/src/translator_sk.h
+++ b/src/translator_sk.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1004,7 +1004,7 @@ class TranslatorSlovak : public Translator
         "};\n"
         "\\endcode\n"
         "K vyššie uvedenému bude vygenerovaný nasledujúci graf:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Bloky (tj. uzly) v uvedenom grafe majú nasledujúci význam:\n"
         "<ul>\n"
@@ -1866,7 +1866,7 @@ class TranslatorSlovak : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Deklarované v kategórii @1.";
+      return "Deklarované v kategórii @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1875,7 +1875,7 @@ class TranslatorSlovak : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Rozširuje triedu @1.";
+      return "Rozširuje triedu @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_sr.h b/src/translator_sr.h
index 09b6534..05e8018 100644
--- a/src/translator_sr.h
+++ b/src/translator_sr.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1001,7 +1001,7 @@ class TranslatorSerbian : public TranslatorAdapter_1_6_0
         "\\endcode\n"
         "Ako je \\c MAX_DOT_GRAPH_HEIGHT tag u konfiguracionoj datoteci "
         "postavljen na \\c 200 graf izvođenja će izgledati ovako:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "Graf će biti odsečen ako ne stane unutar zadatih granica.\n"
         "<p>\n"
         "Pravougaonici imaju sledeća značenja:\n"
diff --git a/src/translator_sv.h b/src/translator_sv.h
index f4d0a35..d491632 100644
--- a/src/translator_sv.h
+++ b/src/translator_sv.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -65,6 +65,8 @@ Problem!
    Deprecated: nån hygglig svensk översättning???
 
    Skicka gärna synpunkter.
+2015/01/09
+* Uppdaterat den till senaste versionen 1.8.9.1
 */
 
 #ifndef TRANSLATOR_SE_H
@@ -491,8 +493,8 @@ class TranslatorSwedish : public Translator
         case ClassDef::Struct: result+=" strukt"; break;
         case ClassDef::Union:  result+=" union"; break;
         case ClassDef::Interface:  result+=" gränssnitt"; break;
-        case ClassDef::Protocol:   result+=" protocol"; break; // translate me!
-        case ClassDef::Category:   result+=" category"; break; // translate me!
+        case ClassDef::Protocol:   result+=" protokoll"; break;
+        case ClassDef::Category:   result+=" kategori"; break;
         case ClassDef::Exception:  result+=" undantag"; break;
         default: break;
       }
@@ -633,8 +635,8 @@ class TranslatorSwedish : public Translator
         case ClassDef::Struct:     result+="denna strukt "; break;
         case ClassDef::Union:      result+="denna union "; break;
         case ClassDef::Interface:  result+="detta gränssnitt "; break;
-        case ClassDef::Protocol:   result+="protocol"; break; // translate me!
-        case ClassDef::Category:   result+="category"; break; // translate me!
+        case ClassDef::Protocol:   result+="detta protokoll"; break;
+        case ClassDef::Category:   result+="denna kategori"; break;
         case ClassDef::Exception:  result+="detta undantag "; break;
         default: break;
       }
@@ -877,9 +879,9 @@ class TranslatorSwedish : public Translator
         "genererar.<p>\n"
         "Tag följande exempel:\n"
         "\\code\n"
-	"/*! Osynlig klass på grund av stympning */\n"
+	"/*! Osynlig klass på grund av trunkering */\n"
         "class Invisible { };\n\n"
-	"/*! Stympad klass, ärvningsrelationen är dold */\n"
+	"/*! Trunkerad klass, ärvningsrelationen är dold */\n"
         "class Truncated : public Invisible { };\n\n"
 	"/* Klass utan doxygen-kommentarer */\n"
         "class Undocumented { };\n\n"
@@ -904,34 +906,33 @@ class TranslatorSwedish : public Translator
         "    Used *m_usedClass;\n"
         "};\n"
         "\\endcode\n"
-	"Om \\c MAX_DOT_GRAPH_HEIGHT är satt till 240 i konfigurationsfilen, "
-	"kommer följande graf att generas:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+	"Detta resulterar i att följande graf genereras:"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
 	"Rektanglarna i den ovanstående grafen har följande betydelser:\n"
         "<ul>\n"
-	"<li>%En fylld svart rektangel representerar den strukt eller klass "
-	"som har genererat grafen.\n"
-	"<li>%En rektangel med svart kant symboliserar en dokumenterad "
-	"strukt eller klass.\n"
-	"<li>%En rektangel med grå kant symboliserar en odokumenterad strukt "
-	"eller klass.\n"
+	"<li>%En fylld grå rektangel representerar den strukt eller klass "
+	"som har genererat grafen.</li>\n"
+	"<li>%En rektangel med svart kant symboliserar en dokumenterad strukt eller klass.</li>\n"
+	"<li>%En rektangel med grå kant symboliserar en odokumenterad strukt eller klass.</li>\n"
 	"<li>%En klass med röd kant symboliserar en strukt eller klass där "
-	"alla dess relationer inte visas. %En graf stympas om den inte får "
-	"plats inom de givna gränserna.\n"
+	"alla dess relationer inte visas. %En graf trunkeras om den inte får "
+	"plats inom de givna gränserna.</li>\n"
         "</ul>\n"
+        "<p>\n"
 	"Pilarna har följande betydelser:\n"
+        "</p>\n"
         "<ul>\n"
 	"<li>%En mörkblå pil används för att visualisera en publik arvrelation "
-	"mellan två klasser.\n"
-	"<li>%En mörkgrön pil används för en skyddad arvsrelation.\n"
-	"<li>%En mörkröd pil används för en privat arvsrelation.\n"
+	"mellan två klasser.</li>\n"
+	"<li>%En mörkgrön pil används för en skyddad arvsrelation.</li>\n"
+	"<li>%En mörkröd pil används för en privat arvsrelation.\n</li>"
 	"<li>%En sträckad lila pil används om en klass är innesluten eller "
 	"använd av en annan klass. Vid pilen står namnet på den eller de "
-	"variabler som klassen pilen pekar på kommer åt.\n"
+	"variabler som klassen pilen pekar på kommer åt.</li>\n"
 	"<li>%En sträckad gul pil symboliserar förhållandet mellan en "
 	"template-instans och template-klassen, som den instantierades från.\n"
-	"Vid pilen står instansens template-parametrar.\n"
+	"Vid pilen står instansens template-parametrar.</li>\n"
         "</ul>\n";
     }
 
@@ -1719,7 +1720,7 @@ class TranslatorSwedish : public Translator
 
     /*! Used in dot graph when UML_LOOK is enabled and there are many fields */
     virtual QCString trAndMore(const QCString &number)
-    { return "och "+number+" mera..."; }
+    { return "och "+number+" flera..."; }
 
     /*! Used file list for a Java enum */
     virtual QCString trEnumGeneratedFromFiles(bool single)
@@ -1763,7 +1764,7 @@ class TranslatorSwedish : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Tillhandahålls av kategori @1.";
+      return "Tillhandahålls av kategori @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1772,7 +1773,7 @@ class TranslatorSwedish : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "Utökar klass @1.";
+      return "Utökar klass @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_tr.h b/src/translator_tr.h
index 56b4a19..26ae08f 100644
--- a/src/translator_tr.h
+++ b/src/translator_tr.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1016,7 +1016,7 @@ class TranslatorTurkish : public TranslatorAdapter_1_7_5
         "};\n"
         "\\endcode\n"
         "Bu kod aşağıdaki şemayı oluşturur:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Yukarıdaki şemadaki kutular aşağıda açıklanmıştır:\n"
         "<ul>\n"
diff --git a/src/translator_tw.h b/src/translator_tw.h
index 9da3365..79bf6f5 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -993,7 +993,7 @@ class TranslatorChinesetraditional : public Translator
         ".<p>\n"
         "請看下面範例:\n"
         "\\code\n"
-        "/*! 因為截斷的不可見類別 */\n"
+        "/*! 因為截斷而造成的不可見類別 */\n"
         "class Invisible { };\n\n"
         "/*! 截斷的類別, 繼承關係被隱藏 */\n"
         "class Truncated : public Invisible { };\n\n"
@@ -1020,32 +1020,32 @@ class TranslatorChinesetraditional : public Translator
         "    Used *m_usedClass;\n"
         "};\n"
         "\\endcode\n"
-        "若在組態檔中的 \\c MAX_DOT_GRAPH_HEIGHT tag "
-        "設為 240,將會產生下列的圖示:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "這個例子會產生下列的圖示:"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center></p>\n"
         "<p>\n"
         "上圖中的各區塊意義如下:\n"
+        "</p>\n"
         "<ul>\n"
         "<li>%A 填滿黑色的區塊代表產生這個圖示的類別或結構 "
         ".\n"
-        "<li>%A 黑邊的區塊代表文件化過的結構或類別.\n"
-        "<li>%A 灰邊的區塊代表未經文件化的結構或是類別.\n"
+        "<li>%A 黑邊的區塊代表文件化過的結構或類別.</li>\n"
+        "<li>%A 灰邊的區塊代表未經文件化的結構或是類別.</li>\n"
         "<li>%A 紅邊的區塊代表文件化的結構或是類別,"
         "這些結構或類別的繼承或包含關係不會全部顯示. %A 圖示 "
-        "若無法塞入指定的邊界中將會被截斷.\n"
+        "若無法塞入指定的邊界中將會被截斷.</li>\n"
         "</ul>\n"
+        "<p>\n"
         "箭頭具有下面的意義:\n"
+        "</p>\n"
         "<ul>\n"
         "<li>%A 深藍色箭頭用來代表兩個類別間的公開繼承 "
         "關係.\n"
-        "<li>%A 深綠色箭頭代表保護繼承.\n"
-        "<li>%A 深紅色箭頭代表私有繼承.\n"
+        "<li>%A 深綠色箭頭代表保護繼承。</li>\n"
+        "<li>%A 深紅色箭頭代表私有繼承。</li>\n"
         "<li>%A 紫色箭頭用來表示類別被另一個包含或是使用."
-        "箭頭上標示著可存取該類別或是結構的對應變數"
-        ".\n"
+        "箭頭上標示著可存取該類別或是結構的對應變數。</li>\n"
         "<li>%A 黃色箭頭代表樣版實體與樣版類別之間的關係。"
-        "箭頭上標記著樣版實體上的參數"
-        ".\n"
+        "箭頭上標記著樣版實體上的參數。</li>\n"
         "</ul>\n";
     }
     /*! text for the link to the legend page */
@@ -1866,7 +1866,7 @@ class TranslatorChinesetraditional : public Translator
      */
     virtual QCString trProvidedByCategory()
     {
-      return "由 @1 分類所提供.";
+      return "由 @0 分類所提供.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1875,7 +1875,7 @@ class TranslatorChinesetraditional : public Translator
      */
     virtual QCString trExtendsClass()
     {
-      return "延伸 @1 類別 .";
+      return "延伸 @0 類別 .";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_ua.h b/src/translator_ua.h
index 45efd6e..964285b 100644
--- a/src/translator_ua.h
+++ b/src/translator_ua.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -993,7 +993,7 @@ class TranslatorUkrainian : public TranslatorAdapter_1_8_4
         "};\n"
         "\\endcode\n"
         "Таким чином, отримуємо наступний граф:"
-        "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Прямокутники в цьому графі мають наступний зміст:\n"
         "<ul>\n"
@@ -1866,7 +1866,7 @@ class TranslatorUkrainian : public TranslatorAdapter_1_8_4
      */
     virtual QCString trProvidedByCategory()
     {
-      return "Забезпечено категорією @1.";
+      return "Забезпечено категорією @0.";
     }
 
     /*! Used in a method of an Objective-C category that extends a class.
@@ -1875,7 +1875,7 @@ class TranslatorUkrainian : public TranslatorAdapter_1_8_4
      */
     virtual QCString trExtendsClass()
     {
-      return "Розширює клас @1.";
+      return "Розширює клас @0.";
     }
 
     /*! Used as the header of a list of class methods in Objective-C.
diff --git a/src/translator_vi.h b/src/translator_vi.h
index dd0a8f1..b2bbdd7 100644
--- a/src/translator_vi.h
+++ b/src/translator_vi.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1021,7 +1021,7 @@ class TranslatorVietnamese : public TranslatorAdapter_1_6_0
         "};\n"
         "\\endcode\n"
         "Kết quả trong biểu đồ sau đây:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Các hộp trong biểu đồ trên có ý nghĩa như sau:\n"
         "<ul>\n"
diff --git a/src/translator_za.h b/src/translator_za.h
index f47052e..ca94e7a 100644
--- a/src/translator_za.h
+++ b/src/translator_za.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -1002,7 +1002,7 @@ class TranslatorAfrikaans : public TranslatorAdapter_1_6_0
         "\\endcode\n"
         "As die \\c MAX_DOT_GRAPH_HEIGHT merker in die konfigurasie leër "
         "aan 240 gelyk gestel is, word die volgende diagram geproduseer:"
-        "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
+        "<p><center><img alt=\"\" src=\"graph_legend."+getDotImageExtension()+"\"></center>\n"
         "<p>\n"
         "Die reghoeke in die diagram het die volgende betekenis:\n"
         "<ul>\n"
diff --git a/src/types.h b/src/types.h
index 688d664..f6c704c 100644
--- a/src/types.h
+++ b/src/types.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/util.cpp b/src/util.cpp
old mode 100644
new mode 100755
index 00173fb..6f3bc40
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -18,6 +18,7 @@
 #include <ctype.h>
 #include <errno.h>
 #include <math.h>
+#include <limits.h>
 
 #include "md5.h"
 
@@ -1724,7 +1725,7 @@ nextChar:
       growBuf.addChar(' ');
     }
     else if (i>0 && c=='>' && // current char is a >
-        (isId(s.at(i-1)) || isspace((uchar)s.at(i-1)) || s.at(i-1)=='*' || s.at(i-1)=='&') && // prev char is an id char or space
+        (isId(s.at(i-1)) || isspace((uchar)s.at(i-1)) || s.at(i-1)=='*' || s.at(i-1)=='&' || s.at(i-1)=='.') && // prev char is an id char or space
         (i<8 || !findOperator(s,i)) // string in front is not "operator"
         )
     {
@@ -1741,9 +1742,11 @@ nextChar:
     }
     else if (i>0 &&
          (
-          (s.at(i-1)==')' && isId(c))
+          (s.at(i-1)==')' && isId(c)) // ")id" -> ") id"
           ||
-          (c=='\''  && s.at(i-1)==' ')
+          (c=='\''  && s.at(i-1)==' ')  // "'id" -> "' id"
+          ||
+          (i>1 && s.at(i-2)==' ' && s.at(i-1)==' ') // "  id" -> " id"
          )
         )
     {
@@ -2223,12 +2226,21 @@ QCString tempArgListToString(ArgumentList *al,SrcLangExt lang)
       if (i>0)
       {
         result+=a->type.right(a->type.length()-i-1);
+        if (a->type.find("...")!=-1)
+        {
+          result+="...";
+        }
       }
       else // nothing found -> take whole name
       {
         result+=a->type;
       }
     }
+    if (!a->typeConstraint.isEmpty() && lang==SrcLangExt_Java)
+    {
+      result+=" extends "; // TODO: now Java specific, C# has where...
+      result+=a->typeConstraint;
+    }
     ++ali;
     a=ali.current();
     if (a) result+=", ";
@@ -2461,6 +2473,35 @@ QCString fileToString(const char *name,bool filter,bool isSourceCode)
 QCString dateToString(bool includeTime)
 {
   QDateTime current = QDateTime::currentDateTime();
+  QCString sourceDateEpoch = portable_getenv("SOURCE_DATE_EPOCH");
+  if (!sourceDateEpoch.isEmpty())
+  {
+    bool ok;
+    uint64 epoch = sourceDateEpoch.toUInt64(&ok);
+    if (!ok)
+    {
+      static bool warnedOnce=FALSE;
+      if (!warnedOnce)
+      {
+        warn_uncond("Environment variable SOURCE_DATE_EPOCH does not contain a valid number; value is '%s'\n",
+            sourceDateEpoch.data());
+        warnedOnce=TRUE;
+      }
+    }
+    else if (epoch>UINT_MAX)
+    {
+      static bool warnedOnce=FALSE;
+      if (!warnedOnce)
+      {
+        warn_uncond("Environment variable SOURCE_DATA_EPOCH must have a value smaller than or equal to %llu; actual value %llu\n",UINT_MAX,epoch);
+        warnedOnce=TRUE;
+      }
+    }
+    else // all ok, replace current time with epoch value
+    {
+      current.setTime_t((ulong)epoch); // TODO: add support for 64bit epoch value
+    }
+  }
   return theTranslator->trDateTime(current.date().year(),
                                    current.date().month(),
                                    current.date().day(),
@@ -3964,6 +4005,11 @@ bool getDefs(const QCString &scName,
 
       MemberDef *tmd=0;
       ClassDef *fcd=getResolvedClass(Doxygen::globalScope,0,className,&tmd);
+      if (fcd==0 && className.find('<')!=-1) // try without template specifiers as well
+      {
+         QCString nameWithoutTemplates = stripTemplateSpecifiersFromScope(className,FALSE);
+         fcd=getResolvedClass(Doxygen::globalScope,0,nameWithoutTemplates,&tmd);
+      }
       //printf("Trying class scope %s: fcd=%p tmd=%p\n",className.data(),fcd,tmd);
       // todo: fill in correct fileScope!
       if (fcd &&  // is it a documented class
@@ -4250,7 +4296,7 @@ bool getDefs(const QCString &scName,
         bool found=FALSE;
         MemberListIterator mmli(*mn);
         MemberDef *mmd;
-        for (mmli.toFirst();((mmd=mmli.current()) && !found);++mmli)
+        for (mmli.toFirst();(mmd=mmli.current());++mmli)
         {
           MemberDef *tmd = mmd->getEnumScope();
           //printf("try member %s tmd=%s\n",mmd->name().data(),tmd?tmd->name().data():"<none>");
@@ -4715,7 +4761,7 @@ bool resolveLink(/* in */ const char *scName,
 
   QCString linkRef=lr;
   QCString linkRefWithoutTemplates = stripTemplateSpecifiersFromScope(linkRef,FALSE);
-  //printf("ResolveLink linkRef=%s inSee=%d\n",lr,inSeeBlock);
+  //printf("ResolveLink linkRef=%s\n",lr);
   FileDef  *fd;
   GroupDef *gd;
   PageDef  *pd;
@@ -5229,6 +5275,7 @@ QCString escapeCharsInString(const char *name,bool allowDots,bool allowUnderscor
       case '=': growBuf.addStr("_0A"); break;
       case '$': growBuf.addStr("_0B"); break;
       case '\\': growBuf.addStr("_0C"); break;
+      case '@': growBuf.addStr("_0D"); break;
       default: 
                 if (c<0)
                 {
@@ -5634,6 +5681,37 @@ QCString stripScope(const char *name)
   return name;
 }
 
+/*! Converts a string to a HTML id string */
+QCString convertToId(const char *s)
+{
+  static const char hex[] = "0123456789ABCDEF";
+  static GrowBuf growBuf;
+  growBuf.clear();
+  if (s==0) return "";
+  const char *p=s;
+  char c;
+  bool first=TRUE;
+  while ((c=*p++))
+  {
+    char encChar[4];
+    if ((c>='0' && c<='9') || (c>='a' && c<='z') || (c>='A' && c<='Z') || c=='-' || c==':' || c=='.')
+    { // any permissive character except _
+      if (first && c>='0' && c<='9') growBuf.addChar('a'); // don't start with a digit
+      growBuf.addChar(c);
+    }
+    else
+    {
+      encChar[0]='_';
+      encChar[1]=hex[((unsigned char)c)>>4];
+      encChar[2]=hex[((unsigned char)c)&0xF];
+      encChar[3]=0;
+      growBuf.addStr(encChar);
+    }
+    first=FALSE;
+  }
+  growBuf.addChar(0);
+  return growBuf.get();
+}
 
 /*! Converts a string to an XML-encoded string */
 QCString convertToXML(const char *s)
@@ -5731,6 +5809,15 @@ QCString convertToJSString(const char *s)
   return convertCharEntitiesToUTF8(growBuf.get());
 }
 
+QCString convertToLaTeX(const QCString &s,bool insideTabbing,bool keepSpaces)
+{
+  QGString result;
+  FTextStream t(&result);
+  filterLatexString(t,s,insideTabbing,FALSE,FALSE,keepSpaces);
+  return result.data();
+}
+
+
 
 QCString convertCharEntitiesToUTF8(const QCString &s)
 {
@@ -5819,7 +5906,8 @@ void addMembersToMemberGroup(MemberList *ml,
                     groupId,
                     info->header,
                     info->doc,
-                    info->docFile
+                    info->docFile,
+                    info->docLine
                     );
                 (*ppMemberGroupSDict)->append(groupId,mg);
               }
@@ -5851,7 +5939,8 @@ void addMembersToMemberGroup(MemberList *ml,
               groupId,
               info->header,
               info->doc,
-              info->docFile
+              info->docFile,
+              info->docLine
               );
           (*ppMemberGroupSDict)->append(groupId,mg);
         }
@@ -6312,11 +6401,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
     if (tagInfo)
     {
       pd->setReference(tagInfo->tagName);
-      pd->setFileName(tagInfo->fileName,TRUE);
-    }
-    else
-    {
-      pd->setFileName(convertNameToFile(pd->name(),FALSE,TRUE),FALSE);
+      pd->setFileName(tagInfo->fileName);
     }
 
     //printf("Appending page `%s'\n",baseName.data());
@@ -6446,12 +6531,13 @@ void addGroupListToTitle(OutputList &ol,Definition *d)
 }
 
 void filterLatexString(FTextStream &t,const char *str,
-    bool insideTabbing,bool insidePre,bool insideItem)
+    bool insideTabbing,bool insidePre,bool insideItem,bool keepSpaces)
 {
   if (str==0) return;
-  //printf("filterLatexString(%s)\n",str);
   //if (strlen(str)<2) stackTrace();
   const unsigned char *p=(const unsigned char *)str;
+  const unsigned char *q;
+  int cnt;
   unsigned char c;
   unsigned char pc='\0';
   while (*p)
@@ -6466,8 +6552,11 @@ void filterLatexString(FTextStream &t,const char *str,
         case '{':  t << "\\{"; break;
         case '}':  t << "\\}"; break;
         case '_':  t << "\\_"; break;
-        default: 
+        case ' ':  if (keepSpaces) t << "~"; else t << ' ';
+                   break;
+        default:
                    t << (char)c;
+                   break;
       }
     }
     else
@@ -6478,7 +6567,35 @@ void filterLatexString(FTextStream &t,const char *str,
         case '$':  t << "\\$";           break;
         case '%':  t << "\\%";           break;
         case '^':  t << "$^\\wedge$";    break;
-        case '&':  t << "\\&";           break;
+        case '&':  // possibility to have a special symbol
+                   q = p;
+                   cnt = 2; // we have to count & and ; as well
+                   while ((*q >= 'a' && *q <= 'z') || (*q >= 'A' && *q <= 'Z') || (*q >= '0' && *q <= '9'))
+                   {
+                     cnt++;
+                     q++;
+                   }
+                   if (*q == ';')
+                   {
+                      --p; // we need & as well
+                      DocSymbol::SymType res = HtmlEntityMapper::instance()->name2sym(QCString((char *)p).left(cnt));
+                      if (res == DocSymbol::Sym_Unknown)
+                      {
+                        p++;
+                        t << "\\&";
+                      }
+                      else
+                      {
+                        t << HtmlEntityMapper::instance()->latex(res);
+                        q++;
+                        p = q;
+                      }
+                   }
+                   else
+                   {
+                     t << "\\&";
+                   }
+                   break;
         case '*':  t << "$\\ast$";       break;
         case '_':  if (!insideTabbing) t << "\\+";  
                    t << "\\_"; 
@@ -6509,11 +6626,13 @@ void filterLatexString(FTextStream &t,const char *str,
                    break;
         case '\'': t << "\\textquotesingle{}";
                    break;
+        case ' ':  if (keepSpaces) { if (insideTabbing) t << "\\>"; else t << '~'; } else t << ' ';
+                   break;
 
         default:   
                    //if (!insideTabbing && forceBreaks && c!=' ' && *p!=' ')
                    if (!insideTabbing && 
-                       ((c>='A' && c<='Z' && pc!=' ' && pc!='\0') || (c==':' && pc!=':') || (pc=='.' && isId(c)))
+                       ((c>='A' && c<='Z' && pc!=' ' && pc!='\0' && *p) || (c==':' && pc!=':') || (pc=='.' && isId(c)))
                       )
                    {
                      t << "\\+";
@@ -6525,6 +6644,102 @@ void filterLatexString(FTextStream &t,const char *str,
   }
 }
 
+QCString latexEscapeLabelName(const char *s,bool insideTabbing)
+{
+  QGString result;
+  QCString tmp(qstrlen(s)+1);
+  FTextStream t(&result);
+  const char *p=s;
+  char c;
+  int i;
+  while ((c=*p++))
+  {
+    switch (c)
+    {
+      case '|': t << "\\texttt{\"|}"; break;
+      case '!': t << "\"!"; break;
+      case '%': t << "\\%";       break;
+      case '{': t << "\\lcurly{}"; break;
+      case '}': t << "\\rcurly{}"; break;
+      case '~': t << "````~"; break; // to get it a bit better in index together with other special characters
+      // NOTE: adding a case here, means adding it to while below as well!
+      default:  
+        i=0;
+        // collect as long string as possible, before handing it to docify
+        tmp[i++]=c;
+        while ((c=*p) && c!='|' && c!='!' && c!='%' && c!='{' && c!='}' && c!='~')
+        {
+          tmp[i++]=c;
+          p++;
+        }
+        tmp[i]=0;
+        filterLatexString(t,tmp.data(),insideTabbing);
+        break;
+    }
+  }
+  return result.data();
+}
+
+QCString latexEscapeIndexChars(const char *s,bool insideTabbing)
+{
+  QGString result;
+  QCString tmp(qstrlen(s)+1);
+  FTextStream t(&result);
+  const char *p=s;
+  char c;
+  int i;
+  while ((c=*p++))
+  {
+    switch (c)
+    {
+      case '!': t << "\"!"; break;
+      case '"': t << "\"\""; break;
+      case '@': t << "\"@"; break;
+      case '|': t << "\\texttt{\"|}"; break;
+      case '[': t << "["; break;
+      case ']': t << "]"; break;
+      case '{': t << "\\lcurly{}"; break;
+      case '}': t << "\\rcurly{}"; break;
+      // NOTE: adding a case here, means adding it to while below as well!
+      default:  
+        i=0;
+        // collect as long string as possible, before handing it to docify
+        tmp[i++]=c;
+        while ((c=*p) && c!='"' && c!='@' && c!='[' && c!=']' && c!='!' && c!='{' && c!='}' && c!='|')
+        {
+          tmp[i++]=c;
+          p++;
+        }
+        tmp[i]=0;
+        filterLatexString(t,tmp.data(),insideTabbing);
+        break;
+    }
+  }
+  return result.data();
+}
+
+QCString latexEscapePDFString(const char *s)
+{
+  QGString result;
+  FTextStream t(&result);
+  const char *p=s;
+  char c;
+  int i;
+  while ((c=*p++))
+  {
+    switch (c)
+    {
+      case '\\': t << "\\textbackslash{}"; break;
+      case '{':  t << "\\{"; break;
+      case '}':  t << "\\}"; break;
+      default:
+        t << c;
+        break;
+    }
+  }
+  return result.data();
+}
+
 
 QCString rtfFormatBmkStr(const char *name)
 {
@@ -6740,7 +6955,7 @@ g_lang2extMap[] =
   { "fortranfree", "fortranfree",   SrcLangExt_Fortran  },
   { "fortranfixed", "fortranfixed", SrcLangExt_Fortran  },
   { "vhdl",        "vhdl",          SrcLangExt_VHDL     },
-  { "dbusxml",     "dbusxml",       SrcLangExt_XML      },
+  { "xml",         "xml",           SrcLangExt_XML      },
   { "tcl",         "tcl",           SrcLangExt_Tcl      },
   { "md",          "md",            SrcLangExt_Markdown },
   { 0,             0,              (SrcLangExt)0        }
@@ -6783,6 +6998,7 @@ bool updateLanguageMapping(const QCString &extension,const QCString &language)
 
 void initDefaultExtensionMapping()
 {
+  // NOTE: when adding an extension, also add the extension in config.xml
   g_extLookup.setAutoDelete(TRUE);
   //                  extension      parser id
   updateLanguageMapping(".dox",      "c");
@@ -6822,8 +7038,9 @@ void initDefaultExtensionMapping()
   updateLanguageMapping(".phtml",    "php");
   updateLanguageMapping(".m",        "objective-c");
   updateLanguageMapping(".M",        "objective-c");
-  updateLanguageMapping(".mm",       "objective-c");
+  updateLanguageMapping(".mm",       "c");  // see bug746361
   updateLanguageMapping(".py",       "python");
+  updateLanguageMapping(".pyw",      "python");
   updateLanguageMapping(".f",        "fortran");
   updateLanguageMapping(".for",      "fortran");
   updateLanguageMapping(".f90",      "fortran");
@@ -6834,8 +7051,11 @@ void initDefaultExtensionMapping()
   updateLanguageMapping(".qsf",      "vhdl");
   updateLanguageMapping(".md",       "md");
   updateLanguageMapping(".markdown", "md");
+}
 
-  //updateLanguageMapping(".xml",   "dbusxml");
+void addCodeOnlyMappings()
+{
+  updateLanguageMapping(".xml",   "xml");
 }
 
 SrcLangExt getLanguageFromFileName(const QCString fileName)
@@ -7480,7 +7700,7 @@ bool readInputFile(const char *fileName,BufStr &inBuf,bool filter,bool isSourceC
   else
   {
     QCString cmd=filterName+" \""+fileName+"\"";
-    Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",cmd.data());
+    Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",qPrint(cmd));
     FILE *f=portable_popen(cmd,"r");
     if (!f)
     {
@@ -7498,7 +7718,7 @@ bool readInputFile(const char *fileName,BufStr &inBuf,bool filter,bool isSourceC
     portable_pclose(f);
     inBuf.at(inBuf.curPos()) ='\0';
     Debug::print(Debug::FilterOutput, 0, "Filter output\n");
-    Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",inBuf.data());
+    Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",qPrint(inBuf));
   }
 
   int start=0;
@@ -7646,8 +7866,12 @@ QCString externalRef(const QCString &relPath,const QCString &ref,bool href)
       if (!relPath.isEmpty() && l>0 && result.at(0)=='.')
       { // relative path -> prepend relPath.
         result.prepend(relPath);
+        l+=relPath.length();
+      }
+      if (!href){
+        result.prepend("doxygen=\""+ref+":");
+        l+=10+ref.length();
       }
-      if (!href) result.prepend("doxygen=\""+ref+":");
       if (l>0 && result.at(l-1)!='/') result+='/';
       if (!href) result.append("\" ");
     }
@@ -7966,12 +8190,10 @@ void addDocCrossReference(MemberDef *src,MemberDef *dst)
 {
   static bool referencedByRelation = Config_getBool("REFERENCED_BY_RELATION");
   static bool referencesRelation   = Config_getBool("REFERENCES_RELATION");
-  static bool callerGraph          = Config_getBool("CALLER_GRAPH");
-  static bool callGraph            = Config_getBool("CALL_GRAPH");
 
   //printf("--> addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data());
   if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types
-  if ((referencedByRelation || callerGraph || dst->hasCallerGraph()) && 
+  if ((referencedByRelation || dst->hasCallerGraph()) && 
       src->showInCallGraph()
      )
   {
@@ -7987,7 +8209,7 @@ void addDocCrossReference(MemberDef *src,MemberDef *dst)
       mdDecl->addSourceReferencedBy(src);
     }
   }
-  if ((referencesRelation || callGraph || src->hasCallGraph()) && 
+  if ((referencesRelation || src->hasCallGraph()) && 
       src->showInCallGraph()
      )
   {
@@ -8277,7 +8499,7 @@ void convertProtectionLevel(
         if (extractPrivate)
         {
           *outListType1=MemberListType_pubSlots;
-          *outListType1=MemberListType_proSlots;
+          *outListType2=MemberListType_proSlots;
         }
         else
         {
@@ -8337,3 +8559,54 @@ bool mainPageHasTitle()
   return TRUE;
 }
 
+QCString getDotImageExtension(void)
+{
+  QCString imgExt      = Config_getEnum("DOT_IMAGE_FORMAT");
+  imgExt = imgExt.replace( QRegExp(":.*"), "" );
+  return imgExt;
+}
+
+void initFilePattern(void)
+{
+  // add default pattern if needed
+  QStrList &filePatternList = Config_getList("FILE_PATTERNS");
+  if (filePatternList.isEmpty())
+  {
+    QDictIterator<int> it( g_extLookup );
+    QCString pattern;
+    bool caseSens =  portable_fileSystemIsCaseSensitive();
+    for (;it.current();++it)
+    {
+      pattern = "*";
+      pattern += it.currentKey();
+      filePatternList.append(pattern.data());
+      if (caseSens) filePatternList.append(pattern.upper().data());
+    }
+  }
+}
+
+bool openOutputFile(const char *outFile,QFile &f)
+{
+  bool fileOpened=FALSE;
+  bool writeToStdout=(outFile[0]=='-' && outFile[1]=='\0');
+  if (writeToStdout) // write to stdout
+  {
+    fileOpened = f.open(IO_WriteOnly,stdout);
+  }
+  else // write to file
+  {
+    QFileInfo fi(outFile);
+    if (fi.exists()) // create a backup
+    {
+      QDir dir=fi.dir();
+      QFileInfo backup(fi.fileName()+".bak");
+      if (backup.exists()) // remove existing backup
+        dir.remove(backup.fileName());
+      dir.rename(fi.fileName(),fi.fileName()+".bak");
+    } 
+    f.setName(outFile);
+    fileOpened = f.open(IO_WriteOnly|IO_Translate);
+  }
+  return fileOpened;
+}
+
diff --git a/src/util.h b/src/util.h
old mode 100644
new mode 100755
index 937b222..3f976e3
--- a/src/util.h
+++ b/src/util.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -57,6 +57,7 @@ class BufStr;
 class QFileInfo;
 class QStrList;
 class FTextStream;
+class QFile;
 
 //--------------------------------------------------------------------
 
@@ -274,8 +275,12 @@ QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &te
 
 QCString stripScope(const char *name);
 
+QCString convertToId(const char *s);
+
 QCString convertToHtml(const char *s,bool keepEntities=TRUE);
 
+QCString convertToLaTeX(const QCString &s,bool insideTabbing=FALSE,bool keepSpaces=FALSE);
+
 QCString convertToXML(const char *s);
 
 QCString convertToJSString(const char *s);
@@ -334,7 +339,12 @@ void addGroupListToTitle(OutputList &ol,Definition *d);
 void filterLatexString(FTextStream &t,const char *str,
                        bool insideTabbing=FALSE,
                        bool insidePre=FALSE,
-                       bool insideItem=FALSE);
+                       bool insideItem=FALSE,
+                       bool keepSpaces=FALSE);
+
+QCString latexEscapeLabelName(const char *s,bool insideTabbing);
+QCString latexEscapeIndexChars(const char *s,bool insideTabbing);
+QCString latexEscapePDFString(const char *s);
 
 QCString rtfFormatBmkStr(const char *name);
 
@@ -376,6 +386,7 @@ QCString stripLeadingAndTrailingEmptyLines(const QCString &s,int &docLine);
 bool updateLanguageMapping(const QCString &extension,const QCString &parser);
 SrcLangExt getLanguageFromFileName(const QCString fileName);
 void initDefaultExtensionMapping();
+void addCodeOnlyMappings();
 
 MemberDef *getMemberFromSymbol(Definition *scope,FileDef *fileScope, 
                                 const char *n);
@@ -443,6 +454,8 @@ bool protectionLevelVisible(Protection prot);
 
 QCString stripIndentation(const QCString &s);
 
+QCString getDotImageExtension(void);
+
 bool fileVisibleInIndex(FileDef *fd,bool &genSourceFile);
 
 void addDocCrossReference(MemberDef *src,MemberDef *dst);
@@ -461,6 +474,8 @@ void convertProtectionLevel(
                   );
 
 bool mainPageHasTitle();
+void initFilePattern(void);
+bool openOutputFile(const char *outFile,QFile &f);
 
 #endif
 
diff --git a/src/version.cpp b/src/version.cpp
deleted file mode 100644
index 8f25241..0000000
--- a/src/version.cpp
+++ /dev/null
@@ -1 +0,0 @@
-char versionString[]="1.8.9.1";
diff --git a/src/version.h b/src/version.h
index b31fe4f..16bf9df 100644
--- a/src/version.h
+++ b/src/version.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/version.py b/src/version.py
deleted file mode 100755
index 003cf95..0000000
--- a/src/version.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# 
-
-# script to read the version information from `../configure`
-# relevant lines are starting with:
-#   `doxygen_version_major`
-#   `doxygen_version_minor`
-#   `doxygen_version_revision`
-#   `doxygen_version_mmn`
-# the collected information is written to: `../VERSION` and `../src/version.cpp`
-#
-import sys
-import os
-#
-# set 'default' values
-#
-major = 0
-minor = 0
-revision = 0
-mnt = 'NO'
-#
-# open input file
-#  read file and get relevant information
-# close
-#
-f = open('../configure', 'r')
-for line in f:
-    # check if line can match (saves 3 comparisons)
-    if (line.startswith('doxygen_version')):
-        if (line.startswith('doxygen_version_major')):
-            major = line.replace('doxygen_version_major=','')
-        elif (line.startswith('doxygen_version_minor')):
-            minor = line.replace('doxygen_version_minor=','')
-        elif (line.startswith('doxygen_version_revision')):
-            revision = line.replace('doxygen_version_revision=','')
-        elif (line.startswith('doxygen_version_mmn')):
-            mnt = line.replace('doxygen_version_mmn=','')
-f.close()
-
-# strip superfluous '\n`
-major = major.replace('\n','')
-minor = minor.replace('\n','')
-revision = revision.replace('\n','')
-mnt = mnt.replace('\n','')
-#
-# open output files
-# write relevant infomation
-# close files
-#
-f1 = open('../VERSION','w')
-f2 = open(os.path.join(sys.argv[1],'version.cpp'),'w')
-if (mnt == 'NO'):
-    f1.write(major + '.' + minor + '.' + revision)
-    f2.write('char versionString[]="' + major + '.' + minor + '.' + revision + '";')
-else:
-    f1.write(major + '.' + minor + '.' + revision + '-' + mnt)
-    f2.write('char versionString[]="' + major + '.' + minor + '.' + revision + '-' + mnt + '";')
-f1.close()
-f2.close()
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index 2b0841e..e4ae0e7 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -17,7 +17,7 @@
  * written by M. Kreis
  * supports VHDL-87/93/2008
  ******************************************************************************/
-
+%option never-interactive
 %{
 
 /*
@@ -44,8 +44,8 @@
 #include "filedef.h"
 #include "tooltip.h"
 
-#define YY_NEVER_INTERACTIVE 1
 #define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
   
 // Toggle for some debugging info
 //#define DBG_CTX(x) fprintf x
@@ -1613,7 +1613,7 @@ void codeFreeVhdlScanner()
 extern "C" { // some bogus code to keep the compiler happy
   void vhdlcodeYYdummy() { yy_flex_realloc(0,0); } 
 }
-#elif YY_FLEX_SUBMINOR_VERSION<33
+#elif YY_FLEX_MAJOR_VERSION<=2 && YY_FLEX_MINOR_VERSION<=5 && YY_FLEX_SUBMINOR_VERSION<33
 #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
 #endif
 
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index 170bf5b..2d473b2 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
@@ -27,10 +27,7 @@
 #include <qcstring.h>
 #include <qfileinfo.h>
 #include <qstringlist.h>
-
-//#ifdef DEBUGFLOW
 #include <qmap.h>
-//#endif
 
 /* --------------------------------------------------------------- */
 
@@ -47,7 +44,6 @@
 #include "searchindex.h"
 #include "outputlist.h"
 #include "parserintf.h"
-
 #include "layout.h"
 #include "arguments.h"
 #include "portable.h"
@@ -59,11 +55,12 @@
 #include "filename.h"
 #include "membergroup.h"
 #include "memberdef.h"
-
+#include "plantuml.h"
 #include "vhdljjparser.h"
 #include "VhdlParser.h"
-
 #include "vhdlcode.h"
+#include "plantuml.h"
+//#define DEBUGFLOW
 #define theTranslator_vhdlType VhdlDocGen::trVhdlType
 
 static QDict<QCString> g_vhdlKeyDict0(17,FALSE);
@@ -95,7 +92,7 @@ void VhdlDocGen::setFlowMember( const MemberDef* mem)
   flowMember=mem;
 }
 
-const MemberDef* VhdlDocGen::getFlowMember()
+ const MemberDef* VhdlDocGen::getFlowMember()
 {
   return flowMember;
 }
@@ -967,7 +964,6 @@ QCString VhdlDocGen::getClassTitle(const ClassDef *cd)
 {
   QCString pageTitle;
   if (cd==0) return "";
-  pageTitle+=cd->displayName();
   pageTitle=VhdlDocGen::getClassName(cd);
   int ii=cd->protection();
   pageTitle+=" ";
@@ -2163,7 +2159,6 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
       {
         if (VhdlDocGen::isConfig(mdef) || VhdlDocGen::isCompInst(mdef))
         {
-          nn=mdef->getOutputFileBase();
           nn=ltype;
         }
         else
@@ -2212,6 +2207,19 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
       ol.insertMemberAlign();
       VhdlDocGen::formatString(ltype,ol,mdef);
       break;
+    case VhdlDocGen::RECORD:
+    case VhdlDocGen::UNITS:
+      writeLink(mdef,ol);
+      ol.docify(" ");
+      ol.startBold();
+      if (ltype.isEmpty()) {
+          ol.docify(" ");
+      }
+      ol.insertMemberAlign();
+      if (!ltype.isEmpty())
+        VhdlDocGen::formatString(ltype,ol,mdef);
+      ol.endBold();
+      break;
     case VhdlDocGen::TYPE:
       bRec=largs.stripPrefix("record") ;
       bUnit=largs.stripPrefix("units") ;
@@ -2255,10 +2263,11 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
   ol.endMemberItem();
   if (!mdef->briefDescription().isEmpty() &&   Config_getBool("BRIEF_MEMBER_DESC") /* && !annMemb */)
   {
-    ol.startMemberDescription(mdef->anchor());
+ 	 QCString s=mdef->briefDescription();
+	 ol.startMemberDescription(mdef->anchor());
     ol.generateDoc(mdef->briefFile(),mdef->briefLine(),
         mdef->getOuterScope()?mdef->getOuterScope():d,
-        mdef,mdef->briefDescription(),TRUE,FALSE,0,TRUE,FALSE);
+        mdef,s.data(),TRUE,FALSE,0,TRUE,FALSE);
     if (detailsVisible)
     {
       ol.pushGeneratorState();
@@ -2599,7 +2608,7 @@ void VhdlDocGen::writeSource(MemberDef *mdef,OutputList& ol,QCString & cname)
                        codeFragment,     // input
                        SrcLangExt_VHDL,  // lang
                        FALSE,            // isExample
-                       0,                // exampleName
+                       0,               // exampleName
                        mdef->getFileDef(),            // fileDef
                        mdef->getStartBodyLine(),      // startLine
                        mdef->getEndBodyLine(),        // endLine
@@ -2792,7 +2801,8 @@ bool VhdlDocGen::findConstraintFile(LayoutNavEntry *lne)
   QCString file;
   QCString co("Constraints");
 
-  if (Config_getBool("HAVE_DOT") && Config_getEnum("DOT_IMAGE_FORMAT")=="svg")
+  QCString imgExt = getDotImageExtension();
+  if (Config_getBool("HAVE_DOT") && imgExt=="svg")
   {
     QCString ov = theTranslator->trDesignOverview();
     QCString ofile("vhdl_design_overview");
@@ -3547,7 +3557,7 @@ void FlowChart::printNode(const FlowChart* flo)
     }
     else
     {
-      printf("\n NO: %s%s[%d,%d]",q.data(),t.data(),flo->stamp,flo->id);
+      printf("\n NO: %s[%d,%d]",t.data(),flo->stamp,flo->id);
     }
   }
 }
@@ -3733,8 +3743,13 @@ void FlowChart::buildCommentNodes(FTextStream & t)
     FlowChart *fll=flowList.at(j);
     if (fll->type & (COMMENT_NO | BEGIN_NO))
     {
+      int diff=FLOWLEN-(j+1);
       flowList.remove(j);
-      delete fll;
+
+	   if ((fll->type & COMMENT_NO) && diff > 1)
+		  flowList.at(j+1)->label=fll->label;
+
+	   delete fll;
       fll=0;
       size--;
       if (j>0) j--;
@@ -3829,7 +3844,6 @@ void FlowChart::addFlowChart(int type,const char* text,const char* exp, const ch
   {
     flowList.append(fl);
   }
-
 }
 
 void FlowChart::moveToPrevLevel()
@@ -3838,6 +3852,88 @@ void FlowChart::moveToPrevLevel()
   ifcounter--;
 }
 
+QCString FlowChart::printPlantUmlNode(const FlowChart *flo,bool ca,bool endL)
+{
+  QCString t;
+  QCString exp=flo->exp.stripWhiteSpace();
+  QCString text=flo->text.stripWhiteSpace();
+  switch (flo->type)
+  {
+    case START_NO:   t=":"+text+"|"; break;
+    case IF_NO :     t="\nif ("+exp+") then (yes)"; break;
+    case ELSIF_NO:   t="\nelseif ("+exp+") then (yes)"; break;
+    case ELSE_NO:    t="\nelse"; break;
+    case CASE_NO:    t="\n:"+exp+";"; break;
+    case WHEN_NO:    t="\n";
+                     if (!ca) t+="else";
+                     t+="if ("+exp+") then (yes)";
+                     break;
+    case EXIT_NO:    break;
+    case END_NO:     if (text.contains(" function")==0) t="\n:"+text+";";
+                     break;
+    case TEXT_NO:    t="\n:"+text+"]"; break;
+    case ENDIF_NO:   t="\nendif"; break;
+    case FOR_NO:     t="\nwhile ("+exp+") is (yes)"; break;
+    case WHILE_NO:   t="\nwhile ("+exp+") is (yes)"; break;
+    case END_LOOP:   t="\nendwhile"; break;
+    case END_CASE:   t="\nendif\n:end case;"; break;
+    case VARIABLE_NO:t="\n:"+text+";"; break;
+    case RETURN_NO:  t="\n:"+text+";";
+                     if (!endL) t+="\nstop";
+                     break;
+    case LOOP_NO:    t="\nwhile (infinite loop)"; break;
+    case NEXT_NO:    break;
+    case EMPTY_NO:   break;
+    case COMMENT_NO: t="\n note left \n "+flo->label+"\nend note \n"; break;
+    case BEGIN_NO:   t="\n:begin;"; break;
+    default:         assert(false); break;
+  }
+  return t;
+}
+
+void  FlowChart::printUmlTree()
+{
+  int caseCounter = 0;
+  int whenCounter = 0;
+
+  QCString qcs;
+  uint size=flowList.count();
+  bool endList;
+  for (uint j=0;j<size;j++)
+  {
+    endList=j==FLOWLEN;
+    FlowChart *flo=flowList.at(j);
+    if (flo->type==CASE_NO)
+    {
+      caseCounter++;
+      whenCounter=0;
+    }
+
+    if (flo->type==END_CASE)
+    {
+      caseCounter--;
+    }
+
+    bool ca = (caseCounter>0 && whenCounter==0);
+
+    qcs+=printPlantUmlNode(flo,ca,endList);
+
+    if (flo->type==WHEN_NO)
+    {
+      whenCounter++;
+    }
+
+  }
+  qcs+="\n";
+
+  QCString & outDir = Config_getString("OUTPUT_DIRECTORY");
+  QCString & htmlOutDir = Config_getString("HTML_OUTPUT");
+
+  QCString n=convertNameToFileName();
+  QCString tmp=htmlOutDir;
+  n=writePlantUMLSource(tmp,n,qcs);
+  generatePlantUMLOutput(n.data(),tmp.data(),PUML_SVG);
+}
 
 QCString FlowChart::convertNameToFileName()
 {
@@ -3845,16 +3941,19 @@ QCString FlowChart::convertNameToFileName()
   QCString temp,qcs;
   const  MemberDef* md=VhdlDocGen::getFlowMember();
 
-  temp.sprintf("%p",md);
+  // temp.sprintf("%p",md);
   qcs=md->name();
 
+  #if 0
   if (qcs.find(exp,0)>=0)
   {
     qcs.prepend("Z");
     qcs=qcs.replace(exp,"_");
   }
+  #endif
 
-  return qcs+temp;
+  //QCString tt= qcs;VhdlDocGen::getRecordNumber();
+  return qcs;
 }
 
 const char* FlowChart::getNodeType(int c)
@@ -3877,7 +3976,7 @@ const char* FlowChart::getNodeType(int c)
     case END_CASE:     return "end_case  ";
     case VARIABLE_NO:  return "variable_decl  ";
     case RETURN_NO:    return "return  ";
-    case LOOP_NO:      return "infinte loop  ";
+    case LOOP_NO:      return "infinite loop  ";
     case NEXT_NO:      return "next  ";
     case COMMENT_NO:   return "comment  ";
     case EMPTY_NO:     return "empty  ";
@@ -3937,14 +4036,23 @@ void FlowChart::writeFlowChart()
   }
 
   colTextNodes();
+  //  buildCommentNodes(t);
 
 #ifdef DEBUGFLOW
-  printFlowTree();
+   printFlowTree();
 #endif
+  const MemberDef *p=VhdlDocGen::getFlowMember();
+
+  if (p->isStatic())
+  {
+    printUmlTree();
+    delFlowList();
+    f.close();
+    return;
+  }
 
   startDot(t);
   buildCommentNodes(t);
-
   uint size=flowList.count();
 
   for (uint j=0;j <size ;j++)
@@ -4446,4 +4554,9 @@ parseVhdlCode(codeOutIntf,
 
 );
 
-}
+
+
+
+
+
+}// class
diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h
index 7f87ce5..36d97a7 100644
--- a/src/vhdldocgen.h
+++ b/src/vhdldocgen.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2013 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -326,6 +326,9 @@ class FlowChart
     static void buildCommentNodes(FTextStream &t);
     static void alignCommentNode(FTextStream &t,QCString com);
 
+    static void  printUmlTree();
+    static QCString printPlantUmlNode(const FlowChart *flo,bool,bool);
+
     static QList<FlowChart> flowList;
 
     FlowChart(int typ,const char*  t,const char* ex,const char* label=0);
diff --git a/src/vhdljjparser.cpp b/src/vhdljjparser.cpp
index f3bfb62..c29bc69 100644
--- a/src/vhdljjparser.cpp
+++ b/src/vhdljjparser.cpp
@@ -40,7 +40,7 @@ static int              yyLineNr      = 1;
 static int*             lineParse;
 static int              iDocLine      = -1;
 static QCString         inputString;
-static Entry            gBlock;
+static Entry*           gBlock        = 0;
 static Entry*           previous      = 0;
 //-------------------------------------------------------
 
@@ -102,38 +102,40 @@ Entry* getVhdlCompound()
 void startCodeBlock(int index)
 {
   int ll=strComment.length();
+  if (!gBlock) gBlock = new Entry;
   iCodeLen=inputString.findRev(strComment.data())+ll;
   // fprintf(stderr,"\n startin code..%d %d %d\n",iCodeLen,num_chars,ll);
-  gBlock.reset();
+  gBlock->reset();
   int len=strComment.length();
   QCString name=strComment.right(len-index);//
   name=VhdlDocGen::getIndexWord(name.data(),1);
   if (!name)
-    gBlock.name="misc"+ VhdlDocGen::getRecordNumber();
+    gBlock->name="misc"+ VhdlDocGen::getRecordNumber();
   else
-    gBlock.name=name;
+    gBlock->name=name;
 
-  gBlock.startLine=yyLineNr;
-  gBlock.bodyLine=yyLineNr;
+  gBlock->startLine=yyLineNr;
+  gBlock->bodyLine=yyLineNr;
 
   strComment=strComment.left(index);
   VhdlDocGen::prepareComment(strComment);
-  gBlock.brief+=strComment;
+  gBlock->brief+=strComment;
 }
 
 void makeInlineDoc(int endCode)
 {
   int len=endCode-iCodeLen;
+  if (!gBlock) gBlock = new Entry;
   QCString par=inputString.mid(iCodeLen,len);
   //fprintf(stderr,"\n inline code: \n<%s>",par.data());
-  gBlock.doc=par;
-  gBlock.inbodyDocs=par;
-  gBlock.section=Entry::VARIABLE_SEC;
-  gBlock.spec=VhdlDocGen::MISCELLANEOUS;
-  gBlock.fileName = yyFileName;
-  gBlock.endBodyLine=yyLineNr-1;
-  gBlock.lang=SrcLangExt_VHDL;
-  Entry *temp=new Entry(gBlock);
+  gBlock->doc=par;
+  gBlock->inbodyDocs=par;
+  gBlock->section=Entry::VARIABLE_SEC;
+  gBlock->spec=VhdlDocGen::MISCELLANEOUS;
+  gBlock->fileName = yyFileName;
+  gBlock->endBodyLine=yyLineNr-1;
+  gBlock->lang=SrcLangExt_VHDL;
+  Entry *temp=new Entry(*gBlock);
   Entry* compound=getVhdlCompound();
 
   if (compound)
@@ -146,7 +148,7 @@ void makeInlineDoc(int endCode)
     VhdlParser::current_root->addSubEntry(temp);
   }
   strComment.resize(0);
-  gBlock.reset();
+  gBlock->reset();
 }// makeInlineDoc
 
 
@@ -162,6 +164,9 @@ void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,En
   g_thisParser=this;
   bool inLine=false;
   inputString=fileBuf;
+
+ // fprintf(stderr,"\n ============= %s\n ==========\n",fileBuf);
+
   if (strlen(fileName)==0)
   {
     inLine=true;
@@ -289,6 +294,8 @@ bool checkInlineCode(QCString & doc)
 
 void VhdlParser::handleFlowComment(const char* doc)
 {
+	lineCount(doc);
+
   if (VhdlDocGen::getFlowMember())
   {
     QCString qcs(doc);
@@ -303,7 +310,9 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
 {
   int position=0;
   static bool isIn;
-  QCString doc(doc1);
+  QCString doc;
+  doc.append(doc1);
+ // fprintf(stderr,"\n %s",doc.data());
   if (doc.isEmpty()) return;
 
   if (checkMultiComment(doc,yyLineNr))
@@ -357,6 +366,14 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
     current->docLine = yyLineNr;
   }
   //  printf("parseCommentBlock file<%s>\n [%s]\n at line [%d] \n ",yyFileName.data(),doc.data(),iDocLine);
+
+  int j=doc.find("[plant]");
+  if (j>=0)
+  {
+    doc=doc.remove(j,7);
+    current->stat=true;
+  }
+
   while (parseCommentBlock(
         g_thisParser,
         current,
@@ -405,7 +422,10 @@ void VhdlParser::addCompInst(const char *n, const char* instName, const char* co
   current->type=instName;                       // foo:instname e.g proto or work. proto(ttt)
   current->exception=genLabels.lower();         // |arch|label1:label2...
   current->name=n;                              // foo
-  current->args=lastCompound->name;             // architecture name
+  if (lastCompound)
+  {
+    current->args=lastCompound->name;             // architecture name
+  }
   current->includeName=comp;                    // component/enity/configuration
   int u=genLabels.find("|",1);
   if (u>0)
diff --git a/src/pycode.h b/src/xmlcode.h
similarity index 68%
copy from src/pycode.h
copy to src/xmlcode.h
index 9b0dacb..5a9c78c 100644
--- a/src/pycode.h
+++ b/src/xmlcode.h
@@ -14,16 +14,10 @@
  * input used in their production; they are not affected by this license.
  *
  */
-/*  This code is based on the work done by the MoxyPyDoxy team
- *  (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada)
- *  in Spring 2005 as part of CS 179E: Compiler Design Project
- *  at the University of California, Riverside; the course was
- *  taught by Peter H. Froehlich <phf at acm.org>.
- */
 
 
-#ifndef PYCODE_H
-#define PYCODE_H
+#ifndef XMLCODE_H
+#define XMLCODE_H
 
 #include "types.h"
 
@@ -33,11 +27,11 @@ class MemberDef;
 class QCString;
 class Definition;
 
-extern void parsePythonCode(CodeOutputInterface &,const char *,const QCString &,
+extern void parseXmlCode(CodeOutputInterface &,const char *,const QCString &,
              bool ,const char *,FileDef *fd,
 	     int startLine,int endLine,bool inlineFragment,
              MemberDef *memberDef,bool showLineNumbers,Definition *searchCtx,
              bool collectXRefs);
-extern void resetPythonCodeParserState();
+extern void resetXmlCodeParserState();
 
 #endif
diff --git a/src/xmlcode.l b/src/xmlcode.l
new file mode 100644
index 0000000..fd36ebb
--- /dev/null
+++ b/src/xmlcode.l
@@ -0,0 +1,413 @@
+/******************************************************************************
+ *
+ * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby 
+ * granted. No representations are made about the suitability of this software 
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+/******************************************************************************
+ * Parser for syntax hightlighting and references for XML
+ * written by Weston Thayer
+ ******************************************************************************/
+
+%option never-interactive
+%{
+
+#include <stdio.h>
+
+#include "xmlcode.h"
+
+#include "entry.h"
+#include "doxygen.h"
+#include "outputlist.h"
+#include "util.h"
+#include "membername.h"
+#include "searchindex.h"
+#include "config.h"
+#include "filedef.h"
+#include "tooltip.h"
+
+#define YY_NEVER_INTERACTIVE 1
+#define YY_NO_INPUT 1
+#define YY_NO_UNISTD_H 1
+
+static CodeOutputInterface * g_code;
+static QCString      g_curClassName;
+static QCString      g_parmType;
+static QCString      g_parmName;
+static const char *  g_inputString;     //!< the code fragment as text
+static int           g_inputPosition;   //!< read offset during parsing 
+static int           g_inputLines;      //!< number of line in the code fragment
+static int           g_yyLineNr;        //!< current line number
+static bool          g_needsTermination;
+static Definition   *g_searchCtx;
+
+static QCString      g_exampleName;
+static QCString      g_exampleFile;
+
+static QCString      g_type;
+static QCString      g_name;
+static QCString      g_args;
+static QCString      g_classScope;
+   
+static QCString      g_CurrScope;
+   
+static FileDef *     g_sourceFileDef;
+static Definition *  g_currentDefinition;
+static MemberDef *   g_currentMemberDef;
+static bool          g_includeCodeFragment;
+static const char *  g_currentFontClass;
+
+static void codify(const char* text) 
+{ 
+  g_code->codify(text);
+}
+
+static void setCurrentDoc(const QCString &anchor)
+{
+  if (Doxygen::searchIndex)
+  {
+    if (g_searchCtx)
+    {
+      Doxygen::searchIndex->setCurrentDoc(g_searchCtx,g_searchCtx->anchor(),FALSE);
+    }
+    else
+    {
+      Doxygen::searchIndex->setCurrentDoc(g_sourceFileDef,anchor,TRUE);
+    }
+  }
+}
+
+/*! start a new line of code, inserting a line number if g_sourceFileDef
+ * is TRUE. If a definition starts at the current line, then the line
+ * number is linked to the documentation of that definition.
+ */
+static void startCodeLine()
+{
+  if (g_sourceFileDef)
+  {   
+    Definition *d   = g_sourceFileDef->getSourceDefinition(g_yyLineNr);
+    
+    if (!g_includeCodeFragment && d && d->isLinkableInProject())
+    {
+      g_currentDefinition = d;
+      g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr);
+      //g_insideBody = FALSE;
+      g_classScope = d->name().copy();
+      QCString lineAnchor;
+      lineAnchor.sprintf("l%05d",g_yyLineNr);
+      if (g_currentMemberDef)
+      {
+        g_code->writeLineNumber(g_currentMemberDef->getReference(),
+                            g_currentMemberDef->getOutputFileBase(),
+                            g_currentMemberDef->anchor(),g_yyLineNr);
+        setCurrentDoc(lineAnchor);
+      }
+      else
+      {
+        g_code->writeLineNumber(d->getReference(),
+                            d->getOutputFileBase(),
+                            0,g_yyLineNr);
+        setCurrentDoc(lineAnchor);
+      }
+    }
+    else
+    {
+      g_code->writeLineNumber(0,0,0,g_yyLineNr);
+    }
+  }
+  
+  g_code->startCodeLine(g_sourceFileDef);
+  
+  if (g_currentFontClass)
+  {
+    g_code->startFontClass(g_currentFontClass);
+  }
+}
+
+static void endFontClass()
+{
+  if (g_currentFontClass)
+  {
+    g_code->endFontClass();
+    g_currentFontClass=0;
+  }
+}
+
+static void endCodeLine()
+{
+  endFontClass();
+  g_code->endCodeLine();
+}
+
+static void nextCodeLine()
+{
+  const char *fc = g_currentFontClass;
+  endCodeLine();
+  if (g_yyLineNr<g_inputLines) 
+  {
+    g_currentFontClass = fc;
+    startCodeLine();
+  }
+}
+
+static void codifyLines(char *text)
+{
+  char *p=text,*sp=p;
+  char c;
+  bool done=FALSE;
+  
+  while (!done)
+  {
+    sp=p;
+    
+    while ((c=*p++) && c!='\n') { }
+    
+    if (c=='\n')
+    {
+      g_yyLineNr++;
+      *(p-1)='\0';
+      g_code->codify(sp);
+      nextCodeLine();
+    }
+    else
+    {
+      g_code->codify(sp);
+      done=TRUE;
+    }
+  }
+}
+
+static void startFontClass(const char *s)
+{
+  endFontClass();
+  g_code->startFontClass(s);
+  g_currentFontClass=s;
+}
+
+/*! counts the number of lines in the input */
+static int countLines()
+{
+  const char *p=g_inputString;
+  char c;
+  int count=1;
+  while ((c=*p)) 
+  { 
+    p++ ; 
+    if (c=='\n') count++;  
+  }
+  if (p>g_inputString && *(p-1)!='\n') 
+  { // last line does not end with a \n, so we add an extra
+    // line and explicitly terminate the line after parsing.
+    count++, 
+    g_needsTermination=TRUE; 
+  } 
+  return count;
+}
+
+#undef YY_INPUT
+#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
+
+static int yyread(char *buf,int max_size)
+{
+  int c=0;
+  while( c < max_size && g_inputString[g_inputPosition] )
+  {
+    *buf = g_inputString[g_inputPosition++] ;
+    c++; buf++;
+  }
+  return c;
+}
+
+%}
+
+nl          (\r\n|\r|\n)
+ws          [ \t]+
+open        "<"
+close       ">"
+namestart   [A-Za-z\200-\377_]
+namechar    [:A-Za-z\200-\377_0-9.-]
+esc         "&#"[0-9]+";"|"&#x"[0-9a-fA-F]+";"
+name        {namestart}{namechar}*
+comment     {open}"!--"([^-]|"-"[^-])*"--"{close}
+data        "random string"
+string      \"([^"&]|{esc})*\"|\'([^'&]|{esc})*\'
+ 
+%option noyywrap
+%option nounput
+
+%%
+
+<INITIAL>{ws}       {
+                        codifyLines(yytext);
+                    }
+<INITIAL>"/"        {
+                        endFontClass();
+                        codify(yytext);
+                    }
+<INITIAL>"="        {
+                        endFontClass();
+                        codify(yytext);
+                    }
+<INITIAL>{close}    {
+                        endFontClass();
+                        codify(yytext);
+                    }
+<INITIAL>{name}     {
+                        startFontClass("keyword");
+                        codify(yytext);
+                        endFontClass();
+                    }
+<INITIAL>{string}   {
+                        startFontClass("stringliteral");
+                        codifyLines(yytext);
+                        endFontClass();
+                    }
+                    
+{open}{ws}?{name}   {
+                        // Write the < in a different color
+                        char openBracket[] = { yytext[0], '\0' };
+                        codify(openBracket);
+                        
+                        // Then write the rest
+                        yytext++;
+                        startFontClass("keywordtype");
+                        codify(yytext);
+                        endFontClass();
+                        
+                        BEGIN(INITIAL);
+                    }
+{open}{ws}?"/"{name} {
+                        // Write the "</" in a different color
+                        char closeBracket[] = { yytext[0], yytext[1], '\0' };
+                        endFontClass();
+                        codify(closeBracket);
+                        
+                        // Then write the rest
+                        yytext++; // skip the '<'
+                        yytext++; // skip the '/'
+                        startFontClass("keywordtype");
+                        codify(yytext);
+                        endFontClass();
+
+                        BEGIN(INITIAL);
+                    }
+{comment}           {
+                        // Strip off the extra '!'
+                        // yytext++; // <
+                        // *yytext = '<'; // replace '!' with '<'
+
+                        startFontClass("comment");
+                        codifyLines(yytext);
+                        endFontClass();
+                    }
+{nl}                {
+                        codifyLines(yytext);
+                    }
+
+.                   {
+                        //printf("!ERROR(%c)\n", *yytext);
+                        codifyLines(yytext);
+                    }
+
+%%
+
+void parseXmlCode(
+    CodeOutputInterface &od,
+    const char * /*className*/,
+    const QCString &s,
+    bool /*exBlock*/,
+    const char *exName,
+    FileDef *fd,
+    int startLine,
+    int endLine,
+    bool /*inlineFragment*/,
+    MemberDef *,
+    bool,Definition *searchCtx,
+    bool /*collectXRefs*/
+    ) 
+{  
+  if (s.isEmpty()) return;
+  
+  TooltipManager::instance()->clearTooltips();
+  
+  g_code = &od;
+  g_inputString   = s;
+  g_inputPosition = 0;
+  g_currentFontClass = 0;
+  g_needsTermination = FALSE;
+  g_searchCtx=searchCtx;
+  
+  if (endLine!=-1)
+    g_inputLines  = endLine+1;
+  else
+    g_inputLines  = countLines();
+  
+  if (startLine!=-1)
+    g_yyLineNr    = startLine;
+  else
+    g_yyLineNr    = 1;
+  
+  g_exampleName   = exName;
+  g_sourceFileDef = fd;
+
+  bool cleanupSourceDef = FALSE;
+  
+  if (fd==0)
+  {
+    // create a dummy filedef for the example
+    g_sourceFileDef = new FileDef("",(exName?exName:"generated"));
+    cleanupSourceDef = TRUE;
+  }
+  
+  if (g_sourceFileDef) 
+  {
+    setCurrentDoc("l00001");
+  }
+
+  // Starts line 1 on the output  
+  startCodeLine();
+
+  xmlcodeYYrestart( xmlcodeYYin );
+
+  xmlcodeYYlex();
+
+  if (g_needsTermination)
+  {
+    endCodeLine();
+  }
+  if (fd)
+  {
+    TooltipManager::instance()->writeTooltips(*g_code);
+  }
+  if (cleanupSourceDef)
+  {
+    // delete the temporary file definition used for this example
+    delete g_sourceFileDef;
+    g_sourceFileDef=0;
+  }
+  
+  return;
+}
+
+void resetXmlCodeParserState() 
+{
+  g_currentDefinition = 0;
+  g_currentMemberDef = 0;
+}
+
+#if !defined(YY_FLEX_SUBMINOR_VERSION) 
+extern "C" { // some bogus code to keep the compiler happy
+  void xmlcodeYYdummy() { yy_flex_realloc(0,0); } 
+}
+#elif YY_FLEX_MAJOR_VERSION<=2 && YY_FLEX_MINOR_VERSION<=5 && YY_FLEX_SUBMINOR_VERSION<33
+#error "You seem to be using a version of flex newer than 2.5.4. These are currently incompatible with 2.5.4, and do NOT work with doxygen! Please use version 2.5.4 or expect things to be parsed wrongly! A bug report has been submitted (#732132)."
+#endif
+
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index c9a6fb8..c5550f0 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -223,33 +223,15 @@ void XmlDocVisitor::visit(DocVerbatim *s)
       m_t << "</verbatim>"; 
       break;
     case DocVerbatim::HtmlOnly: 
-      m_t << "<htmlonly>";
-      filter(s->text());
-      m_t << "</htmlonly>";
-      break;
     case DocVerbatim::RtfOnly: 
-      m_t << "<rtfonly>";
-      filter(s->text());
-      m_t << "</rtfonly>";
-      break;
     case DocVerbatim::ManOnly: 
-      m_t << "<manonly>";
-      filter(s->text());
-      m_t << "</manonly>";
-      break;
     case DocVerbatim::LatexOnly: 
-      m_t << "<latexonly>";
-      filter(s->text());
-      m_t << "</latexonly>";
+    case DocVerbatim::DocbookOnly:
+      /* nothing */ 
       break;
     case DocVerbatim::XmlOnly: 
       m_t << s->text();
       break;
-    case DocVerbatim::DocbookOnly:
-      m_t << "<docbookonly>";
-      filter(s->text());
-      m_t << "</docbookonly>";
-      break;
     case DocVerbatim::Dot:
       visitPreStart(m_t, "dot", s->hasCaption(), this, s->children(), QCString(""), FALSE, DocImage::Html, s->width(), s->height());
       filter(s->text());
diff --git a/src/xmldocvisitor.h b/src/xmldocvisitor.h
index 3e2236c..c65688f 100644
--- a/src/xmldocvisitor.h
+++ b/src/xmldocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 8319922..467ebe4 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -394,6 +394,12 @@ static void writeTemplateArgumentList(ArgumentList *al,
         linkifyText(TextGeneratorXMLImpl(t),scope,fileScope,0,a->defval);
         t << "</defval>" << endl;
       }
+      if (!a->typeConstraint.isEmpty())
+      {
+        t << indentStr << "    <typeconstraint>";
+        linkifyText(TextGeneratorXMLImpl(t),scope,fileScope,0,a->typeConstraint);
+        t << "</typeconstraint>" << endl;
+      }
       t << indentStr << "  </param>" << endl;
     }
     t << indentStr << "</templateparamlist>" << endl;
@@ -972,7 +978,7 @@ static void generateXMLForMember(MemberDef *md,FTextStream &ti,FTextStream &t,De
   if (md->getDefLine()!=-1)
   {
     t << "        <location file=\"" 
-      << md->getDefFileName() << "\" line=\"" 
+      << stripFromPath(md->getDefFileName()) << "\" line=\"" 
       << md->getDefLine() << "\"" << " column=\"" 
       << md->getDefColumn() << "\"" ;
     if (md->getStartBodyLine()!=-1)
@@ -980,7 +986,7 @@ static void generateXMLForMember(MemberDef *md,FTextStream &ti,FTextStream &t,De
       FileDef *bodyDef = md->getBodyDef();
       if (bodyDef)
       {
-        t << " bodyfile=\"" << bodyDef->absFilePath() << "\"";
+        t << " bodyfile=\"" << stripFromPath(bodyDef->absFilePath()) << "\"";
       }
       t << " bodystart=\"" << md->getStartBodyLine() << "\" bodyend=\"" 
         << md->getEndBodyLine() << "\"";
@@ -1398,7 +1404,7 @@ static void generateXMLForClass(ClassDef *cd,FTextStream &ti)
     t << "    </collaborationgraph>" << endl;
   }
   t << "    <location file=\"" 
-    << cd->getDefFileName() << "\" line=\"" 
+    << stripFromPath(cd->getDefFileName()) << "\" line=\"" 
     << cd->getDefLine() << "\"" << " column=\"" 
     << cd->getDefColumn() << "\"" ;
     if (cd->getStartBodyLine()!=-1)
@@ -1406,7 +1412,7 @@ static void generateXMLForClass(ClassDef *cd,FTextStream &ti)
       FileDef *bodyDef = cd->getBodyDef();
       if (bodyDef)
       {
-        t << " bodyfile=\"" << bodyDef->absFilePath() << "\"";
+        t << " bodyfile=\"" << stripFromPath(bodyDef->absFilePath()) << "\"";
       }
       t << " bodystart=\"" << cd->getStartBodyLine() << "\" bodyend=\"" 
         << cd->getEndBodyLine() << "\"";
@@ -1486,7 +1492,7 @@ static void generateXMLForNamespace(NamespaceDef *nd,FTextStream &ti)
   writeXMLDocBlock(t,nd->docFile(),nd->docLine(),nd,0,nd->documentation());
   t << "    </detaileddescription>" << endl;
   t << "    <location file=\""
-    << nd->getDefFileName() << "\" line=\""
+    << stripFromPath(nd->getDefFileName()) << "\" line=\""
     << nd->getDefLine() << "\"" << " column=\""
     << nd->getDefColumn() << "\"/>" << endl ;
   t << "  </compounddef>" << endl;
@@ -1628,7 +1634,7 @@ static void generateXMLForFile(FileDef *fd,FTextStream &ti)
     writeXMLCodeBlock(t,fd);
     t << "    </programlisting>" << endl;
   }
-  t << "    <location file=\"" << fd->getDefFileName() << "\"/>" << endl;
+  t << "    <location file=\"" << stripFromPath(fd->getDefFileName()) << "\"/>" << endl;
   t << "  </compounddef>" << endl;
   t << "</doxygen>" << endl;
 
@@ -1742,7 +1748,7 @@ static void generateXMLForDir(DirDef *dd,FTextStream &ti)
   t << "    <detaileddescription>" << endl;
   writeXMLDocBlock(t,dd->docFile(),dd->docLine(),dd,0,dd->documentation());
   t << "    </detaileddescription>" << endl;
-  t << "    <location file=\"" << dd->name() << "\"/>" << endl; 
+  t << "    <location file=\"" << stripFromPath(dd->name()) << "\"/>" << endl; 
   t << "  </compounddef>" << endl;
   t << "</doxygen>" << endl;
 
diff --git a/src/xmlgen.h b/src/xmlgen.h
index 9c9ae17..0447591 100644
--- a/src/xmlgen.h
+++ b/src/xmlgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2014 by Dimitri van Heesch.
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/dbusxmlscanner.h b/src/xmlscanner.h
similarity index 60%
rename from src/dbusxmlscanner.h
rename to src/xmlscanner.h
index e1504e9..6053b96 100644
--- a/src/dbusxmlscanner.h
+++ b/src/xmlscanner.h
@@ -1,12 +1,10 @@
 /******************************************************************************
  *
- *
- *
- * Copyright (C) 2009 by Tobias Hunger <tobias at aquazul.com>
+ * Copyright (C) 1997-2015 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
+ * documentation under the terms of the GNU General Public License is hereby 
+ * granted. No representations are made about the suitability of this software 
  * for any purpose. It is provided "as is" without express or implied warranty.
  * See the GNU General Public License for more details.
  *
@@ -15,34 +13,28 @@
  *
  */
 
-#ifndef SCANNER_DBUSXML_H
-#define SCANNER_DBUSXML_H
+#ifndef XMLSCANNER_H
+#define XMLSCANNER_H
 
 #include "parserintf.h"
+#include "xmlcode.h"
 
-/** D-Bus XML parser.
- *
- *  This is the D-Bus XML parser for doxygen.
+/** XML scanner. Only support syntax highlighting of code at the moment.
  */
-class DBusXMLScanner : public ParserInterface
+class XMLScanner : public ParserInterface
 {
 public:
-    DBusXMLScanner();
-    virtual ~DBusXMLScanner();
+    XMLScanner() {}
+    virtual ~XMLScanner() {}
     void startTranslationUnit(const char *) {}
     void finishTranslationUnit() {}
-    void parseInput(const char *fileName,
-                    const char *fileBuf,
-                    Entry *root,
-                    bool sameTranslationUnit,
-                    QStrList &filesInSameTranslationUnit);
-
-    bool needsPreprocessing(const QCString &extension);
+    void parseInput(const char *, const char *, Entry *, bool , QStrList &) {}
+    bool needsPreprocessing(const QCString &) { return FALSE; }
 
     void parseCode(CodeOutputInterface &codeOutIntf,
                    const char *scopeName,
                    const QCString &input,
-                   SrcLangExt lang,
+                   SrcLangExt,
                    bool isExampleBlock,
                    const char *exampleName=0,
                    FileDef *fileDef=0,
@@ -53,11 +45,19 @@ public:
                    bool showLineNumbers=TRUE,
                    Definition *searchCtx=0,
                    bool collectXRefs=TRUE
-                  );
+                  )
+    {
+      parseXmlCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName,
+                    fileDef,startLine,endLine,inlineFragment,memberDef,
+                    showLineNumbers,searchCtx,collectXRefs);
+    }
 
-    void resetCodeParserState();
+    void resetCodeParserState()
+    {
+      resetXmlCodeParserState();
+    }
 
-    void parsePrototype(const char *text);
+    void parsePrototype(const char *) {}
 
 private:
 };
diff --git a/templates/html/doxygen.css b/templates/html/doxygen.css
index 1d9002f..490b0f9 100644
--- a/templates/html/doxygen.css
+++ b/templates/html/doxygen.css
@@ -206,6 +206,11 @@ div.line {
 	transition-duration: 0.5s;
 }
 
+div.line:after {
+    content:"\000A";
+    white-space: pre;
+}
+
 div.line.glow {
 	background-color: cyan;
 	box-shadow: 0 0 10px cyan;
@@ -242,7 +247,7 @@ div.ah, span.ah {
 	-webkit-box-shadow: 2px 2px 3px #999;
 	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
 	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
-	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
 }
 
 div.classindex ul {
@@ -832,6 +837,10 @@ address {
 	color: ##33;
 }
 
+table.doxtable caption {
+	caption-side: top;
+}
+
 table.doxtable {
 	border-collapse:collapse;
         margin-top: 4px;
@@ -997,6 +1006,18 @@ div.summary a
 	white-space: nowrap;
 }
 
+table.classindex
+{
+        margin: 10px;
+        white-space: nowrap;
+        margin-left: 3%;
+        margin-right: 3%;
+        width: 94%;
+        border: 0;
+        border-spacing: 0; 
+        padding: 0;
+}
+
 div.ingroups
 {
 	font-size: 8pt;
@@ -1108,6 +1129,11 @@ dl.section dd {
 	border: 0px none;
 }
  
+#projectalign
+{
+        vertical-align: middle;
+}
+
 #projectname
 {
 	font: 300% Tahoma, Arial,sans-serif;
@@ -1191,7 +1217,7 @@ div.toc {
         border-radius: 7px 7px 7px 7px;
         float: right;
         height: auto;
-        margin: 0 20px 10px 10px;
+        margin: 0 8px 10px 10px;
         width: 200px;
 }
 
diff --git a/templates/html/header.html b/templates/html/header.html
index 70305df..9f95d66 100644
--- a/templates/html/header.html
+++ b/templates/html/header.html
@@ -27,7 +27,7 @@ $extrastylesheet
   <td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
   <!--END PROJECT_LOGO-->
   <!--BEGIN PROJECT_NAME-->
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">$projectname
    <!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
    </div>
diff --git a/templates/html/htmlallmembers.tpl b/templates/html/htmlallmembers.tpl
index 98f88d6..b44110d 100644
--- a/templates/html/htmlallmembers.tpl
+++ b/templates/html/htmlallmembers.tpl
@@ -9,12 +9,63 @@
 <p>{{ tr.theListOfAllMembers }} <a class="el" href="{{ compound.fileName }}{{ config.HTML_FILE_EXTENSION }}">{{ compound.name }}</a>{{ tr.incInheritedMembers }}</p>
 <table class="directory">
 {% for mi in compound.allMembersList %}
-  <tr {% cycle 'class="even"' '' %}>
-  {# TODO: objective-C #}
-  <td>{% with obj=mi.member text=mi.ambiguityScope|append:mi.member.name %}
-      {% include 'htmlobjlink.tpl' %}
+  <tr class="{% cycle 'even' 'odd' %}">
+  {% spaceless %}
+  {% with member=mi.member %}
+  {% if member.language=='objc' %}
+    <td class="entry">
+    {% if member.isObjCMethod %}
+      {% if member.isStatic %}+ {% else %}- {% endif %}
+    {% endif %}
+    </td>
+  {% endif %}
+  {% if member.isObjCMethod %}
+    <td class="entry">
+      {% with obj=member text=member.name %}
+        {% include 'htmlobjlink.tpl' %}
+      {% endwith %}
+    </td>
+  {%else %}
+    {# name #}
+    <td class="entry">
+      {% with obj=member text=mi.ambiguityScope|append:member.name %}
+        {% include 'htmlobjlink.tpl' %}
       {% endwith %}
+      {% if member.isEnumeration %}
+       {{ tr.enumName }}
+      {% elif member.isEnumValue %}
+       {{ tr.enumValue }}
+      {% elif member.isTypedef %}
+       typedef
+      {% elif member.isFriend and member.type=='friend class' %}
+       class
+      {% elif member.isFunction or member.isSignal or member.isSlot or (member.isFriend and member.hasParameters) %}
+      {{ member.declArgs }}
+      {% endif %}
+    </td>
+  {% endif %}
+  {# class link #}
+  <td class="entry">
+  {% if member.category %}
+    {% with obj=member.category text=member.category.name %}
+      {% include 'htmlobjlink.tpl' %}
+    {% endwith %}
+  {% else %}
+    {% with obj=member.class text=member.class.name %}
+      {% include 'htmlobjlink.tpl' %}
+    {% endwith %}
+  {% endif %}
   </td>
+  {# labels #}
+  {% if member.labels %}
+     <td class="entry">
+     {% for label in member.labels %}
+     <span class="mlabel">{{ label }}</span>
+     {% endfor %}
+     </td>
+  {% endif %}
+  {% endwith %}
+  {% endspaceless %}
   </tr>
 {% endfor %}
 </table>
diff --git a/templates/html/htmlannotated.tpl b/templates/html/htmlannotated.tpl
index dd72ac9..c5faa14 100644
--- a/templates/html/htmlannotated.tpl
+++ b/templates/html/htmlannotated.tpl
@@ -4,7 +4,7 @@
 <div class="textblock">
 {{ tr.classListDescription }}
 </div>
-{% indexentry nav name=tr.classes file=page.fileName anchor='' %}
+{% indexentry nav name=tr.classes file=page.fileName anchor='' isReference=False %}
 {% opensubindex nav %}
 {% with tree=classTree %}
   {% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlbase.tpl b/templates/html/htmlbase.tpl
index d394b45..aacaf92 100644
--- a/templates/html/htmlbase.tpl
+++ b/templates/html/htmlbase.tpl
@@ -21,6 +21,9 @@
 {% endif %}
 {% if config.SEARCHENGINE %}
 <link href="{{ page.relPath }}search/search.css" rel="stylesheet" type="text/css"/>
+  {% if not config.SERVER_BASED_SEARCH %}
+<script type="text/javascript" src="{{ page.relPath }}search/searchdata.js"></script>
+  {% endif %}
 <script type="text/javascript" src="{{ page.relPath }}search/search.js"></script>
   {% if config.SERVER_BASED_SEARCH %}
 <script type="text/javascript">
@@ -38,13 +41,13 @@
 {% if config.USE_MATHJAX %}
 <script type="text/x-mathjax-config">
   MathJax.Hub.Config({
-    extensions: ["tex2jax.js"],  {# TODO: support MATHJAX_EXTENSIONS #}
-    jax: ["input/TeX","output/{{ config.MATHJAX_FORMAT }}"],
+    extensions: ["tex2jax.js"{% for ext in config.MATHJAX_EXTENSIONS %}, "{{ ext }}"{% endfor %}],
+    jax: ["input/TeX","output/{{ config.MATHJAX_FORMAT|default:'HTML-CSS' }}"],
 });
-{# TODO: support MATHJAX_CODEFILE #}
+{{ doxygen.mathJaxCodeFile }}
 </script>
-<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
-{% endif %}
+<script type="text/javascript" src="{{ config.MATHJAX_RELPATH }}{% if config.MATHJAX_RELPATH|relative %}{{ page.relPath }}{% endif %}MathJax.js"></script>
+{% endif %}{# MathJax #}
 <link href="{{ page.relPath }}{{ config.HTML_STYLESHEET|default:'doxygen.css' }}" rel="stylesheet" type="text/css" />
 {% if config.HTML_EXTRA_STYLESHEET %}
 <link href="{{ page.relPath }}{{ config.HTML_EXTRA_STYLESHEET }}" rel="stylesheet" type="text/css" />
@@ -117,7 +120,7 @@
 <!-- end header part -->
 <!-- Generated by Doxygen {{ doxygen.version }} -->
 {% block search %}
-{% if config.SEARCHENGINE %}{# TODO: can't we move this to the header? #}
+{% if config.SEARCHENGINE %}
 <script type="text/javascript">
 var searchBox = new SearchBox("searchBox", "{{ page.relPath }}search",false,'{{ tr.search }}');
 </script>
@@ -160,14 +163,13 @@ $(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix
 <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()"
      onmouseout="return searchBox.OnSearchSelectHide()"
      onkeydown="return searchBox.OnSearchSelectKey(event)">
-{# TODO: get search categories dynamically, since we don't know them here #}
 </div>
-{% endif %}
 <!-- iframe showing the search results (closed by default) -->
 <div id="MSearchResultsWindow">
 <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults">
 </iframe>
 </div>
+{% endif %}
 {% endblock %}
 
 <div class="header">
@@ -190,11 +192,20 @@ $(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix
 <div id="nav-path" class="navpath">{# id is needed for treeview function! #}
   <ul>
     {# navpath #}
+    {% if page|get:'navigationPath' %}
+      {% for obj in page.navigationPath %}
+        <li class="navelem">
+          {% with text=obj.text %}
+            {% include 'htmlobjlink.tpl' %}
+          {% endwith %}
+        </li>
+      {% endfor %}
+    {% endif %}
     <li class="footer">
 {% if config.HTML_TIMESTAMP %}
 {{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }}
 {% else %}
-{{ tr.generatedby }}
+{{ tr.generatedBy }}
 {% endif %}
     <a href="http://www.doxygen.org/index.html">
     <img class="footer" src="{{ page.relPath }}doxygen.png" alt="doxygen"/></a> {{ doxygen.version }} </li>
@@ -205,7 +216,7 @@ $(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix
 {% if config.HTML_TIMESTAMP %}
 {{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }}
 {% else %}
-{{ tr.generatedby }}
+{{ tr.generatedBy }}
 {% endif %}
  <a href="http://www.doxygen.org/index.html"><img class="footer" src="{{ page.relPath }}doxygen.png" alt="doxygen"/></a> 
   {{ doxygen.version }}
diff --git a/templates/html/htmlclass.tpl b/templates/html/htmlclass.tpl
index bb734b6..9a2b494 100644
--- a/templates/html/htmlclass.tpl
+++ b/templates/html/htmlclass.tpl
@@ -2,9 +2,11 @@
 {% msg %}Generating HTML output for class {{ compound.name }}{% endmsg %}
 
 {% block navpath %}
-{% with navpath=compound.navigationPath %}
-  {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+{% if not config.GENERATE_TREEVIEW %}
+  {% with navpath=compound.navigationPath %}
+    {% include 'htmlnavpath.tpl' %}
+  {% endwith %}
+{% endif %}
 {% endblock %}
 
 {% block title %}
@@ -180,7 +182,6 @@
     </div>
   {% endif %}
 {# memberdecls #}
-  {# TODO: isSimple #}
     {# nestedClasses #}
       {% with list=compound.classes label='nested-classes' title=tr.classes local=1 %}
         {% include 'htmldeclcomp.tpl' %}
@@ -379,9 +380,9 @@
 {% endif %}
 {# member definitions #}
   {# inline classes #}
-  {% if compound.classes %}
-    {# TODO write inlined simple classes: tr.classDocumentation / tr.typeDocumentation #}
-  {% endif %}
+    {% with classList=compound.innerClasses %}
+      {% include 'htmlinlineclasses.tpl' %}
+    {% endwith %}
   {# typedefs #}
     {% with memberListInfo=compound.detailedTypedefs %}
       {% include 'htmlmemdef.tpl' %}
diff --git a/templates/html/htmlclasses.tpl b/templates/html/htmlclasses.tpl
index 803b1a9..c00ce32 100644
--- a/templates/html/htmlclasses.tpl
+++ b/templates/html/htmlclasses.tpl
@@ -2,7 +2,7 @@
 {% block content %}
 <div class="contents">
 <div class="textblock">
-{% indexentry nav name=tr.classIndex file=page.fileName anchor='' %}
+{% indexentry nav name=tr.classIndex file=page.fileName anchor='' isReference=False %}
 </div>
 {% with index=classIndex.list|alphaIndex:'name' %}
   {# quick index at top #}
@@ -22,7 +22,7 @@
       <li>
         <span class="ai">
         {% if forloop.first %}
-        <a name="#letter_{{ section.label }}"></a>
+        <a name="letter_{{ section.label }}"></a>
         <span class="ah">  {{ section.letter }}  </span><br/>
         {% endif %}
         {% with obj=cls text=cls.name %}
diff --git a/templates/html/htmldeclcomp.tpl b/templates/html/htmldeclcomp.tpl
index 4bd99d2..3ae90b8 100644
--- a/templates/html/htmldeclcomp.tpl
+++ b/templates/html/htmldeclcomp.tpl
@@ -21,7 +21,6 @@
         <tr class="memdesc:{{ nc.anchor }}"><td class="mdescLeft"> </td><td class="mdescRight">
         {{ nc.brief }}
         {% if nc.hasDetails %}
-          {# TODO: link to group if member is grouped #}
           <a href="{{ page.relPath }}{{ nc.fileName }}{{ config.HTML_FILE_EXTENSION}}{% if nc.anchor %}#{{ nc.anchor }}{% endif %}">{{ tr.more }}</a>
         {% endif %}
         <br/></td></tr>
diff --git a/templates/html/htmldir.tpl b/templates/html/htmldir.tpl
index 7417f7b..aeb2fa5 100644
--- a/templates/html/htmldir.tpl
+++ b/templates/html/htmldir.tpl
@@ -2,18 +2,10 @@
 {% msg %}Generating HTML output for directory {{ compound.name }}{% endmsg %}
 
 {% block navpath %}
-  {% if compound.navigationPath %}
-    <div id="nav-path" class="navpath">
-      <ul>
-      {% for obj in compound.navigationPath %}
-        <li class="navelem">
-          {% with text=obj.text %}
-            {% include 'htmlobjlink.tpl' %}
-          {% endwith %}
-        </li>
-      {% endfor %}
-      </ul>
-    </div>
+  {% if not config.GENERATE_TREEVIEW %}
+    {% with navpath=compound.navigationPath %}
+      {% include 'htmlnavpath.tpl' %}
+    {% endwith %}
   {% endif %}
 {% endblock %}
 
@@ -45,7 +37,18 @@
     {% endif %}
   {% endif %}
 {# dir graph #}
-{# TODO #}
+  {% if compound.hasDirGraph %}
+    {% with obj=compound %}
+      {% include 'htmldynheader.tpl' %}
+    {% endwith %}
+      {{ tr.dirDependencyGraphFor:compound.dirName }}
+    </div>
+    {% with obj=compound %}
+      {% include 'htmldyncontents.tpl' %}
+    {% endwith %}
+      {{ compound.dirGraph }}
+    </div>
+  {% endif %}
 {# member declarations #}
   {# directories #}
     {% with list=compound.dirs label='subdirs' title=tr.directories local=False %}
diff --git a/templates/html/htmldirtree.tpl b/templates/html/htmldirtree.tpl
index 2fa266a..a6b9b21 100644
--- a/templates/html/htmldirtree.tpl
+++ b/templates/html/htmldirtree.tpl
@@ -11,7 +11,7 @@
 {# the table with entries #}
 <table class="directory">
 {% recursetree tree.tree %}
-  {% indexentry nav name=node.name file=node.fileName anchor=node.anchor %}
+  {% indexentry nav name=node.name file=node.fileName anchor=node.anchor isReference=node.isReference externalReference=node.externalReference %}
   {% spaceless %}
   <tr id="row_{{ node.id }}" class="{% cycle 'even' 'odd' %}"{%if node.level>tree.preferredDepth %} style="display:none;"{% endif %}>
     <td class="entry">
@@ -30,7 +30,13 @@
   {% elif node.dir %}
     <span id="img_{{ node.id }}" class="iconf{%if node.level+1<tree.preferredDepth %}open{% else %}closed{% endif %}" onclick="toggleFolder('{{ node.id }}')"> </span>
   {% elif node.file %}
+    {% if node.file.hasSourceFile %}
+      <a href="{{ node.file.sourceFileName }}{{ config.HTML_FILE_EXTENSION }}">
+    {% endif %}
     <span class="icondoc"></span>
+    {% if node.file.hasSourceFile %}
+      </a>
+    {% endif %}
   {% endif %}
   {% with obj=node text=node.name %}
     {% include 'htmlobjlink.tpl' %}
diff --git a/templates/html/htmlexample.tpl b/templates/html/htmlexample.tpl
new file mode 100644
index 0000000..f8c1f96
--- /dev/null
+++ b/templates/html/htmlexample.tpl
@@ -0,0 +1,17 @@
+{% extend 'htmlbase.tpl' %}
+{% msg %}Generating HTML output for example {{ compound.name }}{% endmsg %}
+
+{% block navpath %}
+  {% if not config.GENERATE_TREEVIEW %}
+    {% with navpath=compound.navigationPath %}
+      {% include 'htmlnavpath.tpl' %}
+    {% endwith %}
+  {% endif %}
+{% endblock %}
+
+{% block content %}
+<div class="contents">
+{{ compound.details }}
+{{ compound.example }}
+</div>
+{% endblock %}
diff --git a/templates/html/htmlmodules.tpl b/templates/html/htmlexamples.tpl
similarity index 62%
copy from templates/html/htmlmodules.tpl
copy to templates/html/htmlexamples.tpl
index f19c225..58392df 100644
--- a/templates/html/htmlmodules.tpl
+++ b/templates/html/htmlexamples.tpl
@@ -2,11 +2,11 @@
 {% block content %}
 <div class="contents">
 <div class="textblock">
-{{ tr.modulesDescription }}
+{{ tr.examplesDescription }}
 </div>
-{% indexentry nav name=tr.modules file=page.fileName anchor='' %}
+{% indexentry nav name=tr.examples file=page.fileName anchor='' isReference=False %}
 {% opensubindex nav %}
-{% with tree=moduleTree %}
+{% with tree=exampleTree %}
   {% include 'htmldirtree.tpl' %}
 {% endwith %}
 {% closesubindex nav %}
diff --git a/templates/html/htmlfile.tpl b/templates/html/htmlfile.tpl
index 67af096..80e2826 100644
--- a/templates/html/htmlfile.tpl
+++ b/templates/html/htmlfile.tpl
@@ -2,9 +2,11 @@
 {% msg %}Generating HTML output for file {{ compound.name }}{% endmsg %}
 
 {% block navpath %}
-{% with navpath=compound.navigationPath %}
-  {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+  {% if not config.GENERATE_TREEVIEW %}
+    {% with navpath=compound.navigationPath %}
+      {% include 'htmlnavpath.tpl' %}
+    {% endwith %}
+  {% endif %}
 {% endblock %}
 
 {% block title %}
@@ -160,76 +162,9 @@
 {% endif %}
 {# member definitions #}
   {# inline classes #}
-    {% if compound.inlineClasses %}
-      <h2 class="groupheader">{{ tr.classDocumentation }}</h2>
-      {% for class in compound.inlineClasses %}
-        {# write anchor #}
-        <a class="anchor" id="{{ class.anchor }}"></a>
-        <div class="memitem">
-        <div class="memproto">
-        <table class="memname">
-          <tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
-        </table>
-        </div>
-        <div class="memdoc">
-        <div class="textblock">
-        {# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
-          {# template specifier #}
-          {% if class.language=='cpp' and class.templateDecls %}
-            <h3>{% spaceless %}
-              {% for targList in class.templateDecls %}
-                template<
-                {% for targ in targList %}
-                  {{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %} = {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
-                {% endfor %}
-                ><br/>
-              {% endfor %}
-            {% endspaceless %}
-            {{ class.classType }} {{ class.name }}
-            </h3>
-          {% endif %}
-          {# brief description #}
-          {% if class.brief and config.REPEAT_BRIEF %}
-            <p>{{ class.brief }}</p>
-          {% endif %}
-          {# detailed docs #}
-          {{ class.details }}
-          {# source def #}
-          {% if class.sourceDef %}
-            {% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
-              {% with text=obj.text %}
-                {% include 'htmlobjlink.tpl' %}
-              {% endwith %}
-            {% endmarkers %}
-          {% endif %}
-        </div><!-- textblock -->
-        {# table with fields #}
-        <table class="fieldtable">
-          <tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
-          {% for member in class.members %}
-            <tr><td class="fieldtype">
-                   <a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
-                </td>
-                <td class="fieldname">
-                   {{ member.name }}
-                   {% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
-                   {{ member.bitfields }}
-                </td>
-                <td class="fielddoc">
-                  {% if member.brief and not member.details %}{# only brief #}
-                    {{ member.brief }}
-                  {% else %} {# only details or both #}
-                    {% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
-                    {{ member.details }}
-                  {% endif %}
-                </td>
-            </tr>
-          {% endfor %}
-        </table>
-        </div><!-- memdoc -->
-        </div><!-- memitem -->
-      {% endfor %}
-    {% endif %}
+    {% with classList=compound.inlineClasses %}
+      {% include 'htmlinlineclasses.tpl' %}
+    {% endwith %}
   {# defines #}
     {% with memberListInfo=compound.detailedMacros %}
       {% include 'htmlmemdef.tpl' %}
diff --git a/templates/html/htmlfiles.tpl b/templates/html/htmlfiles.tpl
index 1871d4d..55799ca 100644
--- a/templates/html/htmlfiles.tpl
+++ b/templates/html/htmlfiles.tpl
@@ -4,7 +4,7 @@
 <div class="textblock">
 {{ tr.fileListDescription }}
 </div>
-{% indexentry nav name=tr.fileList file=page.fileName anchor='' %}
+{% indexentry nav name=tr.fileList file=page.fileName anchor='' isReference=False %}
 {% opensubindex nav %}
 {% with tree=fileTree %}
   {% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlhierarchy.tpl b/templates/html/htmlhierarchy.tpl
index 5d03755..ff10172 100644
--- a/templates/html/htmlhierarchy.tpl
+++ b/templates/html/htmlhierarchy.tpl
@@ -7,7 +7,7 @@
 <p><a href="inherits{{ config.HTML_FILE_EXTENSION }}">{{ tr.gotoGraphicalHierarchy }}</a></p>
 {% endif %}
 </div>
-{% indexentry nav name=tr.classHierarchy file=page.fileName anchor='' %}
+{% indexentry nav name=tr.classHierarchy file=page.fileName anchor='' isReference=False %}
 {% opensubindex nav %}
 {% with tree=classHierarchy %}
   {% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlindexpages.tpl b/templates/html/htmlindexpages.tpl
index 65bf1b6..2886a69 100644
--- a/templates/html/htmlindexpages.tpl
+++ b/templates/html/htmlindexpages.tpl
@@ -9,7 +9,7 @@
     {% for sect in index %}
       {% with letter=sect.letter %}
          {% set page_postfix=section|append:'_'|append:sect.label %}
-         {% indexentry nav name=letter file=page.fileName|append:page_postfix anchor='' %}
+         {% indexentry nav name=letter file=page.fileName|append:page_postfix anchor='' isReference=False %}
          {# create index pages for all globals starting with a specific letter #}
          {% create page.fileName|append:page_postfix|append:config.HTML_FILE_EXTENSION from template %}
       {% endwith %}
diff --git a/templates/html/htmlinlineclasses.tpl b/templates/html/htmlinlineclasses.tpl
new file mode 100644
index 0000000..876c491
--- /dev/null
+++ b/templates/html/htmlinlineclasses.tpl
@@ -0,0 +1,70 @@
+{# input: classList #}
+{% if classList %}
+  <h2 class="groupheader">{{ tr.classDocumentation }}</h2>
+  {% for class in classList %}
+    {# write anchor #}
+    <a class="anchor" id="{{ class.anchor }}"></a>
+    <div class="memitem">
+    <div class="memproto">
+    <table class="memname">
+      <tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
+    </table>
+    </div>
+    <div class="memdoc">
+    <div class="textblock">
+      {# template specifier #}
+      {% if class.language=='cpp' and class.templateDecls %}
+        <h3>{% spaceless %}
+          {% for targList in class.templateDecls %}
+            template<
+            {% for targ in targList %}
+              {{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %} = {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+            ><br/>
+          {% endfor %}
+        {% endspaceless %}
+        {{ class.classType }} {{ class.name }}
+        </h3>
+      {% endif %}
+      {# brief description #}
+      {% if class.brief and config.REPEAT_BRIEF %}
+        <p>{{ class.brief }}</p>
+      {% endif %}
+      {# detailed docs #}
+      {{ class.details }}
+      {# source def #}
+      {% if class.sourceDef %}
+        {% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
+          {% with text=obj.text %}
+            {% include 'htmlobjlink.tpl' %}
+          {% endwith %}
+        {% endmarkers %}
+      {% endif %}
+    </div><!-- textblock -->
+    {# table with fields #}
+    <table class="fieldtable">
+      <tr><th colspan="3">{{ tr.compoundMembers }}</th></tr>
+      {% for member in class.members %}
+        <tr><td class="fieldtype">
+               <a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
+            </td>
+            <td class="fieldname">
+               {{ member.name }}
+               {% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
+               {{ member.bitfields }}
+            </td>
+            <td class="fielddoc">
+              {% if member.brief and not member.details %}{# only brief #}
+                {{ member.brief }}
+              {% else %} {# only details or both #}
+                {% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
+                {{ member.details }}
+              {% endif %}
+            </td>
+        </tr>
+      {% endfor %}
+    </table>
+    </div><!-- memdoc -->
+    </div><!-- memitem -->
+  {% endfor %}
+{% endif %}
diff --git a/templates/html/htmljsnavtree.tpl b/templates/html/htmljsnavtree.tpl
index a7ad88e..9970161 100644
--- a/templates/html/htmljsnavtree.tpl
+++ b/templates/html/htmljsnavtree.tpl
@@ -1,7 +1,7 @@
 var NAVTREE =
 [
 {% recursetree index.nav %}
-  [ "{{ node.name }}", {% if node.file %}"{{ node.file }}{{ config.HTML_FILE_EXTENSION }}{% if node.anchor %}#{{ node.anchor }}{% endif %}"{% else %}null{% endif %},{% if not node.is_leaf_node %} [
+  [ "{{ node.name }}", {% if node.file %}"{% if node.isReference %}{{ node.externalReference }}{% endif %}{{ node.file }}{{ config.HTML_FILE_EXTENSION }}{% if node.anchor %}#{{ node.anchor }}{% endif %}"{% else %}null{% endif %},{% if not node.is_leaf_node %} [
      {{ children }}
   ]{% else %} null{% endif %} ]{% if not node.last %},{% endif %}
 {% endrecursetree %}
@@ -18,3 +18,6 @@ var NAVTREEINDEX =
   {% endfor %}
 {% endwith %}
 ];
+
+var SYNCONMSG  = '{{ tr.panelSyncOn }}';
+var SYNCOFFMSG = '{{ tr.panelSyncOff }}';
diff --git a/templates/html/htmljssearchdata.tpl b/templates/html/htmljssearchdata.tpl
new file mode 100644
index 0000000..c48ea1d
--- /dev/null
+++ b/templates/html/htmljssearchdata.tpl
@@ -0,0 +1,31 @@
+{# input: si: SymbolIndex #}
+var indexSectionsWithContent =
+{
+{% set count=0 %}
+{% for idx in searchIndices %}
+  {% if idx.symbolIndices %}
+    {{ count }}:"{% for si in idx.symbolIndices %}{{ si.letter }}{% endfor %}"{%if not forloop.last %},{% endif %}
+    {% set count=count+1 %}
+  {% endif %}
+{% endfor %}
+};
+var indexSectionNames =
+{
+{% set count=0 %}
+{% for idx in searchIndices %}
+  {% if idx.symbolIndices %}
+    {{ count }}:"{{ idx.name }}"{% if not forloop.last %},{% endif %}
+    {% set count=count+1 %}
+  {% endif %}
+{% endfor %}
+};
+var IndexSectionLabels =
+{
+{% set count=0 %}
+{% for idx in searchIndices %}
+  {% if idx.symbolIndices %}
+    {{ count }}:"{{ idx.text }}"{% if not forloop.last %},{% endif %}
+    {% set count=count+1 %}
+  {% endif %}
+{% endfor %}
+};
diff --git a/templates/html/htmljssearchindex.tpl b/templates/html/htmljssearchindex.tpl
new file mode 100644
index 0000000..a16fa4f
--- /dev/null
+++ b/templates/html/htmljssearchindex.tpl
@@ -0,0 +1,15 @@
+{# input: si symbolIndex #}
+var searchData =
+[
+{% for group in si.symbolGroups %}['{{ group.id }}',['{{ group.name }}',
+{% for sym in group.symbols %}
+{% spaceless %}
+['{{ sym.relPath }}{{ sym.fileName }}{{ config.HTML_FILE_EXTENSION }}{% if sym.anchor %}#{{ sym.anchor }}{% endif %}',
+{% if not config.EXT_LINKS_IN_WINDOW %}1{% else %}0{% endif %},
+'{{ sym.scope|nowrap }}']
+{% endspaceless %}
+{% if not forloop.last %},{% endif %}
+{% endfor %}
+]]{% if not forloop.last %},{% endif %}
+{% endfor %}
+];
diff --git a/templates/html/htmllayout.tpl b/templates/html/htmllayout.tpl
index 9b82238..52883a3 100644
--- a/templates/html/htmllayout.tpl
+++ b/templates/html/htmllayout.tpl
@@ -24,6 +24,14 @@
 {% resource 'nav_g.png' %}
 {% resource 'nav_h.lum' %}
 {% resource 'navtree.css' %}
+{% resource 'navtree.js' %}
+{% resource 'resize.js' %}
+{% resource 'doc.luma' %}
+{% resource 'folderopen.luma' %}
+{% resource 'folderclosed.luma' %}
+{% resource 'arrowdown.luma' %}
+{% resource 'arrowright.luma' %}
+{% resource 'splitbar.lum' %}
 
 {# general search resources #}
 {% resource 'search_l.png' as 'search/search_l.png' %}
@@ -54,14 +62,14 @@
 {# -------------------------------------------------- #}
 
 {# global constants #}
-{% set maxItemsForFlatList=2 %}
-{% set maxItemsForMultiPageList=4 %}
+{% set maxItemsForFlatList=30 %}
+{% set maxItemsForMultiPageList=200 %}
 
 {# global variable #}
 {% set page_postfix='' %}
 
 {# open the global navigation index #}
-{% indexentry nav name=tr.mainPage file='index' anchor='' %}
+{% indexentry nav name=tr.mainPage file='index' anchor='' isReference=False %}
 {% opensubindex nav %}
 
 {# ----------- HTML DOCUMENTATION PAGES ------------ #}
@@ -92,7 +100,6 @@
 {% for compound in fileList %}
   {% with page=compound %}
     {# TODO: to deal with clang optimisation, we need to write the sources in a different order! #}
-    {# TODO: now writing sources has the side-effect of creating cross-references. Need to split that up! #}
     {% if compound.hasSourceFile %}
       {% create compound.sourceFileName|append:config.HTML_FILE_EXTENSION from 'htmlsource.tpl' %}
     {% endif %}
@@ -120,7 +127,12 @@
   {% endwith %}
 {% endfor %}
 
-{# TODO: write example documentation #}
+{# write example documentation #}
+{% for compound in exampleList %}
+  {% with page=compound %}
+    {% create compound.fileName|append:config.HTML_FILE_EXTENSION from 'htmlexample.tpl' %}
+  {% endwith %}
+{% endfor %}
 
 {# ----------- INDEXES ------------ #}
 
@@ -131,6 +143,13 @@
   {% endwith %}
 {% endif %}
 
+{# ---- examples --- #}
+{% if exampleTree.tree %}
+  {% with page=exampleTree %}
+    {% create exampleTree.fileName|append:config.HTML_FILE_EXTENSION from 'htmlexamples.tpl' %}
+  {% endwith %}
+{% endif %}
+
 {# --- modules --- #}
 {% if moduleTree.tree %}
   {% with page=moduleTree %}
@@ -139,8 +158,9 @@
 {% endif %}
 
 {# --- namespaces --- #}
-{% indexentry nav name=tr.namespaces file='' anchor='' %}
-{% opensubindex nav %}
+{% if namespaceList %}
+  {% indexentry nav name=tr.namespaces file='' anchor='' isReference=False %}
+  {% opensubindex nav %}
 
   {% if namespaceTree.tree %}
     {% with page=namespaceTree %}
@@ -151,16 +171,18 @@
   {# write symbol indices for namespace members #}
   {% if namespaceMembersIndex.all %}
     {% with page=namespaceMembersIndex scope='namespace' template='htmlnsmembers.tpl' %}
-      {% indexentry nav name=tr.namespaceMembers file=page.fileName anchor='' %}
+      {% indexentry nav name=tr.namespaceMembers file=page.fileName anchor='' isReference=False %}
       {% include 'htmlmembersindex.tpl' %}
     {% endwith %}
   {% endif %}
 
-{% closesubindex nav %}
+  {% closesubindex nav %}
+{% endif %}
 
 {# --- classes --- #}
-{% indexentry nav name=tr.classes file='' anchor='' %}
-{% opensubindex nav %}
+{% if classList %}
+  {% indexentry nav name=tr.classes file='' anchor='' isReference=False %}
+  {% opensubindex nav %}
 
   {# write the annotated class list #}
   {% if classTree.tree %}
@@ -176,14 +198,14 @@
     {% endwith %}
   {% endif %}
 
-  {# TODO: write the class inheritance hierarchy #}
+  {# write the class inheritance hierarchy #}
   {% if classHierarchy.tree %}
     {% with page=classHierarchy %}
       {% create classHierarchy.fileName|append:config.HTML_FILE_EXTENSION from 'htmlhierarchy.tpl' %}
-    {% endwith %}
-    {% with page=classHierarchy %}
       {% if config.HAVE_DOT and config.GRAPHICAL_HIERARCHY %}
-        {% create 'inherits'|append:config.HTML_FILE_EXTENSION from 'htmlgraphhierarchy.tpl' %}
+        {% with fileName='inherits' %}
+          {% create fileName|append:config.HTML_FILE_EXTENSION from 'htmlgraphhierarchy.tpl' %}
+        {% endwith %}
       {% endif %}
     {% endwith %}
   {% endif %}
@@ -191,16 +213,18 @@
   {# write symbol indices for class members #}
   {% if classMembersIndex.all %}
     {% with page=classMembersIndex scope='class' template='htmlclmembers.tpl' %}
-      {% indexentry nav name=tr.classMembers file=page.fileName anchor='' %}
+      {% indexentry nav name=tr.classMembers file=page.fileName anchor='' isReference=False %}
       {% include 'htmlmembersindex.tpl' %}
     {% endwith %}
   {% endif %}
 
-{% closesubindex nav %}
+  {% closesubindex nav %}
+{% endif %}
 
 {# --- files --- #}
-{% indexentry nav name=tr.files file='' anchor='' %}
-{% opensubindex nav %}
+{% if fileList %}
+  {% indexentry nav name=tr.files file='' anchor='' isReference=False %}
+  {% opensubindex nav %}
 
   {# write the directory/file hierarchy #}
   {% if fileTree.tree %}
@@ -212,12 +236,13 @@
   {# write symbol indices for global namespace #}
   {% if globalsIndex.all %}
     {% with page=globalsIndex scope='file' template='htmlflmembers.tpl' %}
-      {% indexentry nav name=tr.fileMembers file=page.fileName anchor='' %}
+      {% indexentry nav name=tr.fileMembers file=page.fileName anchor='' isReference=False %}
       {% include 'htmlmembersindex.tpl' %}
     {% endwith %}
   {% endif %}
 
-{% closesubindex nav %}
+  {% closesubindex nav %}
+{% endif %}
 
 {# write directory documentation pages #}
 {% for compound in dirList %}
@@ -229,6 +254,19 @@
 {# close the global navigation index #}
 {% closesubindex nav %}
 
+{# write search data #}
+{% if config.SEARCHENGINE and not config.SERVER_BASED_SEARCH %}
+  {% create 'search/searchdata.js' from 'htmljssearchdata.tpl' %}
+  {% for idx in searchIndices %}
+    {% for si in idx.symbolIndices %}
+      {% with baseName=si.name|append:'_'|append:forloop.counter0 %}
+        {% create baseName|prepend:'search/'|append:config.HTML_FILE_EXTENSION from 'htmlsearchresult.tpl' %}
+        {% create baseName|prepend:'search/'|append:'.js' from 'htmljssearchindex.tpl' %}
+      {% endwith %}
+    {% endfor %}
+  {% endfor %}
+{% endif %}
+
 {# write the navigation tree data #}
 {% if config.GENERATE_TREEVIEW %}
   {% create 'navtreedata.js' from 'htmljsnavtree.tpl' %}
diff --git a/templates/html/htmlmembersindex.tpl b/templates/html/htmlmembersindex.tpl
index ef891df..700bce2 100644
--- a/templates/html/htmlmembersindex.tpl
+++ b/templates/html/htmlmembersindex.tpl
@@ -2,13 +2,13 @@
 {% opensubindex nav %}
 {# all members #}
 {% with list=page.all section='' %}
-  {% indexentry nav name=tr.all file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.all file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% include 'htmlindexpages.tpl' %}
 {% endwith %}
 {# functions #}
 {% if page.functions %}
   {% set page_postfix='_func' %}
-  {% indexentry nav name=tr.functions file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.functions file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.functions section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
@@ -16,7 +16,7 @@
 {# variables #}
 {% if page.variables %}
   {% set page_postfix='_vars' %}
-  {% indexentry nav name=tr.variables file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.variables file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.variables section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
@@ -24,7 +24,7 @@
 {# typedefs #}
 {% if page.typedefs %}
   {% set page_postfix='_type' %}
-  {% indexentry nav name=tr.typedefs file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.typedefs file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.typedefs section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
@@ -32,7 +32,7 @@
 {# enums #}
 {% if page.enums %}
   {% set page_postfix='_enum' %}
-  {% indexentry nav name=tr.enums file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.enums file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.enums section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
@@ -40,7 +40,7 @@
 {# enumValues #}
 {% if page.enumValues %}
   {% set page_postfix='_eval' %}
-  {% indexentry nav name=tr.enumValues file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.enumValues file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.enumValues section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
@@ -48,7 +48,7 @@
 {# macros #}
 {% if page.macros %}
   {% set page_postfix='_defs' %}
-  {% indexentry nav name=tr.macros file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.macros file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.macros section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
@@ -56,7 +56,7 @@
 {# properties #}
 {% if page.properties %}
   {% set page_postfix='_prop' %}
-  {% indexentry nav name=tr.properties file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.properties file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.properties section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
@@ -64,7 +64,7 @@
 {# events #}
 {% if page.events %}
   {% set page_postfix='_evnt' %}
-  {% indexentry nav name=tr.events file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.events file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.events section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
@@ -72,7 +72,7 @@
 {# related #}
 {% if page.related %}
   {% set page_postfix='_rela' %}
-  {% indexentry nav name=tr.related file=page.fileName|append:page_postfix anchor='' %}
+  {% indexentry nav name=tr.related file=page.fileName|append:page_postfix anchor='' isReference=False %}
   {% with list=page.related section=page_postfix %}
     {% include 'htmlindexpages.tpl' %}
   {% endwith %}
diff --git a/templates/html/htmlmemdecl.tpl b/templates/html/htmlmemdecl.tpl
index 6af75ce..c7894d8 100644
--- a/templates/html/htmlmemdecl.tpl
+++ b/templates/html/htmlmemdecl.tpl
@@ -17,7 +17,7 @@
     enum </td><td class="memTemplItemRight" valign="bottom">
     {# write name #}
     {% if not member.isAnonymous %}
-      {% with obj=member text=member.name %}
+      {% with obj=member text=member.nameWithContextFor:compound.compoundKind %}
         {% include 'htmlobjlink.tpl' %}
       {% endwith %}
     {% endif %}
@@ -74,7 +74,7 @@
         {% with ctx=member.anonymousType anonymousNestingLevel=anonymousNestingLevel|add:1 %}
           {{ ctx.compoundType }}
           {% if ctx.bareName %}
-             <b>{{ ctx.bareName }}</b> {# TODO: associated documentation is lost! #}
+             <b>{{ ctx.bareName }}</b>
           {% endif %}
           {</td></tr>
           {# recursively write members that can appear inside the anonymous class/struct #}
@@ -128,11 +128,7 @@
         <td class="memItemLeft" valign="top">{% repeat anonymousNestingLevel %}   {% endrepeat %}
         }
       {% else %}
-        {% if member.isObjCMethod %}
-          {% if member.isStatic %}+ {% else %}- {% endif %}
-        {% else %}
-          {{ member.declType }}
-        {% endif %}
+        {{ member.declType }}
       {% endif %}
       {% spaceless %}
          
@@ -140,16 +136,19 @@
              
         {% else %}
           </td><td class="{% if member.templateArgs %}memTemplItemRight{% else %}memItemRight{% endif %}" valign="bottom">
+          {% if member.isObjCMethod %}
+            {% if member.isStatic %}+ {% else %}- {% endif %}
+          {% endif %}
         {% endif %}
       {% endspaceless %}
     {# write name #}
       {% if not member.isAnonymous %}
         {% if member.anonymousMember %}
-          {% with obj=member.anonymousMember text=member.anonymousMember.name %}
+	  {% with obj=member.anonymousMember text=member.anonymousMember.nameWithContextFor:compound.compoundKind %}
             {% include 'htmlobjlink.tpl' %}
           {% endwith %}
         {% else %}
-          {% with obj=member text=member.name %}
+          {% with obj=member text=member.nameWithContextFor:compound.compoundKind %}
             {% include 'htmlobjlink.tpl' %}
           {% endwith %}
         {% endif %}
@@ -205,8 +204,7 @@
       <tr class="memdesc:{{ member.anchor }}{% if inheritId %} inherit {{ inheritId }}{% endif %}"><td class="mdescLeft"> </td><td class="mdescRight">
       {{ member.brief }}
       {% if member.hasDetails %}
-        {# TODO: link to group if member is grouped #}
-        <a href="#{{ member.anchor }}">{{ tr.more }}</a>
+        <a href="{{ member.fileName }}{{ config.HTML_FILE_EXTENSION }}#{{ member.anchor }}">{{ tr.more }}</a>
       {% endif %}
       <br/></td></tr>
     {% endif %}
diff --git a/templates/html/htmlmemdef.tpl b/templates/html/htmlmemdef.tpl
index c469f1f..2b03a22 100644
--- a/templates/html/htmlmemdef.tpl
+++ b/templates/html/htmlmemdef.tpl
@@ -1,15 +1,14 @@
 {# inputs: memberListInfo #}
 {% if memberListInfo %}
-  {% if memberListInfo.members|length>0 %}
+  {% if memberListInfo.members %}
     <h2 class="groupheader">{{ memberListInfo.title }}</h2>
     {% for member in memberListInfo.members %}
-      {% if member.hasDetails %}  {# TODO: not the same as isDetailedSectionVisible! #}
-        {# TODO: handle enum + anonymous members #}
-        <a class="anchor" id="{{ member.anchor }}"></a> {# TODO: for namespace members written in a file we need to prepend file_ #}
+      {% if member.detailsVisibleFor:compound.compoundKind %}
+        <a class="anchor" id="{{ member.anchor }}"></a>
         <div class="memitem">
         <div class="memproto">
         {# write template declarations #}
-        {% if member.language=='cpp' and member.templateDecls|length>0 %}
+        {% if member.language=='cpp' and member.templateDecls %}
           {% for targList in member.templateDecls %}
             {% spaceless %}
               <div class="memtemplate">
@@ -23,7 +22,7 @@
           {% endfor %}
         {% endif %}
         {# start of labels if present #}
-        {% if member.labels|length>0 %}
+        {% if member.labels %}
           <table class="mlabels"><tr><td class="mlabels-left">
         {% endif %}
         <table class="memname">
@@ -31,9 +30,11 @@
             {{ member.definition }}
             {# write argument list #}
             {# TODO: TCL #}
-            {% if member.hasParameterList %}
+            {% if member.hasParameters %}
               {% if member.isObjCMethod %}
+                {% if member.parameters %}
                 </td><td></td>
+                {% endif %}
                 {% for arg in member.parameters %}
                   {% if not forloop.first %}
                     <tr><td class="paramkey">{{ arg.namePart }}</td><td></td>
@@ -43,7 +44,7 @@
                     <em>{% if not arg.name %}{{ arg.type }}{% else %}{{ arg.name }}{% endif %}</em>
                   {% endif %}
 		  {% if not forloop.last %}
-                    ,</td></tr>
+                    </td></tr>
                   {% endif %}
                 {% endfor %}
               {% else %}
@@ -109,7 +110,7 @@
           </td></tr>
         </table>
         {# end of labels if present #}
-        {% if member.labels|length>0 %}
+        {% if member.labels %}
           </td><td class="mlabels-right">{% spaceless %}
           {% for label in member.labels %}
             <span class="mlabel">{{ label }}</span>
@@ -118,7 +119,22 @@
         {% endif %}
         </div>
         <div class="memdoc">
-        {# TODO: write group include #}
+        {# write group include #}
+          {% if compound.compoundKind=="module" and config.SHOW_GROUPED_MEMB_INC and member.file %}
+            <p><tt>{% spaceless %}
+            {% if compound.language=='java' or compound.language=='idl' %}
+            import  "
+            {% else %}
+            #include <
+            {% endif %}
+            {% with obj=member.file text=member.file.bareName %}
+              {% include 'htmlobjlink.tpl' %}
+            {% endwith %}
+            {% if compound.language=='java' or compound.language=='idl' %}"
+            {% else %}>
+            {% endif %}
+            {% endspaceless %}</tt></p>
+          {% endif %}
         {# multi-line initializer #}
           {% if member.hasMultiLineInitializer %}
             <b>{% if member.isDefine %}{{ tr.defineValue }}{% else %}{{ tr.initialValue }}{% endif %}</b>
@@ -185,9 +201,25 @@
             </p>
           {% endif %}
         {# category relation #}
-
-          {# TODO #}
-
+          {% if member.class and member.categoryRelation %}
+            {% if member.category %}
+              <p>
+              {% markers mem in member.categoryRelation|list with tr.providedByCategory %}
+                {% with obj=mem text=member.category.name %}
+                  {% include 'htmlobjlink.tpl' %}
+                {% endwith %}
+              {% endmarkers %}
+              </p>
+            {% elif member.class.categoryOf %}
+              <p>
+              {% markers mem in member.categoryRelation|list with tr.extendsClass %}
+                {% with obj=mem text=member.class.categoryOf.name %}
+                  {% include 'htmlobjlink.tpl' %}
+                {% endwith %}
+              {% endmarkers %}
+              </p>
+            {% endif %}
+          {% endif %}
         {# examples #}
           {% if member.examples %}
             <dl><dt><b>{{ tr.examples }}</b><dd>
@@ -278,7 +310,6 @@
         </div>
       {% endif %}
     {% endfor %} {# for each member #}
-    {# TODO: write member group docs #}
   {% endif %}
 {% endif %}
 
diff --git a/templates/html/htmlmodule.tpl b/templates/html/htmlmodule.tpl
index ff97b2c..ce80514 100644
--- a/templates/html/htmlmodule.tpl
+++ b/templates/html/htmlmodule.tpl
@@ -2,9 +2,11 @@
 {% msg %}Generating HTML output for module {{ compound.name }}{% endmsg %}
 
 {% block navpath %}
-{% with navpath=compound.navigationPath %}
-  {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+  {% if not config.GENERATE_TREEVIEW %}
+    {% with navpath=compound.navigationPath %}
+      {% include 'htmlnavpath.tpl' %}
+    {% endwith %}
+  {% endif %}
 {% endblock %}
 
 {% block title %}
@@ -214,76 +216,9 @@
 {% endif %}
 {# member definitions #}
   {# inline classes #}
-    {% if compound.inlineClasses %}
-      <h2 class="groupheader">{{ tr.classDocumentation }}</h2>
-      {% for class in compound.inlineClasses %}
-        {# write anchor #}
-        <a class="anchor" id="{{ class.anchor }}"></a>
-        <div class="memitem">
-        <div class="memproto">
-        <table class="memname">
-          <tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
-        </table>
-        </div>
-        <div class="memdoc">
-        <div class="textblock">
-        {# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
-          {# template specifier #}
-          {% if class.language=='cpp' and class.templateDecls %}
-            <h3>{% spaceless %}
-              {% for targList in class.templateDecls %}
-                template<
-                {% for targ in targList %}
-                  {{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %} = {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
-                {% endfor %}
-                ><br/>
-              {% endfor %}
-            {% endspaceless %}
-            {{ class.classType }} {{ class.name }}
-            </h3>
-          {% endif %}
-          {# brief description #}
-          {% if class.brief and config.REPEAT_BRIEF %}
-            <p>{{ class.brief }}</p>
-          {% endif %}
-          {# detailed docs #}
-          {{ class.details }}
-          {# source def #}
-          {% if class.sourceDef %}
-            {% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
-              {% with text=obj.text %}
-                {% include 'htmlobjlink.tpl' %}
-              {% endwith %}
-            {% endmarkers %}
-          {% endif %}
-        </div><!-- textblock -->
-        {# table with fields #}
-        <table class="fieldtable">
-          <tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
-          {% for member in class.members %}
-            <tr><td class="fieldtype">
-                   <a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
-                </td>
-                <td class="fieldname">
-                   {{ member.name }}
-                   {% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
-                   {{ member.bitfields }}
-                </td>
-                <td class="fielddoc">
-                  {% if member.brief and not member.details %}{# only brief #}
-                    {{ member.brief }}
-                  {% else %} {# only details or both #}
-                    {% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
-                    {{ member.details }}
-                  {% endif %}
-                </td>
-            </tr>
-          {% endfor %}
-        </table>
-        </div><!-- memdoc -->
-        </div><!-- memitem -->
-      {% endfor %}
-    {% endif %}
+    {% with classList=compound.inlineClasses %}
+      {% include 'htmlinlineclasses.tpl' %}
+    {% endwith %}
   {# defines #}
     {% with memberListInfo=compound.detailedMacros %}
       {% include 'htmlmemdef.tpl' %}
diff --git a/templates/html/htmlmodules.tpl b/templates/html/htmlmodules.tpl
index f19c225..5431032 100644
--- a/templates/html/htmlmodules.tpl
+++ b/templates/html/htmlmodules.tpl
@@ -4,7 +4,7 @@
 <div class="textblock">
 {{ tr.modulesDescription }}
 </div>
-{% indexentry nav name=tr.modules file=page.fileName anchor='' %}
+{% indexentry nav name=tr.modules file=page.fileName anchor='' isReference=False %}
 {% opensubindex nav %}
 {% with tree=moduleTree %}
   {% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlnamespace.tpl b/templates/html/htmlnamespace.tpl
index e21ba9d..d359efa 100644
--- a/templates/html/htmlnamespace.tpl
+++ b/templates/html/htmlnamespace.tpl
@@ -2,9 +2,11 @@
 {% msg %}Generating HTML output for namespace {{ compound.name }}{% endmsg %}
 
 {% block navpath %}
-{% with navpath=compound.navigationPath %}
-  {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+{% if not config.GENERATE_TREEVIEW %}
+  {% with navpath=compound.navigationPath %}
+    {% include 'htmlnavpath.tpl' %}
+  {% endwith %}
+{% endif %}
 {% endblock %}
 
 {% block title %}
@@ -114,76 +116,9 @@
 {% endif %}
 {# member definitions #}
   {# inline classes #}
-    {% if compound.inlineClasses %}
-      <h2 class="groupheader">{{ tr.classDocumentation }}</h2>
-      {% for class in compound.inlineClasses %}
-        {# write anchor #}
-        <a class="anchor" id="{{ class.anchor }}"></a>
-        <div class="memitem">
-        <div class="memproto">
-        <table class="memname">
-          <tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
-        </table>
-        </div>
-        <div class="memdoc">
-        <div class="textblock">
-        {# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
-          {# template specifier #}
-          {% if class.language=='cpp' and class.templateDecls %}
-            <h3>{% spaceless %}
-              {% for targList in class.templateDecls %}
-                template<
-                {% for targ in targList %}
-                  {{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %} = {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
-                {% endfor %}
-                ><br/>
-              {% endfor %}
-            {% endspaceless %}
-            {{ class.classType }} {{ class.name }}
-            </h3>
-          {% endif %}
-          {# brief description #}
-          {% if class.brief and config.REPEAT_BRIEF %}
-            <p>{{ class.brief }}</p>
-          {% endif %}
-          {# detailed docs #}
-          {{ class.details }}
-          {# source def #}
-          {% if class.sourceDef %}
-            {% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
-              {% with text=obj.text %}
-                {% include 'htmlobjlink.tpl' %}
-              {% endwith %}
-            {% endmarkers %}
-          {% endif %}
-        </div><!-- textblock -->
-        {# table with fields #}
-        <table class="fieldtable">
-          <tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
-          {% for member in class.members %}
-            <tr><td class="fieldtype">
-                   <a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
-                </td>
-                <td class="fieldname">
-                   {{ member.name }}
-                   {% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
-                   {{ member.bitfields }}
-                </td>
-                <td class="fielddoc">
-                  {% if member.brief and not member.details %}{# only brief #}
-                    {{ member.brief }}
-                  {% else %} {# only details or both #}
-                    {% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
-                    {{ member.details }}
-                  {% endif %}
-                </td>
-            </tr>
-          {% endfor %}
-        </table>
-        </div><!-- memdoc -->
-        </div><!-- memitem -->
-      {% endfor %}
-    {% endif %}
+    {% with classList=compound.inlineClasses %}
+      {% include 'htmlinlineclasses.tpl' %}
+    {% endwith %}
   {# typedefs #}
     {% with memberListInfo=compound.detailedTypedefs %}
       {% include 'htmlmemdef.tpl' %}
diff --git a/templates/html/htmlnamespaces.tpl b/templates/html/htmlnamespaces.tpl
index 4767d13..b7e7b9d 100644
--- a/templates/html/htmlnamespaces.tpl
+++ b/templates/html/htmlnamespaces.tpl
@@ -4,7 +4,7 @@
 <div class="textblock">
 {{ tr.namespaceListDescription }}
 </div>
-{% indexentry nav name=tr.namespaceList file=page.fileName anchor='' %}
+{% indexentry nav name=tr.namespaceList file=page.fileName anchor='' isReference=False %}
 {% opensubindex nav %}
 {% with tree=namespaceTree %}
   {% include 'htmldirtree.tpl' %}
diff --git a/templates/html/htmlnavtree.tpl b/templates/html/htmlnavtree.tpl
index 8da89a2..9713232 100644
--- a/templates/html/htmlnavtree.tpl
+++ b/templates/html/htmlnavtree.tpl
@@ -17,6 +17,6 @@ var NAVTREEINDEX =
 {# write all sub indices #}
 {% for entries in navTree.subindices %}
   {% with idx=forloop.counter0 %}
-    {% create idx|prepend:'navtreeindex'|append:'.js' from htmlnavindex.tpl' %}
+    {% create idx|prepend:'navtreeindex'|append:'.js' from 'htmlnavindex.tpl' %}
   {% endwith %}
 {% endfor %}
diff --git a/templates/html/htmlobjlink.tpl b/templates/html/htmlobjlink.tpl
index 51a281f..5d3c3f4 100644
--- a/templates/html/htmlobjlink.tpl
+++ b/templates/html/htmlobjlink.tpl
@@ -1,6 +1,10 @@
-{# inputs: obj (with .isLinkable .anchor .fileName), text, config, page.relPath #}
+{# inputs: obj (with .isLinkable .isReference .anchor .fileName .externalReference), text, config, page.relPath #}
 {% if obj.isLinkable %}
+{% if obj.isReference %}
+<a class="elRef" href="{{ obj.externalReference }}{{ obj.fileName }}{{ config.HTML_FILE_EXTENSION }}{% if obj.anchor %}#{{ obj.anchor }}{% endif %}">{{ text }}</a>
+{% else %}
 <a class="el" href="{{ page.relPath }}{{ obj.fileName }}{{ config.HTML_FILE_EXTENSION }}{% if obj.anchor %}#{{ obj.anchor }}{% endif %}">{{ text }}</a>
+{% endif %}
 {% else %}
 <b>{{ text }}</b>
 {% endif %}
diff --git a/templates/html/htmlpage.tpl b/templates/html/htmlpage.tpl
index 3882989..7547ed5 100644
--- a/templates/html/htmlpage.tpl
+++ b/templates/html/htmlpage.tpl
@@ -2,9 +2,11 @@
 {% msg %}Generating HTML output for page {{ compound.name }}{% endmsg %}
 
 {% block navpath %}
-{% with navpath=compound.navigationPath %}
-  {% include 'htmlnavpath.tpl' %}
-{% endwith %}
+  {% if not config.GENERATE_TREEVIEW %}
+    {% with navpath=compound.navigationPath %}
+      {% include 'htmlnavpath.tpl' %}
+    {% endwith %}
+  {% endif %}
 {% endblock %}
 
 {% block content %}
diff --git a/templates/html/htmlpages.tpl b/templates/html/htmlpages.tpl
index cc00bf5..5e3778d 100644
--- a/templates/html/htmlpages.tpl
+++ b/templates/html/htmlpages.tpl
@@ -4,7 +4,7 @@
 <div class="textblock">
 {{ tr.relatedPagesDesc }}
 </div>
-{% indexentry nav name=tr.pages file=page.fileName anchor='' %}
+{% indexentry nav name=tr.pages file=page.fileName anchor='' isReference=False %}
 {% opensubindex nav %}
 {% with tree=pageTree %}
   {% include 'htmldirtree.tpl' %}
diff --git a/testing/html/search/files_0.html b/templates/html/htmlsearchresult.tpl
similarity index 69%
rename from testing/html/search/files_0.html
rename to templates/html/htmlsearchresult.tpl
index 0457853..2cf45fc 100644
--- a/testing/html/search/files_0.html
+++ b/templates/html/htmlsearchresult.tpl
@@ -1,20 +1,21 @@
+{# input: baseName #}
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen {{ doxygen.version }}"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="files_0.js"></script>
+<script type="text/javascript" src="{{ baseName }}.js"></script>
 <script type="text/javascript" src="search.js"></script>
 </head>
 <body class="SRPage">
 <div id="SRIndex">
-<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Loading">{{ tr.loading }}</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
 createResults();
 --></script>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
+<div class="SRStatus" id="Searching">{{ tr.searching }}</div>
+<div class="SRStatus" id="NoMatches">{{ tr.noMatches }}</div>
 <script type="text/javascript"><!--
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
diff --git a/templates/html/htmlsource.tpl b/templates/html/htmlsource.tpl
index cb4e65d..dda2b8c 100644
--- a/templates/html/htmlsource.tpl
+++ b/templates/html/htmlsource.tpl
@@ -2,18 +2,10 @@
 {% msg %}Generating HTML source code for file {{ compound.name }}{% endmsg %}
 
 {% block navpath %}
-  {% if compound.navigationPath %}
-    <div id="nav-path" class="navpath">
-      <ul>
-      {% for obj in compound.navigationPath %}
-        <li class="navelem">
-          {% with text=obj.text %}
-            {% include 'htmlobjlink.tpl' %}
-          {% endwith %}
-        </li>
-      {% endfor %}
-      </ul>
-    </div>
+  {% if not config.GENERATE_TREEVIEW %}
+    {% with navpath=compound.navigationPath %}
+      {% include 'htmlnavpath.tpl %}
+    {% endwith %}
   {% endif %}
 {% endblock %}
 
diff --git a/templates/html/htmltabs.tpl b/templates/html/htmltabs.tpl
index 9ce8c44..e7539d9 100644
--- a/templates/html/htmltabs.tpl
+++ b/templates/html/htmltabs.tpl
@@ -24,7 +24,7 @@
    <li{% if page.highlight=='files' %} class="current"{% endif %}><a href="{{ page.relPath }}files{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.files|nowrap }}</span></a></li>
     {% endif %}
   {# examples tab #}
-    {% if exampleList.items %}
+    {% if exampleTree.tree %}
    <li{% if page.highlight=='examples' %} class="current"{% endif %}><a href="{{ page.relPath }}examples{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.examples|nowrap }}</span></a></li>
     {% endif %}
   {# search box #}
@@ -69,6 +69,7 @@
   </ul>
 </div>
 {# second navigation row #}
+{% if page.highlight=='namespace' or page.highlight=='classes' or page.highlight=='files' %}
 <div id="navrow2" class="tabs2">
   <ul class="tablist">
   {# namespace subtabs #}
@@ -94,3 +95,4 @@
   {% endif %}
   </ul>
 </div>
+{% endif %}
diff --git a/templates/html/htmltypeconstraints.tpl b/templates/html/htmltypeconstraints.tpl
index 12c9581..b5a8cd0 100644
--- a/templates/html/htmltypeconstraints.tpl
+++ b/templates/html/htmltypeconstraints.tpl
@@ -1,5 +1,5 @@
 {# obj should be a class or member #}
-{% if obj.typeConstraints|length>0 %}
+{% if obj.typeConstraints %}
   <div class="typecontraint">
   <dl><dt><b>{{ tr.typeConstraints }}</b></dt>
   <dd><table border="0" cellspacing="2" cellpadding="0">
diff --git a/templates/html/resize.js b/templates/html/resize.js
index 304fcb6..2b86c36 100644
--- a/templates/html/resize.js
+++ b/templates/html/resize.js
@@ -56,7 +56,7 @@ function resizeHeight()
   var windowHeight = $(window).height() - headerHeight - footerHeight;
   content.css({height:windowHeight + "px"});
   navtree.css({height:windowHeight + "px"});
-  sidenav.css({height:windowHeight + "px",top: headerHeight+"px"});
+  sidenav.css({height:windowHeight + "px"});
 }
 
 function initResizable()
diff --git a/templates/latex/doxygen.sty b/templates/latex/doxygen.sty
index acd68e4..3f21871 100644
--- a/templates/latex/doxygen.sty
+++ b/templates/latex/doxygen.sty
@@ -9,7 +9,10 @@
 \RequirePackage{ifthen}
 \RequirePackage{verbatim}
 \RequirePackage[table]{xcolor}
-\RequirePackage{xtab}
+\RequirePackage{longtable}
+\RequirePackage{tabu}
+\RequirePackage{tabularx}
+\RequirePackage{multirow}
 
 %---------- Internal commands used in this style file ----------------
 
@@ -267,46 +270,38 @@
 
 % Used by parameter lists
 \newenvironment{DoxyParams}[2][]{%
+    \tabulinesep=1mm%
     \par%
-    \tabletail{\hline}%
-    \tablelasttail{\hline}%
-    \tablefirsthead{}%
-    \tablehead{}%
     \ifthenelse{\equal{#1}{}}%
-    {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
-     \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
-                        p{0.805\textwidth}|}}%
+      {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
     {\ifthenelse{\equal{#1}{1}}%
-      {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
-       \begin{xtabular}{|>{\centering}p{0.10\textwidth}|%
-                         >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
-                         p{0.678\textwidth}|}}%
-      {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
-       \begin{xtabular}{|>{\centering}p{0.10\textwidth}|%
-                         >{\centering\hspace{0pt}}p{0.15\textwidth}|%
-                         >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
-                         p{0.501\textwidth}|}}%
-    }\hline%
-}{%
-    \end{xtabular}%
-    \tablefirsthead{}%
+      {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
+      {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
+    }
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+    \hline%
+    \endhead%
+}{%
+    \end{longtabu}%
     \vspace{6pt}%
 }
 
 % Used for fields of simple structs
 \newenvironment{DoxyFields}[1]{%
+    \tabulinesep=1mm%
     \par%
-    \tabletail{\hline}%
-    \tablelasttail{\hline}%
-    \tablehead{}%
-    \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
-    \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
-                         p{0.15\textwidth}|%
-                         p{0.63\textwidth}|}%
+    \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
+    \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
     \hline%
+    \endfirsthead%
+    \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endhead%
 }{%
-    \end{xtabular}%
-    \tablefirsthead{}%
+    \end{longtabu}%
     \vspace{6pt}%
 }
 
@@ -318,49 +313,49 @@
 
 % Used by return value lists
 \newenvironment{DoxyRetVals}[1]{%
+    \tabulinesep=1mm%
     \par%
-    \tabletail{\hline}%
-    \tablelasttail{\hline}%
-    \tablehead{}%
-    \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
-    \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
-                          p{0.705\textwidth}|}%
+    \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
     \hline%
+    \endhead%
 }{%
-    \end{xtabular}%
-    \tablefirsthead{}%
+    \end{longtabu}%
     \vspace{6pt}%
 }
 
 % Used by exception lists
 \newenvironment{DoxyExceptions}[1]{%
+    \tabulinesep=1mm%
     \par%
-    \tabletail{\hline}%
-    \tablelasttail{\hline}%
-    \tablehead{}%
-    \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
-    \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
-                          p{0.705\textwidth}|}%
+    \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
     \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endhead%
 }{%
-    \end{xtabular}%
-    \tablefirsthead{}%
+    \end{longtabu}%
     \vspace{6pt}%
 }
 
 % Used by template parameter lists
 \newenvironment{DoxyTemplParams}[1]{%
+    \tabulinesep=1mm%
     \par%
-    \tabletail{\hline}%
-    \tablelasttail{\hline}%
-    \tablehead{}%
-    \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
-    \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
-                          p{0.705\textwidth}|}%
+    \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
     \hline%
+    \endhead%
 }{%
-    \end{xtabular}%
-    \tablefirsthead{}%
+    \end{longtabu}%
     \vspace{6pt}%
 }
 
@@ -414,10 +409,10 @@
 % Used by parameter lists and simple sections
 \newenvironment{Desc}
 {\begin{list}{}{%
-    \settowidth{\labelwidth}{40pt}%
-    \setlength{\leftmargin}{\labelwidth}%
+    \settowidth{\labelwidth}{20pt}%
     \setlength{\parsep}{0pt}%
-    \setlength{\itemsep}{-4pt}%
+    \setlength{\itemsep}{0pt}%
+    \setlength{\leftmargin}{\labelwidth+\labelsep}%
     \renewcommand{\makelabel}{\entrylabel}%
   }
 }{%
@@ -426,25 +421,14 @@
 
 % Used by tables
 \newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
-\newlength{\tmplength}%
 \newenvironment{TabularC}[1]%
-{%
-\setlength{\tmplength}%
-     {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}%
-      \par\begin{xtabular*}{\linewidth}%
-             {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}%
-}%
-{\end{xtabular*}\par}%
-
-% Used by nested tables
+{\tabulinesep=1mm
+\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}%
+{\end{longtabu}\par}%
+
 \newenvironment{TabularNC}[1]%
-{%
-\setlength{\tmplength}%
-     {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}%
-      \par\begin{tabular*}{\linewidth}%
-             {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}%
-}%
-{\end{tabular*}\par}%
+{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}%
+{\end{tabu}\par}%
 
 % Used for member group headers
 \newenvironment{Indent}{%
@@ -462,11 +446,21 @@
   \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
 }
 
+% Used to link to a table when hyperlinks are turned on
+\newcommand{\doxytablelink}[2]{%
+  \ref{#1}%
+}
+
+% Used to link to a table when hyperlinks are turned off
+\newcommand{\doxytableref}[3]{%
+  \ref{#3}%
+}
+
 % Used by @addindex
 \newcommand{\lcurly}{\{}
 \newcommand{\rcurly}{\}}
 
-% Used for syntax highlighting
+% Colors used for syntax highlighting
 \definecolor{comment}{rgb}{0.5,0.0,0.0}
 \definecolor{keyword}{rgb}{0.0,0.5,0.0}
 \definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
@@ -478,3 +472,6 @@
 \definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
 \definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
 \definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
+
+% Color used for table heading
+\newcommand{\tableheadbgcolor}{lightgray}%
diff --git a/templates/latex/latexannotated.tpl b/templates/latex/latexannotated.tpl
new file mode 100644
index 0000000..0b6ecb5
--- /dev/null
+++ b/templates/latex/latexannotated.tpl
@@ -0,0 +1,9 @@
+\section{<{ tr.classList }>}
+<{ tr.classListDescription }>
+\begin{DoxyCompactList}
+<% for cls in classList %>
+\item\contentsline{section}
+{<% with obj=cls text=cls.name %><% include 'latexobjlink.tpl' %><% endwith %><% if cls.brief %>\\*<{ cls.brief }><% endif %>}
+{\pageref{<{ cls.fileName|raw }>}}{}
+<% endfor %>
+\end{DoxyCompactList}
diff --git a/templates/latex/latexclass.tpl b/templates/latex/latexclass.tpl
new file mode 100644
index 0000000..9fdcb24
--- /dev/null
+++ b/templates/latex/latexclass.tpl
@@ -0,0 +1,114 @@
+<# input: compound #>
+<% msg %>Generating LaTeX output for class <{ compound.name }><% endmsg %>
+\hypertarget{<{ compound.fileName|raw }>}{}\section{<{ compound.title }>}
+\label{<{ compound.fileName|raw }>}\index{<{ compound.name|texLabel }>@{<{ compound.name|texIndex }>}}
+<# brief description #>
+<% if compound.brief %>
+  <{ compound.brief }>
+
+<% endif %>
+<# compound includes #>
+<% if compound.includeInfo %>
+    <% with ii=compound.includeInfo %>
+      <% include 'latexinclude.tpl' %>
+    <% endwith %>
+
+
+<% endif %>
+<# inheritance graph #>
+  <% if compound.hasInheritanceDiagram %>
+    <{ tr.inheritanceDiagramFor:compound.name }>
+    <{ compound.inheritanceDiagram }>
+  <% else %>
+    <# textual inheritance list #>
+    <% if compound.inherits|length>0 %>
+      <% markers c in compound.inherits with tr.inheritsList:compound.inherits|length %>
+        <% with obj=c.class text=c.name %>
+          <% include 'latexobjlink.tpl' %>
+        <% endwith %>
+      <% endmarkers %>
+
+
+    <% endif %>
+    <% if compound.inheritedBy|length>0 %>
+      <% markers c in compound.inheritedBy with tr.inheritedByList:compound.inheritedBy|length %>
+        <% with obj=c.class text=c.name %>
+          <% include 'latexobjlink.tpl' %>
+        <% endwith %>
+      <% endmarkers %>
+
+
+    <% endif %>
+  <% endif %>
+<# collaboration graph #>
+  <% if compound.hasCollaborationDiagram %>
+      <{ tr.collaborationDiagramFor:compound.name }>
+      <{ compound.collaborationDiagram }>
+
+
+  <% endif %>
+<# member declarations #>
+<% if compound.hasDetails %>
+  <% if compound.anchor %>
+    \label{<{ compound.anchor|raw }>}
+    <% if config.PDF_HYPERLINKS and config.USE_PDFLATEX %>
+    \hypertarget{<% if compound.fileName %><{ compound.fileName|raw }>_<% endif %><{ compound.anchor|raw }>}{}
+    <% endif %>
+  <% endif %>
+  <% if config.COMPACT_LATEX %>\subsubsection<% else %>\subsection<% endif %>{<{ tr.detailedDesc }>}
+  <# template specifier #>
+  <% if compound.language=='cpp' and compound.templateDecls %>
+    <% spaceless %>
+    \subsubsection*{
+      <% for targList in compound.templateDecls %>
+        template$<$
+        <% for targ in targList %>
+          <{ targ.type }><% if targ.name %><{ space }><{ targ.name }><% endif %><% if targ.defVal %><{ space }>= <{ targ.defVal }><% endif %><% if not forloop.last %>, <% endif %>
+        <% endfor %>
+        $>$\\*
+      <% endfor %>
+    <{ compound.compoundType }><{ space }><{ compound.name }>
+    }
+    <% endspaceless %>
+
+
+  <% endif %>
+  <% if compound.brief and config.REPEAT_BRIEF %>
+  <{ compound.brief }>
+
+
+  <% endif %>
+  <{ compound.details }>
+
+
+  <# type constraints #>
+  <% with obj=compound %>
+    <% include 'latextypeconstraints.tpl' %>
+  <% endwith %>
+
+
+<% endif %>
+<% msg %>
+  <# examples #>
+    <% if compound.examples %>
+      <dl><dt><b><{ tr.examples }></b><dd>
+      <% markers obj in compound.examples with tr.exampleList:compound.examples|length %>
+        <% with page=compound text=obj.text %>
+          <% include 'htmlobjlink.tpl' %>
+        <% endwith %>
+      <% endmarkers %>
+      </dd></dl>
+    <% endif %>
+  <# source definition #>
+    <% if compound.sourceDef %>
+      <% markers obj in compound.sourceDef with tr.definedAtLineInSourceFile %>
+        <% with page=compound text=obj.text %>
+          <% include 'htmlobjlink.tpl' %>
+        <% endwith %>
+      <% endmarkers %>
+    <% endif %>
+<% endmsg %>
+<# detailed description #>
+<# member definitions #>
+<# used files #>
+<# separate member pages #>
diff --git a/templates/latex/latexfiles.tpl b/templates/latex/latexfiles.tpl
new file mode 100644
index 0000000..a9a897d
--- /dev/null
+++ b/templates/latex/latexfiles.tpl
@@ -0,0 +1 @@
+<# TODO #>
diff --git a/templates/latex/latexinclude.tpl b/templates/latex/latexinclude.tpl
new file mode 100644
index 0000000..c333056
--- /dev/null
+++ b/templates/latex/latexinclude.tpl
@@ -0,0 +1,32 @@
+<# input: ii with attributes (file,name,isImport,isLocal), compound with attribute language #>
+<% spaceless %>
+<% if ii.file or ii.name %>
+{\ttfamily<{ space }>
+    <% if compound.language=='java' or compound.language=='idl' %>
+      import
+    <% else %>
+      <% if ii.isImport %>
+      \#import
+      <% else %>
+      \#include
+      <% endif %>
+    <% endif %>
+    <{ space }>
+    <% if ii.isLocal %>
+      \char`\"{}
+    <% else %>
+      $<$
+    <% endif %>
+    <% if ii.name %>
+      <{ ii.name }>
+    <% else %>
+      <{ ii.file.name }>
+    <% endif %>
+    <% if ii.isLocal %>
+      \char`\"{}
+    <% else %>
+      $>$
+    <% endif %>
+}
+<% endif %>
+<% endspaceless %>
diff --git a/templates/latex/latexlayout.tpl b/templates/latex/latexlayout.tpl
new file mode 100644
index 0000000..290a4d5
--- /dev/null
+++ b/templates/latex/latexlayout.tpl
@@ -0,0 +1,35 @@
+{% msg %}----- Start generating LaTeX output for {{ config.PROJECT_NAME }} from template ----{% endmsg %}
+
+{% create 'refman.tex' from 'latexrefman.tpl' %}
+{% create 'Makefile' from 'latexmakefile.tpl' %}
+
+{# module index #}
+{% if moduleTree.tree %}
+  {% create 'modules.tex' from 'latexmodules.tpl' %}
+{% endif %}
+
+{# namespace index #}
+{% if namespaceTree.tree %}
+  {% create 'namespaces.tex' from 'latexnamespaces.tpl' %}
+{% endif %}
+
+{# class index #}
+{% if classTree.tree %}
+  {% create 'annotated.tex' from 'latexannotated.tpl' %}
+{% endif %}
+
+{# file index #}
+{% if fileTree.tree %}
+  {% create 'files.tex' from 'latexfiles.tpl' %}
+{% endif %}
+
+{# TODO: pages #}
+{# TODO: examples #}
+{# TODO: directories #}
+
+{# write class documentation pages #}
+{% for compound in classList %}
+  {% create compound.fileName|append:'.tex' from 'latexclass.tpl' %}
+{% endfor %}
+
+{% msg %}----- End generating LaTeX output for {{ config.PROJECT_NAME }} from template ----{% endmsg %}
diff --git a/templates/latex/latexmakefile.tpl b/templates/latex/latexmakefile.tpl
new file mode 100644
index 0000000..ba1eb76
--- /dev/null
+++ b/templates/latex/latexmakefile.tpl
@@ -0,0 +1,64 @@
+{% if config.USE_PDFLATEX %}
+all: refman.pdf
+
+pdf: refman.pdf
+
+refman.pdf: clean refman.tex
+	pdflatex refman
+	{{ config.MAKEINDEX_CMD_NAME }} refman.idx
+{# TODO: generateBib #}
+	pdflatex refman
+	latex_count=8 ; \
+	while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+	    do \
+	      echo "Rerunning latex...." ;\
+	      pdflatex refman ;\
+	      latex_count=`expr $$latex_count - 1` ;\
+	    done
+	{{ config.MAKEINDEX_CMD_NAME }} refman.idx
+	pdflatex refman
+{% else %}
+all: refman.dvi
+
+ps: refman.ps
+
+pdf: refman.pdf
+
+ps_2on1: refman_2on1.ps
+
+pdf_2on1: refman_2on1.pdf
+
+refman.ps: refman.dvi
+	dvips -o refman.ps refman.dvi
+
+refman.pdf: refman.ps
+	ps2pdf refman.ps refman.pdf
+
+refman.dvi: clean refman.tex doxygen.sty
+	echo "Running latex..."
+	{{ config.LATEX_CMD_NAME }} refman.tex
+	echo "Running makeindex..."
+	{{ config.MAKEINDEX_CMD_NAME }} refman.idx
+{# TODO: generateBib #}
+	echo "Rerunning latex...."
+	{{ config.LATEX_CMD_NAME }} refman.tex
+	latex_count=8 ; \
+	while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+	    do \
+	      echo "Rerunning latex...." ;\
+	      {{ config.LATEX_CMD_NAME }} refman.tex ;\
+	      latex_count=`expr $$latex_count - 1` ;\
+	    done
+	{{ config.MAKEINDEX_CMD_NAME }} refman.idx
+	{{ config.LATEX_CMD_NAME }} refman.tex
+
+refman_2on1.ps: refman.ps
+	psnup -2 refman.ps >refman_2on1.ps
+
+refman_2on1.pdf: refman_2on1.ps
+	ps2pdf refman_2on1.ps refman_2on1.pdf
+{% endif %}
+
+clean:
+	rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf
+
diff --git a/templates/latex/latexmodules.tpl b/templates/latex/latexmodules.tpl
new file mode 100644
index 0000000..a9a897d
--- /dev/null
+++ b/templates/latex/latexmodules.tpl
@@ -0,0 +1 @@
+<# TODO #>
diff --git a/templates/latex/latexnamespaces.tpl b/templates/latex/latexnamespaces.tpl
new file mode 100644
index 0000000..a9a897d
--- /dev/null
+++ b/templates/latex/latexnamespaces.tpl
@@ -0,0 +1 @@
+<# TODO #>
diff --git a/templates/latex/latexobjlink.tpl b/templates/latex/latexobjlink.tpl
new file mode 100644
index 0000000..89ecc2e
--- /dev/null
+++ b/templates/latex/latexobjlink.tpl
@@ -0,0 +1,6 @@
+<# inputs: obj, text #>
+<% if config.PDF_HYPERLINKS %>
+\hyperlink{<{ obj.fileName|raw }><% if obj.anchor %>_<{ obj.anchor }><% endif %>}{<{ text }>}
+<% else %>
+{\bf <{ text }>}
+<% endif %>
diff --git a/templates/latex/latexrefman.tpl b/templates/latex/latexrefman.tpl
new file mode 100644
index 0000000..b208177
--- /dev/null
+++ b/templates/latex/latexrefman.tpl
@@ -0,0 +1,227 @@
+\documentclass[twoside]{<% if config.COMPACT_LATEX %>article<% else %>book<% endif %>}
+
+% Packages required by doxygen
+\usepackage{fixltx2e}
+\usepackage{calc}
+\usepackage{doxygen}
+\usepackage[export]{adjustbox} % also loads graphicx
+<% for package in config.LATEX_EXTRA_STYLESHEET %>
+\usepackage{<{package|stripExtension:'.sty'}>}
+<% endfor %>
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage{makeidx}
+\usepackage{multicol}
+\usepackage{multirow}
+\PassOptionsToPackage{warn}{textcomp}
+\usepackage{textcomp}
+\usepackage[nointegrals]{wasysym}
+\usepackage[table]{xcolor}
+
+<# TODO: languageSupportCommand #>
+
+% Font selection
+\usepackage[T1]{fontenc}
+\usepackage[scaled=.90]{helvet}
+\usepackage{courier}
+\usepackage{amssymb}
+\usepackage{sectsty}
+\renewcommand{\familydefault}{\sfdefault}
+\allsectionsfont{
+  \fontseries{bc}\selectfont
+  \color{darkgray}
+}
+\renewcommand{\DoxyLabelFont}{
+  \fontseries{bc}\selectfont
+  \color{darkgray}
+}
+\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
+
+% Page & text layout
+\usepackage{geometry}
+\geometry{
+  <{ config.PAPER_TYPE }>paper,
+  top=2.5cm,
+  bottom=2.5cm,
+  left=2.5cm,
+  right=2.5cm
+}
+\tolerance=750
+\hfuzz=15pt
+\hbadness=750
+\setlength{\emergencystretch}{15pt}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{3ex plus 2ex minus 2ex}
+\makeatletter
+\renewcommand{\paragraph}{
+  \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{
+    \normalfont\normalsize\bfseries\SS at parafont
+  }
+}
+\renewcommand{\subparagraph}{
+  \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{
+    \normalfont\normalsize\bfseries\SS at subparafont
+  }
+}
+\makeatother
+
+% Headers & footers
+\usepackage{fancyhdr}
+\pagestyle{fancyplain}
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
+\fancyhead[CE]{\fancyplain{}{}}
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
+\fancyhead[CO]{\fancyplain{}{}}
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
+\fancyfoot[LE]{\fancyplain{}{}}
+\fancyfoot[CE]{\fancyplain{}{}}
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize <{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }>}}
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize <{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }>}}
+\fancyfoot[CO]{\fancyplain{}{}}
+\fancyfoot[RO]{\fancyplain{}{}}
+\renewcommand{\footrulewidth}{0.4pt}
+<% if not config.COMPACT_LATEX %>
+\renewcommand{\chaptermark}[1]{
+  \markboth{ #1}{}%
+}
+<% endif %>
+\renewcommand{\sectionmark}[1]{
+  \markright{\thesection\ #1}
+}
+
+% Indices & bibliography
+\usepackage{natbib}
+\usepackage[titles]{tocloft}
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{5}
+\makeindex
+
+<% if config.EXTRA_PACKAGES %>
+% Packages requested by user
+<% for package in config.EXTRA_PACKAGES %>
+\usepackage{<{ package }>}
+<% endfor %>
+<% endif %>
+
+<% if config.PDF_HYPERLINKS %>
+% Hyperlinks (required, but should be loaded last)
+\usepackage{ifpdf}
+\ifpdf
+  \usepackage[pdftex,pagebackref=true]{hyperref}
+\else
+  \usepackage[ps2pdf,pagebackref=true]{hyperref}
+\fi
+\hypersetup{
+  colorlinks=true,
+  linkcolor=blue,
+  citecolor=blue,
+  unicode
+}
+<% endif %>
+
+% Custom commands
+\newcommand{\clearemptydoublepage}{
+  \newpage{\pagestyle{empty}\cleardoublepage}
+}
+
+%===== C O N T E N T S =====
+
+\begin{document}
+<# TODO: select language for greek #>
+
+% Titlepage & ToC
+<% if config.USE_PDFLATEX and config.PDF_HYPERLINKS %>
+\hypersetup{pageanchor=false,
+             bookmarks=true,
+             bookmarksnumbered=true,
+             pdfencoding=unicode
+            }
+<% endif %>
+\pagenumbering{roman}
+\begin{titlepage}
+<% tabbing %>
+\vspace*{7cm}
+\begin{center}%
+{\Large
+<% if config.PROJECT_NAME %>
+  <{ config.PROJECT_NAME }>
+<% else %>
+  <{ tr.referenceManual }>
+<% endif %>
+<% if config.PROJECT_NUMBER %>
+\\[1ex]\large <{ config.PROJECT_NUMBER }>
+<% endif %>
+}\\
+\vspace*{1cm}{\large <{ tr.generatedBy }> Doxygen <{ doxygen.version }>}\\
+\vspace*{0.5cm}{\small <{ doxygen.date }>}\\
+\end{center}
+<% endtabbing %>
+\end{titlepage}
+<% if not config.COMPACT_LATEX %>\clearemptydoublepage<% endif %>
+
+\tableofcontents
+<% if not config.COMPACT_LATEX %>\clearemptydoublepage<% endif %>
+\pagenumbering{arabic}
+<% if config.USE_PDFLATEX and config.PDF_HYPERLINKS %>
+\hypersetup{pageanchor=true}
+<% endif %>
+
+%--- Begin generated contents ---
+<# TODO: loop over pages #>
+<% if moduleTree.tree %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.moduleIndex }>}
+\input{modules}
+<% endif %>
+<% if namespaceTree.tree %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.namespaceIndex }>}
+\input{namespaces}
+<% endif %>
+<% if classTree.tree %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.classIndex }>}
+\input{annotated}
+<% endif %>
+<% if fileTree.tree %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.fileIndex }>}
+\input{files}
+<% endif %>
+<% if moduleList %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.moduleDocumentation }>}
+<% for compound in moduleList %>
+\input{<{ compound.fileName|raw }>}
+<% endfor %>
+<% endif %>
+<% if namespaceList %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.namespaceDocumentation }>}
+<% for compound in namespaceList %>
+\input{<{ compound.fileName|raw }>}
+<% endfor %>
+<% endif %>
+<% if classList %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.classDocumentation }>}
+<% for compound in classList %>
+\input{<{ compound.fileName|raw }>}
+<% endfor %>
+<% endif %>
+<% if fileList %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.fileDocumentation }>}
+<% for compound in fileList %>
+\input{<{ compound.fileName|raw }>}
+<% endfor %>
+<% endif %>
+%--- End generated contents ---
+
+<# TODO: write bibliography #>
+% Index
+<% if not config.COMPACT_LATEX %>
+\backmatter
+<% endif %>
+\newpage
+\phantomsection
+\clearemptydoublepage
+\addcontentsline{toc}{<% if config.COMPACT_LATEX %>section<% else %>chapter<% endif %>}{<{ tr.index }>}
+\printindex
+
+\end{document}
+
+
diff --git a/templates/latex/latextypeconstraints.tpl b/templates/latex/latextypeconstraints.tpl
new file mode 100644
index 0000000..2853ab2
--- /dev/null
+++ b/templates/latex/latextypeconstraints.tpl
@@ -0,0 +1,12 @@
+<# obj should be a class or member #>
+<% msg %>type constraints = <{ obj.typeConstraints|length }><% endmsg %>
+<% if obj.typeConstraints %>
+\begin{Desc}
+\item[<{ tr.typeConstraints }>]
+\begin{description}
+<% for arg in obj.typeConstraints %>
+  \item[{\em <{ arg.name }>} : {\em <{ arg.type }>}] <{ arg.docs }>
+<% endfor %>
+\end{description}
+\end{Desc}
+<% endif %>
diff --git a/templates/xml/compound.xsd b/templates/xml/compound.xsd
index 50e532e..c960c7b 100644
--- a/templates/xml/compound.xsd
+++ b/templates/xml/compound.xsd
@@ -220,6 +220,7 @@
       <xsd:element name="defname" minOccurs="0" />
       <xsd:element name="array" minOccurs="0" />
       <xsd:element name="defval" type="linkedTextType" minOccurs="0" />
+      <xsd:element name="typeconstraint" type="linkedTextType" minOccurs="0" />
       <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
     </xsd:sequence>
   </xsd:complexType>
@@ -649,6 +650,7 @@
       <xsd:enumeration value="public-inheritance" />
       <xsd:enumeration value="protected-inheritance" />
       <xsd:enumeration value="private-inheritance" />
+      <xsd:enumeration value="type-constraint" />
     </xsd:restriction>
   </xsd:simpleType>
 
diff --git a/testing/009/class_bug.xml b/testing/009/class_bug.xml
index dc1ff06..5a770bb 100644
--- a/testing/009/class_bug.xml
+++ b/testing/009/class_bug.xml
@@ -32,7 +32,7 @@
         </xrefsect>
       </para>
     </detaileddescription>
-    <location file="009_bug.cpp" bodystart="15" bodyend="26"/>
+    <location file="009_bug.cpp" line="16" column="1" bodyfile="009_bug.cpp" bodystart="15" bodyend="26"/>
     <listofallmembers>
       <member refid="class_bug_1a1f720954dd97cd1203e80501a6eae74c" prot="public" virt="non-virtual">
         <scope>Bug</scope>
diff --git a/testing/009/class_deprecated.xml b/testing/009/class_deprecated.xml
index 53a6273..5d44aaf 100644
--- a/testing/009/class_deprecated.xml
+++ b/testing/009/class_deprecated.xml
@@ -30,7 +30,7 @@
         </xrefsect>
       </para>
     </detaileddescription>
-    <location file="009_bug.cpp" bodystart="29" bodyend="36"/>
+    <location file="009_bug.cpp" line="30" column="1" bodyfile="009_bug.cpp" bodystart="29" bodyend="36"/>
     <listofallmembers>
       <member refid="class_deprecated_1a1d5f6803e72c625727e7083d1722dbf9" prot="public" virt="non-virtual">
         <scope>Deprecated</scope>
diff --git a/testing/009/class_reminder.xml b/testing/009/class_reminder.xml
index c4f639e..379b3e7 100644
--- a/testing/009/class_reminder.xml
+++ b/testing/009/class_reminder.xml
@@ -37,7 +37,7 @@
         </xrefsect>
       </para>
     </detaileddescription>
-    <location file="009_bug.cpp" bodystart="55" bodyend="60"/>
+    <location file="009_bug.cpp" line="56" column="1" bodyfile="009_bug.cpp" bodystart="55" bodyend="60"/>
     <listofallmembers>
       <member refid="class_reminder_1a173b5218bb11287b0e86a550d9f0728d" prot="public" virt="non-virtual">
         <scope>Reminder</scope>
diff --git a/testing/009/class_test.xml b/testing/009/class_test.xml
index b9f7f9f..9f1b126 100644
--- a/testing/009/class_test.xml
+++ b/testing/009/class_test.xml
@@ -37,7 +37,7 @@
         </xrefsect>
       </para>
     </detaileddescription>
-    <location file="009_bug.cpp" bodystart="47" bodyend="52"/>
+    <location file="009_bug.cpp" line="48" column="1" bodyfile="009_bug.cpp" bodystart="47" bodyend="52"/>
     <listofallmembers>
       <member refid="class_test_1a9fc54b716f326514a4c5f434137f4fc0" prot="public" virt="non-virtual">
         <scope>Test</scope>
diff --git a/testing/009/class_todo.xml b/testing/009/class_todo.xml
index c98fdac..8657d60 100644
--- a/testing/009/class_todo.xml
+++ b/testing/009/class_todo.xml
@@ -37,7 +37,7 @@
         </xrefsect>
       </para>
     </detaileddescription>
-    <location file="009_bug.cpp" bodystart="39" bodyend="44"/>
+    <location file="009_bug.cpp" line="40" column="1" bodyfile="009_bug.cpp" bodystart="39" bodyend="44"/>
     <listofallmembers>
       <member refid="class_todo_1a9e70ec9176ac4c1b20e011b4daddc9d8" prot="public" virt="non-virtual">
         <scope>Todo</scope>
diff --git a/testing/011/category_integer_07_arithmetic_08.xml b/testing/011/category_integer_07_arithmetic_08.xml
index 73308db..78a8c0e 100644
--- a/testing/011/category_integer_07_arithmetic_08.xml
+++ b/testing/011/category_integer_07_arithmetic_08.xml
@@ -33,7 +33,7 @@
         <briefdescription>
         </briefdescription>
         <detaileddescription>
-          <para>substract operation </para>
+          <para>subtract operation </para>
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
@@ -45,7 +45,7 @@
     <detaileddescription>
       <para>A category </para>
     </detaileddescription>
-    <location file="011_category.m" bodystart="17" bodyend="-1"/>
+    <location file="011_category.m" line="17" column="1" bodyfile="011_category.m" bodystart="17" bodyend="-1"/>
     <listofallmembers>
       <member refid="category_integer_07_arithmetic_08_1a12f411c5872ba3bafb8ea7dd1826cf2a" prot="public" virt="virtual">
         <scope>Integer(Arithmetic)</scope>
diff --git a/testing/011/interface_integer.xml b/testing/011/interface_integer.xml
index e922dda..429c6a0 100644
--- a/testing/011/interface_integer.xml
+++ b/testing/011/interface_integer.xml
@@ -16,7 +16,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="011_category.m" bodystart="8" bodyend="-1"/>
+        <location file="011_category.m" line="8" column="1" bodyfile="011_category.m" bodystart="8" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <sectiondef kind="public-func">
@@ -80,7 +80,7 @@
         </childnode>
       </node>
     </collaborationgraph>
-    <location file="011_category.m" bodystart="6" bodyend="-1"/>
+    <location file="011_category.m" line="6" column="1" bodyfile="011_category.m" bodystart="6" bodyend="-1"/>
     <listofallmembers>
       <member refid="interface_integer_1a35e89216966d8179a1b77f14b8211fda" prot="protected" virt="non-virtual">
         <scope>Integer</scope>
diff --git a/testing/011_category.m b/testing/011_category.m
index 8cb4d3a..f57c1d1 100644
--- a/testing/011_category.m
+++ b/testing/011_category.m
@@ -17,7 +17,7 @@
 @interface Integer (Arithmetic)
 /** add operation */
 - (id) add: (Integer *) addend;
-/** substract operation */
+/** subtract operation */
 - (id) sub: (Integer *) subtrahend;
 @end
 
diff --git a/testing/012_cite.dox b/testing/012_cite.dox
index 9bcb2c5..94be5e7 100644
--- a/testing/012_cite.dox
+++ b/testing/012_cite.dox
@@ -1,7 +1,7 @@
 // objective: test the \cite command
 // check: indexpage.xml
 // check: citelist.xml
-// config: CITE_BIB_FILES = sample.bib
+// config: CITE_BIB_FILES = $INPUTDIR/sample.bib
 /** \mainpage
  *  See \cite knuth79 for more info.
  */
diff --git a/testing/013/class_t1.xml b/testing/013/class_t1.xml
index e0dc3a2..ba91621 100644
--- a/testing/013/class_t1.xml
+++ b/testing/013/class_t1.xml
@@ -8,7 +8,7 @@
     <detaileddescription>
       <para>A class </para>
     </detaileddescription>
-    <location file="013_class.h" bodystart="10" bodyend="12"/>
+    <location file="013_class.h" line="11" column="1" bodyfile="013_class.h" bodystart="10" bodyend="12"/>
     <listofallmembers>
     </listofallmembers>
   </compounddef>
diff --git a/testing/013/class_t2.xml b/testing/013/class_t2.xml
index ca534e6..9df47e2 100644
--- a/testing/013/class_t2.xml
+++ b/testing/013/class_t2.xml
@@ -8,7 +8,7 @@
     <detaileddescription>
       <para>class <ref refid="class_t2" kindref="compound">T2</ref> </para>
     </detaileddescription>
-    <location file="013_class.h" bodystart="14" bodyend="16"/>
+    <location file="013_class.h" line="15" column="1" bodyfile="013_class.h" bodystart="14" bodyend="16"/>
     <listofallmembers>
     </listofallmembers>
   </compounddef>
diff --git a/testing/013/class_t3.xml b/testing/013/class_t3.xml
index 2fba932..dc0cd3f 100644
--- a/testing/013/class_t3.xml
+++ b/testing/013/class_t3.xml
@@ -8,7 +8,7 @@
     <detaileddescription>
       <para>class <ref refid="class_t3" kindref="compound">T3</ref> </para>
     </detaileddescription>
-    <location file="013_class.h" bodystart="18" bodyend="20"/>
+    <location file="013_class.h" line="19" column="1" bodyfile="013_class.h" bodystart="18" bodyend="20"/>
     <listofallmembers>
     </listofallmembers>
   </compounddef>
diff --git a/testing/013/class_t4.xml b/testing/013/class_t4.xml
index 907049f..52955d2 100644
--- a/testing/013/class_t4.xml
+++ b/testing/013/class_t4.xml
@@ -8,7 +8,7 @@
     <detaileddescription>
       <para>class <ref refid="class_t4" kindref="compound">T4</ref> </para>
     </detaileddescription>
-    <location file="013_class.h" bodystart="22" bodyend="24"/>
+    <location file="013_class.h" line="23" column="1" bodyfile="013_class.h" bodystart="22" bodyend="24"/>
     <listofallmembers>
     </listofallmembers>
   </compounddef>
diff --git a/testing/015/015__cond_8c.xml b/testing/015/015__cond_8c.xml
index fb3a06c..43cf335 100644
--- a/testing/015/015__cond_8c.xml
+++ b/testing/015/015__cond_8c.xml
@@ -14,7 +14,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="015_cond.c" bodystart="20" bodyend="22"/>
+        <location file="015_cond.c" line="20" column="1" bodyfile="015_cond.c" bodystart="20" bodyend="22"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
diff --git a/testing/018/018__def_8c.xml b/testing/018/018__def_8c.xml
index 0b30670..8518666 100644
--- a/testing/018/018__def_8c.xml
+++ b/testing/018/018__def_8c.xml
@@ -40,7 +40,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="018_def.c" bodystart="13" bodyend="13"/>
+        <location file="018_def.c" line="13" column="1" bodyfile="018_def.c" bodystart="13" bodyend="13"/>
       </memberdef>
     </sectiondef>
     <sectiondef kind="typedef">
@@ -56,7 +56,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="018_def.c" bodystart="12" bodyend="-1"/>
+        <location file="018_def.c" line="12" column="1" bodyfile="018_def.c" bodystart="12" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <sectiondef kind="var">
@@ -73,7 +73,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="018_def.c" bodystart="9" bodyend="-1"/>
+        <location file="018_def.c" line="9" column="1" bodyfile="018_def.c" bodystart="9" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <sectiondef kind="func">
@@ -92,7 +92,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="018_def.c" bodystart="10" bodyend="10"/>
+        <location file="018_def.c" line="10" column="1" bodyfile="018_def.c" bodystart="10" bodyend="10"/>
       </memberdef>
       <memberdef kind="function" id="018__def_8c_1a2652ccbfb85efa2df3c70ba6c4628f8d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type>void</type>
@@ -112,7 +112,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="018_def.c" bodystart="11" bodyend="11"/>
+        <location file="018_def.c" line="11" column="1" bodyfile="018_def.c" bodystart="11" bodyend="11"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
diff --git a/testing/020/indexpage.xml b/testing/020/indexpage.xml
index 87ceb53..f7cd444 100644
--- a/testing/020/indexpage.xml
+++ b/testing/020/indexpage.xml
@@ -4,21 +4,9 @@
     <compoundname>index</compoundname>
     <title>My Project</title>
     <detaileddescription>
-      <para>Text. <htmlonly> 
-HTML
-</htmlonly> <htmlonly>
-HTML with block
-</htmlonly> <rtfonly> 
-RTF
-</rtfonly> <manonly> 
-Man
-</manonly> <latexonly> 
-LaTeX
-</latexonly>  
+      <para>Text. 
 XML
- <docbookonly> 
-DocBook
-</docbookonly> More text. </para>
+More text. </para>
     </detaileddescription>
   </compounddef>
 </doxygen>
diff --git a/testing/021_dontinclude.cpp b/testing/021_dontinclude.cpp
index 107991a..eeb95c5 100644
--- a/testing/021_dontinclude.cpp
+++ b/testing/021_dontinclude.cpp
@@ -1,6 +1,5 @@
 // objective: test the \dontinclude, \skip, \until, \skipline, \line commands
 // check: indexpage.xml
-// config: EXAMPLE_PATH = .
 /*! A test class. */
 
 class Test
diff --git a/testing/022_dot.cpp b/testing/022_dot.cpp
index 2db7c38..74d3f7a 100644
--- a/testing/022_dot.cpp
+++ b/testing/022_dot.cpp
@@ -1,7 +1,7 @@
 // objective: test the \dot and \enddot commands
 // check: indexpage.xml
 // config: HAVE_DOT = YES
-// config: DOTFILE_DIRS = .
+// config: DOTFILE_DIRS = $INPUTDIR
 
 /*! class B */
 class B {};
diff --git a/testing/025/class_test.xml b/testing/025/class_test.xml
index f0c7abd..c19341a 100644
--- a/testing/025/class_test.xml
+++ b/testing/025/class_test.xml
@@ -16,7 +16,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="025_example.cpp" bodystart="20" bodyend="20"/>
+        <location file="025_example.cpp" line="17" column="1" bodyfile="025_example.cpp" bodystart="20" bodyend="20"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
@@ -25,7 +25,7 @@
     <detaileddescription>
       <para>More details about this class. </para>
     </detaileddescription>
-    <location file="025_example.cpp" bodystart="10" bodyend="18"/>
+    <location file="025_example.cpp" line="11" column="1" bodyfile="025_example.cpp" bodystart="10" bodyend="18"/>
     <listofallmembers>
       <member refid="class_test_1a47b775f65718978f1ffcd96376f8ecfa" prot="public" virt="non-virtual">
         <scope>Test</scope>
diff --git a/testing/025_example.cpp b/testing/025_example.cpp
index 39736f8..817a47f 100644
--- a/testing/025_example.cpp
+++ b/testing/025_example.cpp
@@ -1,7 +1,7 @@
 // objective: test the \example command
 // check: example_test_8cpp-example.xml
 // check: class_test.xml
-// config: EXAMPLE_PATH = .
+
 
 /** \brief A Test class.
  *
diff --git a/testing/026/class_test.xml b/testing/026/class_test.xml
index a332757..582d509 100644
--- a/testing/026/class_test.xml
+++ b/testing/026/class_test.xml
@@ -41,7 +41,7 @@
       <para>A <ref refid="class_test" kindref="compound">Test</ref> class. More details about this class. <parameterlist kind="templateparam"><parameteritem><parameternamelist><parametername>T</parametername></parameternamelist><parameterdescription><para>A template parameter. </para></parameterdescription></parameteritem></parameterlist>
 </para>
     </detaileddescription>
-    <location file="026_exception.cpp" bodystart="8" bodyend="20"/>
+    <location file="026_exception.cpp" line="9" column="1" bodyfile="026_exception.cpp" bodystart="8" bodyend="20"/>
     <listofallmembers>
       <member refid="class_test_1abf9d5fbdaa4c23d0a513ee9746060779" prot="public" virt="non-virtual">
         <scope>Test</scope>
diff --git a/testing/027/struct_car.xml b/testing/027/struct_car.xml
index c73ad34..9027597 100644
--- a/testing/027/struct_car.xml
+++ b/testing/027/struct_car.xml
@@ -18,7 +18,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="027_extends.c" bodystart="69" bodyend="-1"/>
+        <location file="027_extends.c" line="69" column="1" bodyfile="027_extends.c" bodystart="69" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
@@ -68,7 +68,7 @@
         </childnode>
       </node>
     </collaborationgraph>
-    <location file="027_extends.c" bodystart="67" bodyend="70"/>
+    <location file="027_extends.c" line="68" column="1" bodyfile="027_extends.c" bodystart="67" bodyend="70"/>
     <listofallmembers>
       <member refid="struct_car_1ab8ff28306286da5a8b14fa9bdccaafaa" prot="protected" virt="non-virtual">
         <scope>Car</scope>
diff --git a/testing/027/struct_object.xml b/testing/027/struct_object.xml
index 4047446..e14caa5 100644
--- a/testing/027/struct_object.xml
+++ b/testing/027/struct_object.xml
@@ -16,7 +16,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="027_extends.c" bodystart="21" bodyend="-1"/>
+        <location file="027_extends.c" line="21" column="1" bodyfile="027_extends.c" bodystart="21" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <sectiondef kind="public-func">
@@ -86,7 +86,7 @@
         </childnode>
       </node>
     </inheritancegraph>
-    <location file="027_extends.c" bodystart="19" bodyend="22"/>
+    <location file="027_extends.c" line="20" column="1" bodyfile="027_extends.c" bodystart="19" bodyend="22"/>
     <listofallmembers>
       <member refid="struct_object_1a71225073d06a793b9a6ea9263ed37b12" prot="public" virt="non-virtual">
         <scope>Object</scope>
diff --git a/testing/027/struct_truck.xml b/testing/027/struct_truck.xml
index 14ebde2..c5009d4 100644
--- a/testing/027/struct_truck.xml
+++ b/testing/027/struct_truck.xml
@@ -18,7 +18,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="027_extends.c" bodystart="79" bodyend="-1"/>
+        <location file="027_extends.c" line="79" column="1" bodyfile="027_extends.c" bodystart="79" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
@@ -68,7 +68,7 @@
         <link refid="struct_object"/>
       </node>
     </collaborationgraph>
-    <location file="027_extends.c" bodystart="77" bodyend="80"/>
+    <location file="027_extends.c" line="78" column="1" bodyfile="027_extends.c" bodystart="77" bodyend="80"/>
     <listofallmembers>
       <member refid="struct_truck_1ad0ac321609dda1a6c552488b05ec7ac8" prot="protected" virt="non-virtual">
         <scope>Truck</scope>
diff --git a/testing/027/struct_vehicle.xml b/testing/027/struct_vehicle.xml
index bf480e8..acf10a0 100644
--- a/testing/027/struct_vehicle.xml
+++ b/testing/027/struct_vehicle.xml
@@ -20,7 +20,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="027_extends.c" bodystart="45" bodyend="-1"/>
+        <location file="027_extends.c" line="45" column="1" bodyfile="027_extends.c" bodystart="45" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <sectiondef kind="public-func">
@@ -105,7 +105,7 @@
         <link refid="struct_object"/>
       </node>
     </collaborationgraph>
-    <location file="027_extends.c" bodystart="43" bodyend="46"/>
+    <location file="027_extends.c" line="44" column="1" bodyfile="027_extends.c" bodystart="43" bodyend="46"/>
     <listofallmembers>
       <member refid="struct_vehicle_1ad7970f528d429f6fc1725173e93a77c2" prot="protected" virt="non-virtual">
         <scope>Vehicle</scope>
diff --git a/testing/029/029__hideinit_8c.xml b/testing/029/029__hideinit_8c.xml
index f5db794..4caf092 100644
--- a/testing/029/029__hideinit_8c.xml
+++ b/testing/029/029__hideinit_8c.xml
@@ -16,7 +16,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="029_hideinit.c" bodystart="7" bodyend="-1"/>
+        <location file="029_hideinit.c" line="7" column="1" bodyfile="029_hideinit.c" bodystart="7" bodyend="-1"/>
       </memberdef>
       <memberdef kind="variable" id="029__hideinit_8c_1ac0da06d47d79ad4b9fb1c0eaf1118c3f" prot="public" static="no" mutable="no">
         <type>int</type>
@@ -30,7 +30,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="029_hideinit.c" bodystart="12" bodyend="-1"/>
+        <location file="029_hideinit.c" line="12" column="1" bodyfile="029_hideinit.c" bodystart="12" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
diff --git a/testing/030_htmlinclude.dox b/testing/030_htmlinclude.dox
index a3716e6..a8e8af6 100644
--- a/testing/030_htmlinclude.dox
+++ b/testing/030_htmlinclude.dox
@@ -1,6 +1,5 @@
 // objective: test the \htmlinclude command
 // check: indexpage.xml
-// config: EXAMPLE_PATH = .
 /** \mainpage
  * Some text.
  * \htmlinclude sample.html
diff --git a/testing/031_image.dox b/testing/031_image.dox
index 96ba43b..f437086 100644
--- a/testing/031_image.dox
+++ b/testing/031_image.dox
@@ -1,6 +1,6 @@
 // objective: test the \image command
 // check: indexpage.xml
-// config: IMAGE_PATH = .
+// config: IMAGE_PATH = $INPUTDIR
 /** \mainpage
  * Some text.
  * \image html sample.png
diff --git a/testing/032_include.cpp b/testing/032_include.cpp
index 8aae8e9..2eddc57 100644
--- a/testing/032_include.cpp
+++ b/testing/032_include.cpp
@@ -1,6 +1,5 @@
 // objective: test the \include and \includelineno commands
 // check: indexpage.xml
-// config: EXAMPLE_PATH = .
 
 /** \mainpage 
  *  Some text.
diff --git a/testing/035/035__invariant_8c.xml b/testing/035/035__invariant_8c.xml
index f1a924d..b3d74bc 100644
--- a/testing/035/035__invariant_8c.xml
+++ b/testing/035/035__invariant_8c.xml
@@ -33,7 +33,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="035_invariant.c" bodystart="10" bodyend="15"/>
+        <location file="035_invariant.c" line="10" column="1" bodyfile="035_invariant.c" bodystart="10" bodyend="15"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
diff --git a/testing/037/class_receiver.xml b/testing/037/class_receiver.xml
index 5c4fde6..edb688a 100644
--- a/testing/037/class_receiver.xml
+++ b/testing/037/class_receiver.xml
@@ -32,7 +32,7 @@
 </msc>
  </para>
     </detaileddescription>
-    <location file="037_msc.cpp" bodystart="28" bodyend="33"/>
+    <location file="037_msc.cpp" line="29" column="1" bodyfile="037_msc.cpp" bodystart="28" bodyend="33"/>
     <listofallmembers>
       <member refid="class_receiver_1a162099741e0324e6254c9bc570566e40" prot="public" virt="non-virtual">
         <scope>Receiver</scope>
diff --git a/testing/037/class_sender.xml b/testing/037/class_sender.xml
index e58ab88..0f1996d 100644
--- a/testing/037/class_sender.xml
+++ b/testing/037/class_sender.xml
@@ -32,7 +32,7 @@
 </msc>
  </para>
     </detaileddescription>
-    <location file="037_msc.cpp" bodystart="13" bodyend="18"/>
+    <location file="037_msc.cpp" line="14" column="1" bodyfile="037_msc.cpp" bodystart="13" bodyend="18"/>
     <listofallmembers>
       <member refid="class_sender_1a8ad2c6f9baa4e798868fe4a4d45f8fda" prot="public" virt="non-virtual">
         <scope>Sender</scope>
diff --git a/testing/039/class_test.xml b/testing/039/class_test.xml
index 244e88d..2a4796a 100644
--- a/testing/039/class_test.xml
+++ b/testing/039/class_test.xml
@@ -55,7 +55,7 @@
     <detaileddescription>
       <para>More details about this class. </para>
     </detaileddescription>
-    <location file="039_name.cpp" bodystart="8" bodyend="24"/>
+    <location file="039_name.cpp" line="9" column="1" bodyfile="039_name.cpp" bodystart="8" bodyend="24"/>
     <listofallmembers>
       <member refid="class_test_1a78e37a450a276b60a5a2fa4a46c86f2e" prot="public" virt="non-virtual">
         <scope>Test</scope>
diff --git a/testing/041/class_test.xml b/testing/041/class_test.xml
index 7068026..57dbe37 100644
--- a/testing/041/class_test.xml
+++ b/testing/041/class_test.xml
@@ -31,7 +31,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="041_overload.cpp" bodystart="12" bodyend="12"/>
+        <location file="041_overload.cpp" line="7" column="1" bodyfile="041_overload.cpp" bodystart="12" bodyend="12"/>
       </memberdef>
       <memberdef kind="function" id="class_test_1ae87a6e26707e684c0d2d07bb3d4a9d7f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type>void</type>
@@ -49,7 +49,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="041_overload.cpp" bodystart="13" bodyend="13"/>
+        <location file="041_overload.cpp" line="8" column="1" bodyfile="041_overload.cpp" bodystart="13" bodyend="13"/>
       </memberdef>
       <memberdef kind="function" id="class_test_1a62a76eed05fa84633d1e460aeeaf875d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type>void</type>
@@ -72,7 +72,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="041_overload.cpp" bodystart="18" bodyend="18"/>
+        <location file="041_overload.cpp" line="9" column="1" bodyfile="041_overload.cpp" bodystart="18" bodyend="18"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
@@ -81,7 +81,7 @@
     <detaileddescription>
       <para>More text. </para>
     </detaileddescription>
-    <location file="041_overload.cpp" bodystart="4" bodyend="10"/>
+    <location file="041_overload.cpp" line="5" column="1" bodyfile="041_overload.cpp" bodystart="4" bodyend="10"/>
     <listofallmembers>
       <member refid="class_test_1a8e7b46ceaf7bd2ab94114b390b3288ca" prot="public" virt="non-virtual">
         <scope>Test</scope>
diff --git a/testing/044/struct_s.xml b/testing/044/struct_s.xml
index 2aa62c2..aefd50d 100644
--- a/testing/044/struct_s.xml
+++ b/testing/044/struct_s.xml
@@ -16,7 +16,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="044_section.h" bodystart="10" bodyend="-1"/>
+        <location file="044_section.h" line="10" column="1" bodyfile="044_section.h" bodystart="10" bodyend="-1"/>
       </memberdef>
       <memberdef kind="variable" id="struct_s_1a413054db7785010db38c16322c8583cc" prot="public" static="no" mutable="no">
         <type>int</type>
@@ -30,7 +30,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="044_section.h" bodystart="12" bodyend="-1"/>
+        <location file="044_section.h" line="12" column="1" bodyfile="044_section.h" bodystart="12" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <sectiondef kind="protected-attrib">
@@ -46,7 +46,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="044_section.h" bodystart="17" bodyend="-1"/>
+        <location file="044_section.h" line="17" column="1" bodyfile="044_section.h" bodystart="17" bodyend="-1"/>
       </memberdef>
       <memberdef kind="variable" id="struct_s_1a0c535a6122f4ae509a336e3a67f927a4" prot="protected" static="no" mutable="no">
         <type>int</type>
@@ -60,7 +60,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="044_section.h" bodystart="19" bodyend="-1"/>
+        <location file="044_section.h" line="19" column="1" bodyfile="044_section.h" bodystart="19" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <sectiondef kind="private-attrib">
@@ -76,7 +76,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="044_section.h" bodystart="24" bodyend="-1"/>
+        <location file="044_section.h" line="24" column="1" bodyfile="044_section.h" bodystart="24" bodyend="-1"/>
       </memberdef>
       <memberdef kind="variable" id="struct_s_1a4b26822a09bcd6b946702e99280826ff" prot="private" static="no" mutable="no">
         <type>int</type>
@@ -90,7 +90,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="044_section.h" bodystart="26" bodyend="-1"/>
+        <location file="044_section.h" line="26" column="1" bodyfile="044_section.h" bodystart="26" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
@@ -98,7 +98,7 @@
     <detaileddescription>
       <para>A struct </para>
     </detaileddescription>
-    <location file="044_section.h" bodystart="5" bodyend="27"/>
+    <location file="044_section.h" line="6" column="1" bodyfile="044_section.h" bodystart="5" bodyend="27"/>
     <listofallmembers>
       <member refid="struct_s_1ab754fee7e3500035f644d0ac528cbfc3" prot="private" virt="non-virtual">
         <scope>S</scope>
diff --git a/testing/046/class_test.xml b/testing/046/class_test.xml
index 62712d4..9a1bd9c 100644
--- a/testing/046/class_test.xml
+++ b/testing/046/class_test.xml
@@ -61,7 +61,7 @@
       <para>A test class <simplesect kind="see"><para><ref refid="class_test_1a1683da699dc049d74101488d143c8e98" kindref="member">Test::method()</ref></para></simplesect>
 </para>
     </detaileddescription>
-    <location file="046_related.cpp" bodystart="10" bodyend="15"/>
+    <location file="046_related.cpp" line="11" column="1" bodyfile="046_related.cpp" bodystart="10" bodyend="15"/>
     <listofallmembers>
       <member refid="class_test_1a1283d836e0611ff772c1b06a31ecbbfe" prot="public" virt="non-virtual">
         <scope>Test</scope>
diff --git a/testing/048/048__showinit_8c.xml b/testing/048/048__showinit_8c.xml
index 34b2c1c..4cc5717 100644
--- a/testing/048/048__showinit_8c.xml
+++ b/testing/048/048__showinit_8c.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="048_showinit.c" bodystart="8" bodyend="-1"/>
+        <location file="048_showinit.c" line="8" column="1" bodyfile="048_showinit.c" bodystart="8" bodyend="-1"/>
       </memberdef>
       <memberdef kind="variable" id="048__showinit_8c_1ac0da06d47d79ad4b9fb1c0eaf1118c3f" prot="public" static="no" mutable="no">
         <type>int</type>
@@ -30,7 +30,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="048_showinit.c" bodystart="13" bodyend="-1"/>
+        <location file="048_showinit.c" line="13" column="1" bodyfile="048_showinit.c" bodystart="13" bodyend="-1"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
diff --git a/testing/049/indexpage.xml b/testing/049/indexpage.xml
index 0f3a63b..a6c9b97 100644
--- a/testing/049/indexpage.xml
+++ b/testing/049/indexpage.xml
@@ -4,7 +4,7 @@
     <compoundname>index</compoundname>
     <title>My Project</title>
     <detaileddescription>
-      <para>A bubble sort algoritm First get the inputs <programlisting><codeline><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i=0<sp/>;<sp/>i<n<sp/>;<sp/>i++)</highlight></codeline><codeline><highlight class="normal"><sp/><sp/>{</highlight></codeline><codeline><highlight class="normal"><sp/><sp/><sp/><sp/>printf(</highlight><highlight class="stringliteral">"<sp/>Array[%d]<sp/>=<sp/>"</highlight><highlight cla [...]
+      <para>A bubble sort algorithm First get the inputs <programlisting><codeline><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal">(i=0<sp/>;<sp/>i<n<sp/>;<sp/>i++)</highlight></codeline><codeline><highlight class="normal"><sp/><sp/>{</highlight></codeline><codeline><highlight class="normal"><sp/><sp/><sp/><sp/>printf(</highlight><highlight class="stringliteral">"<sp/>Array[%d]<sp/>=<sp/>"</highlight><highlight cl [...]
     </detaileddescription>
   </compounddef>
 </doxygen>
diff --git a/testing/049_snippet.cpp b/testing/049_snippet.cpp
index 2749a62..9c5f18b 100644
--- a/testing/049_snippet.cpp
+++ b/testing/049_snippet.cpp
@@ -1,9 +1,8 @@
 // objective: test the \snippet command
 // check: indexpage.xml
-// config: EXAMPLE_PATH = .
 
 /** \mainpage
- *  A bubble sort algoritm
+ *  A bubble sort algorithm
  *  First get the inputs
  *  \snippet snippet_test.cpp input
  *  Then do the bubbling
diff --git a/testing/050_verbatim.dox b/testing/050_verbatim.dox
index 0ff315f..40c75a5 100644
--- a/testing/050_verbatim.dox
+++ b/testing/050_verbatim.dox
@@ -1,6 +1,5 @@
 // objective: test \verbatim and \verbinclude commands
 // check: indexpage.xml
-// config: EXAMPLE_PATH = .
 /** 
 \mainpage 
 Some normal text.
diff --git a/testing/051/indexpage.xml b/testing/051/indexpage.xml
index 4f13f56..82c58cc 100644
--- a/testing/051/indexpage.xml
+++ b/testing/051/indexpage.xml
@@ -4,7 +4,7 @@
     <compoundname>index</compoundname>
     <title>My Project</title>
     <detaileddescription>
-      <para>Dollar $ At @ Backslash \ Amphasand & Less < Greater > Hash # Percent % Quote " Dot . Double colon :: Pipe | </para>
+      <para>Dollar $ At @ Backslash \ Amphasand & Less < Greater > Hash # Percent % Quote " Dot . Double colon :: Pipe | Plus + Minus - </para>
     </detaileddescription>
   </compounddef>
 </doxygen>
diff --git a/testing/051_escape.dox b/testing/051_escape.dox
index 1497ad1..290b298 100644
--- a/testing/051_escape.dox
+++ b/testing/051_escape.dox
@@ -14,5 +14,7 @@ Quote \"
 Dot \.
 Double colon \::
 Pipe \|
+Plus \+
+Minus \-
 
 */
diff --git a/testing/056_latexinclude.dox b/testing/056_latexinclude.dox
index 6a8052a..021b2f7 100644
--- a/testing/056_latexinclude.dox
+++ b/testing/056_latexinclude.dox
@@ -1,6 +1,5 @@
 // objective: test the \latexinclude command
 // check: indexpage.xml
-// config: EXAMPLE_PATH = .
 /** \mainpage
  * Some text.
  * \latexinclude sample.tex
diff --git a/testing/057/057__caller__graphs_8tcl.xml b/testing/057/057__caller__graphs_8tcl.xml
index c3dfb78..1046e30 100644
--- a/testing/057/057__caller__graphs_8tcl.xml
+++ b/testing/057/057__caller__graphs_8tcl.xml
@@ -24,7 +24,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="59" bodyend="61"/>
+        <location file="057_caller_graphs.tcl" line="59" column="1" bodyfile="057_caller_graphs.tcl" bodystart="59" bodyend="61"/>
       </memberdef>
       <memberdef kind="function" id="057__caller__graphs_8tcl_1ae4e1c2bb3adfdfbb71f52de84a8285b0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type/>
@@ -37,7 +37,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="65" bodyend="67"/>
+        <location file="057_caller_graphs.tcl" line="65" column="1" bodyfile="057_caller_graphs.tcl" bodystart="65" bodyend="67"/>
         <referencedby refid="namespace1_1a9722420639306872cea2593b83028a45" compoundref="057__caller__graphs_8tcl" startline="85" endline="88">1::test3</referencedby>
       </memberdef>
       <memberdef kind="function" id="057__caller__graphs_8tcl_1a3f808a00e1b937978455d707851ab33a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -51,7 +51,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="102" bodyend="105"/>
+        <location file="057_caller_graphs.tcl" line="102" column="1" bodyfile="057_caller_graphs.tcl" bodystart="102" bodyend="105"/>
         <references refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="106" endline="114">2::next</references>
       </memberdef>
       <memberdef kind="function" id="057__caller__graphs_8tcl_1a12acb916374f925e7b7ba302a1ca4efb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -65,7 +65,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="136" bodyend="140"/>
+        <location file="057_caller_graphs.tcl" line="136" column="1" bodyfile="057_caller_graphs.tcl" bodystart="136" bodyend="140"/>
         <references refid="__057__caller__graphs_8tcl_1a7c3c8acee94bf61ba9e911dafe35adac" compoundref="__057__caller__graphs_8tcl" startline="1" endline="4">inFileB</references>
       </memberdef>
       <memberdef kind="function" id="057__caller__graphs_8tcl_1a7482c00c17357cf4846b0c1bd715979c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -79,7 +79,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="141" bodyend="144"/>
+        <location file="057_caller_graphs.tcl" line="141" column="1" bodyfile="057_caller_graphs.tcl" bodystart="141" bodyend="144"/>
         <referencedby refid="__057__caller__graphs_8tcl_1a7c3c8acee94bf61ba9e911dafe35adac" compoundref="__057__caller__graphs_8tcl" startline="1" endline="4">inFileB</referencedby>
       </memberdef>
     </sectiondef>
diff --git a/testing/057/__057__caller__graphs_8tcl.xml b/testing/057/__057__caller__graphs_8tcl.xml
index 48ab815..a71e7b5 100644
--- a/testing/057/__057__caller__graphs_8tcl.xml
+++ b/testing/057/__057__caller__graphs_8tcl.xml
@@ -14,7 +14,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="_057_caller_graphs.tcl" bodystart="1" bodyend="4"/>
+        <location file="_057_caller_graphs.tcl" line="1" column="1" bodyfile="_057_caller_graphs.tcl" bodystart="1" bodyend="4"/>
         <references refid="057__caller__graphs_8tcl_1a7482c00c17357cf4846b0c1bd715979c" compoundref="057__caller__graphs_8tcl" startline="141" endline="144">inFileA</references>
         <referencedby refid="057__caller__graphs_8tcl_1a12acb916374f925e7b7ba302a1ca4efb" compoundref="057__caller__graphs_8tcl" startline="136" endline="140">master</referencedby>
       </memberdef>
diff --git a/testing/057/namespace1.xml b/testing/057/namespace1.xml
index 6a40cc4..33d073d 100644
--- a/testing/057/namespace1.xml
+++ b/testing/057/namespace1.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="62" bodyend="64"/>
+        <location file="057_caller_graphs.tcl" line="62" column="1" bodyfile="057_caller_graphs.tcl" bodystart="62" bodyend="64"/>
         <referencedby refid="namespace1_1a4a8285288ee1994ac886e2039777339e" compoundref="057__caller__graphs_8tcl" startline="77" endline="80">test1</referencedby>
         <referencedby refid="namespace1_1a11615154d3c207ed4106dd0bcb0639e8" compoundref="057__caller__graphs_8tcl" startline="93" endline="96">test5</referencedby>
       </memberdef>
@@ -30,7 +30,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="68" bodyend="70"/>
+        <location file="057_caller_graphs.tcl" line="68" column="1" bodyfile="057_caller_graphs.tcl" bodystart="68" bodyend="70"/>
         <referencedby refid="namespace1_1ae1e88bb7ddd332348d7e29ac4a211b00" compoundref="057__caller__graphs_8tcl" startline="81" endline="84">test2</referencedby>
       </memberdef>
       <memberdef kind="function" id="namespace1_1a4a8285288ee1994ac886e2039777339e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -44,7 +44,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="77" bodyend="80"/>
+        <location file="057_caller_graphs.tcl" line="77" column="1" bodyfile="057_caller_graphs.tcl" bodystart="77" bodyend="80"/>
         <references refid="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" compoundref="057__caller__graphs_8tcl" startline="62" endline="64">baz</references>
       </memberdef>
       <memberdef kind="function" id="namespace1_1ae1e88bb7ddd332348d7e29ac4a211b00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -58,7 +58,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="81" bodyend="84"/>
+        <location file="057_caller_graphs.tcl" line="81" column="1" bodyfile="057_caller_graphs.tcl" bodystart="81" bodyend="84"/>
         <references refid="namespace1_1ad58c8f16ad5f12178c71ca988865bb58" compoundref="057__caller__graphs_8tcl" startline="68" endline="70">bar</references>
       </memberdef>
       <memberdef kind="function" id="namespace1_1a9722420639306872cea2593b83028a45" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -72,7 +72,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="85" bodyend="88"/>
+        <location file="057_caller_graphs.tcl" line="85" column="1" bodyfile="057_caller_graphs.tcl" bodystart="85" bodyend="88"/>
         <references refid="057__caller__graphs_8tcl_1ae4e1c2bb3adfdfbb71f52de84a8285b0" compoundref="057__caller__graphs_8tcl" startline="65" endline="67">bar</references>
       </memberdef>
       <memberdef kind="function" id="namespace1_1addc9b30656419de5e2651e27a013db29" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -86,7 +86,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="89" bodyend="92"/>
+        <location file="057_caller_graphs.tcl" line="89" column="1" bodyfile="057_caller_graphs.tcl" bodystart="89" bodyend="92"/>
         <references refid="namespace1_1_11_1acebecc4cb718010d00c3c150158b75ab" compoundref="057__caller__graphs_8tcl" startline="71" endline="73">1::1::bar</references>
       </memberdef>
       <memberdef kind="function" id="namespace1_1a11615154d3c207ed4106dd0bcb0639e8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -100,7 +100,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="93" bodyend="96"/>
+        <location file="057_caller_graphs.tcl" line="93" column="1" bodyfile="057_caller_graphs.tcl" bodystart="93" bodyend="96"/>
         <references refid="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" compoundref="057__caller__graphs_8tcl" startline="62" endline="64">baz</references>
       </memberdef>
     </sectiondef>
diff --git a/testing/057/namespace1_1_11.xml b/testing/057/namespace1_1_11.xml
index 8ff3ce9..e13e261 100644
--- a/testing/057/namespace1_1_11.xml
+++ b/testing/057/namespace1_1_11.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="71" bodyend="73"/>
+        <location file="057_caller_graphs.tcl" line="71" column="1" bodyfile="057_caller_graphs.tcl" bodystart="71" bodyend="73"/>
         <referencedby refid="namespace1_1addc9b30656419de5e2651e27a013db29" compoundref="057__caller__graphs_8tcl" startline="89" endline="92">1::test4</referencedby>
       </memberdef>
     </sectiondef>
diff --git a/testing/057/namespace1_1_11_1_11.xml b/testing/057/namespace1_1_11_1_11.xml
index f7f9716..55b7838 100644
--- a/testing/057/namespace1_1_11_1_11.xml
+++ b/testing/057/namespace1_1_11_1_11.xml
@@ -14,7 +14,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="74" bodyend="76"/>
+        <location file="057_caller_graphs.tcl" line="74" column="1" bodyfile="057_caller_graphs.tcl" bodystart="74" bodyend="76"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
diff --git a/testing/057/namespace2.xml b/testing/057/namespace2.xml
index 0ce04a8..a8a9bc6 100644
--- a/testing/057/namespace2.xml
+++ b/testing/057/namespace2.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="106" bodyend="114"/>
+        <location file="057_caller_graphs.tcl" line="106" column="1" bodyfile="057_caller_graphs.tcl" bodystart="106" bodyend="114"/>
         <references refid="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" compoundref="057__caller__graphs_8tcl" startline="115" endline="118">2::2::next</references>
         <referencedby refid="057__caller__graphs_8tcl_1a3f808a00e1b937978455d707851ab33a" compoundref="057__caller__graphs_8tcl" startline="102" endline="105">next</referencedby>
         <referencedby refid="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" compoundref="057__caller__graphs_8tcl" startline="127" endline="130">2::2::2::2::2::next</referencedby>
diff --git a/testing/057/namespace2_1_12.xml b/testing/057/namespace2_1_12.xml
index af86ebe..a188f00 100644
--- a/testing/057/namespace2_1_12.xml
+++ b/testing/057/namespace2_1_12.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="115" bodyend="118"/>
+        <location file="057_caller_graphs.tcl" line="115" column="1" bodyfile="057_caller_graphs.tcl" bodystart="115" bodyend="118"/>
         <references refid="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" compoundref="057__caller__graphs_8tcl" startline="119" endline="122">2::2::2::next</references>
         <referencedby refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="106" endline="114">2::next</referencedby>
       </memberdef>
diff --git a/testing/057/namespace2_1_12_1_12.xml b/testing/057/namespace2_1_12_1_12.xml
index 0a6d7fa..e83b3fd 100644
--- a/testing/057/namespace2_1_12_1_12.xml
+++ b/testing/057/namespace2_1_12_1_12.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="119" bodyend="122"/>
+        <location file="057_caller_graphs.tcl" line="119" column="1" bodyfile="057_caller_graphs.tcl" bodystart="119" bodyend="122"/>
         <references refid="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" compoundref="057__caller__graphs_8tcl" startline="123" endline="126">2::2::2::2::next</references>
         <referencedby refid="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" compoundref="057__caller__graphs_8tcl" startline="115" endline="118">2::2::next</referencedby>
       </memberdef>
diff --git a/testing/057/namespace2_1_12_1_12_1_12.xml b/testing/057/namespace2_1_12_1_12_1_12.xml
index 461d61e..83c2a73 100644
--- a/testing/057/namespace2_1_12_1_12_1_12.xml
+++ b/testing/057/namespace2_1_12_1_12_1_12.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="123" bodyend="126"/>
+        <location file="057_caller_graphs.tcl" line="123" column="1" bodyfile="057_caller_graphs.tcl" bodystart="123" bodyend="126"/>
         <references refid="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" compoundref="057__caller__graphs_8tcl" startline="127" endline="130">2::2::2::2::2::next</references>
         <referencedby refid="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" compoundref="057__caller__graphs_8tcl" startline="119" endline="122">2::2::2::next</referencedby>
       </memberdef>
diff --git a/testing/057/namespace2_1_12_1_12_1_12_1_12.xml b/testing/057/namespace2_1_12_1_12_1_12_1_12.xml
index 3981ff0..9222625 100644
--- a/testing/057/namespace2_1_12_1_12_1_12_1_12.xml
+++ b/testing/057/namespace2_1_12_1_12_1_12_1_12.xml
@@ -14,7 +14,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="127" bodyend="130"/>
+        <location file="057_caller_graphs.tcl" line="127" column="1" bodyfile="057_caller_graphs.tcl" bodystart="127" bodyend="130"/>
         <references refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="106" endline="114">2::next</references>
         <referencedby refid="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" compoundref="057__caller__graphs_8tcl" startline="123" endline="126">2::2::2::2::next</referencedby>
       </memberdef>
diff --git a/testing/057/namespacebar.xml b/testing/057/namespacebar.xml
index 85cde41..e16966e 100644
--- a/testing/057/namespacebar.xml
+++ b/testing/057/namespacebar.xml
@@ -14,7 +14,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="29" bodyend="35"/>
+        <location file="057_caller_graphs.tcl" line="29" column="1" bodyfile="057_caller_graphs.tcl" bodystart="29" bodyend="35"/>
         <references refid="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" compoundref="057__caller__graphs_8tcl" startline="36" endline="39">baz</references>
         <referencedby refid="namespacefoo_1a265acdcaea6da32c3bbd9afb5d0e32a4" compoundref="057__caller__graphs_8tcl" startline="44" endline="48">foo::master</referencedby>
       </memberdef>
@@ -29,7 +29,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="36" bodyend="39"/>
+        <location file="057_caller_graphs.tcl" line="36" column="1" bodyfile="057_caller_graphs.tcl" bodystart="36" bodyend="39"/>
         <references refid="namespacebar_1a88879545dee287d377e638b87cdf6dd7" compoundref="057__caller__graphs_8tcl" startline="40" endline="42">bazbaz</references>
         <referencedby refid="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" compoundref="057__caller__graphs_8tcl" startline="29" endline="35">slave</referencedby>
       </memberdef>
@@ -44,7 +44,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="40" bodyend="42"/>
+        <location file="057_caller_graphs.tcl" line="40" column="1" bodyfile="057_caller_graphs.tcl" bodystart="40" bodyend="42"/>
         <referencedby refid="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" compoundref="057__caller__graphs_8tcl" startline="36" endline="39">baz</referencedby>
       </memberdef>
     </sectiondef>
diff --git a/testing/057/namespacefoo.xml b/testing/057/namespacefoo.xml
index 0d81332..8d0ac75 100644
--- a/testing/057/namespacefoo.xml
+++ b/testing/057/namespacefoo.xml
@@ -14,7 +14,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="057_caller_graphs.tcl" bodystart="44" bodyend="48"/>
+        <location file="057_caller_graphs.tcl" line="44" column="1" bodyfile="057_caller_graphs.tcl" bodystart="44" bodyend="48"/>
         <references refid="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" compoundref="057__caller__graphs_8tcl" startline="29" endline="35">bar::slave</references>
       </memberdef>
     </sectiondef>
diff --git a/testing/057_caller_graphs.tcl b/testing/057_caller_graphs.tcl
index f6e0e77..464d8aa 100644
--- a/testing/057_caller_graphs.tcl
+++ b/testing/057_caller_graphs.tcl
@@ -15,7 +15,7 @@
 #// config: INLINE_SOURCES = no
 #// config: REFERENCED_BY_RELATION = yes
 #// config: REFERENCES_RELATION = yes
-#// config: INPUT = 057_caller_graphs.tcl _057_caller_graphs.tcl
+#// config: INPUT = $INPUTDIR/057_caller_graphs.tcl $INPUTDIR/_057_caller_graphs.tcl
 # config: HAVE_DOT = yes
 # config: CALLER_GRAPH = yes
 # config: CALL_GRAPH = yes
diff --git a/testing/058/058__bracket__recursion_8tcl.xml b/testing/058/058__bracket__recursion_8tcl.xml
index dcb60e4..0381b83 100644
--- a/testing/058/058__bracket__recursion_8tcl.xml
+++ b/testing/058/058__bracket__recursion_8tcl.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="10" bodyend="13"/>
+        <location file="058_bracket_recursion.tcl" line="10" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="10" bodyend="13"/>
         <referencedby refid="058__bracket__recursion_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" compoundref="058__bracket__recursion_8tcl" startline="22" endline="25">a</referencedby>
         <referencedby refid="058__bracket__recursion_8tcl_1a68bdb74c144118d936931c46f75d4b3e" compoundref="058__bracket__recursion_8tcl" startline="28" endline="32">b</referencedby>
         <referencedby refid="058__bracket__recursion_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" compoundref="058__bracket__recursion_8tcl" startline="33" endline="37">c</referencedby>
@@ -51,7 +51,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="16" bodyend="19"/>
+        <location file="058_bracket_recursion.tcl" line="16" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="16" bodyend="19"/>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type/>
@@ -64,7 +64,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="22" bodyend="25"/>
+        <location file="058_bracket_recursion.tcl" line="22" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="22" bodyend="25"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a68bdb74c144118d936931c46f75d4b3e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -78,7 +78,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="28" bodyend="32"/>
+        <location file="058_bracket_recursion.tcl" line="28" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="28" bodyend="32"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -92,7 +92,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="33" bodyend="37"/>
+        <location file="058_bracket_recursion.tcl" line="33" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="33" bodyend="37"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1af43f4b1f0064a33b2d662af9f06d3a00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -106,7 +106,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="38" bodyend="42"/>
+        <location file="058_bracket_recursion.tcl" line="38" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="38" bodyend="42"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1aff65a51a703804e0ad1adbcfd76c86f8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -120,7 +120,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="43" bodyend="46"/>
+        <location file="058_bracket_recursion.tcl" line="43" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="43" bodyend="46"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1af6830d2c644b45088ea8f1f74a46b778" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -134,7 +134,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="47" bodyend="50"/>
+        <location file="058_bracket_recursion.tcl" line="47" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="47" bodyend="50"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1af08b4b5bfa9edf0b0a7dee1c2b2c29e0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -148,7 +148,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="51" bodyend="55"/>
+        <location file="058_bracket_recursion.tcl" line="51" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="51" bodyend="55"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1af96fd0966e32a310a0778d2e5c357700" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -162,7 +162,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="56" bodyend="59"/>
+        <location file="058_bracket_recursion.tcl" line="56" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="56" bodyend="59"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a8c90afd4641b25be86bd09983c3cbee0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -176,7 +176,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="64" bodyend="68"/>
+        <location file="058_bracket_recursion.tcl" line="64" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="64" bodyend="68"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a2aaa92757686acea102cba3475f0c13b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -190,7 +190,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="69" bodyend="73"/>
+        <location file="058_bracket_recursion.tcl" line="69" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="69" bodyend="73"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a20363f854eb4098a446733d63d34dbc1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -204,7 +204,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="74" bodyend="77"/>
+        <location file="058_bracket_recursion.tcl" line="74" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="74" bodyend="77"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1aff56f84b49947b84b2a304f51cf8e678" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -218,7 +218,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="78" bodyend="81"/>
+        <location file="058_bracket_recursion.tcl" line="78" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="78" bodyend="81"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a78d127e8bda64d4471ac811ad512fbd9" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -232,7 +232,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="82" bodyend="85"/>
+        <location file="058_bracket_recursion.tcl" line="82" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="82" bodyend="85"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1acdde3cd86eb2421ce8dbb2e85227d368" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -246,7 +246,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="86" bodyend="89"/>
+        <location file="058_bracket_recursion.tcl" line="86" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="86" bodyend="89"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a495e7a4ede0831107e9d435080a7c268" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -260,7 +260,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="90" bodyend="94"/>
+        <location file="058_bracket_recursion.tcl" line="90" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="90" bodyend="94"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a8a57650834f5708d404e9c386b2edf87" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -274,7 +274,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="98" bodyend="101"/>
+        <location file="058_bracket_recursion.tcl" line="98" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="98" bodyend="101"/>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a15229b450f26d8fa1c10bea4f3279f4d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type/>
@@ -287,7 +287,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="102" bodyend="107"/>
+        <location file="058_bracket_recursion.tcl" line="102" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="102" bodyend="107"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1ab678a0a9a7e94bce5b17141f40220d88" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -301,7 +301,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="108" bodyend="114"/>
+        <location file="058_bracket_recursion.tcl" line="108" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="108" bodyend="114"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a0a0bd3dc69dd06934c4e6362155e0ace" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -315,7 +315,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="115" bodyend="120"/>
+        <location file="058_bracket_recursion.tcl" line="115" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="115" bodyend="120"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a011c73f2dbb87635a3b4206c72355f6e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -329,7 +329,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="121" bodyend="126"/>
+        <location file="058_bracket_recursion.tcl" line="121" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="121" bodyend="126"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a69e959f6901827e4d8271aeaa5fba0fc" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -343,7 +343,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="128" bodyend="131"/>
+        <location file="058_bracket_recursion.tcl" line="128" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="128" bodyend="131"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a2fb1c5cf58867b5bbc9a1b145a86f3a0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -357,7 +357,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="137" bodyend="142"/>
+        <location file="058_bracket_recursion.tcl" line="137" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="137" bodyend="142"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="058__bracket__recursion_8tcl_1a25ed1bcb423b0b7200f485fc5ff71c8e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -371,7 +371,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="058_bracket_recursion.tcl" bodystart="143" bodyend="148"/>
+        <location file="058_bracket_recursion.tcl" line="143" column="1" bodyfile="058_bracket_recursion.tcl" bodystart="143" bodyend="148"/>
         <references refid="058__bracket__recursion_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="058__bracket__recursion_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
     </sectiondef>
diff --git a/testing/059/059__command__catch_8tcl.xml b/testing/059/059__command__catch_8tcl.xml
index a12a366..b5e5c96 100644
--- a/testing/059/059__command__catch_8tcl.xml
+++ b/testing/059/059__command__catch_8tcl.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="10" bodyend="13"/>
+        <location file="059_command_catch.tcl" line="10" column="1" bodyfile="059_command_catch.tcl" bodystart="10" bodyend="13"/>
         <referencedby refid="059__command__catch_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" compoundref="059__command__catch_8tcl" startline="22" endline="25">a</referencedby>
         <referencedby refid="059__command__catch_8tcl_1a68bdb74c144118d936931c46f75d4b3e" compoundref="059__command__catch_8tcl" startline="29" endline="32">b</referencedby>
         <referencedby refid="059__command__catch_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" compoundref="059__command__catch_8tcl" startline="33" endline="36">c</referencedby>
@@ -39,7 +39,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="16" bodyend="19"/>
+        <location file="059_command_catch.tcl" line="16" column="1" bodyfile="059_command_catch.tcl" bodystart="16" bodyend="19"/>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type/>
@@ -52,7 +52,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="22" bodyend="25"/>
+        <location file="059_command_catch.tcl" line="22" column="1" bodyfile="059_command_catch.tcl" bodystart="22" bodyend="25"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1a68bdb74c144118d936931c46f75d4b3e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -66,7 +66,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="29" bodyend="32"/>
+        <location file="059_command_catch.tcl" line="29" column="1" bodyfile="059_command_catch.tcl" bodystart="29" bodyend="32"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -80,7 +80,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="33" bodyend="36"/>
+        <location file="059_command_catch.tcl" line="33" column="1" bodyfile="059_command_catch.tcl" bodystart="33" bodyend="36"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1af43f4b1f0064a33b2d662af9f06d3a00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -94,7 +94,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="37" bodyend="40"/>
+        <location file="059_command_catch.tcl" line="37" column="1" bodyfile="059_command_catch.tcl" bodystart="37" bodyend="40"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1aff65a51a703804e0ad1adbcfd76c86f8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -108,7 +108,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="41" bodyend="44"/>
+        <location file="059_command_catch.tcl" line="41" column="1" bodyfile="059_command_catch.tcl" bodystart="41" bodyend="44"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1af6830d2c644b45088ea8f1f74a46b778" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -122,7 +122,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="45" bodyend="48"/>
+        <location file="059_command_catch.tcl" line="45" column="1" bodyfile="059_command_catch.tcl" bodystart="45" bodyend="48"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1af08b4b5bfa9edf0b0a7dee1c2b2c29e0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -136,7 +136,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="49" bodyend="54"/>
+        <location file="059_command_catch.tcl" line="49" column="1" bodyfile="059_command_catch.tcl" bodystart="49" bodyend="54"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1af96fd0966e32a310a0778d2e5c357700" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -150,7 +150,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="56" bodyend="59"/>
+        <location file="059_command_catch.tcl" line="56" column="1" bodyfile="059_command_catch.tcl" bodystart="56" bodyend="59"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1a8c90afd4641b25be86bd09983c3cbee0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -164,7 +164,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="60" bodyend="63"/>
+        <location file="059_command_catch.tcl" line="60" column="1" bodyfile="059_command_catch.tcl" bodystart="60" bodyend="63"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="059__command__catch_8tcl_1a2aaa92757686acea102cba3475f0c13b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -178,7 +178,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="059_command_catch.tcl" bodystart="75" bodyend="78"/>
+        <location file="059_command_catch.tcl" line="75" column="1" bodyfile="059_command_catch.tcl" bodystart="75" bodyend="78"/>
         <references refid="059__command__catch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="059__command__catch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
     </sectiondef>
diff --git a/testing/060/060__command__switch_8tcl.xml b/testing/060/060__command__switch_8tcl.xml
index f1792f4..2def3fc 100644
--- a/testing/060/060__command__switch_8tcl.xml
+++ b/testing/060/060__command__switch_8tcl.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="10" bodyend="13"/>
+        <location file="060_command_switch.tcl" line="10" column="1" bodyfile="060_command_switch.tcl" bodystart="10" bodyend="13"/>
         <referencedby refid="060__command__switch_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" compoundref="060__command__switch_8tcl" startline="22" endline="25">a</referencedby>
         <referencedby refid="060__command__switch_8tcl_1a68bdb74c144118d936931c46f75d4b3e" compoundref="060__command__switch_8tcl" startline="29" endline="36">b</referencedby>
         <referencedby refid="060__command__switch_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" compoundref="060__command__switch_8tcl" startline="37" endline="43">c</referencedby>
@@ -48,7 +48,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="16" bodyend="19"/>
+        <location file="060_command_switch.tcl" line="16" column="1" bodyfile="060_command_switch.tcl" bodystart="16" bodyend="19"/>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1ab08ae027fc5777bc4f0629f1b60b35db" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type/>
@@ -61,7 +61,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="22" bodyend="25"/>
+        <location file="060_command_switch.tcl" line="22" column="1" bodyfile="060_command_switch.tcl" bodystart="22" bodyend="25"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a68bdb74c144118d936931c46f75d4b3e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -75,7 +75,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="29" bodyend="36"/>
+        <location file="060_command_switch.tcl" line="29" column="1" bodyfile="060_command_switch.tcl" bodystart="29" bodyend="36"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1ab14f56bc3bd7680490ece4ad7815465f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -89,7 +89,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="37" bodyend="43"/>
+        <location file="060_command_switch.tcl" line="37" column="1" bodyfile="060_command_switch.tcl" bodystart="37" bodyend="43"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1af43f4b1f0064a33b2d662af9f06d3a00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -103,7 +103,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="44" bodyend="50"/>
+        <location file="060_command_switch.tcl" line="44" column="1" bodyfile="060_command_switch.tcl" bodystart="44" bodyend="50"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1aff65a51a703804e0ad1adbcfd76c86f8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -117,7 +117,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="51" bodyend="57"/>
+        <location file="060_command_switch.tcl" line="51" column="1" bodyfile="060_command_switch.tcl" bodystart="51" bodyend="57"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1af6830d2c644b45088ea8f1f74a46b778" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -131,7 +131,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="58" bodyend="65"/>
+        <location file="060_command_switch.tcl" line="58" column="1" bodyfile="060_command_switch.tcl" bodystart="58" bodyend="65"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1af08b4b5bfa9edf0b0a7dee1c2b2c29e0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -145,7 +145,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="66" bodyend="73"/>
+        <location file="060_command_switch.tcl" line="66" column="1" bodyfile="060_command_switch.tcl" bodystart="66" bodyend="73"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1af96fd0966e32a310a0778d2e5c357700" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -159,7 +159,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="74" bodyend="81"/>
+        <location file="060_command_switch.tcl" line="74" column="1" bodyfile="060_command_switch.tcl" bodystart="74" bodyend="81"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a8c90afd4641b25be86bd09983c3cbee0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -173,7 +173,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="83" bodyend="94"/>
+        <location file="060_command_switch.tcl" line="83" column="1" bodyfile="060_command_switch.tcl" bodystart="83" bodyend="94"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a2aaa92757686acea102cba3475f0c13b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -187,7 +187,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="95" bodyend="106"/>
+        <location file="060_command_switch.tcl" line="95" column="1" bodyfile="060_command_switch.tcl" bodystart="95" bodyend="106"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a20363f854eb4098a446733d63d34dbc1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -201,7 +201,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="107" bodyend="118"/>
+        <location file="060_command_switch.tcl" line="107" column="1" bodyfile="060_command_switch.tcl" bodystart="107" bodyend="118"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1aff56f84b49947b84b2a304f51cf8e678" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -215,7 +215,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="119" bodyend="129"/>
+        <location file="060_command_switch.tcl" line="119" column="1" bodyfile="060_command_switch.tcl" bodystart="119" bodyend="129"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a78d127e8bda64d4471ac811ad512fbd9" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -229,7 +229,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="130" bodyend="141"/>
+        <location file="060_command_switch.tcl" line="130" column="1" bodyfile="060_command_switch.tcl" bodystart="130" bodyend="141"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1acdde3cd86eb2421ce8dbb2e85227d368" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -243,7 +243,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="142" bodyend="153"/>
+        <location file="060_command_switch.tcl" line="142" column="1" bodyfile="060_command_switch.tcl" bodystart="142" bodyend="153"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a495e7a4ede0831107e9d435080a7c268" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -257,7 +257,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="154" bodyend="165"/>
+        <location file="060_command_switch.tcl" line="154" column="1" bodyfile="060_command_switch.tcl" bodystart="154" bodyend="165"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a15229b450f26d8fa1c10bea4f3279f4d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -271,7 +271,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="166" bodyend="175"/>
+        <location file="060_command_switch.tcl" line="166" column="1" bodyfile="060_command_switch.tcl" bodystart="166" bodyend="175"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1ab678a0a9a7e94bce5b17141f40220d88" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -285,7 +285,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="176" bodyend="185"/>
+        <location file="060_command_switch.tcl" line="176" column="1" bodyfile="060_command_switch.tcl" bodystart="176" bodyend="185"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a0a0bd3dc69dd06934c4e6362155e0ace" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -299,7 +299,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="186" bodyend="195"/>
+        <location file="060_command_switch.tcl" line="186" column="1" bodyfile="060_command_switch.tcl" bodystart="186" bodyend="195"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
       <memberdef kind="function" id="060__command__switch_8tcl_1a011c73f2dbb87635a3b4206c72355f6e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -313,7 +313,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="060_command_switch.tcl" bodystart="196" bodyend="205"/>
+        <location file="060_command_switch.tcl" line="196" column="1" bodyfile="060_command_switch.tcl" bodystart="196" bodyend="205"/>
         <references refid="060__command__switch_8tcl_1aa889853547f65a22ae133cd57ff89601" compoundref="060__command__switch_8tcl" startline="10" endline="13">Invoked</references>
       </memberdef>
     </sectiondef>
diff --git a/testing/061/class_test.xml b/testing/061/class_test.xml
index b233e9c..47e70ac 100644
--- a/testing/061/class_test.xml
+++ b/testing/061/class_test.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="061_bug_705503.tcl" bodystart="12" bodyend="12"/>
+        <location file="061_bug_705503.tcl" line="12" column="1" bodyfile="061_bug_705503.tcl" bodystart="12" bodyend="12"/>
       </memberdef>
       <memberdef kind="function" id="class_test_1ac7148d2852b30d157e078fe0fe58a350" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type/>
@@ -29,7 +29,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="061_bug_705503.tcl" bodystart="16" bodyend="16"/>
+        <location file="061_bug_705503.tcl" line="16" column="1" bodyfile="061_bug_705503.tcl" bodystart="16" bodyend="16"/>
       </memberdef>
       <memberdef kind="function" id="class_test_1abdf3375950ec49e29f4bae947b7e3f26" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
         <type/>
@@ -43,7 +43,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="061_bug_705503.tcl" bodystart="19" bodyend="19"/>
+        <location file="061_bug_705503.tcl" line="19" column="1" bodyfile="061_bug_705503.tcl" bodystart="19" bodyend="19"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
@@ -51,7 +51,7 @@
     </briefdescription>
     <detaileddescription>
     </detaileddescription>
-    <location file="061_bug_705503.tcl" bodystart="10" bodyend="13"/>
+    <location file="061_bug_705503.tcl" line="10" column="1" bodyfile="061_bug_705503.tcl" bodystart="10" bodyend="13"/>
     <listofallmembers>
       <member refid="class_test_1ac7148d2852b30d157e078fe0fe58a350" prot="public" virt="non-virtual">
         <scope>Test</scope>
diff --git a/testing/062/namespacen1.xml b/testing/062/namespacen1.xml
index a31fc29..408ef87 100644
--- a/testing/062/namespacen1.xml
+++ b/testing/062/namespacen1.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="062_namespace_resolution.tcl" bodystart="12" bodyend="16"/>
+        <location file="062_namespace_resolution.tcl" line="12" column="1" bodyfile="062_namespace_resolution.tcl" bodystart="12" bodyend="16"/>
         <references refid="namespacen1_1a0bff29f718fa43e49b7ca79985afb5fa" compoundref="062__namespace__resolution_8tcl" startline="17" endline="20">p2</references>
       </memberdef>
       <memberdef kind="function" id="namespacen1_1a0bff29f718fa43e49b7ca79985afb5fa" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -29,7 +29,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="062_namespace_resolution.tcl" bodystart="17" bodyend="20"/>
+        <location file="062_namespace_resolution.tcl" line="17" column="1" bodyfile="062_namespace_resolution.tcl" bodystart="17" bodyend="20"/>
         <referencedby refid="namespacen1_1a9f23d7a7f141915457e8e26023d70cb4" compoundref="062__namespace__resolution_8tcl" startline="12" endline="16">p1</referencedby>
       </memberdef>
     </sectiondef>
diff --git a/testing/062/namespacen2.xml b/testing/062/namespacen2.xml
index 29c4d80..f545576 100644
--- a/testing/062/namespacen2.xml
+++ b/testing/062/namespacen2.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="062_namespace_resolution.tcl" bodystart="31" bodyend="35"/>
+        <location file="062_namespace_resolution.tcl" line="31" column="1" bodyfile="062_namespace_resolution.tcl" bodystart="31" bodyend="35"/>
         <references refid="namespacen2_1a49fadfbefa795204a3c566ec76ff632f" compoundref="062__namespace__resolution_8tcl" startline="36" endline="39">p2</references>
       </memberdef>
       <memberdef kind="function" id="namespacen2_1a49fadfbefa795204a3c566ec76ff632f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -29,7 +29,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="062_namespace_resolution.tcl" bodystart="36" bodyend="39"/>
+        <location file="062_namespace_resolution.tcl" line="36" column="1" bodyfile="062_namespace_resolution.tcl" bodystart="36" bodyend="39"/>
         <referencedby refid="namespacen2_1a74950c0185232e374220a0707b4903c6" compoundref="062__namespace__resolution_8tcl" startline="31" endline="35">p1</referencedby>
       </memberdef>
     </sectiondef>
diff --git a/testing/062/namespacen3.xml b/testing/062/namespacen3.xml
index bfc1364..f8c2fb5 100644
--- a/testing/062/namespacen3.xml
+++ b/testing/062/namespacen3.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="062_namespace_resolution.tcl" bodystart="47" bodyend="51"/>
+        <location file="062_namespace_resolution.tcl" line="47" column="1" bodyfile="062_namespace_resolution.tcl" bodystart="47" bodyend="51"/>
         <references refid="namespacen3_1a14e9fe1b27a6d36db9ace2eef4509979" compoundref="062__namespace__resolution_8tcl" startline="52" endline="55">p2</references>
       </memberdef>
       <memberdef kind="function" id="namespacen3_1a14e9fe1b27a6d36db9ace2eef4509979" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
@@ -29,7 +29,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="062_namespace_resolution.tcl" bodystart="52" bodyend="55"/>
+        <location file="062_namespace_resolution.tcl" line="52" column="1" bodyfile="062_namespace_resolution.tcl" bodystart="52" bodyend="55"/>
         <referencedby refid="namespacen3_1ae7e87e49507bd56dad087cffecd35b29" compoundref="062__namespace__resolution_8tcl" startline="47" endline="51">p1</referencedby>
       </memberdef>
     </sectiondef>
diff --git a/testing/063/namespaceoo_1_1_helpers.xml b/testing/063/namespaceoo_1_1_helpers.xml
index 40b4830..e9083dc 100644
--- a/testing/063/namespaceoo_1_1_helpers.xml
+++ b/testing/063/namespaceoo_1_1_helpers.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="063_bug_729092.tcl" bodystart="34" bodyend="43"/>
+        <location file="063_bug_729092.tcl" line="34" column="1" bodyfile="063_bug_729092.tcl" bodystart="34" bodyend="43"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
diff --git a/testing/063/namespaceoo_1_1define.xml b/testing/063/namespaceoo_1_1define.xml
index 214b705..69c05d0 100644
--- a/testing/063/namespaceoo_1_1define.xml
+++ b/testing/063/namespaceoo_1_1define.xml
@@ -15,7 +15,7 @@
         </detaileddescription>
         <inbodydescription>
         </inbodydescription>
-        <location file="063_bug_729092.tcl" bodystart="18" bodyend="27"/>
+        <location file="063_bug_729092.tcl" line="18" column="1" bodyfile="063_bug_729092.tcl" bodystart="18" bodyend="27"/>
       </memberdef>
     </sectiondef>
     <briefdescription>
diff --git a/testing/064/struct_foo.xml b/testing/064/struct_foo.xml
index 3765625..d2bed81 100644
--- a/testing/064/struct_foo.xml
+++ b/testing/064/struct_foo.xml
@@ -97,7 +97,7 @@
         </itemizedlist>
       </para>
     </detaileddescription>
-    <location file="064_castoperator.cpp" bodystart="20" bodyend="25"/>
+    <location file="064_castoperator.cpp" line="20" column="1" bodyfile="064_castoperator.cpp" bodystart="20" bodyend="25"/>
     <listofallmembers>
       <member refid="struct_foo_1aab9774d892b6cd4a0fbebd034b4c1fad" prot="public" virt="non-virtual">
         <scope>Foo</scope>
diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt
new file mode 100644
index 0000000..21df5ab
--- /dev/null
+++ b/testing/CMakeLists.txt
@@ -0,0 +1,9 @@
+find_program(XMLLINT NAMES xmllint)
+find_program(DIFF NAMES diff)
+
+add_custom_target(tests
+	COMMENT "Running doxygen tests..."
+        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --all --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
+	DEPENDS doxygen
+)
+
diff --git a/testing/Makefile b/testing/Makefile
deleted file mode 100644
index f40107f..0000000
--- a/testing/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-tests: 
-	@perl runtests.pl --doxygen ../bin/doxygen
-
diff --git a/testing/README b/testing/README.txt
similarity index 79%
rename from testing/README
rename to testing/README.txt
index 993ff48..ee3de59 100644
--- a/testing/README
+++ b/testing/README.txt
@@ -1,18 +1,18 @@
 Doxygen regession test suite
 ============================
 
-This directory contains a set of regression tests. Each test consists of a 
-file starting with a 3 digit number and a corresponding directory whose name 
-has the same 3 digit number. The directory contains one or more reference 
-files that are compared against the XML output produced by doxygen. If the 
-result is the same, there is no regression and the test passes. If there is a 
+This directory contains a set of regression tests. Each test consists of a
+file starting with a 3 digit number and a corresponding directory whose name
+has the same 3 digit number. The directory contains one or more reference
+files that are compared against the XML output produced by doxygen. If the
+result is the same, there is no regression and the test passes. If there is a
 difference the test fails and the difference (in diff -u format) will be shown.
 
-The runtest.pl script responsible for running the tests takes a number of 
+The runtest.py script responsible for running the tests takes a number of
 optional parameters:
--id n:        run test with number n only (the option may be specified 
+-id n:        run test with number n only (the option may be specified
               multiple times) default is to run all tests.
--updateref:   update the reference files. Should be used in combination 
+-updateref:   update the reference files. Should be used in combination
               with -id to update the reference file(s) for the given test.
 -all:         can be used in combination with -updateref to update the
               reference files for all tests.
@@ -20,29 +20,29 @@ optional parameters:
 -xmllint exe: run the specified xmllint executable.
 
 The runtest.pl has the following dependenies on 3rd party tools:
-- perl    to run the script
+- python  to run the script
 - xmllint to normalize the XML output
 - diff    to show the differences in case a test fails
- 
+
 Each test file can have a number of special comment lines that are extracted by
 the runtest.pl script and take the form:
-// <identifier>: 'argument' 
+// <identifier>: 'argument'
 Where <identifier> can be one of:
 - objective: 'argument' provides the objective for the test (i.e. its purpose)
-- check:     'argument' names a file that is generated by doxygen, which should 
+- check:     'argument' names a file that is generated by doxygen, which should
              be compared against the reference.
 - config:    'argument' is a line that is added to the default Doxyfile used to
              run doxygen on the test file.
 
 Example to run all tests:
-    perl runtest.pl
+    python runtest.py
 
 Example to run a test
-    perl runtest.pl -id 10
+    python runtest.py -id 10
 
 Example to update the reference files for a test
-    perl runtest.pl -updateref -id 10
+    python runtest.py -updateref -id 10
 
-There is also a Makefile, which can be used to run all tests by simply
-invoking make.
+There is also a CMakeLists.txt, which can be used from the build directory
+to run all tests by simply invoking 'make tests'.
 
diff --git a/testing/debug.txt b/testing/debug.txt
deleted file mode 100644
index 377b307..0000000
--- a/testing/debug.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
-ASSERT: "m_numDecMembers!=-1" in ./memberlist.h (52)
diff --git a/testing/html/063__bug__729092_8tcl.html b/testing/html/063__bug__729092_8tcl.html
deleted file mode 100644
index ca5fe3d..0000000
--- a/testing/html/063__bug__729092_8tcl.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: 063_bug_729092.tcl File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">063_bug_729092.tcl File Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr class="memitem:namespaceoo_1_1define"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoo_1_1define.html">oo::define</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:namespaceoo_1_1_helpers"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoo_1_1_helpers.html">oo::Helpers</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a89e7ea222a316f1926c1f9f30f2cc5c1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoo_1_1define.html#a89e7ea222a316f1926c1f9f30f2cc5c1">oo::define::classmethod</a> name?args??body?</td></tr>
-<tr class="separator:a89e7ea222a316f1926c1f9f30f2cc5c1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a96c5b755588beb2e930cff23ce811d6c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoo_1_1_helpers.html#a96c5b755588beb2e930cff23ce811d6c">oo::Helpers::classvar</a> args</td></tr>
-<tr class="separator:a96c5b755588beb2e930cff23ce811d6c"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/arrowdown.png b/testing/html/arrowdown.png
deleted file mode 100644
index 0b63f6d..0000000
Binary files a/testing/html/arrowdown.png and /dev/null differ
diff --git a/testing/html/arrowright.png b/testing/html/arrowright.png
deleted file mode 100644
index c6ee22f..0000000
Binary files a/testing/html/arrowright.png and /dev/null differ
diff --git a/testing/html/bc_s.png b/testing/html/bc_s.png
deleted file mode 100644
index 224b29a..0000000
Binary files a/testing/html/bc_s.png and /dev/null differ
diff --git a/testing/html/bdwn.png b/testing/html/bdwn.png
deleted file mode 100644
index 940a0b9..0000000
Binary files a/testing/html/bdwn.png and /dev/null differ
diff --git a/testing/html/closed.png b/testing/html/closed.png
deleted file mode 100644
index 98cc2c9..0000000
Binary files a/testing/html/closed.png and /dev/null differ
diff --git a/testing/html/doc.png b/testing/html/doc.png
deleted file mode 100644
index 17edabf..0000000
Binary files a/testing/html/doc.png and /dev/null differ
diff --git a/testing/html/doxygen.css b/testing/html/doxygen.css
deleted file mode 100644
index a000833..0000000
--- a/testing/html/doxygen.css
+++ /dev/null
@@ -1,1449 +0,0 @@
-/* The standard CSS for doxygen 1.8.9.1 */
-
-body, table, div, p, dl {
-	font: 400 14px/22px Roboto,sans-serif;
-}
-
-/* @group Heading Levels */
-
-h1.groupheader {
-	font-size: 150%;
-}
-
-.title {
-	font: 400 14px/28px Roboto,sans-serif;
-	font-size: 150%;
-	font-weight: bold;
-	margin: 10px 2px;
-}
-
-h2.groupheader {
-	border-bottom: 1px solid #879ECB;
-	color: #354C7B;
-	font-size: 150%;
-	font-weight: normal;
-	margin-top: 1.75em;
-	padding-top: 8px;
-	padding-bottom: 4px;
-	width: 100%;
-}
-
-h3.groupheader {
-	font-size: 100%;
-}
-
-h1, h2, h3, h4, h5, h6 {
-	-webkit-transition: text-shadow 0.5s linear;
-	-moz-transition: text-shadow 0.5s linear;
-	-ms-transition: text-shadow 0.5s linear;
-	-o-transition: text-shadow 0.5s linear;
-	transition: text-shadow 0.5s linear;
-	margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
-	text-shadow: 0 0 15px cyan;
-}
-
-dt {
-	font-weight: bold;
-}
-
-div.multicol {
-	-moz-column-gap: 1em;
-	-webkit-column-gap: 1em;
-	-moz-column-count: 3;
-	-webkit-column-count: 3;
-}
-
-p.startli, p.startdd {
-	margin-top: 2px;
-}
-
-p.starttd {
-	margin-top: 0px;
-}
-
-p.endli {
-	margin-bottom: 0px;
-}
-
-p.enddd {
-	margin-bottom: 4px;
-}
-
-p.endtd {
-	margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
-	font-weight: bold;
-}
-
-span.legend {
-        font-size: 70%;
-        text-align: center;
-}
-
-h3.version {
-        font-size: 90%;
-        text-align: center;
-}
-
-div.qindex, div.navtab{
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-}
-
-div.qindex, div.navpath {
-	width: 100%;
-	line-height: 140%;
-}
-
-div.navtab {
-	margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
-	color: #3D578C;
-	font-weight: normal;
-	text-decoration: none;
-}
-
-.contents a:visited {
-	color: #4665A2;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-a.qindex {
-	font-weight: bold;
-}
-
-a.qindexHL {
-	font-weight: bold;
-	background-color: #9CAFD4;
-	color: #ffffff;
-	border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
-        color: #ffffff;
-}
-
-a.el {
-	font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code, a.code:visited, a.line, a.line:visited {
-	color: #4665A2; 
-}
-
-a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
-	color: #4665A2; 
-}
-
-/* @end */
-
-dl.el {
-	margin-left: -1cm;
-}
-
-pre.fragment {
-        border: 1px solid #C4CFE5;
-        background-color: #FBFCFD;
-        padding: 4px 6px;
-        margin: 4px 8px 4px 2px;
-        overflow: auto;
-        word-wrap: break-word;
-        font-size:  9pt;
-        line-height: 125%;
-        font-family: monospace, fixed;
-        font-size: 105%;
-}
-
-div.fragment {
-        padding: 4px 6px;
-        margin: 4px 8px 4px 2px;
-	background-color: #FBFCFD;
-	border: 1px solid #C4CFE5;
-}
-
-div.line {
-	font-family: monospace, fixed;
-        font-size: 13px;
-	min-height: 13px;
-	line-height: 1.0;
-	text-wrap: unrestricted;
-	white-space: -moz-pre-wrap; /* Moz */
-	white-space: -pre-wrap;     /* Opera 4-6 */
-	white-space: -o-pre-wrap;   /* Opera 7 */
-	white-space: pre-wrap;      /* CSS3  */
-	word-wrap: break-word;      /* IE 5.5+ */
-	text-indent: -53px;
-	padding-left: 53px;
-	padding-bottom: 0px;
-	margin: 0px;
-	-webkit-transition-property: background-color, box-shadow;
-	-webkit-transition-duration: 0.5s;
-	-moz-transition-property: background-color, box-shadow;
-	-moz-transition-duration: 0.5s;
-	-ms-transition-property: background-color, box-shadow;
-	-ms-transition-duration: 0.5s;
-	-o-transition-property: background-color, box-shadow;
-	-o-transition-duration: 0.5s;
-	transition-property: background-color, box-shadow;
-	transition-duration: 0.5s;
-}
-
-div.line.glow {
-	background-color: cyan;
-	box-shadow: 0 0 10px cyan;
-}
-
-
-span.lineno {
-	padding-right: 4px;
-	text-align: right;
-	border-right: 2px solid #0F0;
-	background-color: #E8E8E8;
-        white-space: pre;
-}
-span.lineno a {
-	background-color: #D8D8D8;
-}
-
-span.lineno a:hover {
-	background-color: #C8C8C8;
-}
-
-div.ah, span.ah {
-	background-color: black;
-	font-weight: bold;
-	color: #ffffff;
-	margin-bottom: 3px;
-	margin-top: 3px;
-	padding: 0.2em;
-	border: solid thin #333;
-	border-radius: 0.5em;
-	-webkit-border-radius: .5em;
-	-moz-border-radius: .5em;
-	box-shadow: 2px 2px 3px #999;
-	-webkit-box-shadow: 2px 2px 3px #999;
-	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
-	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.classindex ul {
-        list-style: none;
-        padding-left: 0;
-}
-
-div.classindex span.ai {
-        display: inline-block;
-}
-
-div.groupHeader {
-	margin-left: 16px;
-	margin-top: 12px;
-	font-weight: bold;
-}
-
-div.groupText {
-	margin-left: 16px;
-	font-style: italic;
-}
-
-body {
-	background-color: white;
-	color: black;
-        margin: 0;
-}
-
-div.contents {
-	margin-top: 10px;
-	margin-left: 12px;
-	margin-right: 8px;
-}
-
-td.indexkey {
-	background-color: #EBEFF6;
-	font-weight: bold;
-	border: 1px solid #C4CFE5;
-	margin: 2px 0px 2px 0;
-	padding: 2px 10px;
-        white-space: nowrap;
-        vertical-align: top;
-}
-
-td.indexvalue {
-	background-color: #EBEFF6;
-	border: 1px solid #C4CFE5;
-	padding: 2px 10px;
-	margin: 2px 0px;
-}
-
-tr.memlist {
-	background-color: #EEF1F7;
-}
-
-p.formulaDsp {
-	text-align: center;
-}
-
-img.formulaDsp {
-	
-}
-
-img.formulaInl {
-	vertical-align: middle;
-}
-
-div.center {
-	text-align: center;
-        margin-top: 0px;
-        margin-bottom: 0px;
-        padding: 0px;
-}
-
-div.center img {
-	border: 0px;
-}
-
-address.footer {
-	text-align: right;
-	padding-right: 12px;
-}
-
-img.footer {
-	border: 0px;
-	vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
-	color: #008000
-}
-
-span.keywordtype {
-	color: #604020
-}
-
-span.keywordflow {
-	color: #e08000
-}
-
-span.comment {
-	color: #800000
-}
-
-span.preprocessor {
-	color: #806020
-}
-
-span.stringliteral {
-	color: #002080
-}
-
-span.charliteral {
-	color: #008080
-}
-
-span.vhdldigit { 
-	color: #ff00ff 
-}
-
-span.vhdlchar { 
-	color: #000000 
-}
-
-span.vhdlkeyword { 
-	color: #700070 
-}
-
-span.vhdllogic { 
-	color: #ff0000 
-}
-
-blockquote {
-        background-color: #F7F8FB;
-        border-left: 2px solid #9CAFD4;
-        margin: 0 24px 0 4px;
-        padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-/*
-.search {
-	color: #003399;
-	font-weight: bold;
-}
-
-form.search {
-	margin-bottom: 0px;
-	margin-top: 0px;
-}
-
-input.search {
-	font-size: 75%;
-	color: #000080;
-	font-weight: normal;
-	background-color: #e8eef2;
-}
-*/
-
-td.tiny {
-	font-size: 75%;
-}
-
-.dirtab {
-	padding: 4px;
-	border-collapse: collapse;
-	border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
-	background: #EBEFF6;
-	font-weight: bold;
-}
-
-hr {
-	height: 0px;
-	border: none;
-	border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
-	height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
-	border-spacing: 0px;
-	padding: 0px;
-}
-
-.memberdecls td, .fieldtable tr {
-	-webkit-transition-property: background-color, box-shadow;
-	-webkit-transition-duration: 0.5s;
-	-moz-transition-property: background-color, box-shadow;
-	-moz-transition-duration: 0.5s;
-	-ms-transition-property: background-color, box-shadow;
-	-ms-transition-duration: 0.5s;
-	-o-transition-property: background-color, box-shadow;
-	-o-transition-duration: 0.5s;
-	transition-property: background-color, box-shadow;
-	transition-duration: 0.5s;
-}
-
-.memberdecls td.glow, .fieldtable tr.glow {
-	background-color: cyan;
-	box-shadow: 0 0 15px cyan;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
-	background-color: #F9FAFC;
-	border: none;
-	margin: 4px;
-	padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
-	padding: 0px 8px 4px 8px;
-	color: #555;
-}
-
-.memSeparator {
-        border-bottom: 1px solid #DEE4F0;
-        line-height: 1px;
-        margin: 0px;
-        padding: 0px;
-}
-
-.memItemLeft, .memTemplItemLeft {
-        white-space: nowrap;
-}
-
-.memItemRight {
-	width: 100%;
-}
-
-.memTemplParams {
-	color: #4665A2;
-        white-space: nowrap;
-	font-size: 80%;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
-	font-size: 80%;
-	color: #4665A2;
-	font-weight: normal;
-	margin-left: 9px;
-}
-
-.memnav {
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-	margin: 2px;
-	margin-right: 15px;
-	padding: 2px;
-}
-
-.mempage {
-	width: 100%;
-}
-
-.memitem {
-	padding: 0;
-	margin-bottom: 10px;
-	margin-right: 5px;
-        -webkit-transition: box-shadow 0.5s linear;
-        -moz-transition: box-shadow 0.5s linear;
-        -ms-transition: box-shadow 0.5s linear;
-        -o-transition: box-shadow 0.5s linear;
-        transition: box-shadow 0.5s linear;
-        display: table !important;
-        width: 100%;
-}
-
-.memitem.glow {
-         box-shadow: 0 0 15px cyan;
-}
-
-.memname {
-        font-weight: bold;
-        margin-left: 6px;
-}
-
-.memname td {
-	vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
-        border-top: 1px solid #A8B8D9;
-        border-left: 1px solid #A8B8D9;
-        border-right: 1px solid #A8B8D9;
-        padding: 6px 0px 6px 0px;
-        color: #253555;
-        font-weight: bold;
-        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
-        /* opera specific markup */
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        /* firefox specific markup */
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        -moz-border-radius-topright: 4px;
-        -moz-border-radius-topleft: 4px;
-        /* webkit specific markup */
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        -webkit-border-top-right-radius: 4px;
-        -webkit-border-top-left-radius: 4px;
-
-}
-
-.memdoc, dl.reflist dd {
-        border-bottom: 1px solid #A8B8D9;      
-        border-left: 1px solid #A8B8D9;      
-        border-right: 1px solid #A8B8D9; 
-        padding: 6px 10px 2px 10px;
-        background-color: #FBFCFD;
-        border-top-width: 0;
-        background-image:url('nav_g.png');
-        background-repeat:repeat-x;
-        background-color: #FFFFFF;
-        /* opera specific markup */
-        border-bottom-left-radius: 4px;
-        border-bottom-right-radius: 4px;
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        /* firefox specific markup */
-        -moz-border-radius-bottomleft: 4px;
-        -moz-border-radius-bottomright: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        /* webkit specific markup */
-        -webkit-border-bottom-left-radius: 4px;
-        -webkit-border-bottom-right-radius: 4px;
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-dl.reflist dt {
-        padding: 5px;
-}
-
-dl.reflist dd {
-        margin: 0px 0px 10px 0px;
-        padding: 5px;
-}
-
-.paramkey {
-	text-align: right;
-}
-
-.paramtype {
-	white-space: nowrap;
-}
-
-.paramname {
-	color: #602020;
-	white-space: nowrap;
-}
-.paramname em {
-	font-style: normal;
-}
-.paramname code {
-        line-height: 14px;
-}
-
-.params, .retval, .exception, .tparams {
-        margin-left: 0px;
-        padding-left: 0px;
-}       
-
-.params .paramname, .retval .paramname {
-        font-weight: bold;
-        vertical-align: top;
-}
-        
-.params .paramtype {
-        font-style: italic;
-        vertical-align: top;
-}       
-        
-.params .paramdir {
-        font-family: "courier new",courier,monospace;
-        vertical-align: top;
-}
-
-table.mlabels {
-	border-spacing: 0px;
-}
-
-td.mlabels-left {
-	width: 100%;
-	padding: 0px;
-}
-
-td.mlabels-right {
-	vertical-align: bottom;
-	padding: 0px;
-	white-space: nowrap;
-}
-
-span.mlabels {
-        margin-left: 8px;
-}
-
-span.mlabel {
-        background-color: #728DC1;
-        border-top:1px solid #5373B4;
-        border-left:1px solid #5373B4;
-        border-right:1px solid #C4CFE5;
-        border-bottom:1px solid #C4CFE5;
-	text-shadow: none;
-	color: white;
-	margin-right: 4px;
-	padding: 2px 3px;
-	border-radius: 3px;
-	font-size: 7pt;
-	white-space: nowrap;
-	vertical-align: middle;
-}
-
-
-
-/* @end */
-
-/* these are for tree view inside a (index) page */
-
-div.directory {
-        margin: 10px 0px;
-        border-top: 1px solid #9CAFD4;
-        border-bottom: 1px solid #9CAFD4;
-        width: 100%;
-}
-
-.directory table {
-        border-collapse:collapse;
-}
-
-.directory td {
-        margin: 0px;
-        padding: 0px;
-	vertical-align: top;
-}
-
-.directory td.entry {
-        white-space: nowrap;
-        padding-right: 6px;
-	padding-top: 3px;
-}
-
-.directory td.entry a {
-        outline:none;
-}
-
-.directory td.entry a img {
-        border: none;
-}
-
-.directory td.desc {
-        width: 100%;
-        padding-left: 6px;
-	padding-right: 6px;
-	padding-top: 3px;
-	border-left: 1px solid rgba(0,0,0,0.05);
-}
-
-.directory tr.even {
-	padding-left: 6px;
-	background-color: #F7F8FB;
-}
-
-.directory img {
-	vertical-align: -30%;
-}
-
-.directory .levels {
-        white-space: nowrap;
-        width: 100%;
-        text-align: right;
-        font-size: 9pt;
-}
-
-.directory .levels span {
-        cursor: pointer;
-        padding-left: 2px;
-        padding-right: 2px;
-	color: #3D578C;
-}
-
-.arrow {
-    color: #9CAFD4;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-    cursor: pointer;
-    font-size: 80%;
-    display: inline-block;
-    width: 16px;
-    height: 22px;
-}
-
-.icon {
-    font-family: Arial, Helvetica;
-    font-weight: bold;
-    font-size: 12px;
-    height: 14px;
-    width: 16px;
-    display: inline-block;
-    background-color: #728DC1;
-    color: white;
-    text-align: center;
-    border-radius: 4px;
-    margin-left: 2px;
-    margin-right: 2px;
-}
-
-.icona {
-    width: 24px;
-    height: 22px;
-    display: inline-block;
-}
-
-.iconfopen {
-    width: 24px;
-    height: 18px;
-    margin-bottom: 4px;
-    background-image:url('folderopen.png');
-    background-position: 0px -4px;
-    background-repeat: repeat-y;
-    vertical-align:top;
-    display: inline-block;
-}
-
-.iconfclosed {
-    width: 24px;
-    height: 18px;
-    margin-bottom: 4px;
-    background-image:url('folderclosed.png');
-    background-position: 0px -4px;
-    background-repeat: repeat-y;
-    vertical-align:top;
-    display: inline-block;
-}
-
-.icondoc {
-    width: 24px;
-    height: 18px;
-    margin-bottom: 4px;
-    background-image:url('doc.png');
-    background-position: 0px -4px;
-    background-repeat: repeat-y;
-    vertical-align:top;
-    display: inline-block;
-}
-
-table.directory {
-    font: 400 14px Roboto,sans-serif;
-}
-
-/* @end */
-
-div.dynheader {
-        margin-top: 8px;
-	-webkit-touch-callout: none;
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-address {
-	font-style: normal;
-	color: #2A3D61;
-}
-
-table.doxtable {
-	border-collapse:collapse;
-        margin-top: 4px;
-        margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
-	border: 1px solid #2D4068;
-	padding: 3px 7px 2px;
-}
-
-table.doxtable th {
-	background-color: #374F7F;
-	color: #FFFFFF;
-	font-size: 110%;
-	padding-bottom: 4px;
-	padding-top: 5px;
-}
-
-table.fieldtable {
-        /*width: 100%;*/
-        margin-bottom: 10px;
-        border: 1px solid #A8B8D9;
-        border-spacing: 0px;
-        -moz-border-radius: 4px;
-        -webkit-border-radius: 4px;
-        border-radius: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
-        padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
-        white-space: nowrap;
-        border-right: 1px solid #A8B8D9;
-        border-bottom: 1px solid #A8B8D9;
-        vertical-align: top;
-}
-
-.fieldtable td.fieldname {
-        padding-top: 3px;
-}
-
-.fieldtable td.fielddoc {
-        border-bottom: 1px solid #A8B8D9;
-        /*width: 100%;*/
-}
-
-.fieldtable td.fielddoc p:first-child {
-        margin-top: 0px;
-}       
-        
-.fieldtable td.fielddoc p:last-child {
-        margin-bottom: 2px;
-}
-
-.fieldtable tr:last-child td {
-        border-bottom: none;
-}
-
-.fieldtable th {
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
-        font-size: 90%;
-        color: #253555;
-        padding-bottom: 4px;
-        padding-top: 5px;
-        text-align:left;
-        -moz-border-radius-topleft: 4px;
-        -moz-border-radius-topright: 4px;
-        -webkit-border-top-left-radius: 4px;
-        -webkit-border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        border-top-right-radius: 4px;
-        border-bottom: 1px solid #A8B8D9;
-}
-
-
-.tabsearch {
-	top: 0px;
-	left: 10px;
-	height: 36px;
-	background-image: url('tab_b.png');
-	z-index: 101;
-	overflow: hidden;
-	font-size: 13px;
-}
-
-.navpath ul
-{
-	font-size: 11px;
-	background-image:url('tab_b.png');
-	background-repeat:repeat-x;
-	background-position: 0 -5px;
-	height:30px;
-	line-height:30px;
-	color:#8AA0CC;
-	border:solid 1px #C2CDE4;
-	overflow:hidden;
-	margin:0px;
-	padding:0px;
-}
-
-.navpath li
-{
-	list-style-type:none;
-	float:left;
-	padding-left:10px;
-	padding-right:15px;
-	background-image:url('bc_s.png');
-	background-repeat:no-repeat;
-	background-position:right;
-	color:#364D7C;
-}
-
-.navpath li.navelem a
-{
-	height:32px;
-	display:block;
-	text-decoration: none;
-	outline: none;
-	color: #283A5D;
-	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-	text-decoration: none;        
-}
-
-.navpath li.navelem a:hover
-{
-	color:#6884BD;
-}
-
-.navpath li.footer
-{
-        list-style-type:none;
-        float:right;
-        padding-left:10px;
-        padding-right:15px;
-        background-image:none;
-        background-repeat:no-repeat;
-        background-position:right;
-        color:#364D7C;
-        font-size: 8pt;
-}
-
-
-div.summary
-{
-	float: right;
-	font-size: 8pt;
-	padding-right: 5px;
-	width: 50%;
-	text-align: right;
-}       
-
-div.summary a
-{
-	white-space: nowrap;
-}
-
-div.ingroups
-{
-	font-size: 8pt;
-	width: 50%;
-	text-align: left;
-}
-
-div.ingroups a
-{
-	white-space: nowrap;
-}
-
-div.header
-{
-        background-image:url('nav_h.png');
-        background-repeat:repeat-x;
-	background-color: #F9FAFC;
-	margin:  0px;
-	border-bottom: 1px solid #C4CFE5;
-}
-
-div.headertitle
-{
-	padding: 5px 5px 5px 10px;
-}
-
-dl
-{
-        padding: 0 0 0 10px;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-dl.section
-{
-	margin-left: 0px;
-	padding-left: 0px;
-}
-
-dl.note
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #D0C000;
-}
-
-dl.warning, dl.attention
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00D000;
-}
-
-dl.deprecated
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #505050;
-}
-
-dl.todo
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00C0E0;
-}
-
-dl.test
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #3030E0;
-}
-
-dl.bug
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #C08050;
-}
-
-dl.section dd {
-	margin-bottom: 6px;
-}
-
-
-#projectlogo
-{
-	text-align: center;
-	vertical-align: bottom;
-	border-collapse: separate;
-}
- 
-#projectlogo img
-{ 
-	border: 0px none;
-}
- 
-#projectname
-{
-	font: 300% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 2px 0px;
-}
-    
-#projectbrief
-{
-	font: 120% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#projectnumber
-{
-	font: 50% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#titlearea
-{
-	padding: 0px;
-	margin: 0px;
-	width: 100%;
-	border-bottom: 1px solid #5373B4;
-}
-
-.image
-{
-        text-align: center;
-}
-
-.dotgraph
-{
-        text-align: center;
-}
-
-.mscgraph
-{
-        text-align: center;
-}
-
-.diagraph
-{
-        text-align: center;
-}
-
-.caption
-{
-	font-weight: bold;
-}
-
-div.zoom
-{
-	border: 1px solid #90A5CE;
-}
-
-dl.citelist {
-        margin-bottom:50px;
-}
-
-dl.citelist dt {
-        color:#334975;
-        float:left;
-        font-weight:bold;
-        margin-right:10px;
-        padding:5px;
-}
-
-dl.citelist dd {
-        margin:2px 0;
-        padding:5px 0;
-}
-
-div.toc {
-        padding: 14px 25px;
-        background-color: #F4F6FA;
-        border: 1px solid #D8DFEE;
-        border-radius: 7px 7px 7px 7px;
-        float: right;
-        height: auto;
-        margin: 0 20px 10px 10px;
-        width: 200px;
-}
-
-div.toc li {
-        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
-        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
-        margin-top: 5px;
-        padding-left: 10px;
-        padding-top: 2px;
-}
-
-div.toc h3 {
-        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
-	color: #4665A2;
-        border-bottom: 0 none;
-        margin: 0;
-}
-
-div.toc ul {
-        list-style: none outside none;
-        border: medium none;
-        padding: 0px;
-}       
-
-div.toc li.level1 {
-        margin-left: 0px;
-}
-
-div.toc li.level2 {
-        margin-left: 15px;
-}
-
-div.toc li.level3 {
-        margin-left: 30px;
-}
-
-div.toc li.level4 {
-        margin-left: 45px;
-}
-
-.inherit_header {
-        font-weight: bold;
-        color: gray;
-        cursor: pointer;
-	-webkit-touch-callout: none;
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-.inherit_header td {
-        padding: 6px 0px 2px 5px;
-}
-
-.inherit {
-        display: none;
-}
-
-tr.heading h2 {
-        margin-top: 12px;
-        margin-bottom: 4px;
-}
-
-/* tooltip related style info */
-
-.ttc {
-        position: absolute;
-        display: none;
-}
-
-#powerTip {
-	cursor: default;
-	white-space: nowrap;
-	background-color: white;
-	border: 1px solid gray;
-	border-radius: 4px 4px 4px 4px;
-	box-shadow: 1px 1px 7px gray;
-	display: none;
-	font-size: smaller;
-	max-width: 80%;
-	opacity: 0.9;
-	padding: 1ex 1em 1em;
-	position: absolute;
-	z-index: 2147483647;
-}
-
-#powerTip div.ttdoc {
-        color: grey;
-	font-style: italic;
-}
-
-#powerTip div.ttname a {
-        font-weight: bold;
-}
-
-#powerTip div.ttname {
-        font-weight: bold;
-}
-
-#powerTip div.ttdeci {
-        color: #006318;
-}
-
-#powerTip div {
-        margin: 0px;
-        padding: 0px;
-        font: 12px/16px Roboto,sans-serif;
-}
-
-#powerTip:before, #powerTip:after {
-	content: "";
-	position: absolute;
-	margin: 0px;
-}
-
-#powerTip.n:after,  #powerTip.n:before,
-#powerTip.s:after,  #powerTip.s:before,
-#powerTip.w:after,  #powerTip.w:before,
-#powerTip.e:after,  #powerTip.e:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.nw:after, #powerTip.nw:before,
-#powerTip.sw:after, #powerTip.sw:before {
-	border: solid transparent;
-	content: " ";
-	height: 0;
-	width: 0;
-	position: absolute;
-}
-
-#powerTip.n:after,  #powerTip.s:after,
-#powerTip.w:after,  #powerTip.e:after,
-#powerTip.nw:after, #powerTip.ne:after,
-#powerTip.sw:after, #powerTip.se:after {
-	border-color: rgba(255, 255, 255, 0);
-}
-
-#powerTip.n:before,  #powerTip.s:before,
-#powerTip.w:before,  #powerTip.e:before,
-#powerTip.nw:before, #powerTip.ne:before,
-#powerTip.sw:before, #powerTip.se:before {
-	border-color: rgba(128, 128, 128, 0);
-}
-
-#powerTip.n:after,  #powerTip.n:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.nw:after, #powerTip.nw:before {
-	top: 100%;
-}
-
-#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
-	border-top-color: #ffffff;
-	border-width: 10px;
-	margin: 0px -10px;
-}
-#powerTip.n:before {
-	border-top-color: #808080;
-	border-width: 11px;
-	margin: 0px -11px;
-}
-#powerTip.n:after, #powerTip.n:before {
-	left: 50%;
-}
-
-#powerTip.nw:after, #powerTip.nw:before {
-	right: 14px;
-}
-
-#powerTip.ne:after, #powerTip.ne:before {
-	left: 14px;
-}
-
-#powerTip.s:after,  #powerTip.s:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.sw:after, #powerTip.sw:before {
-	bottom: 100%;
-}
-
-#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
-	border-bottom-color: #ffffff;
-	border-width: 10px;
-	margin: 0px -10px;
-}
-
-#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
-	border-bottom-color: #808080;
-	border-width: 11px;
-	margin: 0px -11px;
-}
-
-#powerTip.s:after, #powerTip.s:before {
-	left: 50%;
-}
-
-#powerTip.sw:after, #powerTip.sw:before {
-	right: 14px;
-}
-
-#powerTip.se:after, #powerTip.se:before {
-	left: 14px;
-}
-
-#powerTip.e:after, #powerTip.e:before {
-	left: 100%;
-}
-#powerTip.e:after {
-	border-left-color: #ffffff;
-	border-width: 10px;
-	top: 50%;
-	margin-top: -10px;
-}
-#powerTip.e:before {
-	border-left-color: #808080;
-	border-width: 11px;
-	top: 50%;
-	margin-top: -11px;
-}
-
-#powerTip.w:after, #powerTip.w:before {
-	right: 100%;
-}
-#powerTip.w:after {
-	border-right-color: #ffffff;
-	border-width: 10px;
-	top: 50%;
-	margin-top: -10px;
-}
-#powerTip.w:before {
-	border-right-color: #808080;
-	border-width: 11px;
-	top: 50%;
-	margin-top: -11px;
-}
-
- at media print
-{
-  #top { display: none; }
-  #side-nav { display: none; }
-  #nav-path { display: none; }
-  body { overflow:visible; }
-  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
-  .summary { display: none; }
-  .memitem { page-break-inside: avoid; }
-  #doc-content
-  {
-    margin-left:0 !important;
-    height:auto !important;
-    width:auto !important;
-    overflow:inherit;
-    display:inline;
-  }
-}
-
diff --git a/testing/html/doxygen.png b/testing/html/doxygen.png
deleted file mode 100644
index 3ff17d8..0000000
Binary files a/testing/html/doxygen.png and /dev/null differ
diff --git a/testing/html/dynsections.js b/testing/html/dynsections.js
deleted file mode 100644
index 85e1836..0000000
--- a/testing/html/dynsections.js
+++ /dev/null
@@ -1,97 +0,0 @@
-function toggleVisibility(linkObj)
-{
- var base = $(linkObj).attr('id');
- var summary = $('#'+base+'-summary');
- var content = $('#'+base+'-content');
- var trigger = $('#'+base+'-trigger');
- var src=$(trigger).attr('src');
- if (content.is(':visible')===true) {
-   content.hide();
-   summary.show();
-   $(linkObj).addClass('closed').removeClass('opened');
-   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
- } else {
-   content.show();
-   summary.hide();
-   $(linkObj).removeClass('closed').addClass('opened');
-   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
- } 
- return false;
-}
-
-function updateStripes()
-{
-  $('table.directory tr').
-       removeClass('even').filter(':visible:even').addClass('even');
-}
-
-function toggleLevel(level)
-{
-  $('table.directory tr').each(function() {
-    var l = this.id.split('_').length-1;
-    var i = $('#img'+this.id.substring(3));
-    var a = $('#arr'+this.id.substring(3));
-    if (l<level+1) {
-      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
-      a.html('▼');
-      $(this).show();
-    } else if (l==level+1) {
-      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
-      a.html('►');
-      $(this).show();
-    } else {
-      $(this).hide();
-    }
-  });
-  updateStripes();
-}
-
-function toggleFolder(id)
-{
-  // the clicked row
-  var currentRow = $('#row_'+id);
-
-  // all rows after the clicked row
-  var rows = currentRow.nextAll("tr");
-
-  var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
-
-  // only match elements AFTER this one (can't hide elements before)
-  var childRows = rows.filter(function() { return this.id.match(re); });
-
-  // first row is visible we are HIDING
-  if (childRows.filter(':first').is(':visible')===true) {
-    // replace down arrow by right arrow for current row
-    var currentRowSpans = currentRow.find("span");
-    currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
-    currentRowSpans.filter(".arrow").html('►');
-    rows.filter("[id^=row_"+id+"]").hide(); // hide all children
-  } else { // we are SHOWING
-    // replace right arrow by down arrow for current row
-    var currentRowSpans = currentRow.find("span");
-    currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
-    currentRowSpans.filter(".arrow").html('▼');
-    // replace down arrows by right arrows for child rows
-    var childRowsSpans = childRows.find("span");
-    childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
-    childRowsSpans.filter(".arrow").html('►');
-    childRows.show(); //show all children
-  }
-  updateStripes();
-}
-
-
-function toggleInherit(id)
-{
-  var rows = $('tr.inherit.'+id);
-  var img = $('tr.inherit_header.'+id+' img');
-  var src = $(img).attr('src');
-  if (rows.filter(':first').is(':visible')===true) {
-    rows.css('display','none');
-    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
-  } else {
-    rows.css('display','table-row'); // using show() causes jump in firefox
-    $(img).attr('src',src.substring(0,src.length-10)+'open.png');
-  }
-}
-
diff --git a/testing/html/files.html b/testing/html/files.html
deleted file mode 100644
index 46b247e..0000000
--- a/testing/html/files.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: File List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="files.html"><span>File List</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
-  <div class="headertitle">
-<div class="title">File List</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
-<table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icondoc"></span><a class="el" href="063__bug__729092_8tcl.html" target="_self">063_bug_729092.tcl</a></td><td class="desc"></td></tr>
-</table>
-</div><!-- directory -->
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/folderclosed.png b/testing/html/folderclosed.png
deleted file mode 100644
index bb8ab35..0000000
Binary files a/testing/html/folderclosed.png and /dev/null differ
diff --git a/testing/html/folderopen.png b/testing/html/folderopen.png
deleted file mode 100644
index d6c7f67..0000000
Binary files a/testing/html/folderopen.png and /dev/null differ
diff --git a/testing/html/ftv2blank.png b/testing/html/ftv2blank.png
deleted file mode 100644
index 63c605b..0000000
Binary files a/testing/html/ftv2blank.png and /dev/null differ
diff --git a/testing/html/ftv2doc.png b/testing/html/ftv2doc.png
deleted file mode 100644
index 17edabf..0000000
Binary files a/testing/html/ftv2doc.png and /dev/null differ
diff --git a/testing/html/ftv2folderclosed.png b/testing/html/ftv2folderclosed.png
deleted file mode 100644
index bb8ab35..0000000
Binary files a/testing/html/ftv2folderclosed.png and /dev/null differ
diff --git a/testing/html/ftv2folderopen.png b/testing/html/ftv2folderopen.png
deleted file mode 100644
index d6c7f67..0000000
Binary files a/testing/html/ftv2folderopen.png and /dev/null differ
diff --git a/testing/html/ftv2lastnode.png b/testing/html/ftv2lastnode.png
deleted file mode 100644
index 63c605b..0000000
Binary files a/testing/html/ftv2lastnode.png and /dev/null differ
diff --git a/testing/html/ftv2link.png b/testing/html/ftv2link.png
deleted file mode 100644
index 17edabf..0000000
Binary files a/testing/html/ftv2link.png and /dev/null differ
diff --git a/testing/html/ftv2mlastnode.png b/testing/html/ftv2mlastnode.png
deleted file mode 100644
index 0b63f6d..0000000
Binary files a/testing/html/ftv2mlastnode.png and /dev/null differ
diff --git a/testing/html/ftv2mnode.png b/testing/html/ftv2mnode.png
deleted file mode 100644
index 0b63f6d..0000000
Binary files a/testing/html/ftv2mnode.png and /dev/null differ
diff --git a/testing/html/ftv2node.png b/testing/html/ftv2node.png
deleted file mode 100644
index 63c605b..0000000
Binary files a/testing/html/ftv2node.png and /dev/null differ
diff --git a/testing/html/ftv2plastnode.png b/testing/html/ftv2plastnode.png
deleted file mode 100644
index c6ee22f..0000000
Binary files a/testing/html/ftv2plastnode.png and /dev/null differ
diff --git a/testing/html/ftv2pnode.png b/testing/html/ftv2pnode.png
deleted file mode 100644
index c6ee22f..0000000
Binary files a/testing/html/ftv2pnode.png and /dev/null differ
diff --git a/testing/html/ftv2splitbar.png b/testing/html/ftv2splitbar.png
deleted file mode 100644
index fe895f2..0000000
Binary files a/testing/html/ftv2splitbar.png and /dev/null differ
diff --git a/testing/html/ftv2vertline.png b/testing/html/ftv2vertline.png
deleted file mode 100644
index 63c605b..0000000
Binary files a/testing/html/ftv2vertline.png and /dev/null differ
diff --git a/testing/html/index.html b/testing/html/index.html
deleted file mode 100644
index 4b364c3..0000000
--- a/testing/html/index.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: Main Page</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li class="current"><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-</div><!-- top -->
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
-  <div class="headertitle">
-<div class="title">My Project Documentation</div>  </div>
-</div><!--header-->
-<div class="contents">
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/jquery.js b/testing/html/jquery.js
deleted file mode 100644
index 1f4d0b4..0000000
--- a/testing/html/jquery.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.7.1
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Mon Nov 21 21:11:03 2011 -0500
- */
-(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/ [...]
-/*!
- * Sizzle CSS Selector Engine
- *  Copyright 2011, The Dojo Foundation
- *  Released under the MIT, BSD, and GPL Licenses.
- *  More information: http://sizzlejs.com/
- */
-(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU [...]
- * jQuery UI 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn [...]
- * jQuery UI Widget 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Wid [...]
- * jQuery UI Mouse 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- *	jquery.ui.widget.js
- */
-(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseD [...]
- * jQuery hashchange event - v1.3 - 7/21/2010
- * http://benalman.com/projects/jquery-hashchange-plugin/
- * 
- * Copyright (c) 2010 "Cowboy" Ben Alman
- * Dual licensed under the MIT and GPL licenses.
- * http://benalman.com/about/license/
- */
-(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function() [...]
- PowerTip - v1.2.0 - 2013-04-03
- http://stevenbenner.github.com/jquery-powertip/
- Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
- Released under MIT license.
- https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
-*/
-(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouse [...]
\ No newline at end of file
diff --git a/testing/html/namespacemembers.html b/testing/html/namespacemembers.html
deleted file mode 100644
index 8b2c20e..0000000
--- a/testing/html/namespacemembers.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: Namespace Members</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
-      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="contents">
-<div class="textblock">Here is a list of all namespace members with links to the namespace documentation for each member:</div><ul>
-<li>classmethod()
-: <a class="el" href="namespaceoo_1_1define.html#a89e7ea222a316f1926c1f9f30f2cc5c1">oo::define</a>
-</li>
-<li>classvar()
-: <a class="el" href="namespaceoo_1_1_helpers.html#a96c5b755588beb2e930cff23ce811d6c">oo::Helpers</a>
-</li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/namespacemembers_func.html b/testing/html/namespacemembers_func.html
deleted file mode 100644
index 66b5a80..0000000
--- a/testing/html/namespacemembers_func.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: Namespace Members</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespacemembers.html"><span>All</span></a></li>
-      <li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="contents">
- <ul>
-<li>classmethod()
-: <a class="el" href="namespaceoo_1_1define.html#a89e7ea222a316f1926c1f9f30f2cc5c1">oo::define</a>
-</li>
-<li>classvar()
-: <a class="el" href="namespaceoo_1_1_helpers.html#a96c5b755588beb2e930cff23ce811d6c">oo::Helpers</a>
-</li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/namespaceoo.html b/testing/html/namespaceoo.html
deleted file mode 100644
index 7dbdf59..0000000
--- a/testing/html/namespaceoo.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: oo Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#namespaces">Namespaces</a>  </div>
-  <div class="headertitle">
-<div class="title">oo Namespace Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr class="memitem:namespaceoo_1_1define"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoo_1_1define.html">define</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:namespaceoo_1_1_helpers"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoo_1_1_helpers.html">Helpers</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/namespaceoo_1_1_helpers.html b/testing/html/namespaceoo_1_1_helpers.html
deleted file mode 100644
index 7e8a2b6..0000000
--- a/testing/html/namespaceoo_1_1_helpers.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: oo::Helpers Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="namespaceoo.html">oo</a></li><li class="navelem"><a class="el" href="namespaceoo_1_1_helpers.html">Helpers</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">oo::Helpers Namespace Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a96c5b755588beb2e930cff23ce811d6c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoo_1_1_helpers.html#a96c5b755588beb2e930cff23ce811d6c">classvar</a> args</td></tr>
-<tr class="separator:a96c5b755588beb2e930cff23ce811d6c"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a96c5b755588beb2e930cff23ce811d6c"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">oo::Helpers::classvar</td>
-          <td></td>
-          <td class="paramtype"> </td>
-          <td class="paramname">args  </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td></td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>Extension to TclOO to add static variables. Defines variables on the class instead of on the object. Can be used to enforce a limited number of instantiations. </p>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/namespaceoo_1_1define.html b/testing/html/namespaceoo_1_1define.html
deleted file mode 100644
index 78bce61..0000000
--- a/testing/html/namespaceoo_1_1define.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: oo::define Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="namespaceoo.html">oo</a></li><li class="navelem"><a class="el" href="namespaceoo_1_1define.html">define</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">oo::define Namespace Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a89e7ea222a316f1926c1f9f30f2cc5c1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceoo_1_1define.html#a89e7ea222a316f1926c1f9f30f2cc5c1">classmethod</a> name?args??body?</td></tr>
-<tr class="separator:a89e7ea222a316f1926c1f9f30f2cc5c1"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a89e7ea222a316f1926c1f9f30f2cc5c1"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">oo::define::classmethod</td>
-          <td></td>
-          <td class="paramtype"> </td>
-          <td class="paramname">name ?args? ?body?  </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td></td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>Extension to TclOO to add static methods. Defines the method on the class instead of on the object. Can be used for the creation of megawidgets using TclOO by overriding the unknown method to detect if the user is trying to instantiate a widget (because the method will be unknown and start with a dot). </p>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/namespaces.html b/testing/html/namespaces.html
deleted file mode 100644
index afb0113..0000000
--- a/testing/html/namespaces.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<title>My Project: Namespace List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
-   <div id="projectname">My Project
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
-  <div class="headertitle">
-<div class="title">Namespace List</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">Here is a list of all namespaces with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceoo.html" target="_self">oo</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceoo_1_1define.html" target="_self">define</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceoo_1_1_helpers.html" target="_self">Helpers</a></td><td class="desc"></td></tr>
-</table>
-</div><!-- directory -->
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated on Sun Jan 4 2015 11:47:12 for My Project by  <a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.9.1
-</small></address>
-</body>
-</html>
diff --git a/testing/html/nav_f.png b/testing/html/nav_f.png
deleted file mode 100644
index 72a58a5..0000000
Binary files a/testing/html/nav_f.png and /dev/null differ
diff --git a/testing/html/nav_g.png b/testing/html/nav_g.png
deleted file mode 100644
index 2093a23..0000000
Binary files a/testing/html/nav_g.png and /dev/null differ
diff --git a/testing/html/nav_h.png b/testing/html/nav_h.png
deleted file mode 100644
index 33389b1..0000000
Binary files a/testing/html/nav_h.png and /dev/null differ
diff --git a/testing/html/open.png b/testing/html/open.png
deleted file mode 100644
index 30f75c7..0000000
Binary files a/testing/html/open.png and /dev/null differ
diff --git a/testing/html/search/all_0.html b/testing/html/search/all_0.html
deleted file mode 100644
index c491fd8..0000000
--- a/testing/html/search/all_0.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head><title></title>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="all_0.js"></script>
-<script type="text/javascript" src="search.js"></script>
-</head>
-<body class="SRPage">
-<div id="SRIndex">
-<div class="SRStatus" id="Loading">Loading...</div>
-<div id="SRResults"></div>
-<script type="text/javascript"><!--
-createResults();
---></script>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-<script type="text/javascript"><!--
-document.getElementById("Loading").style.display="none";
-document.getElementById("NoMatches").style.display="none";
-var searchResults = new SearchResults("searchResults");
-searchResults.Search();
---></script>
-</div>
-</body>
-</html>
diff --git a/testing/html/search/all_0.js b/testing/html/search/all_0.js
deleted file mode 100644
index a6004cf..0000000
--- a/testing/html/search/all_0.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['063_5fbug_5f729092_2etcl',['063_bug_729092.tcl',['../063__bug__729092_8tcl.html',1,'']]]
-];
diff --git a/testing/html/search/all_1.html b/testing/html/search/all_1.html
deleted file mode 100644
index 89fd5f8..0000000
--- a/testing/html/search/all_1.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head><title></title>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="all_1.js"></script>
-<script type="text/javascript" src="search.js"></script>
-</head>
-<body class="SRPage">
-<div id="SRIndex">
-<div class="SRStatus" id="Loading">Loading...</div>
-<div id="SRResults"></div>
-<script type="text/javascript"><!--
-createResults();
---></script>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-<script type="text/javascript"><!--
-document.getElementById("Loading").style.display="none";
-document.getElementById("NoMatches").style.display="none";
-var searchResults = new SearchResults("searchResults");
-searchResults.Search();
---></script>
-</div>
-</body>
-</html>
diff --git a/testing/html/search/all_1.js b/testing/html/search/all_1.js
deleted file mode 100644
index 1a10142..0000000
--- a/testing/html/search/all_1.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['classmethod',['classmethod',['../namespaceoo_1_1define.html#a89e7ea222a316f1926c1f9f30f2cc5c1',1,'oo::define']]],
-  ['classvar',['classvar',['../namespaceoo_1_1_helpers.html#a96c5b755588beb2e930cff23ce811d6c',1,'oo::Helpers']]]
-];
diff --git a/testing/html/search/all_2.html b/testing/html/search/all_2.html
deleted file mode 100644
index 2c23ed4..0000000
--- a/testing/html/search/all_2.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head><title></title>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="all_2.js"></script>
-<script type="text/javascript" src="search.js"></script>
-</head>
-<body class="SRPage">
-<div id="SRIndex">
-<div class="SRStatus" id="Loading">Loading...</div>
-<div id="SRResults"></div>
-<script type="text/javascript"><!--
-createResults();
---></script>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-<script type="text/javascript"><!--
-document.getElementById("Loading").style.display="none";
-document.getElementById("NoMatches").style.display="none";
-var searchResults = new SearchResults("searchResults");
-searchResults.Search();
---></script>
-</div>
-</body>
-</html>
diff --git a/testing/html/search/all_2.js b/testing/html/search/all_2.js
deleted file mode 100644
index b6d7102..0000000
--- a/testing/html/search/all_2.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var searchData=
-[
-  ['define',['define',['../namespaceoo_1_1define.html',1,'oo']]],
-  ['helpers',['Helpers',['../namespaceoo_1_1_helpers.html',1,'oo']]],
-  ['oo',['oo',['../namespaceoo.html',1,'']]]
-];
diff --git a/testing/html/search/close.png b/testing/html/search/close.png
deleted file mode 100644
index 9342d3d..0000000
Binary files a/testing/html/search/close.png and /dev/null differ
diff --git a/testing/html/search/files_0.js b/testing/html/search/files_0.js
deleted file mode 100644
index a6004cf..0000000
--- a/testing/html/search/files_0.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['063_5fbug_5f729092_2etcl',['063_bug_729092.tcl',['../063__bug__729092_8tcl.html',1,'']]]
-];
diff --git a/testing/html/search/functions_0.html b/testing/html/search/functions_0.html
deleted file mode 100644
index 88c8a26..0000000
--- a/testing/html/search/functions_0.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head><title></title>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="functions_0.js"></script>
-<script type="text/javascript" src="search.js"></script>
-</head>
-<body class="SRPage">
-<div id="SRIndex">
-<div class="SRStatus" id="Loading">Loading...</div>
-<div id="SRResults"></div>
-<script type="text/javascript"><!--
-createResults();
---></script>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-<script type="text/javascript"><!--
-document.getElementById("Loading").style.display="none";
-document.getElementById("NoMatches").style.display="none";
-var searchResults = new SearchResults("searchResults");
-searchResults.Search();
---></script>
-</div>
-</body>
-</html>
diff --git a/testing/html/search/functions_0.js b/testing/html/search/functions_0.js
deleted file mode 100644
index 1a10142..0000000
--- a/testing/html/search/functions_0.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['classmethod',['classmethod',['../namespaceoo_1_1define.html#a89e7ea222a316f1926c1f9f30f2cc5c1',1,'oo::define']]],
-  ['classvar',['classvar',['../namespaceoo_1_1_helpers.html#a96c5b755588beb2e930cff23ce811d6c',1,'oo::Helpers']]]
-];
diff --git a/testing/html/search/mag_sel.png b/testing/html/search/mag_sel.png
deleted file mode 100644
index 81f6040..0000000
Binary files a/testing/html/search/mag_sel.png and /dev/null differ
diff --git a/testing/html/search/namespaces_0.html b/testing/html/search/namespaces_0.html
deleted file mode 100644
index 6d5853b..0000000
--- a/testing/html/search/namespaces_0.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head><title></title>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
-<link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="namespaces_0.js"></script>
-<script type="text/javascript" src="search.js"></script>
-</head>
-<body class="SRPage">
-<div id="SRIndex">
-<div class="SRStatus" id="Loading">Loading...</div>
-<div id="SRResults"></div>
-<script type="text/javascript"><!--
-createResults();
---></script>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-<script type="text/javascript"><!--
-document.getElementById("Loading").style.display="none";
-document.getElementById("NoMatches").style.display="none";
-var searchResults = new SearchResults("searchResults");
-searchResults.Search();
---></script>
-</div>
-</body>
-</html>
diff --git a/testing/html/search/namespaces_0.js b/testing/html/search/namespaces_0.js
deleted file mode 100644
index b6d7102..0000000
--- a/testing/html/search/namespaces_0.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var searchData=
-[
-  ['define',['define',['../namespaceoo_1_1define.html',1,'oo']]],
-  ['helpers',['Helpers',['../namespaceoo_1_1_helpers.html',1,'oo']]],
-  ['oo',['oo',['../namespaceoo.html',1,'']]]
-];
diff --git a/testing/html/search/nomatches.html b/testing/html/search/nomatches.html
deleted file mode 100644
index b1ded27..0000000
--- a/testing/html/search/nomatches.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head><title></title>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<link rel="stylesheet" type="text/css" href="search.css"/>
-<script type="text/javascript" src="search.js"></script>
-</head>
-<body class="SRPage">
-<div id="SRIndex">
-<div class="SRStatus" id="NoMatches">No Matches</div>
-</div>
-</body>
-</html>
diff --git a/testing/html/search/search.css b/testing/html/search/search.css
deleted file mode 100644
index 4d7612f..0000000
--- a/testing/html/search/search.css
+++ /dev/null
@@ -1,271 +0,0 @@
-/*---------------- Search Box */
-
-#FSearchBox {
-    float: left;
-}
-
-#MSearchBox {
-    white-space : nowrap;
-    position: absolute;
-    float: none;
-    display: inline;
-    margin-top: 8px;
-    right: 0px;
-    width: 170px;
-    z-index: 102;
-    background-color: white;
-}
-
-#MSearchBox .left
-{
-    display:block;
-    position:absolute;
-    left:10px;
-    width:20px;
-    height:19px;
-    background:url('search_l.png') no-repeat;
-    background-position:right;
-}
-
-#MSearchSelect {
-    display:block;
-    position:absolute;
-    width:20px;
-    height:19px;
-}
-
-.left #MSearchSelect {
-    left:4px;
-}
-
-.right #MSearchSelect {
-    right:5px;
-}
-
-#MSearchField {
-    display:block;
-    position:absolute;
-    height:19px;
-    background:url('search_m.png') repeat-x;
-    border:none;
-    width:111px;
-    margin-left:20px;
-    padding-left:4px;
-    color: #909090;
-    outline: none;
-    font: 9pt Arial, Verdana, sans-serif;
-}
-
-#FSearchBox #MSearchField {
-    margin-left:15px;
-}
-
-#MSearchBox .right {
-    display:block;
-    position:absolute;
-    right:10px;
-    top:0px;
-    width:20px;
-    height:19px;
-    background:url('search_r.png') no-repeat;
-    background-position:left;
-}
-
-#MSearchClose {
-    display: none;
-    position: absolute;
-    top: 4px;
-    background : none;
-    border: none;
-    margin: 0px 4px 0px 0px;
-    padding: 0px 0px;
-    outline: none;
-}
-
-.left #MSearchClose {
-    left: 6px;
-}
-
-.right #MSearchClose {
-    right: 2px;
-}
-
-.MSearchBoxActive #MSearchField {
-    color: #000000;
-}
-
-/*---------------- Search filter selection */
-
-#MSearchSelectWindow {
-    display: none;
-    position: absolute;
-    left: 0; top: 0;
-    border: 1px solid #90A5CE;
-    background-color: #F9FAFC;
-    z-index: 1;
-    padding-top: 4px;
-    padding-bottom: 4px;
-    -moz-border-radius: 4px;
-    -webkit-border-top-left-radius: 4px;
-    -webkit-border-top-right-radius: 4px;
-    -webkit-border-bottom-left-radius: 4px;
-    -webkit-border-bottom-right-radius: 4px;
-    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-.SelectItem {
-    font: 8pt Arial, Verdana, sans-serif;
-    padding-left:  2px;
-    padding-right: 12px;
-    border: 0px;
-}
-
-span.SelectionMark {
-    margin-right: 4px;
-    font-family: monospace;
-    outline-style: none;
-    text-decoration: none;
-}
-
-a.SelectItem {
-    display: block;
-    outline-style: none;
-    color: #000000; 
-    text-decoration: none;
-    padding-left:   6px;
-    padding-right: 12px;
-}
-
-a.SelectItem:focus,
-a.SelectItem:active {
-    color: #000000; 
-    outline-style: none;
-    text-decoration: none;
-}
-
-a.SelectItem:hover {
-    color: #FFFFFF;
-    background-color: #3D578C;
-    outline-style: none;
-    text-decoration: none;
-    cursor: pointer;
-    display: block;
-}
-
-/*---------------- Search results window */
-
-iframe#MSearchResults {
-    width: 60ex;
-    height: 15em;
-}
-
-#MSearchResultsWindow {
-    display: none;
-    position: absolute;
-    left: 0; top: 0;
-    border: 1px solid #000;
-    background-color: #EEF1F7;
-}
-
-/* ----------------------------------- */
-
-
-#SRIndex {
-    clear:both; 
-    padding-bottom: 15px;
-}
-
-.SREntry {
-    font-size: 10pt;
-    padding-left: 1ex;
-}
-
-.SRPage .SREntry {
-    font-size: 8pt;
-    padding: 1px 5px;
-}
-
-body.SRPage {
-    margin: 5px 2px;
-}
-
-.SRChildren {
-    padding-left: 3ex; padding-bottom: .5em 
-}
-
-.SRPage .SRChildren {
-    display: none;
-}
-
-.SRSymbol {
-    font-weight: bold; 
-    color: #425E97;
-    font-family: Arial, Verdana, sans-serif;
-    text-decoration: none;
-    outline: none;
-}
-
-a.SRScope {
-    display: block;
-    color: #425E97; 
-    font-family: Arial, Verdana, sans-serif;
-    text-decoration: none;
-    outline: none;
-}
-
-a.SRSymbol:focus, a.SRSymbol:active,
-a.SRScope:focus, a.SRScope:active {
-    text-decoration: underline;
-}
-
-span.SRScope {
-    padding-left: 4px;
-}
-
-.SRPage .SRStatus {
-    padding: 2px 5px;
-    font-size: 8pt;
-    font-style: italic;
-}
-
-.SRResult {
-    display: none;
-}
-
-DIV.searchresults {
-    margin-left: 10px;
-    margin-right: 10px;
-}
-
-/*---------------- External search page results */
-
-.searchresult {
-    background-color: #F0F3F8;
-}
-
-.pages b {
-   color: white;
-   padding: 5px 5px 3px 5px;
-   background-image: url("../tab_a.png");
-   background-repeat: repeat-x;
-   text-shadow: 0 1px 1px #000000;
-}
-
-.pages {
-    line-height: 17px;
-    margin-left: 4px;
-    text-decoration: none;
-}
-
-.hl {
-    font-weight: bold;
-}
-
-#searchresults {
-    margin-bottom: 20px;
-}
-
-.searchpages {
-    margin-top: 10px;
-}
-
diff --git a/testing/html/search/search.js b/testing/html/search/search.js
deleted file mode 100644
index dedce3b..0000000
--- a/testing/html/search/search.js
+++ /dev/null
@@ -1,791 +0,0 @@
-function convertToId(search)
-{
-  var result = '';
-  for (i=0;i<search.length;i++)
-  {
-    var c = search.charAt(i);
-    var cn = c.charCodeAt(0);
-    if (c.match(/[a-z0-9\u0080-\uFFFF]/))
-    {
-      result+=c;
-    }
-    else if (cn<16)
-    {
-      result+="_0"+cn.toString(16);
-    }
-    else
-    {
-      result+="_"+cn.toString(16);
-    }
-  }
-  return result;
-}
-
-function getXPos(item)
-{
-  var x = 0;
-  if (item.offsetWidth)
-  {
-    while (item && item!=document.body)
-    {
-      x   += item.offsetLeft;
-      item = item.offsetParent;
-    }
-  }
-  return x;
-}
-
-function getYPos(item)
-{
-  var y = 0;
-  if (item.offsetWidth)
-  {
-     while (item && item!=document.body)
-     {
-       y   += item.offsetTop;
-       item = item.offsetParent;
-     }
-  }
-  return y;
-}
-
-/* A class handling everything associated with the search panel.
-
-   Parameters:
-   name - The name of the global variable that will be
-          storing this instance.  Is needed to be able to set timeouts.
-   resultPath - path to use for external files
-*/
-function SearchBox(name, resultsPath, inFrame, label)
-{
-  if (!name || !resultsPath) {  alert("Missing parameters to SearchBox."); }
-
-  // ---------- Instance variables
-  this.name                  = name;
-  this.resultsPath           = resultsPath;
-  this.keyTimeout            = 0;
-  this.keyTimeoutLength      = 500;
-  this.closeSelectionTimeout = 300;
-  this.lastSearchValue       = "";
-  this.lastResultsPage       = "";
-  this.hideTimeout           = 0;
-  this.searchIndex           = 0;
-  this.searchActive          = false;
-  this.insideFrame           = inFrame;
-  this.searchLabel           = label;
-
-  // ----------- DOM Elements
-
-  this.DOMSearchField = function()
-  {  return document.getElementById("MSearchField");  }
-
-  this.DOMSearchSelect = function()
-  {  return document.getElementById("MSearchSelect");  }
-
-  this.DOMSearchSelectWindow = function()
-  {  return document.getElementById("MSearchSelectWindow");  }
-
-  this.DOMPopupSearchResults = function()
-  {  return document.getElementById("MSearchResults");  }
-
-  this.DOMPopupSearchResultsWindow = function()
-  {  return document.getElementById("MSearchResultsWindow");  }
-
-  this.DOMSearchClose = function()
-  {  return document.getElementById("MSearchClose"); }
-
-  this.DOMSearchBox = function()
-  {  return document.getElementById("MSearchBox");  }
-
-  // ------------ Event Handlers
-
-  // Called when focus is added or removed from the search field.
-  this.OnSearchFieldFocus = function(isActive)
-  {
-    this.Activate(isActive);
-  }
-
-  this.OnSearchSelectShow = function()
-  {
-    var searchSelectWindow = this.DOMSearchSelectWindow();
-    var searchField        = this.DOMSearchSelect();
-
-    if (this.insideFrame)
-    {
-      var left = getXPos(searchField);
-      var top  = getYPos(searchField);
-      left += searchField.offsetWidth + 6;
-      top += searchField.offsetHeight;
-
-      // show search selection popup
-      searchSelectWindow.style.display='block';
-      left -= searchSelectWindow.offsetWidth;
-      searchSelectWindow.style.left =  left + 'px';
-      searchSelectWindow.style.top  =  top  + 'px';
-    }
-    else
-    {
-      var left = getXPos(searchField);
-      var top  = getYPos(searchField);
-      top += searchField.offsetHeight;
-
-      // show search selection popup
-      searchSelectWindow.style.display='block';
-      searchSelectWindow.style.left =  left + 'px';
-      searchSelectWindow.style.top  =  top  + 'px';
-    }
-
-    // stop selection hide timer
-    if (this.hideTimeout)
-    {
-      clearTimeout(this.hideTimeout);
-      this.hideTimeout=0;
-    }
-    return false; // to avoid "image drag" default event
-  }
-
-  this.OnSearchSelectHide = function()
-  {
-    this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
-                                  this.closeSelectionTimeout);
-  }
-
-  // Called when the content of the search field is changed.
-  this.OnSearchFieldChange = function(evt)
-  {
-    if (this.keyTimeout) // kill running timer
-    {
-      clearTimeout(this.keyTimeout);
-      this.keyTimeout = 0;
-    }
-
-    var e  = (evt) ? evt : window.event; // for IE
-    if (e.keyCode==40 || e.keyCode==13)
-    {
-      if (e.shiftKey==1)
-      {
-        this.OnSearchSelectShow();
-        var win=this.DOMSearchSelectWindow();
-        for (i=0;i<win.childNodes.length;i++)
-        {
-          var child = win.childNodes[i]; // get span within a
-          if (child.className=='SelectItem')
-          {
-            child.focus();
-            return;
-          }
-        }
-        return;
-      }
-      else if (window.frames.MSearchResults.searchResults)
-      {
-        var elem = window.frames.MSearchResults.searchResults.NavNext(0);
-        if (elem) elem.focus();
-      }
-    }
-    else if (e.keyCode==27) // Escape out of the search field
-    {
-      this.DOMSearchField().blur();
-      this.DOMPopupSearchResultsWindow().style.display = 'none';
-      this.DOMSearchClose().style.display = 'none';
-      this.lastSearchValue = '';
-      this.Activate(false);
-      return;
-    }
-
-    // strip whitespaces
-    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
-
-    if (searchValue != this.lastSearchValue) // search value has changed
-    {
-      if (searchValue != "") // non-empty search
-      {
-        // set timer for search update
-        this.keyTimeout = setTimeout(this.name + '.Search()',
-                                     this.keyTimeoutLength);
-      }
-      else // empty search field
-      {
-        this.DOMPopupSearchResultsWindow().style.display = 'none';
-        this.DOMSearchClose().style.display = 'none';
-        this.lastSearchValue = '';
-      }
-    }
-  }
-
-  this.SelectItemCount = function(id)
-  {
-    var count=0;
-    var win=this.DOMSearchSelectWindow();
-    for (i=0;i<win.childNodes.length;i++)
-    {
-      var child = win.childNodes[i]; // get span within a
-      if (child.className=='SelectItem')
-      {
-        count++;
-      }
-    }
-    return count;
-  }
-
-  this.SelectItemSet = function(id)
-  {
-    var i,j=0;
-    var win=this.DOMSearchSelectWindow();
-    for (i=0;i<win.childNodes.length;i++)
-    {
-      var child = win.childNodes[i]; // get span within a
-      if (child.className=='SelectItem')
-      {
-        var node = child.firstChild;
-        if (j==id)
-        {
-          node.innerHTML='•';
-        }
-        else
-        {
-          node.innerHTML=' ';
-        }
-        j++;
-      }
-    }
-  }
-
-  // Called when an search filter selection is made.
-  // set item with index id as the active item
-  this.OnSelectItem = function(id)
-  {
-    this.searchIndex = id;
-    this.SelectItemSet(id);
-    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
-    if (searchValue!="" && this.searchActive) // something was found -> do a search
-    {
-      this.Search();
-    }
-  }
-
-  this.OnSearchSelectKey = function(evt)
-  {
-    var e = (evt) ? evt : window.event; // for IE
-    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
-    {
-      this.searchIndex++;
-      this.OnSelectItem(this.searchIndex);
-    }
-    else if (e.keyCode==38 && this.searchIndex>0) // Up
-    {
-      this.searchIndex--;
-      this.OnSelectItem(this.searchIndex);
-    }
-    else if (e.keyCode==13 || e.keyCode==27)
-    {
-      this.OnSelectItem(this.searchIndex);
-      this.CloseSelectionWindow();
-      this.DOMSearchField().focus();
-    }
-    return false;
-  }
-
-  // --------- Actions
-
-  // Closes the results window.
-  this.CloseResultsWindow = function()
-  {
-    this.DOMPopupSearchResultsWindow().style.display = 'none';
-    this.DOMSearchClose().style.display = 'none';
-    this.Activate(false);
-  }
-
-  this.CloseSelectionWindow = function()
-  {
-    this.DOMSearchSelectWindow().style.display = 'none';
-  }
-
-  // Performs a search.
-  this.Search = function()
-  {
-    this.keyTimeout = 0;
-
-    // strip leading whitespace
-    var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
-
-    var code = searchValue.toLowerCase().charCodeAt(0);
-    var idxChar = searchValue.substr(0, 1).toLowerCase();
-    if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
-    {
-      idxChar = searchValue.substr(0, 2);
-    }
-
-    var resultsPage;
-    var resultsPageWithSearch;
-    var hasResultsPage;
-
-    var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
-    if (idx!=-1)
-    {
-       var hexCode=idx.toString(16);
-       resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
-       resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
-       hasResultsPage = true;
-    }
-    else // nothing available for this search term
-    {
-       resultsPage = this.resultsPath + '/nomatches.html';
-       resultsPageWithSearch = resultsPage;
-       hasResultsPage = false;
-    }
-
-    window.frames.MSearchResults.location = resultsPageWithSearch;
-    var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
-
-    if (domPopupSearchResultsWindow.style.display!='block')
-    {
-       var domSearchBox = this.DOMSearchBox();
-       this.DOMSearchClose().style.display = 'inline';
-       if (this.insideFrame)
-       {
-         var domPopupSearchResults = this.DOMPopupSearchResults();
-         domPopupSearchResultsWindow.style.position = 'relative';
-         domPopupSearchResultsWindow.style.display  = 'block';
-         var width = document.body.clientWidth - 8; // the -8 is for IE :-(
-         domPopupSearchResultsWindow.style.width    = width + 'px';
-         domPopupSearchResults.style.width          = width + 'px';
-       }
-       else
-       {
-         var domPopupSearchResults = this.DOMPopupSearchResults();
-         var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
-         var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;
-         domPopupSearchResultsWindow.style.display = 'block';
-         left -= domPopupSearchResults.offsetWidth;
-         domPopupSearchResultsWindow.style.top     = top  + 'px';
-         domPopupSearchResultsWindow.style.left    = left + 'px';
-       }
-    }
-
-    this.lastSearchValue = searchValue;
-    this.lastResultsPage = resultsPage;
-  }
-
-  // -------- Activation Functions
-
-  // Activates or deactivates the search panel, resetting things to
-  // their default values if necessary.
-  this.Activate = function(isActive)
-  {
-    if (isActive || // open it
-        this.DOMPopupSearchResultsWindow().style.display == 'block'
-       )
-    {
-      this.DOMSearchBox().className = 'MSearchBoxActive';
-
-      var searchField = this.DOMSearchField();
-
-      if (searchField.value == this.searchLabel) // clear "Search" term upon entry
-      {
-        searchField.value = '';
-        this.searchActive = true;
-      }
-    }
-    else if (!isActive) // directly remove the panel
-    {
-      this.DOMSearchBox().className = 'MSearchBoxInactive';
-      this.DOMSearchField().value   = this.searchLabel;
-      this.searchActive             = false;
-      this.lastSearchValue          = ''
-      this.lastResultsPage          = '';
-    }
-  }
-}
-
-// -----------------------------------------------------------------------
-
-// The class that handles everything on the search results page.
-function SearchResults(name)
-{
-    // The number of matches from the last run of <Search()>.
-    this.lastMatchCount = 0;
-    this.lastKey = 0;
-    this.repeatOn = false;
-
-    // Toggles the visibility of the passed element ID.
-    this.FindChildElement = function(id)
-    {
-      var parentElement = document.getElementById(id);
-      var element = parentElement.firstChild;
-
-      while (element && element!=parentElement)
-      {
-        if (element.nodeName == 'DIV' && element.className == 'SRChildren')
-        {
-          return element;
-        }
-
-        if (element.nodeName == 'DIV' && element.hasChildNodes())
-        {
-           element = element.firstChild;
-        }
-        else if (element.nextSibling)
-        {
-           element = element.nextSibling;
-        }
-        else
-        {
-          do
-          {
-            element = element.parentNode;
-          }
-          while (element && element!=parentElement && !element.nextSibling);
-
-          if (element && element!=parentElement)
-          {
-            element = element.nextSibling;
-          }
-        }
-      }
-    }
-
-    this.Toggle = function(id)
-    {
-      var element = this.FindChildElement(id);
-      if (element)
-      {
-        if (element.style.display == 'block')
-        {
-          element.style.display = 'none';
-        }
-        else
-        {
-          element.style.display = 'block';
-        }
-      }
-    }
-
-    // Searches for the passed string.  If there is no parameter,
-    // it takes it from the URL query.
-    //
-    // Always returns true, since other documents may try to call it
-    // and that may or may not be possible.
-    this.Search = function(search)
-    {
-      if (!search) // get search word from URL
-      {
-        search = window.location.search;
-        search = search.substring(1);  // Remove the leading '?'
-        search = unescape(search);
-      }
-
-      search = search.replace(/^ +/, ""); // strip leading spaces
-      search = search.replace(/ +$/, ""); // strip trailing spaces
-      search = search.toLowerCase();
-      search = convertToId(search);
-
-      var resultRows = document.getElementsByTagName("div");
-      var matches = 0;
-
-      var i = 0;
-      while (i < resultRows.length)
-      {
-        var row = resultRows.item(i);
-        if (row.className == "SRResult")
-        {
-          var rowMatchName = row.id.toLowerCase();
-          rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
-
-          if (search.length<=rowMatchName.length &&
-             rowMatchName.substr(0, search.length)==search)
-          {
-            row.style.display = 'block';
-            matches++;
-          }
-          else
-          {
-            row.style.display = 'none';
-          }
-        }
-        i++;
-      }
-      document.getElementById("Searching").style.display='none';
-      if (matches == 0) // no results
-      {
-        document.getElementById("NoMatches").style.display='block';
-      }
-      else // at least one result
-      {
-        document.getElementById("NoMatches").style.display='none';
-      }
-      this.lastMatchCount = matches;
-      return true;
-    }
-
-    // return the first item with index index or higher that is visible
-    this.NavNext = function(index)
-    {
-      var focusItem;
-      while (1)
-      {
-        var focusName = 'Item'+index;
-        focusItem = document.getElementById(focusName);
-        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
-        {
-          break;
-        }
-        else if (!focusItem) // last element
-        {
-          break;
-        }
-        focusItem=null;
-        index++;
-      }
-      return focusItem;
-    }
-
-    this.NavPrev = function(index)
-    {
-      var focusItem;
-      while (1)
-      {
-        var focusName = 'Item'+index;
-        focusItem = document.getElementById(focusName);
-        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
-        {
-          break;
-        }
-        else if (!focusItem) // last element
-        {
-          break;
-        }
-        focusItem=null;
-        index--;
-      }
-      return focusItem;
-    }
-
-    this.ProcessKeys = function(e)
-    {
-      if (e.type == "keydown")
-      {
-        this.repeatOn = false;
-        this.lastKey = e.keyCode;
-      }
-      else if (e.type == "keypress")
-      {
-        if (!this.repeatOn)
-        {
-          if (this.lastKey) this.repeatOn = true;
-          return false; // ignore first keypress after keydown
-        }
-      }
-      else if (e.type == "keyup")
-      {
-        this.lastKey = 0;
-        this.repeatOn = false;
-      }
-      return this.lastKey!=0;
-    }
-
-    this.Nav = function(evt,itemIndex)
-    {
-      var e  = (evt) ? evt : window.event; // for IE
-      if (e.keyCode==13) return true;
-      if (!this.ProcessKeys(e)) return false;
-
-      if (this.lastKey==38) // Up
-      {
-        var newIndex = itemIndex-1;
-        var focusItem = this.NavPrev(newIndex);
-        if (focusItem)
-        {
-          var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
-          if (child && child.style.display == 'block') // children visible
-          {
-            var n=0;
-            var tmpElem;
-            while (1) // search for last child
-            {
-              tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
-              if (tmpElem)
-              {
-                focusItem = tmpElem;
-              }
-              else // found it!
-              {
-                break;
-              }
-              n++;
-            }
-          }
-        }
-        if (focusItem)
-        {
-          focusItem.focus();
-        }
-        else // return focus to search field
-        {
-           parent.document.getElementById("MSearchField").focus();
-        }
-      }
-      else if (this.lastKey==40) // Down
-      {
-        var newIndex = itemIndex+1;
-        var focusItem;
-        var item = document.getElementById('Item'+itemIndex);
-        var elem = this.FindChildElement(item.parentNode.parentNode.id);
-        if (elem && elem.style.display == 'block') // children visible
-        {
-          focusItem = document.getElementById('Item'+itemIndex+'_c0');
-        }
-        if (!focusItem) focusItem = this.NavNext(newIndex);
-        if (focusItem)  focusItem.focus();
-      }
-      else if (this.lastKey==39) // Right
-      {
-        var item = document.getElementById('Item'+itemIndex);
-        var elem = this.FindChildElement(item.parentNode.parentNode.id);
-        if (elem) elem.style.display = 'block';
-      }
-      else if (this.lastKey==37) // Left
-      {
-        var item = document.getElementById('Item'+itemIndex);
-        var elem = this.FindChildElement(item.parentNode.parentNode.id);
-        if (elem) elem.style.display = 'none';
-      }
-      else if (this.lastKey==27) // Escape
-      {
-        parent.searchBox.CloseResultsWindow();
-        parent.document.getElementById("MSearchField").focus();
-      }
-      else if (this.lastKey==13) // Enter
-      {
-        return true;
-      }
-      return false;
-    }
-
-    this.NavChild = function(evt,itemIndex,childIndex)
-    {
-      var e  = (evt) ? evt : window.event; // for IE
-      if (e.keyCode==13) return true;
-      if (!this.ProcessKeys(e)) return false;
-
-      if (this.lastKey==38) // Up
-      {
-        if (childIndex>0)
-        {
-          var newIndex = childIndex-1;
-          document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
-        }
-        else // already at first child, jump to parent
-        {
-          document.getElementById('Item'+itemIndex).focus();
-        }
-      }
-      else if (this.lastKey==40) // Down
-      {
-        var newIndex = childIndex+1;
-        var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
-        if (!elem) // last child, jump to parent next parent
-        {
-          elem = this.NavNext(itemIndex+1);
-        }
-        if (elem)
-        {
-          elem.focus();
-        }
-      }
-      else if (this.lastKey==27) // Escape
-      {
-        parent.searchBox.CloseResultsWindow();
-        parent.document.getElementById("MSearchField").focus();
-      }
-      else if (this.lastKey==13) // Enter
-      {
-        return true;
-      }
-      return false;
-    }
-}
-
-function setKeyActions(elem,action)
-{
-  elem.setAttribute('onkeydown',action);
-  elem.setAttribute('onkeypress',action);
-  elem.setAttribute('onkeyup',action);
-}
-
-function setClassAttr(elem,attr)
-{
-  elem.setAttribute('class',attr);
-  elem.setAttribute('className',attr);
-}
-
-function createResults()
-{
-  var results = document.getElementById("SRResults");
-  for (var e=0; e<searchData.length; e++)
-  {
-    var id = searchData[e][0];
-    var srResult = document.createElement('div');
-    srResult.setAttribute('id','SR_'+id);
-    setClassAttr(srResult,'SRResult');
-    var srEntry = document.createElement('div');
-    setClassAttr(srEntry,'SREntry');
-    var srLink = document.createElement('a');
-    srLink.setAttribute('id','Item'+e);
-    setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
-    setClassAttr(srLink,'SRSymbol');
-    srLink.innerHTML = searchData[e][1][0];
-    srEntry.appendChild(srLink);
-    if (searchData[e][1].length==2) // single result
-    {
-      srLink.setAttribute('href',searchData[e][1][1][0]);
-      if (searchData[e][1][1][1])
-      {
-       srLink.setAttribute('target','_parent');
-      }
-      var srScope = document.createElement('span');
-      setClassAttr(srScope,'SRScope');
-      srScope.innerHTML = searchData[e][1][1][2];
-      srEntry.appendChild(srScope);
-    }
-    else // multiple results
-    {
-      srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
-      var srChildren = document.createElement('div');
-      setClassAttr(srChildren,'SRChildren');
-      for (var c=0; c<searchData[e][1].length-1; c++)
-      {
-        var srChild = document.createElement('a');
-        srChild.setAttribute('id','Item'+e+'_c'+c);
-        setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
-        setClassAttr(srChild,'SRScope');
-        srChild.setAttribute('href',searchData[e][1][c+1][0]);
-        if (searchData[e][1][c+1][1])
-        {
-         srChild.setAttribute('target','_parent');
-        }
-        srChild.innerHTML = searchData[e][1][c+1][2];
-        srChildren.appendChild(srChild);
-      }
-      srEntry.appendChild(srChildren);
-    }
-    srResult.appendChild(srEntry);
-    results.appendChild(srResult);
-  }
-}
-
-function init_search()
-{
-  var results = document.getElementById("MSearchSelectWindow");
-  for (var key in indexSectionLabels)
-  {
-    var link = document.createElement('a');
-    link.setAttribute('class','SelectItem');
-    link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
-    link.href='javascript:void(0)';
-    link.innerHTML='<span class="SelectionMark"> </span>'+indexSectionLabels[key];
-    results.appendChild(link);
-  }
-  searchBox.OnSelectItem(0);
-}
-
diff --git a/testing/html/search/search_l.png b/testing/html/search/search_l.png
deleted file mode 100644
index c872f4d..0000000
Binary files a/testing/html/search/search_l.png and /dev/null differ
diff --git a/testing/html/search/search_m.png b/testing/html/search/search_m.png
deleted file mode 100644
index b429a16..0000000
Binary files a/testing/html/search/search_m.png and /dev/null differ
diff --git a/testing/html/search/search_r.png b/testing/html/search/search_r.png
deleted file mode 100644
index 97ee8b4..0000000
Binary files a/testing/html/search/search_r.png and /dev/null differ
diff --git a/testing/html/search/searchdata.js b/testing/html/search/searchdata.js
deleted file mode 100644
index 5f2a365..0000000
--- a/testing/html/search/searchdata.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var indexSectionsWithContent =
-{
-  0: "0co",
-  1: "o",
-  2: "0",
-  3: "c"
-};
-
-var indexSectionNames =
-{
-  0: "all",
-  1: "namespaces",
-  2: "files",
-  3: "functions"
-};
-
-var indexSectionLabels =
-{
-  0: "All",
-  1: "Namespaces",
-  2: "Files",
-  3: "Functions"
-};
-
diff --git a/testing/html/splitbar.png b/testing/html/splitbar.png
deleted file mode 100644
index fe895f2..0000000
Binary files a/testing/html/splitbar.png and /dev/null differ
diff --git a/testing/html/sync_off.png b/testing/html/sync_off.png
deleted file mode 100644
index 3b443fc..0000000
Binary files a/testing/html/sync_off.png and /dev/null differ
diff --git a/testing/html/sync_on.png b/testing/html/sync_on.png
deleted file mode 100644
index e08320f..0000000
Binary files a/testing/html/sync_on.png and /dev/null differ
diff --git a/testing/html/tab_a.png b/testing/html/tab_a.png
deleted file mode 100644
index 3b725c4..0000000
Binary files a/testing/html/tab_a.png and /dev/null differ
diff --git a/testing/html/tab_b.png b/testing/html/tab_b.png
deleted file mode 100644
index e2b4a86..0000000
Binary files a/testing/html/tab_b.png and /dev/null differ
diff --git a/testing/html/tab_h.png b/testing/html/tab_h.png
deleted file mode 100644
index fd5cb70..0000000
Binary files a/testing/html/tab_h.png and /dev/null differ
diff --git a/testing/html/tab_s.png b/testing/html/tab_s.png
deleted file mode 100644
index ab478c9..0000000
Binary files a/testing/html/tab_s.png and /dev/null differ
diff --git a/testing/html/tabs.css b/testing/html/tabs.css
deleted file mode 100644
index 9cf578f..0000000
--- a/testing/html/tabs.css
+++ /dev/null
@@ -1,60 +0,0 @@
-.tabs, .tabs2, .tabs3 {
-    background-image: url('tab_b.png');
-    width: 100%;
-    z-index: 101;
-    font-size: 13px;
-    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-}
-
-.tabs2 {
-    font-size: 10px;
-}
-.tabs3 {
-    font-size: 9px;
-}
-
-.tablist {
-    margin: 0;
-    padding: 0;
-    display: table;
-}
-
-.tablist li {
-    float: left;
-    display: table-cell;
-    background-image: url('tab_b.png');
-    line-height: 36px;
-    list-style: none;
-}
-
-.tablist a {
-    display: block;
-    padding: 0 20px;
-    font-weight: bold;
-    background-image:url('tab_s.png');
-    background-repeat:no-repeat;
-    background-position:right;
-    color: #283A5D;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    text-decoration: none;
-    outline: none;
-}
-
-.tabs3 .tablist a {
-    padding: 0 10px;
-}
-
-.tablist a:hover {
-    background-image: url('tab_h.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-    text-decoration: none;
-}
-
-.tablist li.current a {
-    background-image: url('tab_a.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
diff --git a/testing/runtests.pl b/testing/runtests.pl
deleted file mode 100755
index 30fe969..0000000
--- a/testing/runtests.pl
+++ /dev/null
@@ -1,252 +0,0 @@
-#!/usr/bin/perl
-
-# perl script to execute doxygen's regression test suite.
-#
-# Copyright (C) 1997-2014 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-
-use strict;
-use warnings;
-
-use Getopt::Long;
-use Test::More;
-use File::Path qw(make_path remove_tree);
-use File::Copy qw(copy);
-
-my $Test = Test::Builder->new;
-my $opt_doxygen_exe = 'doxygen';
-my $opt_xmllint_exe = 'xmllint';
-my $opt_updateref = '';
-my @opt_test_ids;
-my $opt_all = '';
-
-GetOptions( 'updateref'  => \$opt_updateref,
-            'doxygen=s'  => \$opt_doxygen_exe,
-            'xmllint=s'  => \$opt_xmllint_exe,
-            'id=i'       => \@opt_test_ids,
-            'all'        => \$opt_all
-          );
-
-sub read_two_files {
-  my $first   = shift;
-  my $second  = shift;
-  my $filter  = shift;
-  my $success = 1;
-  my @errors;
-
-  unless (open FIRST, "$first") {
-    $success = 0;
-    push @errors, "$first absent";
-  }
-  unless (open SECOND, "$second") {
-    $success = 0;
-    push @errors, "$second absent";
-  }
-  return ($success, @errors) unless $success;
-
-  my $first_lines  = join "",<FIRST>;
-  my $second_lines = join "",<SECOND>;
-  
-  close FIRST;
-  close SECOND;
-
-  return ($success, $first_lines, $second_lines);
-}
-
-sub compare_ok {
-  my $got_file      = shift;
-  my $expected_file = shift;
-  my $name          = shift;
-  my @read_result   = read_two_files($got_file, $expected_file);
-  my $files_exist   = shift @read_result;
-
-  if ($files_exist) {
-    my ($got, $expected) = @read_result;
-    my $diff = `diff -u $got_file $expected_file`;
-    my $failed = length $diff;
-    return ($failed,"Difference between generated output and reference:\n$diff");
-  }
-  else {
-    return (1,join "\n", @read_result);
-  }
-}
-
-sub chop_volatile {
-  my $line = shift;
-  $line =~ s/version="\d\.\d+\.\d+(\.\d+)?"/version=""/g; # strip version
-  $line =~ s/file=".*\/(.*)"/file="$1"/g; # strip location
-  return $line;
-}
-
-sub get_config {
-  my $file = shift;
-  my %config;
-  open F,"<$file";
-  while (<F>) {
-    if (/\/\/\s*(\S+):\s*(.*)$/) {
-      my $key = $1;
-      my $val = $2;
-      chomp $val;
-      $config{$key} = [] unless defined $config{$key};
-      push @{$config{$key}},$val;
-    }
-  }
-  return %config;
-}
-
-sub perform_test {
-  my $test_file = shift;
-  my %config = get_config($test_file);
-  my $test_name = "[$test_file]: $config{'objective'}[0]";
-  my $test_id = $test_file;
-  $test_id =~ s/^(\d+).*$/$1/;
-  my $test_out = "test_output_${test_id}";
-
-  if (scalar($config{'check'})==0) {
-    $Test->ok(0, $test_name);
-    $Test->diag("Test doesn't specify any files to check");
-    return;
-  }
-
-  # prepare test environment
-  remove_tree("$test_out");
-  make_path("$test_out");
-  copy("Doxyfile","$test_out");
-  open(F,">>$test_out/Doxyfile");
-  print F "INPUT = $test_file\n";
-  print F "XML_OUTPUT = $test_out/out\n";
-  foreach my $cfg (@{$config{'config'}}) {
-    print F "$cfg\n";
-  }
-  close(F);
-
-  # run doxygen
-  if (system("$opt_doxygen_exe $test_out/Doxyfile")!=0) {
-    $Test->ok(0, $test_name);
-    $Test->diag("Failed to run doxygen");
-    return;
-  } 
-
-  # look for files to check against the reference
-  foreach my $fn (@{$config{'check'}}) {
-    if (!-f "$test_out/out/$fn") {
-      $Test->ok(0, $test_name);
-      $Test->diag("Non-existing file $test_out/out/$fn after 'check:' statement");
-      return;
-    }
-    # run xmllint on the output file
-    my @lines = `$opt_xmllint_exe --format --noblanks --nowarning $test_out/out/$fn`;
-    if (scalar(@lines)>0 && open(F,">$test_out/$fn")) {
-      foreach my $line (@lines) {
-        print F chop_volatile($line);
-      }
-      close(F);
-    } else {
-      $Test->ok(0, $test_name);
-      $Test->diag("Failed to run xmllint on the doxygen output file $test_out/out/$fn");
-    }
-    my ($failed,$msg) = compare_ok("$test_out/$fn","$test_id/$fn",$test_name);
-    if ($failed) {
-      $Test->ok(0, $test_name);
-      $Test->diag($msg);
-      return;
-    }
-  }
-
-  # test passed
-  remove_tree("$test_out");
-  $Test->ok(1, $test_name);
-}
-
-sub update_test {
-  my $test_file = shift;
-  my %config = get_config($test_file);
-  my $test_name = "[$test_file]: $config{'objective'}[0]";
-  my $test_id = $test_file;
-  $test_id =~ s/^(\d+).*$/$1/;
-  my $test_out = $test_id;
-
-  # prepare reference environment
-  remove_tree("$test_out");
-  make_path("$test_out");
-  copy("Doxyfile","$test_out");
-  open(F,">>$test_out/Doxyfile");
-  print F "INPUT = $test_file\n";
-  print F "XML_OUTPUT = $test_out/out\n";
-  foreach my $cfg (@{$config{'config'}}) {
-    print F "$cfg\n";
-  }
-  close(F);
-
-  print "Updating reference for $test_name\n";
-
-  # run doxygen
-  if (system("$opt_doxygen_exe $test_out/Doxyfile")!=0) {
-    print("Error: failed to run doxygen");
-    return;
-  } 
-  my $err=0;
-
-  # look for files to prepare as reference
-  foreach my $fn (@{$config{'check'}}) {
-    if (!-f "$test_out/out/$fn") {
-      printf("Error: Non-existing file $test_out/out/$fn after 'check:' statement\n");
-      $err=1;
-    }
-    # run xmllint on the output file
-    if (!$err) {
-      my @lines = `$opt_xmllint_exe --format --noblanks --nowarning $test_out/out/$fn`;
-      if (scalar(@lines)>0 && open(F,">$test_out/$fn")) {
-        foreach my $line (@lines) {
-          print F chop_volatile($line);
-        }
-        close(F);
-      } else {
-        printf("Error: Failed to run xmllint on the doxygen output file $test_out/out/$fn\n");
-        $err=1;
-      }
-    }
-  }
-
-  if (!$err) {
-    # clean-up
-    remove_tree("$test_out/out");
-    unlink("$test_out/Doxyfile");
-  }
-}
-
-# get the tests
-my @tests;
-if (scalar(@opt_test_ids)==0 && $opt_updateref && !$opt_all) {
-  printf("Error: updateref option requires -id to update a test or -all to update all\n");
-  exit(1);
-}
-if (scalar(@opt_test_ids)>0) {
-  foreach my $t (@opt_test_ids) {
-    push @tests, glob("${t}_* 0${t}_* 00${t}_*");
-  }
-} else {
-  @tests = glob('[0-9][0-9][0-9]_*');
-}
-
-if ($opt_updateref) {
-  # update reference
-  foreach my $test (@tests) {
-    update_test($test);
-  }
-} else {
-  # run tests
-  plan tests => scalar(@tests);
-  foreach my $test (@tests) {
-    perform_test($test);
-  }
-}
-
diff --git a/testing/runtests.py b/testing/runtests.py
new file mode 100644
index 0000000..83647c6
--- /dev/null
+++ b/testing/runtests.py
@@ -0,0 +1,202 @@
+#!/usr/bin/python
+
+from __future__ import print_function
+import argparse, glob, itertools, re, shutil, os, sys
+
+config_reg = re.compile('.*\/\/\s*(?P<name>\S+):\s*(?P<value>.*)$')
+
+class Tester:
+	def __init__(self,args,test):
+		self.args      = args
+		self.test      = test
+		self.update    = args.updateref
+		self.config    = self.get_config()
+		self.test_name = '[%s]: %s' % (self.test,self.config['objective'][0])
+		self.test_id   = self.test.split('_')[0]
+		if self.update:
+			self.test_out = self.args.inputdir+'/'+self.test_id
+		else:
+			self.test_out = self.args.outputdir+'/test_output_'+self.test_id
+		self.prepare_test()
+
+	def compare_ok(self,got_file,expected_file,name):
+		if not os.path.isfile(got_file):
+			return (True,'%s absent' % got_file)
+		elif not os.path.isfile(expected_file):
+			return (True,'%s absent' % expected_file)
+		else:
+			diff = os.popen('diff -b -w -u %s %s' % (got_file,expected_file)).read()
+			if diff and not diff.startswith("No differences"):
+				return (True,'Difference between generated output and reference:\n%s' % diff)
+		return (False,'')
+
+	def get_config(self):
+		config = {}
+		with open(self.args.inputdir+'/'+self.test,'r') as f:
+			for line in f.readlines():
+				m = config_reg.match(line)
+				if m:
+					key   = m.group('name')
+					value = m.group('value')
+					if (key=='config'):
+						value = value.replace('$INPUTDIR',self.args.inputdir)
+					#print('key=%s value=%s' % (key,value))
+					config.setdefault(key, []).append(value)
+		return config
+
+	def prepare_test(self):
+		# prepare test environment
+		shutil.rmtree(self.test_out,ignore_errors=True)
+		os.mkdir(self.test_out)
+		shutil.copy(self.args.inputdir+'/Doxyfile',self.test_out)
+		with open(self.test_out+'/Doxyfile','a') as f:
+			print('INPUT=%s/%s' % (self.args.inputdir,self.test), file=f)
+			print('STRIP_FROM_PATH=%s' % self.args.inputdir, file=f)
+			print('XML_OUTPUT=%s/out' % self.test_out, file=f)
+			print('EXAMPLE_PATH=%s' % self.args.inputdir, file=f)
+			if 'config' in self.config:
+				for option in self.config['config']:
+					print(option, file=f)
+
+		if 'check' not in self.config or not self.config['check']:
+			print('Test doesn\'t specify any files to check')
+			sys.exit(1)
+
+		# run doxygen
+		if (sys.platform == 'win32'):
+			redir=' > nul:'             
+		else:
+			redir=' 2> /dev/null'             
+		if os.system('%s %s/Doxyfile %s' % (self.args.doxygen,self.test_out, redir))!=0:
+			print('Error: failed to run %s on %s/Doxyfile' % (self.args.doxygen,self.test_out));
+			sys.exit(1)
+
+	# update the reference data for this test
+	def update_test(self,testmgr):
+		print('Updating reference for %s' % self.test_name)
+
+		if 'check' in self.config:
+			for check in self.config['check']:
+				check_file='%s/out/%s' % (self.test_out,check)
+				# check if the file we need to check is actually generated
+				if not os.path.isfile(check_file):
+					print('Non-existing file %s after \'check:\' statement' % check_file)
+					return
+				# convert output to canonical form
+				data = os.popen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read()
+				if data:
+					# strip version
+					data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n')
+				else:
+					print('Failed to run %s on the doxygen output file %s' % (self.args.xmllint,self.test_out))
+					return
+				out_file='%s/%s' % (self.test_out,check)
+				with open(out_file,'w') as f:
+					print(data,file=f)
+		shutil.rmtree(self.test_out+'/out',ignore_errors=True)
+		os.remove(self.test_out+'/Doxyfile')
+
+	# check the relevant files of a doxygen run with the reference material
+	def perform_test(self,testmgr):
+		# look for files to check against the reference
+		if 'check' in self.config:
+			for check in self.config['check']:
+				check_file='%s/out/%s' % (self.test_out,check)
+				# check if the file we need to check is actually generated
+				if not os.path.isfile(check_file):
+					testmgr.ok(False,self.test_name,msg='Non-existing file %s after \'check:\' statement' % check_file)
+					return
+				# convert output to canonical form
+				data = os.popen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read()
+				if data:
+					# strip version
+					data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n')
+				else:
+					testmgr.ok(False,self.test_name,msg='Failed to run %s on the doxygen output file %s' % (self.args.xmllint,self.test_out))
+					return
+				out_file='%s/%s' % (self.test_out,check)
+				with open(out_file,'w') as f:
+					print(data,file=f)
+				ref_file='%s/%s/%s' % (self.args.inputdir,self.test_id,check)
+				(failed,msg) = self.compare_ok(out_file,ref_file,self.test_name)
+				if failed:
+					testmgr.ok(False,self.test_name,msg)
+					return
+		shutil.rmtree(self.test_out,ignore_errors=True)
+		testmgr.ok(True,self.test_name)
+
+	def run(self,testmgr):
+		if self.update:
+			self.update_test(testmgr)
+		else:
+			self.perform_test(testmgr)
+
+class TestManager:
+	def __init__(self,args,tests):
+		self.args  = args
+		self.tests = tests
+		self.num_tests = len(tests)
+		self.count=1
+		self.passed=0
+		print('1..%d' % self.num_tests)
+
+	def ok(self,result,test_name,msg='Ok'):
+		if result:
+			print('ok %s - %s' % (self.count,test_name))
+			self.passed = self.passed + 1
+		else:
+			print('not ok %s - %s' % (self.count,test_name))
+			print('-------------------------------------')
+			print(msg)
+			print('-------------------------------------')
+		self.count = self.count + 1
+
+	def result(self):
+		if self.passed==self.num_tests:
+			print('All tests passed!')
+		else:
+			print('%d out of %s tests failed' % (self.num_tests-self.passed,self.num_tests))
+		return 0 if self.passed==self.num_tests else 1
+
+	def perform_tests(self):
+		for test in self.tests:
+			tester = Tester(self.args,test)
+			tester.run(self)
+		return 0 if self.args.updateref else self.result()
+
+def main():
+	# argument handling
+	parser = argparse.ArgumentParser(description='run doxygen tests')
+	parser.add_argument('--updateref',help='update the reference data for a test',action="store_true")
+	parser.add_argument('--doxygen',nargs='?',default='doxygen',help='path/name of the doxygen executable')
+	parser.add_argument('--xmllint',nargs='?',default='xmllint',help='path/name of the xmllint executable')
+	parser.add_argument('--id',nargs='+',dest='ids',action='append',type=int,help='id of the test to perform')
+	parser.add_argument('--all',help='perform all tests',action="store_true")
+	parser.add_argument('--inputdir',nargs='?',default='.',help='input directory containing the tests')
+	parser.add_argument('--outputdir',nargs='?',default='.',help='output directory to write the doxygen output to')
+	args = parser.parse_args()
+
+    # sanity check
+	if (not args.updateref is None) and (args.ids is None) and (args.all is None):
+		parser.error('--updateref requires either --id or --all')
+
+	starting_directory = os.getcwd()
+	os.chdir(args.inputdir)
+    # find the tests to run
+	if args.ids: # test ids are given by user
+		tests = []
+		for id in list(itertools.chain.from_iterable(args.ids)):
+			tests.append(glob.glob('%s_*'%id))
+			tests.append(glob.glob('0%s_*'%id))
+			tests.append(glob.glob('00%s_*'%id))
+		tests = list(itertools.chain.from_iterable(tests))
+	else: # find all tests
+		tests = glob.glob('[0-9][0-9][0-9]_*')
+	os.chdir(starting_directory)
+
+	# create test manager to run the tests
+	testManager = TestManager(args,tests)
+	sys.exit(testManager.perform_tests())
+
+if __name__ == '__main__':
+	main()
diff --git a/tmake/CHANGES b/tmake/CHANGES
deleted file mode 100644
index ce686e9..0000000
--- a/tmake/CHANGES
+++ /dev/null
@@ -1,49 +0,0 @@
-		     Changes from version 1.2 to 1.3
-
-* Improved Qt 2.0 support.
-
-* INCLUDEPATH can have directories containing whitespace (use semicolon)
-  as separator.
-
-* Many, many code fixes and doc improvements.
-
-
-		     Changes from version 1.1 to 1.2
-
-* tmake is no longer restricted to C++ only.  You can now use both C++
-  and C files in your project.  Thanks to Ulrich Ring for valuable feed-
-  back and comments.
-
-* Added support for building DLL libraries under Windows.
-  NOTE: Qt 1.42 and later now uses qtmain.lib in addition to qt.lib
-  when your application uses the Qt DLL.  Add "DEFINES = QT_DLL" to
-  your project file to use the Qt DLL.
-
-* New dist target added in the app and lib templates.
-  Run "make dist" to pack all files in your project using tar/gzip or zip.
-  Thanks to Kalle Dalheimer for this patch.
-
-* Fixed bad command line interpretation bug in tmake.exe and progen.exe.
-
-* Added support for Borland C++ builder 3.
-
-* Initial support for QNX/g++ and the IBM Visual Age compiler on Win32.
-  Thanks to Igor Kovalenko and Joost Kraaijeveld.
-
-* Many fixes in tmake.conf for several Unix configurations.
-
-
-		     Changes from version 1.0 to 1.1
-
-* Provides tmake.exe and progen.exe for Windows users without perl.
-
-* Added many new Unix templates.
-
-* Added subdirs.t templates.
-
-* Added system-dependent project settings
-  (e.g. solaris-cc:TMAKE_CFLAGS = -pts)
-
-* Many bug fixes and improvements for existing templates.
-
-* Improved documentation.
diff --git a/tmake/LICENSE b/tmake/LICENSE
deleted file mode 100644
index 7262d5a..0000000
--- a/tmake/LICENSE
+++ /dev/null
@@ -1,9 +0,0 @@
-		       License Statement for tmake
-
-Copyright (C) 1996-1999 by Troll Tech AS.  All rights reserved.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided
-that the this copyright notice appears in all copies.
-No representations are made about the suitability of this software for any
-purpose. It is provided "as is" without express or implied warranty.
diff --git a/tmake/README b/tmake/README
deleted file mode 100644
index b049d32..0000000
--- a/tmake/README
+++ /dev/null
@@ -1,10 +0,0 @@
-			    tmake version 1.3
-
-tmake is an easy-to-use tool for creating and maintaining makefiles across
-many platforms and compilers. For information about installing and using
-tmake, see:
-
-  doc/tmake.html      -- User's Guide
-  doc/tmake_ref.html  -- Reference Manual
-
-Download the latest version from: <ftp://ftp.troll.no/freebies/tmake>
diff --git a/tmake/bin/progen b/tmake/bin/progen
deleted file mode 100755
index 5be6411..0000000
--- a/tmake/bin/progen
+++ /dev/null
@@ -1,249 +0,0 @@
-#!/usr/bin/perl
-############################################################################
-# 
-#
-# Generates a tmake project file.
-#
-# Copyright (C) 1996-1998 by Troll Tech AS.  All rights reserved.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted, provided
-# that this copyright notice appears in all copies.
-# No representations are made about the suitability of this software for any
-# purpose. It is provided "as is" without express or implied warranty.
-#
-############################################################################
-
-# Default project settings
-$project{"TEMPLATE"} = "app";
-$project{"CONFIG"}   = "qt warn_on release";
-
- at project_extra = ();
-
-while ( @ARGV ) {			# parse command line args
-    $_ = shift @ARGV;
-    if ( s/^-// ) {
-	if ( /^o(.*)/ ) {
-	    $outfile = ($1 eq "") ? shift @ARGV : $1;
-	    ($outfile eq "-") && ($outfile = "");
-	} elsif ( /^n(.*)/ ) {
-	    $project{"TARGET"} = ($1 eq "") ? shift @ARGV : $1;
-	} elsif ( /^t(.*)/ ) {
-	    $project{"TEMPLATE"} = ($1 eq "") ? shift @ARGV : $1;
-	    $project{"TEMPLATE"} =~ s/\.t$//i;
-	} elsif ( /lower/ ) {
-	    $tolower = 1;
-	} else {
-	    &progen_usage;
-	}
-    } elsif ( /^\s*(?:[\w\-]+:)?\w+\s*[\+\-\*\/]?=/ ) {	# project override
-	push( @project_extra, $_ );
-    } else {
-	push (@files, $_ );
-    }
-}
-
-$outfile eq "" || open(STDOUT,">" . $outfile) ||
-    &progen_error("Can't create \"$outfile\"");
-
-if ( ! @files ) {
-    @files = &find_files(".",".*",1);
-}
-
-if ( $tolower ) {
-    foreach $f ( @files ) {
-	$f =~ tr/A-Z/a-z/;
-    }
-}
-
- at hdr = sort grep(/\.(h|hh|hpp|hxx)$/i, at files);
- at src = sort grep(/\.(c|cpp|cc|cxx)$/i && ! /moc_/i, at files);
-
-# Remove source files that are included by other source files
-foreach $f ( @src ) {
-    $srcdict{$f} = 1;
-}
-foreach $f ( @src ) {
-    if ( open(F,"< $f") ) {
-	while ( <F> ) {
-	    if ( /^\s*#\s*include\s+\"([^\"]*)\"/ ) {
-		$srcdict{$1} = 0;
-	    }
-	}
-    }
-}
-foreach $f( @src ) {
-    $srcdict{$f} && (push(@src2,$f));
-}
- at src = @src2;
-
-$project{"HEADERS"} = join(" ",sort @hdr);
-$project{"SOURCES"} = join(" ",sort @src);
-
-foreach $p ( @project_extra ) {
-    if ( $p =~ /^\s*((?:[\w\-]+:)?\w+)\s*([\+\-\*\/])?=\s*(.*)/ ) {
-	if ( $project{$1} ne "" ) {
-	    Project($p);
-	}
-    }
-}
-
-$project{"HEADERS"} =~ s/\s+/ \\\n\t\t  /g;
-$project{"SOURCES"} =~ s/\s+/ \\\n\t\t  /g;
-
-print "TEMPLATE\t= " . $project{"TEMPLATE"} . "\n";
-print "CONFIG\t\t= " . $project{"CONFIG"} . "\n";
-print "HEADERS\t\t= " . $project{"HEADERS"} . "\n";
-print "SOURCES\t\t= " . $project{"SOURCES"} . "\n";
-if ( $project{"TARGET"} ne "" ) {
-    print "TARGET\t\t= " . $project{"TARGET"} . "\n";
-}
-
-foreach ( @project_extra ) {
-    if ( /^\s*((?:[\w\-]+:)?\w+)\s*([\+\-\*\/])?=\s*(.*)/ ) {
-	if ( $project{$1} eq "" ) {
-	    $t = $1;
-	    if ( length($t) < 8 ) {
-		$t .= "\t\t";
-	    } elsif ( length($t) < 16 ) {
-		$t .= "\t";
-	    } else {
-		$t .= " ";
-	    }
-	    print "$t$2= $3\n";
-	}
-    }
-}
-
-exit 0;
-
-
-#
-# progen_usage()
-#
-# Prints a message about program usage and exits
-#
-
-sub progen_usage {
-    print STDERR "Usage:\n    progen [options] [files]\n";
-    print STDERR "Options:\n";
-    print STDERR "    -lower   Lower-case letters filenames (useful for non-Unix)\n";
-    print STDERR "    -n name  Specify a project name (= TARGET)\n";
-    print STDERR "    -o file  Write output to \"file\"\n";
-    print STDERR "    -t file  Specify a template file other than qtapp\n";
-    exit 1;
-}
-
-
-#
-# progen_error(msg)
-#
-# Prints the message and exits
-#
-
-sub progen_error {
-    my($msg) = @_;
-    print STDERR "progen error: " . $msg . "\n";
-    exit 1;
-}
-
-
-#
-# Finds files.
-#
-# Examples:
-#   find_files("/usr","\.cpp$",1)   - finds .cpp files in /usr and below
-#   find_files("/tmp","^#",0)	    - finds #* files in /tmp
-#
-
-sub find_files {
-    my($dir,$match,$descend) = @_;
-    my($file,$p, at files);
-    local(*D);
-    $dir =~ s=\\=/=g;
-    ($dir eq "") && ($dir = ".");
-    if ( opendir(D,$dir) ) {
-	if ( $dir eq "." ) {
-	    $dir = "";
-	} else {
-	    ($dir =~ /\/$/) || ($dir .= "/");
-	}
-	foreach $file ( readdir(D) ) {
-	    next if ( $file  =~ /^\.\.?$/ );
-	    $p = $dir . $file;
-	    ($file =~ /$match/i) && (push @files, $p);
-	    if ( $descend && -d $p && ! -l $p ) {
-		push @files, &find_files($p,$match,$descend);
-	    }
-	}
-	closedir(D);
-    }
-    return @files;
-}
-
-
-#
-# strip_project_val(tag)
-#
-# Strips white space from project value strings.
-#
-
-sub strip_project_val {
-    my($v) = @_;
-    $v =~ s/^\s+//;				# trim white space
-    $v =~ s/\s+$//;
-    return $v;
-}
-
-
-#
-# Project(strings)
-#
-# This is a powerful function for setting or reading project variables.
-# Returns the resulting project variables (joined with space between).
-#
-# This is a slightly modified version of the Project function in tmake.
-
-sub Project {
-    my @settings = @_;
-    my($r,$t,$s,$v,$p,$c);
-    $r = "";
-    foreach ( @settings ) {
-	$v = $_;
-	if ( $v =~ s/^\s*((?:[\w\-]+:)?\w+)\s*(\+=|\*=|\-=|\/=|=)\s*// ) {
-	    $t = $1;
-	    $s = $2;
-	    $v = strip_project_val($v);
-	    $p = $project{$t};
-	    if ( $s eq "=" ) {			# set variable
-		$p = $v;
-	    } elsif ( $s eq "+=" ) {		# append
-		if ( $p eq "" ) {
-		    $p = $v;
-		} else {
-		    $p .= " " . $v;
-		}
-	    } elsif ( $s eq "*=" ) {		# append if not contained
-		if ( !($p =~ /(?:^|\s)\Q$v\E(?:\s|$)/) ) {
-		    if ( $p eq "" ) {
-			$p = $v;
-		    } else {
-			$p .= " " . $v;
-		    }
-		}
-	    } elsif ( $s eq "-=" ) {		# subtract
-		$p =~ s/$v//g;
-	    } elsif ( $s eq "/=" ) {		# sed
-		$cmd = '$p =~ ' . $v;
-		eval $cmd;
-	    }
-	    $project{$t} = strip_project_val($p);
-	} else {
-	    $p = strip_project_val($project{$v});
-	}
-	if ( $p ne "" ) {
-	    $r = ($r eq "") ? $p : ($r . " " . $p);
-	}
-    }
-    return $r;
-}
diff --git a/tmake/bin/tmake b/tmake/bin/tmake
deleted file mode 100755
index 9158d7a..0000000
--- a/tmake/bin/tmake
+++ /dev/null
@@ -1,1262 +0,0 @@
-#!/usr/bin/perl
-############################################################################
-# 
-#
-# Creates a Makefile from a template and a project file.
-#
-# Copyright (C) 1996-1998 by Troll Tech AS.  All rights reserved.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted, provided
-# that this copyright notice appears in all copies.
-# No representations are made about the suitability of this software for any
-# purpose. It is provided "as is" without express or implied warranty.
-#
-#
-# Some important, global variables in tmake:
-#   cpp_ext	C++ extension added to moc output (.cpp)
-#   obj_ext	Object file extension (.o on Unix, .obj otherwise)
-#   moc_aware	Will scan for files containing Qt signals/slots
-#   moc_pre	Moc prefix for generated moc file: x.h -> moc_x.cpp
-#   moc_ext	Moc extension for generated moc file: x.cpp -> x.moc
-#   moc_cmd	The moc command in your makefile, $(MOC)
-#   linebreak	Line break character (\)
-#   dir_sep	Directory separator (/ on Unix, \ on Windows)
-#   is_unix	Autodetected. If not Unix, assume Windows (Win32).
-#
-# If you need to customize any of these settings, do it before
-# calling StdInit() in the template file.
-#
-############################################################################
-
-$TMAKE_VERSION = "1.3";
-
-if ($] < 5.0) {
-    &tmake_error("This program requires perl version 5 or newer");
-}
-
-$cpp_ext	= "cpp";
-$moc_aware	= 0;
-$moc_pre	= "moc_";
-$moc_ext	= "moc";
-$moc_cmd	= '$(MOC)';
-$linebreak	= "\\";
-$really_unix	= &check_unix();
-$is_unix	= $really_unix;
-$dir_sep	= $is_unix ? "/" : "\\";
-$obj_ext	= $is_unix ? "o" : "obj";
-$depend_path	= "";
-$nodepend	= 0;
-$output_count	= 0;
-$notrim_whitespace = 0;
-$read_tmakeconf	= 0;
-		
-$template_name	= "";
-$project_name	= "";
-$outfile	= "";
-%project	= ();
-$eval_quit	= 0;
-
-$project{"TMAKEPATH"} = $ENV{"TMAKEPATH"} . ";" . $ENV{"HOME"} . "/.tmake/";
-
-while ( @ARGV ) {				# parse command line args
-    $_ = shift @ARGV;
-    if ( s/^-// ) {
-	if ( /^e(.*)/ ) {
-	    if ( ! $read_tmakeconf ) {
-		$read_tmakeconf = 1;
-		&ScanProject( &find_template("tmake.conf") );
-	    }
-	    $text = "";
-	    eval(  ($1 eq "") ? shift @ARGV : $1 );
-	    die $@ if $@;
-	    print $text . "\n" if ($text ne "");
-	    $eval_quit = 1;
-	} elsif ( /^t(.*)/ ) {
-	    $template_name = ($1 eq "") ? shift @ARGV : $1;
-	} elsif ( /^o(.*)/ ) {
-	    $outfile = ($1 eq "") ? shift @ARGV : $1;
-	    ($outfile eq "-") && ($outfile = "");
-	    if ( $outfile ne "" ) {
-		open(STDOUT,">" . fix_path($outfile)) ||
-		  &tmake_error("Can't create \"$outfile\"");
-	    }
-	} elsif ( /^p(.*)/ ) {
-	    #
-	    # The -p option is obsolete and will be removed in the next	    
-	    # tmake release.
-	    #
-	    &tmake_warning( "-p option obsolete, instead use \"tmake file1.pro file2.pro ...\"");
-	    my($pf) = ($1 eq "") ? shift @ARGV : $1;
-	    if ( ! $read_tmakeconf ) {
-		$read_tmakeconf = 1;
-		&ScanProject( &find_template("tmake.conf") );
-	    }
-	    if ( ! ($pf =~ /\.pro$/i) && -f fix_path($pf . ".pro") ) {
-		$pf .= ".pro";
-	    }	
-	    if ( $project_name eq "" ) {
-		$project_name = $pf;
-		$project{"PROJECT"} = $project_name;
-		$project{"PROJECT"} =~ s/\.pro$//i;
-		$project{"TARGET"} = $project{"PROJECT"};
-	    }
-	    if ( !&ScanProject($pf) ) {
-		&tmake_error("Can't open project file \"$pf\"");
-	    }
-	} elsif ( /^unix$/ ) {
-	    $is_unix = 1;
-	    $dir_sep = "/";
-	    $obj_ext = "o";
-	} elsif ( /^win32$/ ) {
-	    $is_unix = 0;
-	    $dir_sep = "\\";
-	    $obj_ext = "obj";
-	} elsif ( /^nodepend$/ ) {
-	    $nodepend = 1;			# don't generate dependencies
-	} elsif ( /^v$/ ) {
-	    $verbose = 1;
-	} else {
-	    &tmake_usage();
-	}
-    } elsif ( /^\s*((?:[^:\s]*?:)?)(\w+)\s*(\+=|\*=|\-=|\/=|=)/ ) {
-	if ( ! $read_tmakeconf && ! (/^\s*TMAKEPATH/) ) {
-	    $read_tmakeconf = 1;
-	    &ScanProject( &find_template("tmake.conf") );
-	}
-	Project( $_ );				# manual project setting
-    } else {
-	my($pf) = $_;
-	if ( ! $read_tmakeconf ) {
-	    $read_tmakeconf = 1;
-	    &ScanProject( &find_template("tmake.conf") );
-	}
-	if ( ! ($pf =~ /\.pro$/i) && -f fix_path($pf . ".pro") ) {
-	    $pf .= ".pro";
-	}	
-	if ( $project_name eq "" ) {
-	    $project_name = $pf;
-	    $project{"PROJECT"} = $project_name;
-	    $project{"PROJECT"} =~ s/\.pro$//i;
-	    $project{"TARGET"} = $project{"PROJECT"};
-	}
-	if ( !&ScanProject($pf) ) {
-	    &tmake_error("Can't open project file \"$pf\"");
-	}
-    }
-}
-
-&tmake_verb("Version $TMAKE_VERSION (runtime environment: " .
-	    ($really_unix ? "Unix" : "Win32") . ")\n" );
-
-if ( $eval_quit ) {
-    &tmake_verb("Done!");
-    exit 0;
-}
-($project_name eq "") && &tmake_usage();
-
-if ( $template_name eq "" ) {
-    $template_name = $project{"TEMPLATE"} ?
-	    $project{"TEMPLATE"} : "default.t";
-}
-$template_name = &find_template($template_name);
-&IncludeTemplate($template_name);
-&tmake_verb("Done!");
-exit 0;						# finished!
-
-
-
-##############################################################################
-# Subroutines from here
-##############################################################################
-
-#
-# tmake_usage()
-#
-# Prints a message about program usage and exits
-#
-
-sub tmake_usage {
-    print STDERR "Usage:\n    tmake [options] project-files\n";
-    print STDERR "Options:\n";
-    print STDERR "    -e expr    Evaluate expression, ignore template file\n";
-    print STDERR "    -nodepend  Don't generate dependency information\n";
-    print STDERR "    -o file    Write output to file\n";
-    print STDERR "    -t file    Specify a template file\n";
-    print STDERR "    -unix      Create output for Unix (auto detects)\n";
-    print STDERR "    -v         Verbose/debug mode\n";
-    print STDERR "    -win32     Create output for Win32 (auto detects)\n";
-    exit 1;
-}
-
-
-#
-# tmake_error(msg)
-#
-# Prints the message and exits
-#
-
-sub tmake_error {
-    my($msg) = @_;
-    print STDERR "tmake error: " . $msg . "\n";
-    exit 1;
-}
-
-
-#
-# tmake_warning(msg)
-#
-# Prints the warning message
-#
-
-sub tmake_warning {
-    my($msg) = @_;
-    print STDERR "tmake warning: " . $msg . "\n";
-}
-
-
-#
-# tmake_verb()
-#
-# Prints a verbose message
-#
-
-sub tmake_verb {
-    my($msg) = @_;
-    $verbose && print STDERR "tmake: " . $msg . "\n";
-}
-
-
-#
-# check_unix()
-#
-# Returns 1 if this is a Unix, 0 otherwise.
-#
-
-sub check_unix {
-    my($r);
-    $r = 0;
-    if ( -f "/bin/uname" ) {
-	$r = 1;
-	(-f "\\bin\\uname") && ($r = 0);
-    }
-    if ( -f "/usr/bin/uname" ) {
-	$r = 1;
-	(-f "\\usr\\bin\\uname") && ($r = 0);
-    }
-    return $r;
-}
-
-
-#
-# find_template(filename)
-#
-# Looks for the template file.
-#   1.	search the current directory
-#   2.	search the directories in TMAKEPATH
-#   3.	search in $HOME/.tmake
-#
-
-sub find_template {
-    my($filename) = @_;
-    my($tb,$d,$p, at dirs);
-    if ( !defined($template_base) || ($template_base eq "") ) {
-	$tb = "";
-    } else {
-	$tb = $template_base . ";";
-    }
-    $d = $tb . $project{"TMAKEPATH"};
-    @dirs = ("");
-    push @dirs, &split_path( $d );
-    $filename .= ".t" unless ($filename =~ /\.\w+$/);
-    for $d ( @dirs ) {
-	$p = $d . $filename;
-	if ( -f fix_path($p) ) {
-	    if ( $filename eq "tmake.conf" ) {
-		$tmake_platform = $d;
-		$tmake_platform =~ s-.*[/\\]([^/\\]*)[/\\]-$1-;
-		&tmake_verb("Detected platform $tmake_platform");
-	    }
-	    return $p;
-	}
-	return ($d . $filename) if ( -f fix_path($d . $filename) );
-    }
-    &tmake_error("Template file " . $filename . " not found");
-}
-
-
-##############################################################################
-# User functions
-##############################################################################
-
-#
-# StdInit()
-#
-# Standard initialization
-#
-
-sub StdInit {
-    my($p);
-    return if $stdinit_done;
-    $stdinit_done = 1;
-    if ( defined($project{"OBJECTS_DIR"}) ) {
-	$project{"OBJECTS_DIR"} = FixPath($project{"OBJECTS_DIR"});
-	&mkdirp($project{"OBJECTS_DIR"},0777);
-    }
-    if ( defined($project{"MOC_DIR"}) ) {
-	$project{"MOC_DIR"} = FixPath($project{"MOC_DIR"});
-	&mkdirp($project{"MOC_DIR"},0777);
-    }
-    if ( defined($project{"DESTDIR"}) ) {
-	$project{"DESTDIR"} = FixPath($project{"DESTDIR"});
-	&mkdirp($project{"DESTDIR"},0777);
-    }
-    $project{"OBJECTS"} = &Objects($project{"SOURCES"});
-    if ( $moc_aware ) {
-	$project{"_HDRMOC"} = &list_moc($project{"HEADERS"},$moc_pre,$cpp_ext);
-	$project{"_SRCMOC"} = &list_moc($project{"SOURCES"},"",$moc_ext);
-	$project{"OBJMOC"}  = &Objects($project{"_HDRMOC"});
-	$p = $project{"_HDRMOC"} . " " . $project{"_SRCMOC"};
-	$p =~ s/(^\s+|\s+$)//g;
-	$project{"SRCMOC"} = $p;
-    }
-    &AddIncludePath("");
-}
-
-
-sub FixPath {
-    my($p) = @_;
-    if ( !defined($p) || ($p eq "") || ($p eq ".") ) {
-	$p = "";
-    } else {
-	$p .= $dir_sep;
-	$p =~ s-[\\/]+-${dir_sep}-g;
-    }
-    return $p;
-}
-
-
-#
-# Config(name)
-#
-# Returns true if the project variable CONFIG contains the
-# configuration name.
-#
-
-sub Config {
-    my($name) = @_;
-    return $project{"CONFIG"} =~ /\b\Q$name\E\b/;
-}
-
-
-#
-# DisableOutput()
-#
-# Disables tmake output.  Must be restored by calling a corresponding
-# EnableOutput().
-#
-
-sub DisableOutput {
-    $output_count++;
-}
-
-
-#
-# EnableOutput()
-#
-# Enables tmake output again after DisableOutput() has been called.
-#
-
-sub EnableOutput {
-    $output_count--;
-}
-
-
-#
-# Now() - sets $text
-#
-# Sets $text to the current date and time.
-#
-
-sub Now {
-    my($sec,$min,$hour,$mday,$mon,$year);
-    ($sec,$min,$hour,$mday,$mon,$year) = localtime(time());
-    $text = sprintf("%02d:%02d, %4d/%02d/%02d",
-		    $hour, $min, 1900+$year, 1+$mon, $mday);
-}
-
-
-#
-# expand_project_var(var)
-#
-# Internal function for Project().
-# Expands a project value string.
-#
-
-sub expand_project_var {
-    my($v) = @_;
-    my($c);
-    return "" if !defined($v);
-    $c = 0;
-    while ( $c < 100 ) {			# expand $$
-	if ( $v =~ s/(\$\$\w+)/\035/ ) {
-	    $_ = $1;
-	    s/\$\$//g;
-	    if ( !defined($project{$_}) ) {
-		$v =~ s/\035//g;
-	    } else {
-		$v =~ s/\035/$project{$_}/g;
-	    }
-	    $c++;
-	} else {
-	    $c = 100;
-	}
-    }
-    return $v;
-}
-
-
-#
-# Project(strings)
-#
-# This is a powerful function for setting or reading project variables.
-# Returns the resulting project variables (joined with space between).
-#
-# Get a project variable:
-#   $s = Project("TEMPLATE");	    -> $s = "TEMPLATE"
-#
-# Set a project variable:
-#   Project("TEMPLATE = lib");	    -> TEMPLATE = lib
-#   Project("CONFIG =";)	    -> CONFIG empty
-#
-# Append to a project variable:
-#   Project("CONFIG = qt");	    -> CONFIG = qt
-#   Project("CONFIG += debug");	    -> CONFIG = qt debug
-#
-# Append to a project variable if it does not contain the value already:
-#   Project("CONFIG = qt release"); -> CONFIG = qt release
-#   Project("CONFIG *= qt");	    -> CONFIG = qt release
-#   Project("CONFIG *= opengl");    -> CONFIG = qt release opengl
-#
-# Subtract from a project variable:
-#   Project("THINGS = abc xyz");    -> THINGS = abc xyz
-#   Project("THINGS -= abc");	    -> THINGS = xyz
-#
-# Search/replace on a project variable:
-#   Project("CONFIG = tq opengl");  -> CONFIG = tq opengl
-#   Project("CONFIG /= s/tq/qt/");  -> CONFIG = qt opengl
-#
-# The operations can be performed on several project variables at a time.
-#
-#   Project("TEMPLATE = app", "CONFIG *= opengl", "THINGS += klm");
-#
-
-sub Project {
-    my @settings = @_;
-    my($r,$if_var,$t,$s,$v,$p,$c);
-    $r = "";
-    foreach ( @settings ) {
-	$v = $_;
-        if ( $v =~ s/^\s*([^:\r\n]+:)?(\w+)\s*(\+=|\*=|\-=|\/=|=)// ) {
-	    $if_var = $1;
-	    if ( $if_var ne "" ) {		
-		chop $if_var;
-		if ( $if_var eq "unix" ) {
-		    return "" if !$is_unix;
-		} elsif ( $if_var eq "win32" ) {
-		    return "" if $is_unix;
-		} elsif ( ($if_var ne $tmake_platform) && !Config($if_var) ) {
-		    return "";
-		}
-	    }
-	    $t = $2;
-	    $s = $3;
-	    if ( ! $notrim_whitespace ) {	
-		$v =~ s/^\s+//;			# trim white space
-		$v =~ s/\s+$//;
-	    }
-	    $v = expand_project_var($v);
-	    $p = $project{$t};
-	    if ( $s ne "=" && $v eq "" ) {
-		# nothing to append, subtract or sed
-	    } elsif ( $s eq "=" ) {		# set variable
-		$p = $v;
-	    } elsif ( $s eq "+=" ) {		# append
-		if ( $p eq "" ) {
-		    $p = $v;
-		} else {
-		    $p .= " " . $v;
-		}
-	    } elsif ( $s eq "*=" ) {		# append if not contained
-		if ( !($p =~ /(?:^|\s)\Q$v\E(?:\s|$)/) ) {
-		    if ( $p eq "" ) {
-			$p = $v;
-		    } else {
-			$p .= " " . $v;
-		    }
-		}
-	    } elsif ( $s eq "-=" ) {		# subtract
-		$p =~ s/$v//g;
-	    } elsif ( $s eq "/=" ) {		# sed
-		$cmd = '$p =~ ' . $v;
-		eval $cmd;
-	    }
-	    $project{$t} = expand_project_var($p);
-	} else {
-	    $p = expand_project_var($project{$v});
-	}
-	if ( $p ne "" ) {
-	    $r = ($r eq "") ? $p : ($r . " " . $p);
-	}
-    }
-    return $r;
-}
-
-
-#
-# Substitute(string)
-#
-# This function substitutes project variables in a text.
-#
-# Example:
-#   Substitute('The project name is "$$PROJECT"')
-#
-
-sub Substitute {
-    my($subst) = @_;
-    $text = expand_project_var($subst);
-    return $text;
-}
-
-
-#
-# ScanProject(file)
-#
-# Scans a project file. Inserts project variables into the global
-# associative project array.
-#
-
-sub ScanProject {
-    my($file) = @_;
-    my($var,$val, at v,$more,$line,$endmark);
-
-    $var = "";
-    $line = 0;
-    open(TMP,fix_path($file)) || return 0;
-
-    &tmake_verb("Reading the project file $file");
-    while ( <TMP> ) {
-	$line++;
-	s/\#.*//;				# strip comment
-	s/^\s+//;				# strip white space
-	s/\s+$//;
-        if ( /^(([^:\r\n]+:)?\w+\s*(\+|\-|\*|\/)?=)/ ) {
-	    $var = $1;				# var also contains the ".="
-	    s/^.*?=\s*//;
-	    if ( /^\<\<(.*)$/ ) {
-		$endmark = $1;		
-		$val = "";
-		while ( <TMP> ) {
-		    $line++;
-		    if ( /^\Q$endmark\E$/ ) {
-			$endmark = "";
-			last;
-		    }
-		    $val .= $_;
-		}
-		if ( $endmark ne "" ) {
-		    tmake_error("$file:$line: End marker $endmark not found");
-		}
-		chop $val if ( $val ne "" );
-		$notrim_whitespace++;
-		Project( $var . $val );
-		$notrim_whitespace--;
-		$var = "";
-		$_ = "";
-	    }
-	}
-	if ( $var ne "" ) {
-	    $more = ( $_ =~ s/\s*\\\s*$// );	# more if \ at end of line
-	    push( @v, split( /\s+/, $_ ) );
-	    if ( ! $more ) {
-		$val = join(" ", at v);
-		Project( $var . $val );
-		$var = "";
-		@v = ();
-	    }
-	} elsif ( $_ ne "" ) {
-	    tmake_error("$file:$line: Syntax error");
-	}
-    }
-    close(TMP);
-    &tmake_verb("Done reading the project file $file");
-    return 1;
-}
-
-
-#
-# IncludeTemplate(template_name)
-#
-# Includes and processes a template file.
-#
-# Below, we read the template file and executes any perl code found.
-# Perl code comes after "#$". The variable $text contains the text
-# to replace the perl code that was executed.
-# Template comments begin with "#!".
-#
-
-sub IncludeTemplate {
-    my($t_name) = @_;
-    my($cmd,$cmd_block,$cmd_end,$is_cmd_block,$saveline,$spaceonly);
-    local($text);
-    local(*T);
-
-    $t_name = &find_template($t_name);
-    if ( $tmake_template_dict{$t_name} ) {
-	&tmake_error("Cyclic template inclusion for $t_name");
-    } else {
-	$tmake_template_dict{$t_name} = 1;
-    }
-    $template_base = $t_name;
-    $template_base =~ s-(.*[/\\]).*-$1-;
-    &tmake_verb("Reading the template $t_name");
-    open(T,fix_path($t_name)) ||
-	&tmake_error("Can't open template file \"$t_name\"");
-
-    while ( <T> ) {
-	if ( /\#\!/ ) {				# tmake comment
-	    s/\s*\#\!.*//;
-	    next if /^$/;
-	}
-	if ( /\#\$(\{)?\s*(.*)\n/ ) {		# code
-	    $cmd = $2;
-	    $is_cmd_block = defined($1) && ($1 eq "{");
-	    s/\#\$.*\n//;
-	    if ( $is_cmd_block ) {		# code block #${ ...
-		$saveline = $_;
-		$cmd_block = $cmd;
-		$cmd_end = 0;
-		while ( <T> ) {
-		    $cmd = $_;
-		    $cmd =~ s/\s*\#\!.*//;	# tmake comment
-		    if ( $cmd =~ /^\s*\#\$\}/ ) {
-			$_ = "";
-			$cmd_end = 1;
-			last;
-		    }
-		    $cmd =~ s/^\s*\#(\$)?\s*//;
-		    $cmd_block .= $cmd;
-		}
-		$cmd_end || &tmake_error('#$} expected but not found');
-		$cmd = $cmd_block;
-		$_ = $saveline;
-	    }
-	    $spaceonly = /^\s*$/;
-	    $saveline = $_;
-	    &tmake_verb("Evaluate: $cmd");
-	    $text = "";
-	    eval $cmd;
-	    die $@ if $@;
-	    next if $spaceonly && ($text =~ /^\s*$/);
-	    print $saveline . $text . "\n" if  $output_count <= 0;
-	} else {				# something else
-	    print if $output_count <= 0;
-	}
-    }
-    close( T );
-}
-
-
-#
-# Expand(var) - appends to $text
-#
-# Expands a list of $project{} variables with a space character between them.
-#
-
-sub Expand {
-    my @vars = @_;
-    my($t);
-    $t = Project(@vars);
-    if ( $text eq "" ) {
-	$text = $t;
-    } elsif ( $t ne "" ) {
-	$text .= " " . $t;
-    }
-    return $text;
-}
-
-
-#
-# ExpandGlue(var,prepend,glue,append) - appends to $text
-#
-# Expands a $project{} variable, splits on whitespace
-# and joins with $glue. $prepend is put at the start
-# of the string and $append is put at the end of the
-# string. The resulting string becomes "" if the project
-# var is empty or not defined.
-#
-# Example:
-#
-#   The project file defines:
-#	SOURCES = a b c
-#
-#   ExpandGlue("SOURCES","<","-",">")
-#
-#   The result:
-#	$text = "<a-b-c>"
-#
-
-sub ExpandGlue {
-    my($var,$prepend,$glue,$append) = @_;
-    my($t,$v);
-    $v = Project($var);
-    if ( $v eq "" ) {
-	$t = "";
-    } else {
-	$t = $prepend . join($glue,split(/\s+/,$v)) . $append;
-    }
-    if ( $text eq "" ) {
-	$text = $t;
-    } elsif ( $t ne "" ) {
-	$text .= " " . $t;
-    }
-    return $text;
-}
-
-
-#
-# ExpandList(var) - sets $text.
-#
-# Suitable for expanding HEADERS = ... etc. in a Makefile
-#
-
-sub ExpandList {
-    my($var) = @_;
-    return ExpandGlue($var,""," ${linebreak}\n\t\t","");
-}
-
-
-#
-# ExpandPath(var,prepend,glue,append) - appends to $text
-#
-# Expands a $project{} variable, splits on either ';' or
-# whitespace and joins with $glue. $prepend is put at the
-# start of the string and $append is put at the end of the
-# string. The resulting string becomes "" if the project
-# variable is empty or not defined.
-#
-# If the variable contains at least one semicolon or tmake
-# is running on Windows, the resulting items are put in
-# double-quotes.
-#
-# Example:
-#
-#   The project file defines:
-#	INCLUDEPATH = "C:\qt\include;c:\program files\msdev\include
-#
-#   ExpandGlue("INCLUDEPATH","-I","-I","")
-#
-#   The result:
-#	$text = -I"c:\qt\include" -I"c:\program files\msdev\include"
-#
-
-sub ExpandPath {
-    my($var,$prepend,$glue,$append) = @_;
-    my($t,$v);
-    my($s);
-    $v = Project($var);
-    if ( $v eq "" ) {
-	$t = "";
-    } else {
-	if ( $v =~ /;/ || !$is_unix ) {
-	    $prepend .= '"';
-	    $glue = '"' . $glue . '"';
-	    $append = '"' . $append;
-	}
-
-	if ( $v =~ /;/ ) {    
-	    $t = $prepend . join($glue,split(/;+/,$v)) . $append;
-	} else {
-	    $t = $prepend . join($glue,split(/\s+/,$v)) . $append;
-	}
-    }
-    if ( $text eq "" ) {
-	$text = $t;
-    } elsif ( $t ne "" ) {
-	$text .= " " . $t;
-    }
-    return $text;
-}
-
-
-#
-# TmakeSelf()
-#
-# Generates makefile rule to regenerate the makefile using tmake.
-#
-
-sub TmakeSelf {
-    my $a = "tmake $project_name";
-    if ( $nodepend ) {
-	$a .= " -nodepend";
-    }
-    if ( $outfile ) {
-	$text = "tmake: $outfile\n\n$outfile: $project_name\n\t";
-	$a .= " -o $outfile";
-    } else {
-	$text = "tmake:\n\t";
-    }
-    $text .= $a
-}
-
-
-#
-# Objects(files)
-#
-# Replaces any extension with .o ($obj_ext).
-#
-
-sub Objects {
-    local($_) = @_;
-    my(@a);
-    @a = split(/\s+/,$_);
-    foreach ( @a ) {
-	s-\.\w+$-.${obj_ext}-;
-	if ( defined($project{"OBJECTS_DIR"}) ) {
-	    s-^.*[\\/]--;
-	    $_ = $project{"OBJECTS_DIR"} . $_;
-	}
-    }
-    return join(" ", at a);
-}
-
-
-#
-# list_moc(files,prefix,extension)
-#
-# Scans all files and selects all files that contain Q_OBJECT.
-# Insert a prefix before the filename and replaces the filename extention.
-#
-
-sub list_moc {
-    my($files,$pre,$ext) = @_;
-    my(@v, at m, at lines,$contents,$n,$f,$t);
-    @v = split(/\s+/,$files);
-    undef $/;
-    foreach $f ( @v ) {
-	if ( open(TMP,fix_path($f)) ) {
-	    $contents = <TMP>;
-	    close(TMP);
-	    $n = 0;
-	    @lines = split(/\n/,$contents);
-	    grep( /tmake\s+ignore\s+Q_OBJECT/ && $n--, @lines );
-	    $contents =~ s-/\*.*?\*/--gs; # strip C/C++ comments
-	    $contents =~ s-//.*\n--g;
-	    @lines = split(/\n/,$contents);
-	    grep( /(^|\W)Q_OBJECT(\W|$)/ && $n++, @lines );
-	    if ( $n > 0 ) {
-		$t = $f;
-		$t =~ s-^(.*[/\\])?([^/\\]*?)\.(\w+)$-$1${pre}$2.${ext}-;
-		if ( defined($project{"MOC_DIR"}) ) {
-		    $t =~ s-^.*[\\/]--;
-		    $t = $project{"MOC_DIR"} . $t;
-		}
-		$moc_output{$f} = $t;
-		$moc_input{$t}	= $f;
-		push(@m,$t);
-	    }
-	    $contents = "";
-	}
-    }
-    $/ = "\n";
-    return join(" ", at m);
-}
-
-
-#
-# BuildObj(objects,sources)
-#
-# Builds the object files.
-#
-
-sub BuildObj {
-    my($obj,$src) = @_;
-    my(@objv,$srcv,$i,$s,$o,$d,$c,$comp,$cimp);
-    @objv = split(/\s+/,$obj);
-    @srcv = split(/\s+/,$src);
-    for $i ( 0..$#objv ) {
-	$s = $srcv[$i];
-	$o = $objv[$i];
-	next if $s eq "";
-	$text .= $o . ": " . $s;
-	if ( defined($moc_output{$s}) && ($moc_output{$s} ne "") ) {
-	    $text .= " ${linebreak}\n\t\t" . $moc_output{$s};
-	}
-	$d = &make_depend($s);
-	$text .= " ${linebreak}\n\t\t" . $d if $d ne "";
-	if ( ($s =~ /\.c$/) ) {
-	    $comp = "TMAKE_RUN_CC";
-	    $cimp = "TMAKE_RUN_CC_IMP";
-	} else {
-	    $comp = "TMAKE_RUN_CXX";
-	    $cimp = "TMAKE_RUN_CXX_IMP";
-	}
-	if ( defined($project{"OBJECTS_DIR"}) ||
-	     !defined($project{$cimp}) ) {
-	    $c = $project{$comp};
-	    $c =~ s/\$src/$s/;
-	    $c =~ s/\$obj/$o/;
-	    $text .= "\n\t$c";
-	}
-	$text .= "\n\n";
-    }
-    chop $text;
-}
-
-
-#
-# BuildMocObj(objects,sources)
-#
-# Builds the moc object files.
-#
-
-sub BuildMocObj {
-    my($obj,$src) = @_;
-    my(@objv,$srcv,$i,$s,$o,$hdr,$d);
-    @objv = split(/\s+/,$obj);
-    @srcv = split(/\s+/,$src);
-    for $i ( 0..$#objv ) {
-	$s = $srcv[$i];
-	$o = $objv[$i];
-	$hdr = $moc_input{$srcv[$i]};
-	$text .= $o . ": " . $s . " ${linebreak}\n\t\t" . $hdr;
-	$d = &make_depend($hdr);
-	$text .= " ${linebreak}\n\t\t" . $d if $d ne "";
-	if ( defined($project{"OBJECTS_DIR"}) || defined($project{"MOC_DIR"})||
-	     !defined($project{"TMAKE_RUN_CXX_IMP"}) ) {
-	    $c = $project{"TMAKE_RUN_CXX"};
-	    $c =~ s/\$src/$s/;
-	    $c =~ s/\$obj/$o/;
-	    $text .= "\n\t$c";
-	}
-	$text .= "\n\n";
-    }
-    chop $text;
-}
-
-
-#
-# BuildMocSrc(files)
-#
-# Builds the moc source files from headers and sources.
-#
-
-sub BuildMocSrc {
-    my($f) = @_;
-    my(@v,$m,$o);
-    @v = split(/\s+/,$f);
-    foreach $m ( @v ) {
-	$o = $moc_output{$m};
-	if ( defined($o) && ($o ne "") ) {
-	    $text .= "$o: $m\n\t$moc_cmd $m -o $o\n\n";
-	}
-    }
-    chop $text;
-}
-
-
-#
-# AddIncludePath(path)
-#
-# Adds path to the current include path, $project{"INCLUDEPATH"}.
-#
-
-sub AddIncludePath {
-    my($path) = @_;
-    my($p);
-    if ( $project{"INCPATH"} &&
-	 ($project{"INCPATH"} =~ /(?:^|\s)\Q$path\E(?:\s|$)/) ) {
-	return;
-    }
-    $project{"INCLUDEPATH"} = "" if !defined($project{"INCLUDEPATH"});
-    if ( !defined($project{"INCPATH_SEP"}) ) {
-	if ( $project{"INCLUDEPATH"} =~ /;/ ) {
-	    $project{"INCPATH_SEP"} = ";";
-	} else {
-	    $project{"INCPATH_SEP"} = " ";
-	}
-    }
-    $p = $project{"INCLUDEPATH"};
-    $p = ($p && $path) ? ($p . ";" . $path) : ($p . $path);
-    $project{"INCLUDEPATH"} = $p;
-    $p = join($project{"INCPATH_SEP"},&split_path($p));
-    $p =~ s=[\\/]($project{"INCPATH_SEP"}|$)=$project{"INCPATH_SEP"}=g;
-    $project{"INCPATH"} = $p;
-}
-
-
-#
-# FindHighestLibVersion(dir,name)
-#
-# Returns the newest library version. Scans all the files in the specifies
-# directory and returns the highest version number.
-#
-# Used on Windows only.
-#
-# Example:
-#    FindHighestLibVersion("c:\qt\lib","qt") returns "200" if
-#    the c:\qt\lib directory contains qt141.lib and qt200.lib.
-#
-
-sub FindHighestLibVersion {
-    my($dir,$name) = @_;
-    my(@files,$f,$v,$highest);
-    $highest = "";
-    @files = find_files($dir,"${name}.*\.lib");
-    for $f ( @files ) {
-	if ( $f =~ /(\d+)\.lib/i ) {
-	    $v = $1;
-	    if ( $highest eq "" || $v > $highest ) {
-		$highest = $v;
-	    }
-	}
-    }
-    return $highest;
-}
-
-
-#
-# Finds files.
-#
-# Examples:
-#   find_files("/usr","\.cpp$",1)   - finds .cpp files in /usr and below
-#   find_files("/tmp","^#",0)	    - finds #* files in /tmp
-#
-
-sub find_files {
-    my($dir,$match,$descend) = @_;
-    my($file,$p, at files);
-    local(*D);
-    $dir =~ s=\\=/=g;
-    ($dir eq "") && ($dir = ".");
-    if ( opendir(D,fix_path($dir)) ) {
-	if ( $dir eq "." ) {
-	    $dir = "";
-	} else {
-	    ($dir =~ /\/$/) || ($dir .= "/");
-	}
-	foreach $file ( readdir(D) ) {
-	    next if ( $file  =~ /^\.\.?$/ );
-	    $p = $dir . $file;
-	    if ( $is_unix ) {
-		($file =~ /$match/) && (push @files, $p);
-	    } else {
-		($file =~ /$match/i) && (push @files, $p);
-	    }
-	    if ( $descend && -d $p && ! -l $p ) {
-		push @files, &find_files($p,$match,$descend);
-	    }
-	}
-	closedir(D);
-    }
-    return @files;
-}
-
-
-#
-# make_depend(file)
-#
-# Returns a list of included files.
-# Uses the global $depend_path variable.
-#
-
-sub make_depend {
-    my($file) = @_;
-    my($i,$count);
-    if ( $nodepend ) {
-	return "";
-    }
-    if ( ! $depend_path_fixed ) {
-	$depend_path_fixed = 1;
-	if ( defined($project{"DEPENDPATH"}) ) {
-	    $depend_path = $project{"DEPENDPATH"};
-	} else {
-	    $depend_path = "";
-	}
-	$count = 0;
-	while ( $count < 100 ) {
-	    if ( $depend_path =~ s/(\$[\{\(]?\w+[\}\)]?)/035/ ) {
-		$_ = $1;
-		s/[\$\{\}\(\)]//g;
-		$depend_path =~ s/035/$ENV{$_}/g;
-	    } else {
-		$count = 100;
-	    }
-	}
-	@dep_path = &split_path($depend_path);
-    }
-    @cur_dep_path = @dep_path;
-    if ( $file =~ /(.*[\/\\])/ ) {
-	$dep_curdir = $1;
-	push @cur_dep_path, $dep_curdir;
-    } else {
-	$dep_curdir = "";
-    }
-    $dep_file = $file;
-    &canonical_dep($file);
-    %dep_dict = ();
-    $i = &build_dep($file);
-    chop $i;
-    $i =~ s=/=$dir_sep=g unless $is_unix;
-    $i =~ s=([a-zA-Z]):/=//$1/=g if (defined($gnuwin32) && $gnuwin32);
-    return join(" ${linebreak}\n\t\t",split(/ /,$i) );
-}
-
-#
-# build_dep() - Internal for make_depend()
-#
-
-sub build_dep {
-    my($file) = @_;
-    my(@i,$a,$n);
-    $a = "";
-    return $a if !(defined $depend_dict{$file});
-    @i = split(/ /,$depend_dict{$file});
-    for $n ( @i ) {
-	if ( !defined($dep_dict{$n}) && defined($full_path{$n}) ) {
-	    $dep_dict{$n} = 1;
-	    $a .= $full_path{$n} . " " . &build_dep($n);
-	}
-    }
-    return $a;
-}
-
-#
-# canonical_dep(file) - Internal for make_depend()
-#
-# Reads the file and all included files recursively.
-# %depend_dict associates a file name to a list of included files.
-#
-
-sub canonical_dep {
-    my($file) = @_;
-    my(@inc,$i);
-    @inc = &scan_dep($file);
-    if ( @inc ) {
-	$depend_dict{$file} = join(" ", at inc);
-	for $i ( @inc ) {
-	    &canonical_dep($i) if !defined($depend_dict{$i});
-	}
-    }
-}
-
-#
-# scan_dep(file) - Internal for make_depend()
-#
-# Returns an array of included files.
-#
-
-sub scan_dep {
-    my($file) = @_;
-    my($dir,$path,$found, at allincs, at includes,%incs);
-    $path = $file;
-    @includes = ();
-    return @includes if $file =~ /\.$moc_ext$/; # avoid .moc files
-    if ( ! (-f fix_path($path)) ) {
-	$found = 0;
-	for $dir ( @cur_dep_path ) {
-	    $path = $dir . $file;
-	    last if ( $found = (-f fix_path($path)) );
-	}
-	return @includes if ! $found;
-    }
-    undef $/;
-    if ( open(TMP,fix_path($path)) ) {
-	$full_path{$file} = $path;
-	$_ = <TMP>;
-	s-/\*.*?\*/--gs;			# strip C/C++ comments
-	s-//.*\n-\n-g;
-	@allincs = split(/\n/,$_);
-	@allincs = grep(/^\s*#\s*include/, at allincs);
-	foreach ( @allincs ) {			# all #include lines
-	    next if !(/^\s*#\s*include\s+[<"]([^>"]*)[>"]/) || defined($incs{$1});
-	    push(@includes,$1);
-	    $incs{$1} = "1";
-	}
-	close(TMP);
-    }
-    $/ = "\n";
-    return @includes;
-}
-
-
-#
-# split_path(path)
-#
-# Splits a path containing : (Unix) or ; (MSDOS, NT etc.) separators.
-# Returns an array.
-#
-
-sub split_path {
-    my($p) = @_;
-    my($s, at d);
-    @d = ();
-    return @d if !defined($p) || $p eq "";
-    $p =~ s=:=;=g if $is_unix;
-    $p =~ s=[/\\]+=/=g;
-    if ( !($p =~ /;/) ) {
-	$p =~ s/\s+/;/g;
-    }
-    $p =~ s/\s*;\s*/;/g;
-    while( $p =~ /(?:(?:[^\"\;][^\;]*;*)|(?:\"[^\"]*\";*))/g ) {
-	$s = $&;
-	$s =~ s=\"==g;
-	$s =~ s=[\s\;]+$==g;
-	$s =~ s=([^/:])$=$1/=g;
-	$s =~ s=/=$dir_sep=g unless $is_unix;
-	push @d, $s;
-    }
-    return @d;
-}
-
-
-#
-# fix_path(path)
-#
-# Converts all '\' to '/' if this really seems to be a Unix box.
-#
-
-sub fix_path {
-    my($p) = @_;
-    if ( $really_unix ) {
-	$p =~ s-\\-/-g;
-    } else {
-	$p =~ s-/-\\-g;
-    }
-    return $p;
-}
-
-
-#
-# mkdirp(filename,mode) - Internal for StdInit()
-#
-# Creates the directory specified by $filename, with permissions
-# specified by mode (as modified by umask). Recursively calls
-# mkdir, similar to 'mkdir -p'.
-#
-
-sub mkdirp {
-    my($filename,$mode) = @_;
-    if ( $filename =~ /\$\(\w+\)/ ) {  # ignore "$(something)"
-	return 0;
-    }
-    $filename =~ s-[\\:/]+-/-g;
-    if ( -d $filename ) {
-	return 1;
-    }
-    $filename =~ m-^((.*)/)?(.*)-;
-    if ( defined($2) && ! mkdirp($2,$mode) ) {
-	return 0;
-    }
-    return mkdir($filename,$mode);
-}
diff --git a/tmake/doc/m-linux-gcc.html b/tmake/doc/m-linux-gcc.html
deleted file mode 100644
index 300ef35..0000000
--- a/tmake/doc/m-linux-gcc.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 3.2//EN">
-<html><head><title>
-Generated Makefile for Linux / GNU g++
-</title></head><body bgcolor="#ffffff">
-<h2 align=center>Generated Makefile for Linux / GNU gcc</h2>
-
-<pre>
-#############################################################################
-# Makefile for building hello
-# Generated by tmake at 10:11, 1998/07/07
-#     Project: hello
-#    Template: app
-#############################################################################
-
-####### Compiler, tools and options
-
-CC	=	g++
-CFLAGS	=	-Wall -W -O2 -fno-strength-reduce
-INCPATH	=	-I$(QTDIR)/include
-LINK	=	g++
-LFLAGS	=	
-LIBS	=	-L$(QTDIR)/lib -lqt -L/usr/X11R6/lib -lX11
-MOC	=	moc
-
-####### Files
-
-HEADERS =	hello.h
-SOURCES =	hello.cpp \
-		main.cpp
-OBJECTS =	hello.o \
-		main.o
-SRCMOC	=	moc_hello.cpp
-OBJMOC	=	moc_hello.o
-TARGET	=	hello
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .C .c
-
-.cpp.o:
-	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
-
-.cxx.o:
-	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
-
-.cc.o:
-	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
-
-.C.o:
-	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
-
-.c.o:
-	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
-
-####### Build rules
-
-all: $(TARGET)
-
-$(TARGET): $(OBJECTS) $(OBJMOC) 
-	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)
-
-moc: $(SRCMOC)
-
-tmake:
-	tmake hello.pro
-
-clean:
-	-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(TARGET)
-	-rm -f *~ core
-
-####### Compile
-
-hello.o: hello.cpp \
-		hello.h
-
-main.o: main.cpp \
-		hello.h
-
-moc_hello.o: moc_hello.cpp \
-		hello.h
-
-moc_hello.cpp: hello.h
-	$(MOC) hello.h -o moc_hello.cpp
-</pre>
-</body></html>
diff --git a/tmake/doc/m-win32-msvc.html b/tmake/doc/m-win32-msvc.html
deleted file mode 100644
index 24097cc..0000000
--- a/tmake/doc/m-win32-msvc.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 3.2//EN">
-<html><head><title>
-Generated Makefile for  Win32 / Microsoft Visual C++
-</title></head><body bgcolor="#ffffff">
-<h2 align=center>Generated Makefile for Win32 / Microsoft Visual C++</h2>
-
-<pre>
-#############################################################################
-# Makefile for building hello
-# Generated by tmake at 20:40, 1998/02/27
-#     Project: hello
-#    Template: app
-#############################################################################
-
-####### Compiler, tools and options
-
-CC	=	cl
-CFLAGS	=	-nologo -W3 -O2
-INCPATH	=	-I"$(QTDIR)\include"
-LINK	=	link
-LFLAGS	=	/NOLOGO /SUBSYSTEM:windows
-LIBS	=	$(QTDIR)\lib\qt.lib user32.lib gdi32.lib comdlg32.lib wsock32.lib
-MOC	=	moc
-
-####### Files
-
-HEADERS =	hello.h
-SOURCES =	hello.cpp \
-		main.cpp
-OBJECTS =	hello.obj \
-		main.obj
-SRCMOC	=	moc_hello.cpp
-OBJMOC	=	moc_hello.obj
-TARGET	=	hello.exe
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .c
-
-.cpp.obj:
-	$(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
-
-.cxx.obj:
-	$(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
-
-.cc.obj:
-	$(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
-
-.c.obj:
-	$(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
-
-####### Build rules
-
-all: $(TARGET)
-
-$(TARGET): $(OBJECTS) $(OBJMOC) 
-	$(LINK) $(LFLAGS) /OUT:$(TARGET) @<<
-	    $(OBJECTS) $(OBJMOC) $(LIBS)
-<<
-
-moc: $(SRCMOC)
-
-tmake: Makefile
-
-Makefile: hello.pro
-	tmake hello.pro -o Makefile
-
-clean:
-	-del hello.obj
-	-del main.obj
-	-del moc_hello.cpp
-	-del moc_hello.obj
-	-del $(TARGET)
-
-####### Compile
-
-hello.obj: hello.cpp \
-		hello.h
-
-main.obj: main.cpp \
-		hello.h
-
-moc_hello.obj: moc_hello.cpp \
-		hello.h
-
-moc_hello.cpp: hello.h
-	$(MOC) hello.h -o moc_hello.cpp
-</pre>
-</body></html>
diff --git a/tmake/doc/tmake.html b/tmake/doc/tmake.html
deleted file mode 100644
index 1b14809..0000000
--- a/tmake/doc/tmake.html
+++ /dev/null
@@ -1,727 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 3.2//EN">
-<html><head><title>
-User's Guide - tmake
-</title></head><body bgcolor="#ffffff">
-<p><h1 align=center>User's Guide - tmake</h1>
-
-
-<hr>
-<h2>Introduction</h2>
-
-tmake is an easy-to-use tool from Troll Tech to create and maintain
-makefiles for software projects.  It can be a painful task to manage
-makefiles manually, especially if you develop for more than one platform
-or use more than one compiler.  tmake automates and streamlines this
-process and lets you spend your valuable time on writing code, not
-makefiles.
-
-<p>
-Our main motivation for developing tmake was that we spent far too much
-time maintaining makefiles for <a href="http://www.troll.no/qt">Qt</a>,
-our cross-platform GUI toolkit. Qt supports around 15 flavors of Unix,
-Microsoft Windows, and around 15 different C++ compilers.  We looked at
-GNU autoconf, but it was Unix-specific and not flexible enough in our
-opinion. Our makefile system also had to deal with Qt <a
-href="http://www.troll.no/qt/metaobjects.html">meta object compiler</a>
-(moc) issues. The moc program extracts meta information from C++ files and
-generates a C++ file with data tables etc.  It takes extra work to add
-makefile rules for the moc and wanted to automate this task.
-
-<p>
-tmake is written in Perl and requires that you have installed perl version
-5 or newer. Basic use of tmake requires no perl knowledge, but if you know
-perl you can extend tmake and write your own makefile templates.
-
-<p>
-<b>Windows users:</b> The tmake distribution for Win32 includes tmake.exe
-(built by the perl2exe utility) and you do not need to download and
-install perl unless you want to modify the tmake source code or run other
-perl scripts.  You can download perl for Win32 (Windows NT and 95) from <a
-href="http://www.activestate.com">www.activestate.com</a>
-
-<p>
-tmake is free software and you may use, copy, modify and distribute tmake
-and its documentation for any purpose and without any fee.  See the
-LICENSE file for details.
-
-<p>
-Feedback is highly appreciated. Contact the author, Haavard Nord <a
-href="mailto:hanord at troll.no">(hanord at troll.no)</a>, if you have ideas,
-patches etc. for tmake.
-
-<hr>
-<h2>Installation</h2>
-
-<ol>
-<li>Make sure you have perl version 5 or later installed (optional
-for Windows users).
-<li>Unpack the tmake tar.gz archive for Unix or the tmake .zip file for Windows.
-<li>Set the TMAKEPATH environment variable to the directories
-containing the template files (see below).
-<li>Add the tmake/bin directory to your PATH.
-</ol>
-
-Here are some examples:<p>
-<strong>Unix Bourne shell:</strong><pre>
-    TMAKEPATH=/local/tmake/lib/linux-g++
-    PATH=$PATH:/local/tmake/bin
-    export TMAKEPATH PATH
-</pre>
-
-<strong>Unix C shell:</strong><pre>
-    setenv TMAKEPATH /local/tmake/lib/linux-g++
-    setenv PATH $PATH:/local/tmake/bin
-</pre>
-
-<strong>Microsoft Windows:</strong><pre>
-    set TMAKEPATH=c:\tmake\lib\win32-msvc
-    set PATH=%PATH%;c:\tmake\bin
-</pre>
-
-<p>
-The template directory name has the form <em>platform</em>-<em>compiler</em>
-and contains a platform configuration file (tmake.conf) and tmake template
-files.
-
-<p>
-Supported platforms: AIX, Data General, FreeBSD, HPUX, SGI Irix, Linux,
-NetBSD, OpenBSD, OSF1/DEC, SCO, Solaris, SunOS, Ultrix, Unixware and
-Win32.
-
-<p>
-You can find your platform-compiler combination in the <tt>tmake/lib</tt>.
-
-<p>
-<b>Unix users:</b> tmake requires that perl is in /usr/bin. If your
-version of perl is elsewehere, either change the first line of tmake or
-make a small shell script which invokes tmake with the correct perl.
-
-
-<hr>
-<h2>Getting Started</h2>
-
-Let's assume you have a small Qt application consisting of one C++ header
-file and two source files.
-
-First you need to create a tmake project file, e.g. hello.pro:<pre>
-  HEADERS   =  hello.h
-  SOURCES   =  hello.cpp main.cpp
-  TARGET    =  hello
-</pre>
-
-Then run tmake to create a Makefile:<pre>
-  tmake hello.pro -o Makefile
-</pre>
-And finally:<pre>
-  make
-</pre>
-This builds the hello program. Remember to set the <code>TMAKEPATH</code>
-environment variable before you run tmake.
-<p>
-See <a href="m-linux-gcc.html">Makefile for Linux/g++</a>.<br>
-See <a href="m-win32-msvc.html">Makefile for Win32/msvc</a>
-(Microsoft Visual C++).<br>
-
-
-<hr>
-<h2>Makefile Templates</h2>
-
-The tmake distribution includes three makefile templates and one
-configuration file for each platform/compiler combination.  The
-<code>TMAKEPATH</code> environment variable tells tmake where to find
-these files:
-<p>
-<table border="0">
-    <tr>
-        <td> </td>
-        <td>app.t</td>
-        <td> </td>
-        <td>Creates a makefile for building applications.</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>lib.t</td>
-        <td> </td>
-        <td>Creates a makefile for building libraries.</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>subdirs.t</td>
-        <td> </td>
-        <td>Creates a makefile for building targets in subdirectories.</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>tmake.conf</td>
-        <td> </td>
-        <td>This configuration file contains compiler options and lists
-	    tools and libraries.
-    </tr>
-</table>
-
-
-<p>
-The hello.pro project file above does not have a <code>TEMPLATE</code> or
-a <code>CONFIG</code> variable.  The default template is <tt>app</tt> (the .t
-extension is optional) and the default configuration is <tt>qt warn_on
-release</tt>.
-
-This project file produces exactly the same result as the hello.pro
-above:<pre>
-  TEMPLATE =  app
-  CONFIG   =  qt warn_on release
-  HEADERS  =  hello.h
-  SOURCES  =  hello.cpp main.cpp
-  TARGET   =  hello
-</pre>
-
-
-
-<h4>Makefile Configuration</h4>
-
-<p>
-The <code>CONFIG</code> variable is recognized by both the app.t and lib.t
-templates and specifies what compiler options to use and which extra
-libraries to link in.
-
-These options control the compilation flags:
-<p>
-<table border="0">
-  <tr>
-    <td> </td>
-    <td>release</td>
-    <td> </td>
-    <td>Compile with optimization enabled, ignored if
-    "debug" is specified.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>debug</td>
-    <td> </td>
-    <td>Compile with debug options enabled.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>warn_on</td>
-    <td> </td>
-    <td>The compiler should emit more warnings than normally, ignored if
-     "warn_off" is specified.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>warn_off</td>
-    <td> </td>
-    <td>The compiler should emit no warnings or as few as possible.</td>
-  </tr>
-</table>
-
-<p>
-These options defines the application/library type:
-<p>
-<table border="0">
-  <tr>
-    <td> </td>
-    <td>qt</td>
-    <td> </td>
-    <td>The target is a Qt application/library and requires Qt header
-     files/library.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>opengl</td>
-    <td> </td>
-    <td>The target requires the OpenGL (or Mesa) headers/libraries.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>x11</td>
-    <td> </td>
-    <td>The target is a X11 application or library.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>windows</td>
-    <td> </td>
-    <td>The target is a Win32 window application (app.t only).</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>console</td>
-    <td> </td>
-    <td>The target is a Win32 console application (app.t only).</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>dll</td>
-    <td> </td>
-    <td>The target is a shared object/DLL.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>staticlib</td>
-    <td> </td>
-    <td>The target is a static library (lib.t only).</td>
-  </tr>
-</table>
-
-<p>
-As an example, if the hello application uses both Qt and OpenGL and you
-want to compile it for debugging, your <code>CONFIG</code> line should
-read:<pre>
-  CONFIG = qt opengl debug
-</pre>
-
-<p>
-The most common tmake options and project variables are described here.
-See the tmake <a href="tmake_ref.html">reference manual</a> for
-details.<p>
-
-
-
-<h4>The Application Template</h4>
-
-The application template, app.t, lets you compile and link executable
-programs or shared objects (DLLs).
-
-This template recognizes several variabless.
-<p>
-<table border="0">
-    <tr>
-        <td> </td>
-        <td>HEADERS</td>
-        <td> </td>
-        <td>Header files.</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>SOURCES</td>
-        <td> </td>
-        <td>Source files.</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>TARGET</td>
-        <td> </td>
-        <td>Name of executable (adds .exe if on Windows).</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>DESTDIR</td>
-        <td> </td>
-        <td>Where to put the target.</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>DEFINES</td>
-        <td> </td>
-        <td>Tell compiler to define C preprocessor macros (-D option).</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>INCLUDEPATH</td>
-        <td> </td>
-        <td>Sets the include file search path for the compiler (-I
-        option).
-	</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>DEPENDPATH</td>
-        <td> </td>
-        <td>Sets the dependency search path for tmake.</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>DEF_FILE</td>
-        <td> </td>
-        <td>Win32 only: Link with a .def file.</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>RC_FILE</td>
-        <td> </td>
-        <td>Win32 only: Use a .rc file (compile to temporary .res).
-	</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>RES_FILE</td>
-        <td> </td>
-        <td>Win32 only: Link with a .res file.
-	</td>
-    </tr>
-</table>
-
-<p>
-
-
-<h4>The Library Template</h4>
-
-The library template, lib.t, lets you compile and create static or shared
-libraries.
-
-<p>
-The lib.t template supports the same project variables as app.t, but also
-<code>VERSION</code>.  <code>VERSION</code> is the version number of the
-target library, e.g. 1.40.  The version is important for shared libraries.
-
-
-
-<h4>The Subdirs Template</h4>
-
-The subdirs template, subdirs.t, lets you invoke make in subdirectories.
-
-<p>The <code>SUBDIRS</code> variable contains the name of all subdirectories to
-be processed.
-
-
-<h4>Special Templates for Microsoft Visual C++</h4>
-
-If you have Microsoft Visual C++ 5.0, you can use two special templates to
-generate a MSVC++ IDE project (.dsp file).  After you have generated
-e.g. hello.dsp, choose "File"->"Open Workspace" and select the hello.dsp
-file.  Visual C++ will then create a workspace (.dsw file) for you.<p>
-<table border="0">
-    <tr>
-        <td> </td>
-        <td>vcapp.t</td>
-        <td> </td>
-        <td>Creates an application project file (Microsoft Visual C++ 5.0
-	only).</td>
-    </tr>
-    <tr>
-        <td> </td>
-        <td>vclib.t</td>
-        <td> </td>
-        <td>Creates a library project file (Microsoft Visual C++ 5.0
-	only).</td>
-    </tr>
-</table>
-
-<p>
-Run tmake to create a hello.dsp file (use -t to override the default
-template):<pre>
-  tmake -t vcapp -o hello.dsp hello.pro
-</pre>
-
-
-<hr>
-<h2>Project File Syntax</h2>
-
-The tmake project file has a very simple syntax.  You may set
-project variables, append to project variables, remove from
-project variable and substitute project variables.
-
-To set a project variable:<pre>
-    HEADERS = gui.h xml.h url.h
-</pre>
-
-If you cannot fit everything on one line, use '\' to split it up:<pre>
-    HEADERS = gui.h \
-	      xml.h \
-	      url.h
-</pre>
-
-<p>
-Project variables contains lists of items (such as header files,
-compiler options etc.) and use whitespace to separate the items.
-This means that tmake cannot deal with items containing whitespace.
-The INCLUDEPATH variable is an exception. If INCLUDEPATH contains
-one or more semicolons (;), tmake uses the semicolon to separate
-the include directories, hence you can have include directories
-containing whitespace (this is quite common on Windows).
-
-<p>
-Here is an example:<pre>
-    INCLUDEPATH = C:\Program Files\DBLib\Include;C:\qt\include
-</pre>
-
-<p>
-tmake supports <em>project variable expension</em>. Use $$ to expand
-any project variable:<pre>
-    ALLFILES = $$HEADERS $$SOURCES
-</pre>
-
-<p>
-Most often you assign some value to a project variable, but you can
-also add to, remove from or replace parts of a project variable.<pre>
-    A   = abc
-    X   = xyz
-    A  += def			# A = abc def
-    X  *= xyz			# X = xyz
-    B   = $$A			# B = abc def
-    B  -= abc			# B = def
-    X  /= s/y/Y/		# X = xYz
-</pre>
-The *= operation adds the value if the variable does not already contain it.
-The /= operation performs regular expression substitution.
-
-<p>
-You can also set variables from the command line when running the tmake
-program. For instance, if you want to generate a makefile with debug
-information:<pre>
-    tmake "CONFIG+=debug" hello.pro
-</pre>
-
-<p>
-Use the <tt>unix:</tt> or <tt>win32:</tt> (conditional) qualifier if you want a
-platform-specific variable:<pre>
-    SOURCES	   =   common.cpp   # common for all platforms
-    unix:SOURCES   +=  unix.cpp	    # additional sources for Unix
-    win32:SOURCES  +=  win32.cpp    # additional sources for Windows
-    unix:LIBS	   +=  -lm	    # on Unix we need the math lib
-</pre>
-If none of the platforms match, tmake looks for the variable in CONFIG
-variable:<pre>
-    debug:SOURCES  +=  dbgstuff.cpp # additional source for debugging
-</pre>
-
-Finally, you can set platform and compiler-dependent variables:<pre>
-    linux-g++:TMAKE_CFLAGS = -fno-rtti
-</pre>
-
-<p>
-You may define your own project variables to be used by custom templates.  A
-project variable is stored in <code>%project</code>, which is an associative
-Perl array.  Access it like this: <code>$project{"var"}</code> or via the
-function <code>Project("var")</code>. For example, after reading
-"hello.pro", <code>$project{"SOURCES"}</code> contains "hello.cpp
-main.cpp".<p>
-
-
-<hr>
-<h2><a name="usage"></a>Running tmake</h2>
-
-Usage:<pre>
-  tmake [options] <em>project files or project settings</em>
-</pre>
-Options:<pre>
-  -e expr    Evaluate the Perl expression.  Ignores the template file.
-  -nodepend  Don't generate dependency information.
-  -o <em>file</em>    Write output to <em>file</em> instead of stdout.
-  -t <em>file</em>    Specify a template <em>file</em>.
-  -unix      Force tmake into Unix mode.
-  -v         Verbose/debugging on.
-  -win32     Force tmake into Win32 mode.
-</pre>
-
-The -t option overrides any <code>TEMPLATE</code> variable in the project file.
-<p>
-The default project file extension is ".pro". The default template file
-extension is ".t".  If you do not specify these extension tmake will
-automatically add them for you.
-
-<p>
-Example of basic use:<pre>
-    tmake hello -o Makefile
-</pre>
-
-<p>
-Example of how to create a makefile with debugging information:<pre>
-    tmake "CONFIG+=debug" hello -o Makefile
-</pre>
-
-<p>
-Exmaple of how to specify a TMAKEPATH:<pre>
-    tmake "TMAKEPATH=/local/tmake/lib/hpux-g++" hello.pro -o Makefile
-</pre>
-
-Example of how to evaluate a perl expression (print names of headers
-and source files):<pre>
-    tmake hello -e 'Expand("HEADERS","SOURCES")'
-</pre>
-
-<hr>
-<h2><a name="progen"></a>The progen Utility</h2>
-
-The progen utility creates project files for you. It can be used like
-this:<pre>
-  progen -n hello -o hello.pro
-</pre>
-If no .cpp or .h files are specified on the command line, progen
-searches for .cpp and .h (except moc_*.cpp) in the current directory
-and below.
-<p>
-Usage:<pre>
-  progen [options] [<em>C/C++ header files and source files</em>]
-</pre>
-Options:<pre>
-  -lower   Lower-case letters in filenames (useful on Windows).
-  -n <em>name</em>  Specify a project name (<code>TARGET</code>).
-  -o <em>file</em>  Write output to <em>file</em> instead of stdout.
-  -t <em>file</em>  Specify a template <em>file</em>.
-</pre>
-
-
-<hr>
-<h2>Advanced Topics</h2>
-
-In most cases you will be happy with using tmake as described above, but
-sometimes you need to add special compiler options or even add new
-makefile rules. This chapter describes how to customize your makefiles.
-
-<h4>Conditional Project Settings</h4>
-
-If you need a special compiler option etc., you can add platform-dependent
-settings in your project file:<pre>  
-  solaris-cc:TMAKE_CC     = /opt/bin/CC_5.0
-  solaris-cc:TMAKE_CFLAGS = -pts
-  unix:TMAKE_LIBS         = -lXext
-  win32:INCLUDEPATH       = c:\myinclude
-  win32-borland:DEFINES   = NO_BOOL
-</pre>
-
-You can prefix a project variable with unix: or win32: to make it specific for
-either Unix or Windows. You can also prefix a variable with
-<em>platform-compiler</em> 
-
-<h4>Your Own Templates</h4>
-
-If you know Perl programming, there is virtually no limitation to what you
-can do with tmake.  First you need to know how tmake works.
-
-<h4>Template Processing</h4>
-
-When you run tmake, it first reads the <tt>tmake.conf</tt> file.
-This configuration file has the same syntax as the project file.
-
-tmake then reads the project file and sets the project variables it
-finds, e.g. <code>HEADERS</code>, <code>SOURCES</code> etc.
-
-All variables and values are stored in a global associative Perl hash
-array called <code>project</code>.  For example,
-<code>$project{"SOURCES"}</code> contains "hello.cpp main.cpp"
-after processing hello.pro.
-
-When both the <tt>tmake.conf</tt> and the project files have been
-read, tmake starts reading the template file line by line and
-executes any Perl code it finds in the template.
-
-<ul>
-<li>Anything after <code>#$</code> until newline is
-    evaluated as perl code. The perl code is substituted
-    with the contents of the <code>$text</code>
-    variable.
-<li>Block of perl code: <code>#${</code> until
-    <code>#$}</code>.
-<li>Comments; <code>#!</code> until newline is stripped.
-<li>Anything else is copied directly from the template to
-    the output.
-</ul>
-
-<p>
-Example:<pre>
-    #! This is a comment which will be removed.
-    This text will appear in the output.
-    #$ $text = "The header file(s) are: " . $project{"HEADERS"};
-    # This text also appears in the output.
-    #${
-       $a = 12;
-       $b = 13;
-       $text = $a * $b;
-    #$}
-    That's all.
-</pre>
-Output:<pre>
-    This text will appear in the output.
-    The header file(s) are: hello.h
-    # This text also appears in the output.
-    156
-    That's all.
-</pre>
-
-
-<h3>Using tmake With Lex and Yacc</h3>
-
-The standard tmake templates knows how to process C and C++ files, but
-sometimes you need to process additional files and link them into your
-project.  A typical example is to process lex and yacc files when you're
-building a parser.
-
-<p>
-Parser template:<pre>
-  #!
-  #! parser.t: This is a custom template for building a parser
-  #!
-  #$ IncludeTemplate("app.t");
-
-  ####### Lex/yacc programs and options
-
-  LEX	    =	flex
-  YACC    =	#$ $text = ($is_unix ? "yacc -d" : "byacc -d");
-
-  ####### Lex/yacc files
-
-  LEXIN   =	#$ Expand("LEXINPUT");
-  LEXOUT  =	lex.yy.c
-  YACCIN  =	#$ Expand("YACCINPUT");
-  YACCOUT =	y.tab.c
-  YACCHDR =	y.tab.h
-  PARSER  =	#$ Expand("PARSER");
-
-  ####### Process lex/yacc files
-
-  $(LEXOUT): $(LEXIN)
-          $(LEX) $(LEXIN)
-
-  $(PARSER): $(YACCIN) $(LEXOUT)
-          $(YACC) $(YACCIN)
-          #$ $text = ($is_unix ? "-rm -f " : "-del ") . '$(PARSER)';
-          #$ $text = ($is_unix ? "-mv " : "-ren ") . '$(YACCOUT) $(PARSER)'; 
-</pre>
-
-The parser template adds some extra rules to the application template
-in order to build the lex and yacc portions of the project.  This
-template is portable across Unix and Windows since it generates different
-commands depending on the <code>$is_unix</code> variable.
-
-<p>
-To learn more about the Expand() function and other Perl functions which
-tmake provides, consult the <a href="tmake_ref.html">reference manual</a>.
-
-<p>
-Example project file:<pre>
-  TEMPLATE  = parser.t
-  CONFIG    = console release
-  LEXINPUT  = lexer.l
-  YACCINPUT = grammar.y
-  PARSER    = parser.cpp
-  SOURCES   = $$PARSER    \
-              node.cpp    \
-              asmgen.cpp
-  TARGET    = parser
-</pre>
-
-Here we use macro expansion <code>$$PARSER</code> to avoid writing parser.cpp
-two places.
-
-
-<h3>Counting the Number of Code Lines</h3>
-
-tmake is generic since it is based on Perl. You can create your own
-templates for other purposes than producing makefiles.  Here is an example
-template that counts the number of code lines in our project.
-
-<p>
-Template wc.t:<pre>
-  #! Template that count number of C++ lines.
-  The number of C++ code lines for #$ $text=$project_name;
-  #${
-    $files = $project{"HEADERS"} . " " . $project{"SOURCES"};
-    $text = `wc -l $files`;
-  #$}
-</pre>
-Run it:<pre>
-  tmake -t wc hello
-</pre>
-Output:<pre>
-  The number of C++ code lines for hello.pro
-       25    hello.h
-       98    hello.cpp
-       38    main.cpp
-      161    total
-</pre>
-This will only work if the wc program is installed on your system.
-
-
-</body></html>
diff --git a/tmake/doc/tmake_ref.html b/tmake/doc/tmake_ref.html
deleted file mode 100644
index c9124c4..0000000
--- a/tmake/doc/tmake_ref.html
+++ /dev/null
@@ -1,463 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 3.2//EN">
-<html><head><title>
-Reference Manual - tmake
-</title></head><body bgcolor="#ffffff">
-<p><h1 align=center>Reference Manual - tmake</h1>
-
-<hr>
-<h2>Project Variable Reference</h2>
-
-<h4><a name="ALL_DEPS"></a>ALL_DEPS</h4>
-Specifies additional dependencies for the makefile target "all:".<p>
-
-
-<h4><a name="CLEAN_FILES"></a>CLEAN_FILES</h4>
-Specifies additional files to be removed for "make clean".<p>
-Example:<pre>
-  CLEAN_FILES = core *~
-</pre>
-
-
-<h4><a name="CONFIG"></a>CONFIG</h4>
-Sets the make configuration.  It tells the tmake templates what compiler
-options to use and which extra libraries to link in.<p>
-These options control the compilation flags:
-<p>
-<table border="0">
-  <tr>
-    <td> </td>
-    <td>release</td>
-    <td> </td>
-    <td>Compile with optimization enabled, ignored if
-    "debug" is specified.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>debug</td>
-    <td> </td>
-    <td>Compile with debug options enabled.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>warn_on</td>
-    <td> </td>
-    <td>The compiler should emit more warnings than normally, ignored if
-     "warn_off" is specified.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>warn_off</td>
-    <td> </td>
-    <td>The compiler should emit no warnings or as few as possible.</td>
-  </tr>
-</table>
-
-<p>
-These options defines the application/library type:
-<p>
-<table border="0">
-  <tr>
-    <td> </td>
-    <td>qt</td>
-    <td> </td>
-    <td>The target is a Qt application/library and requires Qt header
-     files/library.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>opengl</td>
-    <td> </td>
-    <td>The target requires the OpenGL (or Mesa) headers/libraries.</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>x11</td>
-    <td> </td>
-    <td>The target is a X11 application (app.t only).</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>windows</td>
-    <td> </td>
-    <td>The target is a Win32 window application (app.t only).</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>console</td>
-    <td> </td>
-    <td>The target is a Win32 console application (app.t only).</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>dll</td>
-    <td> </td>
-    <td>The target is a shared object/DLL (app.t only).</td>
-  </tr>
-  <tr>
-    <td> </td>
-    <td>staticlib</td>
-    <td> </td>
-    <td>The target is a static library (lib.t only).</td>
-  </tr>
-</table>
-
-
-<h4><a name="DEFINES"></a>DEFINES</h4>
-Specifies C/C++ macros (-D compiler option). On Windows you need
-to let DEFINES contain "QT_DLL" if you are building a Qt program
-which should link with the Qt DLL.
-
-
-<h4><a name="DEF_FILE"></a>DEF_FILE</h4>
-Win32/app.t only: Specifies a .def file.
-
-
-<h4><a name="DESTDIR"></a>DESTDIR</h4>
-Specifies where to put the target file.
-Example:<pre>
-  DESTDIR = ../../lib
-</pre>
-You must create this directory before running make.
-
-
-<h4><a name="HEADERS"></a>HEADERS</h4>
-Defines the header files of the project.
-
-
-<h4><a name="INCPATH"></a>INCPATH</h4>
-This variable is generated from <code>INCLUDEPATH</code>. The ';' or ':'
-separators have been replaced by ' ' (single space). This makes it
-easier to split. qtapp.t and other templates expand
-<code>INCPATH</code> to set -I options for the C++ compiler.
-
-
-<h4><a name="INCLUDEPATH"></a>INCLUDEPATH</h4>
-This variable specifies the #include directories. It can be set in the
-project file, or by the <a href="#AddIncludePath">AddIncludePath()</a>
-function.<p>
-Example:<pre>
-  INCLUDEPATH = c:\msdev\include d:\stl\include
-</pre>
-Use ';' or space as the directory separator.
-
-
-<h4><a name="LIBS"></a>LIBS</h4>
-Defines additional libraries to be linked in when creating an application
-or a shared library.  You probably want to use a platform qualifier since
-libraries are specified differently on Unix and Win32.<p>
-Example:<pre>
-  unix:LIBS  = -lXext -lm
-  win32:LIBS = ole32.lib
-</pre>
-
-
-<h4><a name="MOC_DIR"></a>MOC_DIR</h4>
-Specifies where to put the temporary moc output files.  By default they
-are stored in the directory where the moc input files are.
-<p>
-Example:<pre>
-  MOC_DIR = tmp
-</pre>
-You must create this directory before running make.
-<p>
-See also: <a href="#OBJECTS_DIR">OBJECTS_DIR</a>.
-
-
-<h4><a name="OBJECTS"></a>OBJECTS</h4>
-This varialble is generated from <code>SOURCES</code> by the StdInit() function.
-The extension of each source file has been replaced by .o (Unix) or .obj
-(Win32).<p>
-Example:<pre>
-  SOURCES = a.x b.y
-</pre>
-Then <code>OBJECTS</code> become "a.o b.o" on Unix and "a.obj b.obj" on
-Win32.
-
-
-<h4><a name="OBJECTS_DIR"></a>OBJECTS_DIR</h4>
-Specifies where to put object files.  By default they are stored in
-the directory where the source files are.<p>
-Example:<pre>
-  OBJECTS_DIR = tmp
-</pre>
-You must create this directory before running make.
-<p>
-See also: <a href="#MOC_DIR">MOC_DIR</a>.
-
-
-<h4><a name="OBJMOC"></a>OBJMOC</h4>
-This variable is generated by the <a href="#StdInit">StdInit()</a> function if
-<code>$moc_aware</code> is true. <code>OBJMOC</code> contains the name of
-all intermediate moc object files.<p>
-Example:<pre>
-  HEADERS = demo.h
-  SOURCES = demo.cpp main.cpp
-</pre>
-If <tt>demo.h</tt> and <tt>main.cpp</tt> define classes that use signals
-and slots (i.e. the <code>Q_OBJECT</code> "keyword" is found in these two
-files), <code>OBJMOC</code> becomes:<pre>
-  OBJMOC  = moc_demo.obj
-</pre>
-See also: <a href="#SRCMOC">SRCMOC</a>.
-
-
-<h4><a name="PROJECT"></a>PROJECT</h4>
-This is the name of the project.  It defaults to the name of the project
-file, excluding the .pro extension.
-
-
-<h4><a name="RC_FILE"></a>RC_FILE</h4>
-Win32/app.t only: Specifies a .rc file.  Cannot be used with the RES_FILE
-variable.
-
-
-<h4><a name="RES_FILE"></a>RES_FILE</h4>
-Win32/app.t only: Specifies a .res file.  You can either specify a
-.rc file or one or more .res files.
-
-
-<h4><a name="SOURCES"></a>SOURCES</h4>
-Defines the source files of the project.
-
-
-<h4><a name="SRCMOC"></a>SRCMOC</h4>
-This variable is generated by the <a href="#StdInit">StdInit()</a> function if
-<code>CONFIG</code> contains "qt". <code>SRCMOC</code> contains the name of
-all intermediate moc files.<p>
-Example:<pre>
-  HEADERS = demo.h
-  SOURCES = demo.cpp main.cpp
-</pre>
-If <tt>demo.h</tt> and <tt>main.cpp</tt> define classes that use signals
-and slots (i.e. the <code>Q_OBJECT</code> "keyword" is found in these two
-files), <code>SRCMOC</code> becomes:<pre>
-  SRCMOC  = moc_demo.cpp main.moc
-</pre>
-See also: <a href="#OBJMOC">OBJMOC</a>.
-
-
-<h4><a name="TARGET"></a>TARGET</h4>
-Sets the makefile target, i.e. what program to build.
-
-
-<h4><a name="TEMPLATE"></a>TEMPLATE</h4>
-Sets the default template. This can be overridden by the tmake -t
-<a href="tmake.html#usage">option</a>.
-
-
-<h4><a name="TMAKE_CC"></a>TMAKE_CC</h4>
-Contains the name of the compiler.
-
-
-<h4><a name="TMAKE_CFLAGS"></a>TMAKE_CFLAGS</h4>
-Contains the default compiler flags.
-
-
-<h4><a name="TMAKE_FILEVARS"></a>TMAKE_FILEVARS</h4>
-Tells tmake which variables contain file names.  This is because tmake
-on Windows replace the directory separator / with \.
-
-
-<hr>
-<h2>Function Reference</h2>
-This section contains a brief description of some important
-tmake functions used by the templates.
-
-
-<h3><a name="AddIncludePath"></a>AddIncludePath(path)</h3>
-Adds <em>path</em> to the include path variable,
-<a href="#INCLUDEPATH">INCLUDEPATH</a>. The include path is used
-for two purposes:<ol>
-<li>Searching files when generating include dependencies.
-<li>Setting -I options for the C/C++ compiler.
-</ol>
-<p>
-Example:<pre>
-  #$ AddIncludePath('$QTDIR/include;/local/include');
-</pre>
-
-
-<h3>BuildMocObj(objects,sources)</h3>
-Creates build rules for moc source files. Generates
-include dependencies.<p>
-Example:<pre>
-  #$ BuildMocObj($project{"OBJMOC"},$project{"SRCMOC"});
-</pre>Output:<pre>
-  moc_hello.o: moc_hello.cpp \
-		hello.h \
-		...
-</pre>
-
-<h3>BuildMocSrc(files)</h3>
-Creates moc source files from C++ files containing classes that
-define signals and slots. For a header file <tt>x.h</tt>, the
-generated moc file is called <tt>moc_x.h</tt>. For a source file
-<tt>y.cpp</tt>, the generates moc file is called <tt>y.moc</tt> and
-should be #include'd by <tt>y.cpp</tt>.<p>
-Example:<pre>
-  #$ BuildMocSrc($project{"HEADERS"});
-  #$ BuildMocSrc($project{"SOURCES"});
-</pre>Output:<pre>
-  moc_hello.cpp: hello.h
-	$(MOC) hello.h -o moc_hello.cpp
-</pre>
-
-
-<h3>BuildObj(objects,sources)</h3>
-Creates build rules for source files. Generates
-include dependencies.<p>
-Example:<pre>
-  #$ BuildObj($project{"OBJECTS"},$project{"SOURCES"});
-</pre>Output:<pre>
-  hello.o: hello.cpp \
-		hello.h \
-		...
-
-  main.o: main.cpp \
-		hello.h \
-		...
-</pre>
-
-
-<h3>Config(string)</h3>
-Returns true if the <code>CONFIG</code> variable contains the given string.
-<p>Example:<pre>
-  #$ if ( Config("release") { }
-</pre>
-
-
-<h3>DisableOutput()</h3>
-Call this function to force tmake to generate no output until
-EnableOutput() is called.
-<p>Example:<pre>
-  #$ Config("debug") && DisableOutput();
-      Anything here is skipped if CONFIG contains "debug".
-  #$ Config("debug") && EnableOutput();
-</pre>
-
-
-<h3>EnableOutput()</h3>
-Enables tmake output after DisableOutput() was called.
-
-
-<h3>Expand(var)</h3>
-Expands a project variable. Equivalent to <code>$text = $project{$var}</code>.
-<p>Example:<pre>
-  VERSION = #$ Expand("VERSION");
-</pre>Output:<pre>
-  VERSION = 1.1
-</pre>
-
-<h3>ExpandGlue(var,prepend,glue,append)</h3>
-Expands a $project{} variable, splits on whitespace
-and joins with $glue. $prepend is put at the start
-of the string and $append is put at the end of the
-string. The resulting string ($text) becomes "" if
-the project variable is empty or not defined.<p>
-Example:<pre>
-  clear:
-          #$ ExpandGlue("OBJECTS","-del","\n\t-del ","");
-</pre>Output (Windows NT):<pre>
-  clear:
-          -del hello.obj
-          -del main.obj
-</pre>
-
-
-<h3>ExpandList(var)</h3>
-This function is suitable for expanding lists of files.
-Equivalent with <code>ExpandGlue($var,""," \\\n\t\t","")</code>.<p>
-Example:<pre>
-  OBJECTS = #$ ExpandList("OBJECTS");
-</pre>Output:<pre>
-  OBJECTS = hello.o \
-	    main.o
-</pre>
-
-
-<h3>ExpandPath(var,prepend,glue,append)</h3>
-Similar to ExpandGlue, except that it splits the items on a semicolon
-instead of space (if the variable contains at least one semicolon).
-
-
-<h3>IncludeTemplate(file)</h3>
-Includes a template file. The ".t" extension is optional.<p>
-Example:<pre>
-  #$ IncludeTemplate("mytemplate");
-</pre>
-
-
-<h3>Now()</h3>
-Sets $text to the current date and time.<p>
-Example:<pre>
-  # Generated at #$ Now()
-</pre>Output:<pre>
-  # Generated at 12:58, 1996/11/19
-</pre>
-
-
-<h3>Project(strings)</h3>
-This is a powerful function for setting and reading project
-variables.  Returns the resulting project variables (joined with space
-between).
-<p>Examples:<pre>
-# Get a project variable:
-    $s = Project("TEMPLATE");	    -> $s = "TEMPLATE"
-
-# Set a project variable:
-    Project("TEMPLATE = lib");	    -> TEMPLATE = lib
-    Project("CONFIG =";)	    -> CONFIG empty
-
-# Append to a project variable:
-    Project("CONFIG = qt");	    -> CONFIG = qt
-    Project("CONFIG += debug");	    -> CONFIG = qt debug
-
-# Append to a project variable if it does not contain the value already:
-    Project("CONFIG = qt release"); -> CONFIG = qt release
-    Project("CONFIG *= qt");	    -> CONFIG = qt release
-    Project("CONFIG *= opengl");    -> CONFIG = qt release opengl
-
-# Subtract from a project variable:
-    Project("THINGS = abc xyz");    -> THINGS = abc xyz
-    Project("THINGS -= abc");	    -> THINGS = xyz
-
-# Search/replace on a project variable:
-    Project("CONFIG = tq opengl");  -> CONFIG = tq opengl
-    Project("CONFIG /= s/tq/qt/");  -> CONFIG = qt opengl
-
-# The operations can be performed on several project variables at a time.
-
-    Project("TEMPLATE = app", "CONFIG *= opengl", "THINGS += klm");
-</pre>
-
-
-<h3><a name="ScanProject"></a>ScanProject(file)</h3>
-Scans a project file and stores the project variables and values in the
-global associative <code>%project</code> array.
-
-
-<h3><a name="StdInit"></a>StdInit()</h3>
-Standard initialization of tmake. StdInit() should be
-called from one of the first lines in the template.<p>
-
-This function creates some new project variables:<ul>
-<li><code><a href="#OBJECTS">OBJECTS</a></code>
-    - Object files corresponding to
-   <code><a href="#SOURCES">SOURCES</a></code>.
-<li><code><a href="#SRCMOC">SRCMOC</a></code> - moc source files.
-<li><code><a href="#OBJMOC">OBJMOC</a></code> - moc object files.
-</ul>
-
-The moc-related variables are created only if <code>CONFIG</code> contains "qt"
-
-
-<h3>Substitute(string)</h3>
-This function takes a string and substitutes any occurrence of $$var
-with the actual content of the variable.  Returns the substituted string.
-Also sets $text.
-<p>
-Important: Use single quotes around the string, otherwise perl will expand
-any $vars it finds.
-<p>Example:<pre>
-    Substitute('Project name: $$PROJECT, uses template $$TEMPLATE');
-</pre>
diff --git a/tmake/example/hello.cpp b/tmake/example/hello.cpp
deleted file mode 100644
index 4868c4d..0000000
--- a/tmake/example/hello.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-/****************************************************************************
-** 
-**
-** Copyright (C) 1992-1998 Troll Tech AS.  All rights reserved.
-**
-** This file is part of an example program for Qt.  This example
-** program may be used, distributed and modified without limitation.
-**
-*****************************************************************************/
-
-#include "hello.h"
-#include <qpushbutton.h>
-#include <qtimer.h>
-#include <qpainter.h>
-#include <qpixmap.h>
-
-
-/*
-  Constructs a Hello widget. Starts a 40 ms animation timer.
-*/
-
-Hello::Hello( const char *text, QWidget *parent, const char *name )
-    : QWidget(parent,name), t(text), b(0)
-{
-    QTimer *timer = new QTimer(this);
-    connect( timer, SIGNAL(timeout()), SLOT(animate()) );
-    timer->start( 40 );
-
-    resize( 200, 100 );
-}
-
-
-/*
-  This private slot is called each time the timer fires.
-*/
-
-void Hello::animate()
-{
-    b = (b + 1) & 15;
-    repaint( FALSE );
-}
-
-
-/*
-  Handles mouse button release events for the Hello widget.
-
-  We emit the clicked() signal when the mouse is released inside
-  the widget.
-*/
-
-void Hello::mouseReleaseEvent( QMouseEvent *e )
-{
-    if ( rect().contains( e->pos() ) )
-	emit clicked();
-}
-
-
-/*
-  Handles paint events for the Hello widget.
-
-  Flicker-free update. The text is first drawn in the pixmap and the
-  pixmap is then blt'ed to the screen.
-*/
-
-void Hello::paintEvent( QPaintEvent * )
-{
-    static int sin_tbl[16] = {
-	0, 38, 71, 92, 100, 92, 71, 38,	0, -38, -71, -92, -100, -92, -71, -38};
-
-    if ( t.isEmpty() )
-	return;
-
-    // 1: Compute some sizes, positions etc.
-    QFontMetrics fm = fontMetrics();
-    int w = fm.width(t) + 20;
-    int h = fm.height() * 2;
-    int pmx = width()/2 - w/2;
-    int pmy = height()/2 - h/2;
-
-    // 2: Create the pixmap and fill it with the widget's background
-    QPixmap pm( w, h );
-    pm.fill( this, pmx, pmy );
-
-    // 3: Paint the pixmap. Cool wave effect
-    QPainter p;
-    int x = 10;
-    int y = h/2 + fm.descent();
-    int i = 0;
-    p.begin( &pm );
-    p.setFont( font() );
-    while ( t[i] ) {
-	int i16 = (b+i) & 15;
-        p.setPen( QColor((15-i16)*16,255,255,QColor::Hsv) );
-	p.drawText( x, y-sin_tbl[i16]*h/800, &t[i], 1 );
-	x += fm.width( t[i] );
-	i++;
-    }
-    p.end();
-
-    // 4: Copy the pixmap to the Hello widget
-    bitBlt( this, pmx, pmy, &pm );
-}
diff --git a/tmake/example/hello.h b/tmake/example/hello.h
deleted file mode 100644
index 07fb8c5..0000000
--- a/tmake/example/hello.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/****************************************************************************
-** 
-**
-** Copyright (C) 1992-1998 Troll Tech AS.  All rights reserved.
-**
-** This file is part of an example program for Qt.  This example
-** program may be used, distributed and modified without limitation.
-**
-*****************************************************************************/
-
-#ifndef HELLO_H
-#define HELLO_H
-
-#include <qwidget.h>
-
-
-class Hello : public QWidget
-{
-    Q_OBJECT
-public:
-    Hello( const char *text, QWidget *parent=0, const char *name=0 );
-signals:
-    void clicked();
-protected:
-    void mouseReleaseEvent( QMouseEvent * );
-    void paintEvent( QPaintEvent * );
-private slots:
-    void animate();
-private:
-    QString t;
-    int     b;
-};
-
-#endif
diff --git a/tmake/example/hello.pro b/tmake/example/hello.pro
deleted file mode 100644
index a299923..0000000
--- a/tmake/example/hello.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-HEADERS     =	hello.h
-SOURCES     =	hello.cpp main.cpp
-TARGET      =	hello
diff --git a/tmake/example/main.cpp b/tmake/example/main.cpp
deleted file mode 100644
index 4b55a58..0000000
--- a/tmake/example/main.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// File: main.cpp
-//
-// A small Qt example application written by Troll Tech.
-//
-// It displays a text in a window and quits when you click
-// the mouse in the window.
-//
-
-#include "hello.h"
-#include <qapp.h>
-
-
-/*
-  The program starts here. It parses the command line and build a message
-  string to be displayed by the Hello widget.
-*/
-
-int main( int argc, char **argv )
-{
-    QApplication a(argc,argv);
-    QString s;
-    for ( int i=1; i<argc; i++ ) {
-	s += argv[i];
-	if ( i<argc-1 )
-	    s += " ";
-    }
-    if ( s.isEmpty() )
-	s = "Hello, World";
-    Hello h( s );
-    h.setCaption( "Qt says hello" );
-    QObject::connect( &h, SIGNAL(clicked()), &a, SLOT(quit()) );
-    h.setFont( QFont("times",32,QFont::Bold) );		// default font
-    h.setBackgroundColor( white );			// default bg color
-    a.setMainWidget( &h );
-    h.show();
-    return a.exec();
-}
diff --git a/tmake/example/wc.t b/tmake/example/wc.t
deleted file mode 100644
index dc041b5..0000000
--- a/tmake/example/wc.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#! Template that count number of C++ lines
-The number of C++ code lines for #$ $text=$project_name;
-#${
-    $files = $project{"HEADERS"} . " " . $project{"SOURCES"};
-    $text = `wc -l $files`;
-#$}
diff --git a/tmake/lib/aix-g++/app.t b/tmake/lib/aix-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/aix-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/aix-g++/lib.t b/tmake/lib/aix-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/aix-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/aix-g++/subdirs.t b/tmake/lib/aix-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/aix-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/aix-g++/tmake.conf b/tmake/lib/aix-g++/tmake.conf
deleted file mode 100644
index 897d509..0000000
--- a/tmake/lib/aix-g++/tmake.conf
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 
-#
-# tmake configuration for aix-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	=
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	=
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/aix-xlc/app.t b/tmake/lib/aix-xlc/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/aix-xlc/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/aix-xlc/lib.t b/tmake/lib/aix-xlc/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/aix-xlc/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/aix-xlc/subdirs.t b/tmake/lib/aix-xlc/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/aix-xlc/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/aix-xlc/tmake.conf b/tmake/lib/aix-xlc/tmake.conf
deleted file mode 100644
index 4013923..0000000
--- a/tmake/lib/aix-xlc/tmake.conf
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# 
-#
-# tmake configuration for aix-xlc
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= xlc
-TMAKE_CFLAGS		= -qstrict 
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= xlC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= xlC
-TMAKE_LINK_SHLIB	= ld
-TMAKE_LINK_SHLIB_CMD	= /usr/lpp/xlC/bin/makeC++SharedLib -p 0 \
-			    -o lib$(TARGET).so.$(VER_MAJ).$(VER_MIN) \
-			    -lXext -lX11 $(OBJECTS) $(OBJMOC); \
-			  ar q lib$(TARGET).a lib$(TARGET).so.$(VER_MAJ).$(VER_MIN); \
-			  ranlib lib$(TARGET).a; \
-			  mv lib$(TARGET).a $(DESTDIR)
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	=
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		= -liconv
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		= ranlib
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/beos-g++/app.t b/tmake/lib/beos-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/beos-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/beos-g++/lib.t b/tmake/lib/beos-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/beos-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/beos-g++/subdirs.t b/tmake/lib/beos-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/beos-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/beos-g++/tmake.conf b/tmake/lib/beos-g++/tmake.conf
deleted file mode 100644
index b6649c9..0000000
--- a/tmake/lib/beos-g++/tmake.conf
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# 
-#
-# tmake configuration for linux-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	=
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		= -Wl,-rpath=/lib:$(QTDIR)/lib
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/bsdi-g++/app.t b/tmake/lib/bsdi-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/bsdi-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/bsdi-g++/lib.t b/tmake/lib/bsdi-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/bsdi-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/bsdi-g++/subdirs.t b/tmake/lib/bsdi-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/bsdi-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/bsdi-g++/tmake.conf b/tmake/lib/bsdi-g++/tmake.conf
deleted file mode 100644
index 65f7316..0000000
--- a/tmake/lib/bsdi-g++/tmake.conf
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# 
-#
-# tmake configuration for bsdi-shlicc++, bsdi 4.0
-#
-# shlicc/++ is a BSDI wrapper around cc/g++ that enables shared libs
-# (info/7367)
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= shlicc++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= shlicc++
-TMAKE_LINK_SHLIB	= shlicc++
-TMAKE_LFLAGS		= -Wl,-rpath=/lib:/usr/X11R6/lib:$(QTDIR)/lib
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/dgux-g++/app.t b/tmake/lib/dgux-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/dgux-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/dgux-g++/lib.t b/tmake/lib/dgux-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/dgux-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/dgux-g++/subdirs.t b/tmake/lib/dgux-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/dgux-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/dgux-g++/tmake.conf b/tmake/lib/dgux-g++/tmake.conf
deleted file mode 100644
index f4132d1..0000000
--- a/tmake/lib/dgux-g++/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for linux-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-# "Frithjof.Brestrich" <brest at infp.fzk.de> suggests -h not -soname
-TMAKE_LFLAGS_SONAME	= -Wl,-h,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/freebsd-g++/app.t b/tmake/lib/freebsd-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/freebsd-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/freebsd-g++/lib.t b/tmake/lib/freebsd-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/freebsd-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/freebsd-g++/subdirs.t b/tmake/lib/freebsd-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/freebsd-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/freebsd-g++/tmake.conf b/tmake/lib/freebsd-g++/tmake.conf
deleted file mode 100644
index 0b3c497..0000000
--- a/tmake/lib/freebsd-g++/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for freebsd-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		= -pipe
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-
-# soname does not work on fbsd 2.x
-#TMAKE_LFLAGS_SONAME	= -Wl,-soname
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/gnu-g++/app.t b/tmake/lib/gnu-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/gnu-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/gnu-g++/lib.t b/tmake/lib/gnu-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/gnu-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/gnu-g++/subdirs.t b/tmake/lib/gnu-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/gnu-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/gnu-g++/tmake.conf b/tmake/lib/gnu-g++/tmake.conf
deleted file mode 100644
index 635bc5c..0000000
--- a/tmake/lib/gnu-g++/tmake.conf
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 
-#
-# tmake configuration for linux-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		= -Wl,-rpath=/lib:/usr/X11R6/lib:$(QTDIR)/lib
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/hpux-acc/app.t b/tmake/lib/hpux-acc/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/hpux-acc/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/hpux-acc/lib.t b/tmake/lib/hpux-acc/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/hpux-acc/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/hpux-acc/subdirs.t b/tmake/lib/hpux-acc/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/hpux-acc/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/hpux-acc/tmake.conf b/tmake/lib/hpux-acc/tmake.conf
deleted file mode 100644
index dbd0c8e..0000000
--- a/tmake/lib/hpux-acc/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for hpux-acc
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= aCC
-TMAKE_CFLAGS		= -w -D__STRICT_ANSI__ -DPNG_USE_LOCAL_ARRAYS
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= +Z
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= aCC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/include/X11R6
-TMAKE_LIBDIR_X11	= /usr/lib/X11R6
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	= /opt/graphics/OpenGL/lib
-
-TMAKE_LINK		= aCC
-TMAKE_LINK_SHLIB	= aCC
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -b
-TMAKE_LFLAGS_SONAME	=
-TMAKE_HPUX_SHLIB	= 1
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm -lICE -lSM
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl -lGL
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-TMAKE_LIBS_YACC		= -ly
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/hpux-cc/app.t b/tmake/lib/hpux-cc/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/hpux-cc/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/hpux-cc/lib.t b/tmake/lib/hpux-cc/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/hpux-cc/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/hpux-cc/subdirs.t b/tmake/lib/hpux-cc/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/hpux-cc/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/hpux-cc/tmake.conf b/tmake/lib/hpux-cc/tmake.conf
deleted file mode 100644
index b5881ec..0000000
--- a/tmake/lib/hpux-cc/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for hpux-cc
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		= -w +a1 -DAportable
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= +Z
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/include/X11R6
-TMAKE_LIBDIR_X11	= /usr/lib/X11R6
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= CC
-TMAKE_LINK_SHLIB	= CC
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -b
-TMAKE_LFLAGS_SONAME	=
-TMAKE_HPUX_SHLIB	= 1
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/hpux-g++/app.t b/tmake/lib/hpux-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/hpux-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/hpux-g++/lib.t b/tmake/lib/hpux-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/hpux-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/hpux-g++/subdirs.t b/tmake/lib/hpux-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/hpux-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/hpux-g++/tmake.conf b/tmake/lib/hpux-g++/tmake.conf
deleted file mode 100644
index fb39414..0000000
--- a/tmake/lib/hpux-g++/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for hpux-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O0
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/include/X11R6
-TMAKE_LIBDIR_X11	= /usr/lib/X11R6
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -fPIC -shared
-TMAKE_LFLAGS_SONAME	=
-TMAKE_HPUX_SHLIB	= 1
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	=
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/irix-64/app.t b/tmake/lib/irix-64/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/irix-64/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/irix-64/lib.t b/tmake/lib/irix-64/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/irix-64/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/irix-64/subdirs.t b/tmake/lib/irix-64/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/irix-64/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/irix-64/tmake.conf b/tmake/lib/irix-64/tmake.conf
deleted file mode 100644
index ac0e2fa..0000000
--- a/tmake/lib/irix-64/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for irix-64
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		= -64 LANG:bool=ON -woff 1209,1233,1314,1355,1375,1506
-TMAKE_CFLAGS_WARN_ON	= -fullwarn
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2 -OPT:Olimit=3000
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	= -woff 1110,1174,3262
-
-TMAKE_CXX		= CC
-TMAKE_CXXFLAGS		= -64 LANG:bool=ON -woff 1209,1233,1314,1355,1375,1506
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= CC
-TMAKE_LINK_SHLIB	= CC
-TMAKE_LFLAGS		= -64
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_CLEAN		= -r so_locations ii_files
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/irix-dcc/app.t b/tmake/lib/irix-dcc/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/irix-dcc/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/irix-dcc/lib.t b/tmake/lib/irix-dcc/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/irix-dcc/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/irix-dcc/subdirs.t b/tmake/lib/irix-dcc/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/irix-dcc/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/irix-dcc/tmake.conf b/tmake/lib/irix-dcc/tmake.conf
deleted file mode 100644
index 0fcbaa8..0000000
--- a/tmake/lib/irix-dcc/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for irix-dcc
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= DCC
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -fullwarn
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= DCC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= DCC
-TMAKE_LINK_SHLIB	= DCC
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_CLEAN		= so_locations
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/irix-g++/app.t b/tmake/lib/irix-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/irix-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/irix-g++/lib.t b/tmake/lib/irix-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/irix-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/irix-g++/subdirs.t b/tmake/lib/irix-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/irix-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/irix-g++/tmake.conf b/tmake/lib/irix-g++/tmake.conf
deleted file mode 100644
index 2192c71..0000000
--- a/tmake/lib/irix-g++/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for irix-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O0
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		= ranlib
-
-TMAKE_CLEAN		= so_locations
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/irix-n32/app.t b/tmake/lib/irix-n32/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/irix-n32/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/irix-n32/lib.t b/tmake/lib/irix-n32/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/irix-n32/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/irix-n32/subdirs.t b/tmake/lib/irix-n32/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/irix-n32/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/irix-n32/tmake.conf b/tmake/lib/irix-n32/tmake.conf
deleted file mode 100644
index 9d8bcb4..0000000
--- a/tmake/lib/irix-n32/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for irix-n32
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		= -n32 -mips3 LANG:bool=ON -woff 1209,1233,1314,1355,1375,1506
-TMAKE_CFLAGS_WARN_ON	= -fullwarn
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2 
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	= -woff 1110,1174,3262
-
-TMAKE_CXX		= CC
-TMAKE_CXXFLAGS		= -n32 -mips3 LANG:bool=ON -woff 1209,1233,1314,1355,1375,1506
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= CC
-TMAKE_LINK_SHLIB	= CC
-TMAKE_LFLAGS		= -n32
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl -lGL
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_CLEAN		= -r so_locations ii_files
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/irix-o32/app.t b/tmake/lib/irix-o32/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/irix-o32/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/irix-o32/lib.t b/tmake/lib/irix-o32/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/irix-o32/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/irix-o32/subdirs.t b/tmake/lib/irix-o32/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/irix-o32/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/irix-o32/tmake.conf b/tmake/lib/irix-o32/tmake.conf
deleted file mode 100644
index 89b8728..0000000
--- a/tmake/lib/irix-o32/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for irix-o32
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		= -32 LANG:bool=ON -woff 1209,1233,1314,1355,1375,1506
-TMAKE_CFLAGS_WARN_ON	= -fullwarn
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2 -OPT:Olimit=3000
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	= -woff 1110,1174,3262
-
-TMAKE_CXX		= CC
-TMAKE_CXXFLAGS		= -32 LANG:bool=ON -woff 1209,1233,1314,1355,1375,1506
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= CC
-TMAKE_LINK_SHLIB	= CC
-TMAKE_LFLAGS		= -32
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_CLEAN		= -r so_locations ii_files
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/linux-64/app.t b/tmake/lib/linux-64/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/linux-64/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/linux-64/lib.t b/tmake/lib/linux-64/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/linux-64/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/linux-64/subdirs.t b/tmake/lib/linux-64/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/linux-64/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/linux-64/tmake.conf b/tmake/lib/linux-64/tmake.conf
deleted file mode 100644
index 334cb0f..0000000
--- a/tmake/lib/linux-64/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for linux-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		= -pipe
-TMAKE_CFLAGS_WARN_ON	= -Wall -W 
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib64
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib64
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib64
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	= -g
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_X11SM	= -lICE -lSM
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/linux-g++/app.t b/tmake/lib/linux-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/linux-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/linux-g++/lib.t b/tmake/lib/linux-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/linux-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/linux-g++/subdirs.t b/tmake/lib/linux-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/linux-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/linux-g++/tmake.conf b/tmake/lib/linux-g++/tmake.conf
deleted file mode 100644
index e100bce..0000000
--- a/tmake/lib/linux-g++/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for linux-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		= -pipe -fsigned-char
-TMAKE_CFLAGS_WARN_ON	= -Wall -W 
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O3
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	= -g
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_X11SM	= -lICE -lSM
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/m68k-atari-mint-g++/app.t b/tmake/lib/m68k-atari-mint-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/m68k-atari-mint-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/m68k-atari-mint-g++/lib.t b/tmake/lib/m68k-atari-mint-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/m68k-atari-mint-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/m68k-atari-mint-g++/subdirs.t b/tmake/lib/m68k-atari-mint-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/m68k-atari-mint-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/m68k-atari-mint-g++/tmake.conf b/tmake/lib/m68k-atari-mint-g++/tmake.conf
deleted file mode 100644
index 9e1b373..0000000
--- a/tmake/lib/m68k-atari-mint-g++/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for linux-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		= 
-TMAKE_CFLAGS_WARN_ON	= -Wall -W 
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O0
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	= -g
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_X11SM	= -lICE -lSM
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/macosx-c++/app.t b/tmake/lib/macosx-c++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/macosx-c++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/macosx-c++/lib.t b/tmake/lib/macosx-c++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/macosx-c++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/macosx-c++/subdirs.t b/tmake/lib/macosx-c++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/macosx-c++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/macosx-c++/tmake.conf b/tmake/lib/macosx-c++/tmake.conf
deleted file mode 100644
index 377b06f..0000000
--- a/tmake/lib/macosx-c++/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for macosx-c++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		= -pipe 
-TMAKE_CFLAGS_WARN_ON	= -Wall -W -Wno-deprecated-declarations 
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O3
-TMAKE_CFLAGS_DEBUG	= -g -fstack-protector
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= c++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS -mmacosx-version-min=10.5 -DYY_TYPEDEF_YY_SIZE_T -Dyy_size_t=int
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= 
-TMAKE_LIBDIR_X11	= 
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= c++
-TMAKE_LINK_SHLIB	= c++
-TMAKE_LFLAGS		= -Wl,-search_paths_first
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-
-TMAKE_LFLAGS_SONAME	= -dynamiclib -install_name
-
-TMAKE_LIBS		= -liconv -framework CoreServices
-TMAKE_LIBS_X11		= 
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		= ranlib
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/macosx-intel-c++/app.t b/tmake/lib/macosx-intel-c++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/macosx-intel-c++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/macosx-intel-c++/lib.t b/tmake/lib/macosx-intel-c++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/macosx-intel-c++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/macosx-intel-c++/subdirs.t b/tmake/lib/macosx-intel-c++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/macosx-intel-c++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/macosx-intel-c++/tmake.conf b/tmake/lib/macosx-intel-c++/tmake.conf
deleted file mode 100644
index 33af519..0000000
--- a/tmake/lib/macosx-intel-c++/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for macosx-c++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		= -pipe -arch i386 -arch x86_64 
-TMAKE_CFLAGS_WARN_ON	= -Wall -W -Wno-deprecated-declarations 
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= c++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS -mmacosx-version-min=10.5 -DYY_TYPEDEF_YY_SIZE_T -Dyy_size_t=int
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= 
-TMAKE_LIBDIR_X11	= 
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= c++
-TMAKE_LINK_SHLIB	= c++
-TMAKE_LFLAGS		= -Wl,-search_paths_first -arch i386 -arch x86_64 
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-
-TMAKE_LFLAGS_SONAME	= -dynamiclib -install_name
-
-TMAKE_LIBS		= -liconv -framework CoreServices -mmacosx-version-min=10.5
-TMAKE_LIBS_X11		= 
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		= ranlib
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/macosx-uni-c++/app.t b/tmake/lib/macosx-uni-c++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/macosx-uni-c++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/macosx-uni-c++/lib.t b/tmake/lib/macosx-uni-c++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/macosx-uni-c++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/macosx-uni-c++/subdirs.t b/tmake/lib/macosx-uni-c++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/macosx-uni-c++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/macosx-uni-c++/tmake.conf b/tmake/lib/macosx-uni-c++/tmake.conf
deleted file mode 100644
index 9d7a4a8..0000000
--- a/tmake/lib/macosx-uni-c++/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for macosx-c++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		= -pipe -arch i386 -arch ppc 
-TMAKE_CFLAGS_WARN_ON	= -Wall -W -Wno-deprecated-declarations
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= c++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS -mmacosx-version-min=10.5 -DYY_TYPEDEF_YY_SIZE_T -Dyy_size_t=int
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= 
-TMAKE_LIBDIR_X11	= 
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= c++
-TMAKE_LINK_SHLIB	= c++
-TMAKE_LFLAGS		= -Wl,-search_paths_first -arch i386 -arch ppc 
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-
-TMAKE_LFLAGS_SONAME	= -dynamiclib -install_name
-
-TMAKE_LIBS		= -liconv -framework CoreServices -mmacosx-version-min=10.5
-TMAKE_LIBS_X11		= 
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		= ranlib
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/netbsd-g++/app.t b/tmake/lib/netbsd-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/netbsd-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/netbsd-g++/lib.t b/tmake/lib/netbsd-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/netbsd-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/netbsd-g++/subdirs.t b/tmake/lib/netbsd-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/netbsd-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/netbsd-g++/tmake.conf b/tmake/lib/netbsd-g++/tmake.conf
deleted file mode 100644
index cad7876..0000000
--- a/tmake/lib/netbsd-g++/tmake.conf
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# 
-#
-# tmake configuration for netbsd-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= ld
-TMAKE_LINK_SHLIB_CMD	= $(SYSCONF_LINK_SHLIB) -Bshareable $(LFLAGS) -o $(DESTDIR)$(SYSCONF_LINK_TARGET_SHARED) \
-			  `lorder /usr/lib/c++rt0.o $(OBJECTS) $(OBJMOC) | \
-			  tsort` $(LIBS)
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -Bshareable
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/openbsd-g++/app.t b/tmake/lib/openbsd-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/openbsd-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/openbsd-g++/lib.t b/tmake/lib/openbsd-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/openbsd-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/openbsd-g++/subdirs.t b/tmake/lib/openbsd-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/openbsd-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/openbsd-g++/tmake.conf b/tmake/lib/openbsd-g++/tmake.conf
deleted file mode 100644
index 89cdc9b..0000000
--- a/tmake/lib/openbsd-g++/tmake.conf
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# 
-#
-# tmake configuration for netbsd-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= ld
-TMAKE_LINK_SHLIB_CMD	= $(SYSCONF_LINK_SHLIB) -Bshareable $(LFLAGS) -o $(DESTDIR)$(SYSCONF_LINK_TARGET_SHARED) \
-			  `lorder /usr/lib/c++rt0.o $(OBJECTS) $(OBJMOC) | \
-			  tsort` $(LIBS)
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -Bshareable
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar q
-TMAKE_RANLIB		= ranlib
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/osf1-cxx/app.t b/tmake/lib/osf1-cxx/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/osf1-cxx/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/osf1-cxx/lib.t b/tmake/lib/osf1-cxx/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/osf1-cxx/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/osf1-cxx/subdirs.t b/tmake/lib/osf1-cxx/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/osf1-cxx/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/osf1-cxx/tmake.conf b/tmake/lib/osf1-cxx/tmake.conf
deleted file mode 100644
index b3f9a5d..0000000
--- a/tmake/lib/osf1-cxx/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for osf1-cxx (a.k.a. DEC Unix)
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cxx
-TMAKE_CFLAGS		= -x cc -w -D_POSIX_SOURCE -D_OSF_SOURCE -D_AES_SOURCE
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	= -Olimit 1000
-
-TMAKE_CXX		= cxx
-TMAKE_CXXFLAGS		= -x cxx -w -D_POSIX_SOURCE -D_OSF_SOURCE -D_AES_SOURCE
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= cxx
-TMAKE_LINK_SHLIB	= cxx
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= <<END
--soname 
-END
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/osf1-g++/app.t b/tmake/lib/osf1-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/osf1-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/osf1-g++/lib.t b/tmake/lib/osf1-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/osf1-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/osf1-g++/subdirs.t b/tmake/lib/osf1-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/osf1-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/osf1-g++/tmake.conf b/tmake/lib/osf1-g++/tmake.conf
deleted file mode 100644
index e23713e..0000000
--- a/tmake/lib/osf1-g++/tmake.conf
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 
-#
-# tmake configuration for osf1-g++ (a.k.a. DEC Unix)
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		= -D_POSIX_SOURCE -D_OSF_SOURCE -D_AES_SOURCE
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/qnx-g++/app.t b/tmake/lib/qnx-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/qnx-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/qnx-g++/lib.t b/tmake/lib/qnx-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/qnx-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/qnx-g++/subdirs.t b/tmake/lib/qnx-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/qnx-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/qnx-g++/tmake.conf b/tmake/lib/qnx-g++/tmake.conf
deleted file mode 100644
index 4846d68..0000000
--- a/tmake/lib/qnx-g++/tmake.conf
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 
-#
-# tmake configuration for qnx-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		= -pipe
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O -fno-inline -fno-pack-struct
-TMAKE_CFLAGS_DEBUG	= -g -fno-inline -fno-pack-struct
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses -fno-inline -fno-pack-struct
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	=
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		= -lunix
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/sco-g++/app.t b/tmake/lib/sco-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/sco-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/sco-g++/lib.t b/tmake/lib/sco-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/sco-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/sco-g++/subdirs.t b/tmake/lib/sco-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/sco-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/sco-g++/tmake.conf b/tmake/lib/sco-g++/tmake.conf
deleted file mode 100644
index c571f98..0000000
--- a/tmake/lib/sco-g++/tmake.conf
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 
-#
-# tmake configuration for sco-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lsocket -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		= ranlib
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/solaris-cc-64/app.t b/tmake/lib/solaris-cc-64/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/solaris-cc-64/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/solaris-cc-64/lib.t b/tmake/lib/solaris-cc-64/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/solaris-cc-64/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/solaris-cc-64/subdirs.t b/tmake/lib/solaris-cc-64/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/solaris-cc-64/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/solaris-cc-64/tmake.conf b/tmake/lib/solaris-cc-64/tmake.conf
deleted file mode 100644
index 889fde7..0000000
--- a/tmake/lib/solaris-cc-64/tmake.conf
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# 
-#
-# tmake configuration for solaris-cc
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		= -xtarget=generic64
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	= -w
-TMAKE_CFLAGS_RELEASE	= -O
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -KPIC
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= -xO2
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= -PIC
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/openwin/include
-TMAKE_LIBDIR_X11	= /usr/openwin/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= CC
-# Jan Wortelboer <janw at wins.uva.nl> suggests avoiding $LD_LIBRARY_PATH:
-TMAKE_LINK_SHLIB	= CC -R$(QTDIR)/lib:/usr/openwin/lib
-TMAKE_LFLAGS		= -64 -xtarget=generic64
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -G -h $(TARGET1)
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		= 
-TMAKE_LIBS_X11		= -lXext -lX11 -lm -lICE -lSM
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl -lGL
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= CC -xar -o
-TMAKE_RANLIB		=
-
-TMAKE_CLEAN		= -r Templates.DB
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/solaris-cc-gcc/app.t b/tmake/lib/solaris-cc-gcc/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/solaris-cc-gcc/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/solaris-cc-gcc/lib.t b/tmake/lib/solaris-cc-gcc/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/solaris-cc-gcc/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/solaris-cc-gcc/subdirs.t b/tmake/lib/solaris-cc-gcc/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/solaris-cc-gcc/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/solaris-cc-gcc/tmake.conf b/tmake/lib/solaris-cc-gcc/tmake.conf
deleted file mode 100644
index de013a0..0000000
--- a/tmake/lib/solaris-cc-gcc/tmake.conf
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# 
-#
-# tmake configuration for solaris-cc-gcc
-# (Using SunPro CC for C++ code and gcc for C code.)
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= CC
-TMAKE_CXXFLAGS		=
-TMAKE_CXXFLAGS_WARN_ON	=
-TMAKE_CXXFLAGS_WARN_OFF	= -w
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= -PIC
-TMAKE_CXXFLAGS_YACC	=
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/openwin/include
-TMAKE_LIBDIR_X11	= /usr/openwin/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= CC
-# Jan Wortelboer <janw at wins.uva.nl> suggests avoiding $LD_LIBRARY_PATH:
-TMAKE_LINK_SHLIB	= CC -R$(QTDIR)/lib:/usr/openwin/lib
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -G -h $(TARGET1)
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		= -lC
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= CC -xar -o
-TMAKE_RANLIB		=
-
-TMAKE_CLEAN		= -r Templates.DB
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/solaris-cc/app.t b/tmake/lib/solaris-cc/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/solaris-cc/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/solaris-cc/lib.t b/tmake/lib/solaris-cc/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/solaris-cc/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/solaris-cc/subdirs.t b/tmake/lib/solaris-cc/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/solaris-cc/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/solaris-cc/tmake.conf b/tmake/lib/solaris-cc/tmake.conf
deleted file mode 100644
index 3dbe810..0000000
--- a/tmake/lib/solaris-cc/tmake.conf
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# 
-#
-# tmake configuration for solaris-cc
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	= -w
-TMAKE_CFLAGS_RELEASE	= -O
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -KPIC
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= -O2
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= -PIC
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/openwin/include
-TMAKE_LIBDIR_X11	= /usr/openwin/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= CC
-# Jan Wortelboer <janw at wins.uva.nl> suggests avoiding $LD_LIBRARY_PATH:
-TMAKE_LINK_SHLIB	= CC -R$(QTDIR)/lib:/usr/openwin/lib
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -G -h $(TARGET1)
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		= 
-TMAKE_LIBS_X11		= -lXext -lX11 -lm -lICE -lSM
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl -lGL
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= CC -xar -o
-TMAKE_RANLIB		=
-
-TMAKE_CLEAN		= -r Templates.DB
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/solaris-g++/app.t b/tmake/lib/solaris-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/solaris-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/solaris-g++/lib.t b/tmake/lib/solaris-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/solaris-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/solaris-g++/subdirs.t b/tmake/lib/solaris-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/solaris-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/solaris-g++/tmake.conf b/tmake/lib/solaris-g++/tmake.conf
deleted file mode 100644
index a6817bf..0000000
--- a/tmake/lib/solaris-g++/tmake.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# 
-#
-# tmake configuration for solaris-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/openwin/include
-TMAKE_LIBDIR_X11	= /usr/openwin/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHAPP	= -shared
-TMAKE_LFLAGS_SHLIB	= -shared -h $(TARGET1)
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		= -liconv
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/sunos-g++/app.t b/tmake/lib/sunos-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/sunos-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/sunos-g++/lib.t b/tmake/lib/sunos-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/sunos-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/sunos-g++/subdirs.t b/tmake/lib/sunos-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/sunos-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/sunos-g++/tmake.conf b/tmake/lib/sunos-g++/tmake.conf
deleted file mode 100644
index 52f9e2d..0000000
--- a/tmake/lib/sunos-g++/tmake.conf
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 
-#
-# tmake configuration for sunos-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/openwin/include
-TMAKE_LIBDIR_X11	= /usr/openwin/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -fPIC -shared
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lGL -lGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		= ranlib
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/ultrix-g++/app.t b/tmake/lib/ultrix-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/ultrix-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/ultrix-g++/lib.t b/tmake/lib/ultrix-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/ultrix-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/ultrix-g++/subdirs.t b/tmake/lib/ultrix-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/ultrix-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/ultrix-g++/tmake.conf b/tmake/lib/ultrix-g++/tmake.conf
deleted file mode 100644
index 59813eb..0000000
--- a/tmake/lib/ultrix-g++/tmake.conf
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 
-#
-# tmake configuration for ultrix-g++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	=
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	= /usr/X11R6/include
-TMAKE_LIBDIR_X11	= /usr/X11R6/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	= /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL	= /usr/X11R6/lib
-
-TMAKE_LINK		= g++
-#TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-#TMAKE_LFLAGS_SHLIB	= -shared
-#TMAKE_LFLAGS_SONAME	= -Wl,-soname,
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/unix/app.t b/tmake/lib/unix/app.t
deleted file mode 100644
index f59c9f9..0000000
--- a/tmake/lib/unix/app.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Unix applications.
-#!
-#$ Project('TMAKE_APP_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/unix/generic.t b/tmake/lib/unix/generic.t
deleted file mode 100644
index 2852b36..0000000
--- a/tmake/lib/unix/generic.t
+++ /dev/null
@@ -1,283 +0,0 @@
-#!
-#! This is a tmake template for building UNIX applications or libraries.
-#!
-#${
-    if ( Project("TMAKE_LIB_FLAG") && !Config("staticlib") ) {
-	Project('CONFIG *= dll');
-    } elsif ( Project("TMAKE_APP_FLAG") || Config("dll") ) {
-	Project('CONFIG -= staticlib');
-    }
-    if ( Config("warn_off") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_OFF');
-    } elsif ( Config("warn_on") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_ON');
-    }
-    if ( Config("debug") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_DEBUG');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG');
-    } elsif ( Config("release") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_RELEASE');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE');
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG *= x11lib');
-	if ( Config("opengl") ) {
-	    Project('CONFIG *= x11inc');
-	}
-    }
-    if ( Config("x11") ) {
-	Project('CONFIG *= x11lib');
-	Project('CONFIG *= x11inc');
-    }
-    if ( Config("qt") ) {
-	Project('CONFIG *= moc');
-	AddIncludePath(Project("TMAKE_INCDIR_QT"));
-	if ( Config("release") ) {
-	    Project('DEFINES += NO_DEBUG');
-	}
-	if ( Config("opengl") ) {
-	    Project("TMAKE_LIBDIR_QT") &&
-		Project('TMAKE_LIBS *= -L$$TMAKE_LIBDIR_QT');
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( !((Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG")) ) {
-	    Project("TMAKE_LIBDIR_QT") &&
-		Project('TMAKE_LIBS *= -L$$TMAKE_LIBDIR_QT');
-            if ( Config("thread") ) {
-	      Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_MT');
-            } else {
-	      Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-            }
-	}
-    }
-    if ( Config("opengl") ) {
-	AddIncludePath(Project("TMAKE_INCDIR_OPENGL"));
-	Project("TMAKE_LIBDIR_OPENGL") &&
-	    Project('TMAKE_LIBS *= -L$$TMAKE_LIBDIR_OPENGL');
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    if ( Config("x11inc") ) {
-	AddIncludePath(Project("TMAKE_INCDIR_X11"));
-    }
-    if ( Config("x11lib") ) {
-	Project("TMAKE_LIBDIR_X11") &&
-	    Project('TMAKE_LIBS *= -L$$TMAKE_LIBDIR_X11');
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_X11');
-    }
-    if ( Config("moc") ) {
-	$moc_aware = 1;
-    }
-    Project('TMAKE_LIBS = $$LIBS $$TMAKE_LIBS');
-    if ( !Project("TMAKE_RUN_CC") ) {
-	Project('TMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src');
-    }
-    if ( !Project("TMAKE_RUN_CC_IMP") ) {
-	Project('TMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<');
-    }
-    if ( !Project("TMAKE_RUN_CXX") ) {
-	Project('TMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src');
-    }
-    if ( !Project("TMAKE_RUN_CXX_IMP") ) {
-	Project('TMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<');
-    }
-    Project('TMAKE_FILETAGS = HEADERS SOURCES TARGET DESTDIR $$FILETAGS');
-    StdInit();
-    $project{"VERSION"} || ($project{"VERSION"} = "1.0");
-    $project{"VER_MAJ"} = $project{"VERSION"};
-    $project{"VER_MAJ"} =~ s/\.\d+$//;
-    $project{"VER_MIN"} = $project{"VERSION"};
-    $project{"VER_MIN"} =~ s/^\d+\.//;
-    Project('DESTDIR_TARGET = $(TARGET)');
-    if ( Project("TMAKE_APP_FLAG") ) {
-	if ( Config("dll") ) {
-	    Project('TARGET = $$TARGET.so');
-	    Project("TMAKE_LFLAGS_SHAPP") ||
-		($project{"TMAKE_LFLAGS_SHAPP"} = $project{"TMAKE_LFLAGS_SHLIB"});
-	    Project("TMAKE_LFLAGS_SONAME") &&
-		($project{"TMAKE_LFLAGS_SONAME"} .= $project{"TARGET"});
-	}
-	$project{"TARGET"} = $project{"DESTDIR"} . $project{"TARGET"};
-    } elsif ( Config("staticlib") ) {
-	$project{"TARGET"} = $project{"DESTDIR"} . "lib" .
-			     $project{"TARGET"} . ".a";
-	Project("TMAKE_AR_CMD") ||
-	    Project('TMAKE_AR_CMD = $(AR) $(TARGET) $(OBJECTS) $(OBJMOC)');
-    } else {
-	$project{"TARGETA"} = $project{"DESTDIR"} . "lib" .
-			      $project{"TARGET"} . ".a";
-	if ( Project("TMAKE_AR_CMD") ) {
-	    $project{"TMAKE_AR_CMD"} =~ s/\(TARGET\)/\(TARGETA\)/g;
-	} else {
-	    Project('TMAKE_AR_CMD = $(AR) $(TARGETA) $(OBJECTS) $(OBJMOC)');
-	}
-	if ( $project{"TMAKE_HPUX_SHLIB"} ) {
-	    $project{"TARGET_x.y"} = "lib" . $project{"TARGET"} . ".sl";
-	} else {
-	    $project{"TARGET_"} = "lib" . $project{"TARGET"} . ".so";
-	    $project{"TARGET_x"} = $project{"TARGET_"} . "." .
-				   $project{"VER_MAJ"};
-	    $project{"TARGET_x.y"} = $project{"TARGET_"} . "." .
-				     $project{"VERSION"};
-	    $project{"TMAKE_LN_SHLIB"} = "-ln -s";
-        }
-	$project{"TARGET"} = $project{"TARGET_x.y"};
-	if ( $project{"DESTDIR"} ) {
-	    $project{"DESTDIR_TARGET"} = $project{"DESTDIR"} .
-					 $project{"TARGET"};
-	}
-	Project("TMAKE_LFLAGS_SONAME") &&
-	    ($project{"TMAKE_LFLAGS_SONAME"} .= $project{"TARGET_x"});
-	$project{"TMAKE_LINK_SHLIB_CMD"} ||
-	    ($project{"TMAKE_LINK_SHLIB_CMD"} =
-	      '$(LINK) $(LFLAGS) -o $(TARGETD) $(OBJECTS) $(OBJMOC) $(LIBS)');
-    }
-    if ( Config("dll") ) {
-	Project('TMAKE_CFLAGS *= $$TMAKE_CFLAGS_SHLIB' );
-	Project('TMAKE_CXXFLAGS *= $$TMAKE_CXXFLAGS_SHLIB' );
-	if ( Project("TMAKE_APP_FLAG") ) {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_SHAPP');
-	} else {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_SHLIB $$TMAKE_LFLAGS_SONAME');
-	}
-    }
-#$}
-#!
-# Makefile for building #$ Expand("TARGET")
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-####### Compiler, tools and options
-
-CC	=	#$ Expand("TMAKE_CC");
-CXX	=	#$ Expand("TMAKE_CXX");
-CFLAGS	=	#$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-CXXFLAGS=	#$ Expand("TMAKE_CXXFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-INCPATH	=	#$ ExpandPath("INCPATH","-I"," -I","");
-#$ Config("staticlib") && DisableOutput();
-LINK	=	#$ Expand("TMAKE_LINK");
-LFLAGS	=	#$ Expand("TMAKE_LFLAGS");
-LIBS	=	#$ Expand("TMAKE_LIBS");
-#$ Config("staticlib") && EnableOutput();
-#$ Project("TMAKE_LIB_FLAG") || DisableOutput();
-AR	=	#$ Expand("TMAKE_AR");
-RANLIB	=	#$ Expand("TMAKE_RANLIB");
-#$ Project("TMAKE_LIB_FLAG") || EnableOutput();
-MOC	=	#$ Expand("TMAKE_MOC");
-
-TAR	=	#$ Expand("TMAKE_TAR");
-GZIP	=	#$ Expand("TMAKE_GZIP");
-
-####### Files
-
-HEADERS =	#$ ExpandList("HEADERS");
-SOURCES =	#$ ExpandList("SOURCES");
-OBJECTS =	#$ ExpandList("OBJECTS");
-SRCMOC	=	#$ ExpandList("SRCMOC");
-OBJMOC	=	#$ ExpandList("OBJMOC");
-DIST	=	#$ ExpandList("DISTFILES");
-TARGET	=	#$ Expand("TARGET");
-#$ (Project("TMAKE_APP_FLAG") || Config("staticlib")) && DisableOutput();
-TARGETA	=	#$ Expand("TARGETA");
-TARGETD	=	#$ Expand("TARGET_x.y");
-TARGET0	=	#$ Expand("TARGET_");
-TARGET1	=	#$ Expand("TARGET_x");
-#$ (Project("TMAKE_APP_FLAG") || Config("staticlib")) && EnableOutput();
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .C .c
-
-.cpp.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cxx.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cc.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.C.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.c.o:
-	#$ Expand("TMAKE_RUN_CC_IMP");
-
-####### Build rules
-
-#$ Project("TMAKE_APP_FLAG") || DisableOutput();
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-$(TARGET): $(HEADERS) $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)
-#$ Project("TMAKE_APP_FLAG") || EnableOutput();
-#$ (Config("staticlib") || Project("TMAKE_APP_FLAG")) && DisableOutput();
-all: #$ ExpandGlue("ALL_DEPS",""," ",""); Expand("DESTDIR_TARGET");
-
-#$ Substitute('$$DESTDIR_TARGET: $(OBJECTS) $(OBJMOC) $$TARGETDEPS');
-	-rm -f $(TARGET) $(TARGET0) $(TARGET1)
-	#$ Expand("TMAKE_LINK_SHLIB_CMD");
-	#$ ExpandGlue("TMAKE_LN_SHLIB",""," "," \$(TARGET) \$(TARGET0)");
-	#$ ExpandGlue("TMAKE_LN_SHLIB",""," "," \$(TARGET) \$(TARGET1)");
-	#${
-	    $d = Project("DESTDIR");
-	    if ( $d ) {
-		$d =~ s-([^/])$-$1/-;
-		if ( Project("TMAKE_HPUX_SHLIB") ) {
-		    $text =  "-rm -f $d\$(TARGET)\n\t" .
-			     "-mv \$(TARGET) $d";
-		} else {
-		    $text =  "-rm -f $d\$(TARGET)\n\t" .
-			     "-rm -f $d\$(TARGET0)\n\t" .
-			     "-rm -f $d\$(TARGET1)\n\t" .
-			     "-mv \$(TARGET) \$(TARGET0) \$(TARGET1) $d";
-		}
-	    }
-	#$}
-
-staticlib: $(TARGETA)
-
-$(TARGETA): $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-	-rm -f $(TARGETA)
-	#$ Expand("TMAKE_AR_CMD");
-	#$ ExpandGlue("TMAKE_RANLIB","",""," \$(TARGETA)");
-#$ (Config("staticlib") || Project("TMAKE_APP_FLAG")) && EnableOutput();
-#$ Config("staticlib") || DisableOutput();
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-staticlib: $(TARGET)
-
-$(TARGET): $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-	-rm -f $(TARGET)
-	#$ Expand("TMAKE_AR_CMD");
-	#$ ExpandGlue("TMAKE_RANLIB","",""," \$(TARGET)");
-#$ Config("staticlib") || EnableOutput();
-
-moc: $(SRCMOC)
-
-#$ TmakeSelf();
-
-dist:
-	#$ Substitute('$(TAR) $$PROJECT.tar $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)');
-	#$ Substitute('$(GZIP) $$PROJECT.tar');
-
-clean:
-	-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(TARGET)
-#$ (Config("staticlib") || Project("TMAKE_APP_FLAG")) && DisableOutput();
-	-rm -f $(TARGET0) $(TARGET1) $(TARGETA)
-#$ (Config("staticlib") || Project("TMAKE_APP_FLAG")) && EnableOutput();
-	#$ ExpandGlue("TMAKE_CLEAN","-rm -f "," ","");
-	-rm -f *~ core
-	#$ ExpandGlue("CLEAN_FILES","-rm -f "," ","");
-
-####### Compile
-
-#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
-#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
-#$ BuildMocSrc(Project("HEADERS"));
-#$ BuildMocSrc(Project("SOURCES"));
diff --git a/tmake/lib/unix/lib.t b/tmake/lib/unix/lib.t
deleted file mode 100644
index dd24c63..0000000
--- a/tmake/lib/unix/lib.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Unix libraries.
-#!
-#$ Project('TMAKE_LIB_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/unix/subdirs.t b/tmake/lib/unix/subdirs.t
deleted file mode 100644
index e2b58a7..0000000
--- a/tmake/lib/unix/subdirs.t
+++ /dev/null
@@ -1,38 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for creating a makefile that invokes make in
-#! sub directories - for Unix.
-#!
-#${
-    StdInit();
-    Project('MAKEFILE') || Project('MAKEFILE = Makefile');
-    Project('TMAKE') || Project('TMAKE = tmake');
-#$}
-#!
-# Makefile for building targets in sub directories.
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-MAKEFILE=	#$ Expand("MAKEFILE");
-TMAKE	=	#$ Expand("TMAKE");
-
-SUBDIRS	=	#$ ExpandList("SUBDIRS");
-
-all: $(SUBDIRS)
-
-$(SUBDIRS): FORCE
-	cd $@; $(MAKE)
-
-#$ TmakeSelf();
-
-tmake_all:
-#${
-	$text = "\t" . 'for i in $(SUBDIRS); do ( cd $$i ; $(TMAKE) $$i.pro -o $(MAKEFILE); grep "TEMPLATE.*subdirs" $$i.pro 2>/dev/null >/dev/null && $(MAKE) -f $(MAKEFILE) tmake ) ; done';
-#$}
-
-clean:
-	for i in $(SUBDIRS); do ( cd $$i ; $(MAKE) clean ) ; done
-
-FORCE:
diff --git a/tmake/lib/unixware-g++/app.t b/tmake/lib/unixware-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/unixware-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/unixware-g++/lib.t b/tmake/lib/unixware-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/unixware-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/unixware-g++/subdirs.t b/tmake/lib/unixware-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/unixware-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/unixware-g++/tmake.conf b/tmake/lib/unixware-g++/tmake.conf
deleted file mode 100644
index d4e063f..0000000
--- a/tmake/lib/unixware-g++/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for sco-g++
-#
-# incl. UnixWare 7
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		= -D_UNIXWARE
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	= /usr/X/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		= -lc
-TMAKE_LIBS_X11		= -lXext -lX11 -lsocket -lnsl -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu -lXt
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/unixware7-cc/app.t b/tmake/lib/unixware7-cc/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/unixware7-cc/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/unixware7-cc/lib.t b/tmake/lib/unixware7-cc/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/unixware7-cc/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/unixware7-cc/subdirs.t b/tmake/lib/unixware7-cc/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/unixware7-cc/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/unixware7-cc/tmake.conf b/tmake/lib/unixware7-cc/tmake.conf
deleted file mode 100644
index 6e239dc..0000000
--- a/tmake/lib/unixware7-cc/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for sco-g++
-#
-# (UnixWare file, with different -D)
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O -T used
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -K PIC
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	= /usr/X/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= CC
-TMAKE_LINK_SHLIB	= CC
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -G
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		=
-TMAKE_LIBS_X11		= -lXext -lX11 -lsocket -lnsl -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu -lXt
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/unixware7-g++/app.t b/tmake/lib/unixware7-g++/app.t
deleted file mode 100644
index 867725e..0000000
--- a/tmake/lib/unixware7-g++/app.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/app.t");
diff --git a/tmake/lib/unixware7-g++/lib.t b/tmake/lib/unixware7-g++/lib.t
deleted file mode 100644
index 2523b2f..0000000
--- a/tmake/lib/unixware7-g++/lib.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/lib.t");
diff --git a/tmake/lib/unixware7-g++/subdirs.t b/tmake/lib/unixware7-g++/subdirs.t
deleted file mode 100644
index 5e888af..0000000
--- a/tmake/lib/unixware7-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Unix template
-#$ IncludeTemplate("../unix/subdirs.t");
diff --git a/tmake/lib/unixware7-g++/tmake.conf b/tmake/lib/unixware7-g++/tmake.conf
deleted file mode 100644
index 44f30a5..0000000
--- a/tmake/lib/unixware7-g++/tmake.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 
-#
-# tmake configuration for sco-g++
-#
-# (UnixWare file, with different -D)
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		= -D_UNIXWARE7
-TMAKE_CFLAGS_WARN_ON	= -Wall -W
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_SHLIB	= -fPIC
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_SHLIB	= $$TMAKE_CFLAGS_SHLIB
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_LIBDIR		=
-TMAKE_INCDIR_X11	=
-TMAKE_LIBDIR_X11	= /usr/X/lib
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-TMAKE_LIBDIR_QT		= $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL	=
-TMAKE_LIBDIR_OPENGL	=
-
-TMAKE_LINK		= g++
-TMAKE_LINK_SHLIB	= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_SHLIB	= -shared
-TMAKE_LFLAGS_SONAME	=
-
-TMAKE_LIBS		= -lc
-TMAKE_LIBS_X11		= -lXext -lX11 -lsocket -lnsl -lm
-TMAKE_LIBS_QT		= -lqt
-TMAKE_LIBS_QT_MT	= -lqt-mt
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lMesaGL -lMesaGLU -lXmu -lXt
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cq
-TMAKE_RANLIB		=
-
-TMAKE_TAR		= tar -cf
-TMAKE_GZIP		= gzip -9f
diff --git a/tmake/lib/win32-borland/app.t b/tmake/lib/win32-borland/app.t
deleted file mode 100644
index fc4dc2c..0000000
--- a/tmake/lib/win32-borland/app.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 applications.
-#!
-#$ Project('TMAKE_APP_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-borland/generic.t b/tmake/lib/win32-borland/generic.t
deleted file mode 100644
index aa7f53b..0000000
--- a/tmake/lib/win32-borland/generic.t
+++ /dev/null
@@ -1,237 +0,0 @@
-#!
-#! This is a tmake template for building Win32 applications or libraries.
-#!
-#${
-    if ( Config("qt") ) {
-	if ( !(Project("DEFINES") =~ /QT_NODLL/) &&
-	     ((Project("DEFINES") =~ /QT_(?:MAKE)?DLL/) ||
-	      ($ENV{"QT_DLL"} && !$ENV{"QT_NODLL"})) ) {
-	    Project('TMAKE_QT_DLL = 1');
-	    if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-		Project('CONFIG += dll');
-	    }
-	}
-    }
-    if ( Config("dll") || Project("TMAKE_APP_FLAG") ) {
-	Project('CONFIG -= staticlib');
-	Project('TMAKE_APP_OR_DLL = 1');
-    } else {
-	Project('CONFIG += staticlib');
-    }
-    if ( Config("warn_off") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_OFF');
-    } elsif ( Config("warn_on") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_ON');
-    }
-    if ( Config("debug") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_DEBUG');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG');
-    } elsif ( Config("release") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_RELEASE');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE');
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows' );
-    }
-    if ( Config("qt") ) {
-	Project('CONFIG *= moc');
-	AddIncludePath(Project("TMAKE_INCDIR_QT"));
-	if ( Config("release") ) {
-	    Project('DEFINES += NO_DEBUG');
-	}
-	if ( Config("opengl") ) {
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-	    if ( Project("TMAKE_QT_DLL") ) {
-		Project('DEFINES -= QT_DLL');
-		Project('DEFINES *= QT_MAKEDLL');
-		Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_QT_DLL');
-	    }
-	} else {
-	    if ( Project("TMAKE_QT_DLL") ) {
-		Project('DEFINES *= QT_DLL');
-	    }
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-	    if ( Project("TMAKE_QT_DLL") ) {
-		my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt");
-		Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/");
-		if ( !Config("dll") ) {
-		    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL');
-		}
-	    }
-	}
-    }
-    if ( Config("opengl") ) {
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    if ( Config("dll") ) {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE_DLL');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS_DLL');
-	if ( Project("TMAKE_LIB_FLAG") ) {
-	    my $ver = Project("VERSION");
-	    $ver =~ s/\.//g;
-	    $project{"TARGET_EXT"} = "${ver}.dll";
-	} else {
-	    $project{"TARGET_EXT"} = ".dll";
-	}
-    } else {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS');
-	if ( Project("TMAKE_APP_FLAG") ) {
-	    $project{"TARGET_EXT"} = ".exe";
-	} else {
-	    $project{"TARGET_EXT"} = ".lib";
-	}
-    }
-    if ( Config("windows") ) {
-	if ( Config("console") ) {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	    Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-	} else {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_WINDOWS_ANY');
-	}
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_WINDOWS');
-    } else {
-	Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-    }
-    if ( Config("moc") ) {
-	$moc_aware = 1;
-    }
-    Project('TMAKE_LIBS += $$LIBS');
-    Project('TMAKE_FILETAGS = HEADERS SOURCES DEF_FILE RC_FILE TARGET TMAKE_LIBS DESTDIR DLLDESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project("TMAKE_FILETAGS")) ) {
-	$project{$_} =~ s-[/\\]+-\\-g;
-    }
-    if ( Project("DEF_FILE") ) {
-	Project('TMAKE_LFLAGS *= /DEF:$$DEF_FILE');
-    }
-    if ( Project("RC_FILE") ) {
-	if ( Project("RES_FILE") ) {
-	    tmake_error("Both .rc and .res file specified.\n" .
-			"Please specify one of them, not both.");
-	}
-	$project{"RES_FILE"} = $project{"RC_FILE"};
-	$project{"RES_FILE"} =~ s/\.rc$/.res/i;
-	Project('TARGETDEPS += $$RES_FILE');
-    }
-    if ( Project("RES_FILE") ) {
-	Project('TMAKE_LIBS *= $$RES_FILE');
-    }
-    StdInit();
-    if ( Project("VERSION") ) {
-	$project{"VER_MAJ"} = $project{"VERSION"};
-	$project{"VER_MAJ"} =~ s/\.\d+$//;
-	$project{"VER_MIN"} = $project{"VERSION"};
-	$project{"VER_MIN"} =~ s/^\d+\.//;
-    }
-    Project('TMAKE_CLEAN += $$TARGET.tds');
-#$}
-#!
-# Makefile for building #$ Expand("TARGET")
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-!if !$d(BCB)
-BCB = $(MAKEDIR)\..
-!endif
-
-####### Compiler, tools and options
-
-CC	=	#$ Expand("TMAKE_CC");
-CXX	=	#$ Expand("TMAKE_CXX");
-CFLAGS	=	#$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-CXXFLAGS=	#$ Expand("TMAKE_CXXFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-INCPATH	=	#$ ExpandPath("INCPATH",'-I',' -I','');
-#$ !Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LINK	=	#$ Expand("TMAKE_LINK");
-LFLAGS	=	#$ Expand("TMAKE_LFLAGS");
-LIBS	=	#$ Expand("TMAKE_LIBS");
-#$ !Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LIB	=	#$ Expand("TMAKE_LIB");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-MOC	=	#$ Expand("TMAKE_MOC");
-
-ZIP	=	#$ Expand("TMAKE_ZIP");
-
-####### Files
-
-HEADERS =	#$ ExpandList("HEADERS");
-SOURCES =	#$ ExpandList("SOURCES");
-OBJECTS =	#$ ExpandList("OBJECTS");
-SRCMOC	=	#$ ExpandList("SRCMOC");
-OBJMOC	=	#$ ExpandList("OBJMOC");
-DIST	=	#$ ExpandList("DISTFILES");
-TARGET	=	#$ ExpandGlue("TARGET",$project{"DESTDIR"},"",$project{"TARGET_EXT"});
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .c
-
-.cpp.obj:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cxx.obj:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cc.obj:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.c.obj:
-	#$ Expand("TMAKE_RUN_CC_IMP");
-
-####### Build rules
-
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-$(TARGET): $(HEADERS) $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-#$ Project("TMAKE_APP_OR_DLL") || DisableOutput();
-	$(LINK) @&&|
-	    $(LFLAGS) $(OBJECTS) $(OBJMOC), $(TARGET),,$(LIBS)
-#$ Project("TMAKE_APP_OR_DLL") || EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-	-del $(TARGET)
-	$(LIB) $(TARGET) @&&|
-#${
-# $text = "+" . join(" \\\n+",split(/\s+/,$project{"OBJECTS"})) . " \\\n+"
-#             . join(" \\\n+",split(/\s+/,$project{"OBJMOC"}));
-#$}
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-|
-#$ (Config("dll") && Project("DLLDESTDIR")) || DisableOutput();
-	-copy $(TARGET) #$ Expand("DLLDESTDIR");
-#$ (Config("dll") && Project("DLLDESTDIR")) || EnableOutput();
-#$ Project("RC_FILE") || DisableOutput();
-
-#$ Substitute("\$\$RES_FILE: \$\$RC_FILE\n\t\$\$TMAKE_RC \$\$RC_FILE");
-#$ Project("RC_FILE") || EnableOutput();
-
-moc: $(SRCMOC)
-
-#$ TmakeSelf();
-
-dist:
-	#$ Substitute('$(ZIP) $$PROJECT.zip $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)');
-
-clean:
-	#$ ExpandGlue("OBJECTS","-del ","\n\t-del ","");
-	#$ ExpandGlue("SRCMOC" ,"-del ","\n\t-del ","");
-	#$ ExpandGlue("OBJMOC" ,"-del ","\n\t-del ","");
-	-del $(TARGET)
-	#$ ExpandGlue("TMAKE_CLEAN","-del ","\n\t-del ","");
-	#$ ExpandGlue("CLEAN_FILES","-del ","\n\t-del ","");
-
-####### Compile
-
-#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
-#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
-#$ BuildMocSrc(Project("HEADERS"));
-#$ BuildMocSrc(Project("SOURCES"));
diff --git a/tmake/lib/win32-borland/lib.t b/tmake/lib/win32-borland/lib.t
deleted file mode 100644
index d8ac6c7..0000000
--- a/tmake/lib/win32-borland/lib.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 libraries.
-#!
-#$ Project('TMAKE_LIB_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-borland/subdirs.t b/tmake/lib/win32-borland/subdirs.t
deleted file mode 100644
index f08e41f..0000000
--- a/tmake/lib/win32-borland/subdirs.t
+++ /dev/null
@@ -1,3 +0,0 @@
-#! Use the common Win32 template
-#$ Project("TMAKE_NOFORCE = 1");
-#$ IncludeTemplate("../win32/subdirs.t");
diff --git a/tmake/lib/win32-borland/tmake.conf b/tmake/lib/win32-borland/tmake.conf
deleted file mode 100644
index bce6f1a..0000000
--- a/tmake/lib/win32-borland/tmake.conf
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# 
-#
-# tmake configuration for Win32/Borland C++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= bcc32
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	= -w
-TMAKE_CFLAGS_WARN_OFF	= -w-
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -v
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= $$TMAKE_CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_INCDIR_QT		= $(QTDIR)\include
-
-TMAKE_RUN_CC		= $(CC) -c $(CFLAGS) $(INCPATH) -o$obj $src
-TMAKE_RUN_CC_IMP	= $(CC) -c $(CFLAGS) $(INCPATH) -o$@ $<
-TMAKE_RUN_CXX		= $(CXX) -c $(CXXFLAGS) $(INCPATH) -o$obj $src
-TMAKE_RUN_CXX_IMP	= $(CXX) -c $(CXXFLAGS) $(INCPATH) -o$@ $<
-
-TMAKE_LINK		= ilink32
-TMAKE_LFLAGS		= -L$(BCB)\lib -c -x -Gn
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	= -v
-TMAKE_LFLAGS_CONSOLE	= -ap -Tpe c0x32.obj
-TMAKE_LFLAGS_WINDOWS	= -aa -Tpe c0w32.obj
-TMAKE_LFLAGS_CONSOLE_DLL= -Gi -ap -Tpd c0d32.obj
-TMAKE_LFLAGS_WINDOWS_DLL= -Gi -aa -Tpd c0d32.obj
-
-TMAKE_LIBS		= import32.lib cw32.lib
-TMAKE_LIBS_CONSOLE	=
-TMAKE_LIBS_WINDOWS	=
-TMAKE_LIBS_QT		= $(QTDIR)\lib\qt.lib
-TMAKE_LIBS_QT_DLL	= $(QTDIR)\lib\qtmain.lib
-TMAKE_LIBS_QT_OPENGL	= $(QTDIR)\lib\qgl.lib
-TMAKE_LIBS_OPENGL	=
-
-TMAKE_MOC		= moc
-
-TMAKE_LIB		= tlib /C /P256
-TMAKE_RC		= brc32
-
-TMAKE_ZIP		= zip -r -9
diff --git a/tmake/lib/win32-g++/app.t b/tmake/lib/win32-g++/app.t
deleted file mode 100644
index fc4dc2c..0000000
--- a/tmake/lib/win32-g++/app.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 applications.
-#!
-#$ Project('TMAKE_APP_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-g++/generic.t b/tmake/lib/win32-g++/generic.t
deleted file mode 100644
index 33494a2..0000000
--- a/tmake/lib/win32-g++/generic.t
+++ /dev/null
@@ -1,243 +0,0 @@
-#!
-#! This is a tmake template for building Win32 applications or libraries.
-#!
-#${
-    if ( Config("qt") ) {
-	if ( !(Project("DEFINES") =~ /QT_NODLL/) &&
-	     ((Project("DEFINES") =~ /QT_(?:MAKE)?DLL/) ||
-	      ($ENV{"QT_DLL"} && !$ENV{"QT_NODLL"})) ) {
-	    Project('TMAKE_QT_DLL = 1');
-	    if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-		Project('CONFIG += dll');
-	    }
-	}
-    }
-    if ( Config("dll") || Project("TMAKE_APP_FLAG") ) {
-	Project('CONFIG -= staticlib');
-	Project('TMAKE_APP_OR_DLL = 1');
-    } else {
-	Project('CONFIG += staticlib');
-    }
-    if ( Config("warn_off") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_OFF');
-    } elsif ( Config("warn_on") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_ON');
-    }
-    if ( Config("debug") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_DEBUG');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG');
-    } elsif ( Config("release") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_RELEASE');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE');
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows' );
-    }
-    if ( Config("qt") ) {
-	Project('CONFIG *= moc');
-	AddIncludePath(Project("TMAKE_INCDIR_QT"));
-	if ( Config("release") ) {
-	    Project('DEFINES += NO_DEBUG');
-	}
-	if ( Config("opengl") ) {
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-	    if ( Project("TMAKE_QT_DLL") ) {
-		Project('DEFINES -= QT_DLL');
-		Project('DEFINES *= QT_MAKEDLL');
-		Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_QT_DLL');
-	    }
-	} else {
-	    if ( Project("TMAKE_QT_DLL") ) {
-		Project('DEFINES *= QT_DLL');
-	    }
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-	    if ( Project("TMAKE_QT_DLL") ) {
-		my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt");
-		Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/");
-		if ( !Config("dll") ) {
-		    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL');
-		}
-	    }
-	}
-    }
-    if ( Config("opengl") ) {
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    if ( Config("dll") ) {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE_DLL');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS_DLL');
-	if ( Project("TMAKE_LIB_FLAG") ) {
-	    my $ver = Project("VERSION");
-	    $ver =~ s/\.//g;
-	    $project{"TARGET_EXT"} = "${ver}.dll";
-	} else {
-	    $project{"TARGET_EXT"} = ".dll";
-	}
-    } else {
-        if ( Config("cgi") ) {
-	    Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE');
-	    Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS');
-	    $project{"TARGET_EXT"} = "";
-        } else {
-	    if ( Project("TMAKE_APP_FLAG") ) {
-	        $project{"TARGET_EXT"} = ".exe";
-	    } else {
-	        $project{"TARGET_EXT"} = ".a";
-	    }
-        }
-    }
-    if ( Config("windows") ) {
-	if ( Config("console") ) {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	    Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-	} else {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_WINDOWS_ANY');
-	}
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_WINDOWS');
-    } else {
-	Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-    }
-    if ( Config("moc") ) {
-	$moc_aware = 1;
-    }
-    Project('TMAKE_LIBS += $$LIBS');
-    Project('TMAKE_FILETAGS = HEADERS SOURCES DEF_FILE RC_FILE TARGET TMAKE_LIBS DESTDIR DLLDESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project("TMAKE_FILETAGS")) ) {
-	$project{$_} =~ s-[/\\]+-/-g;
-    }
-    if ( Project("DEF_FILE") ) {
-	Project('TMAKE_LFLAGS *= $$DEF_FILE');
-    }
-    if ( Project("RC_FILE") ) {
-	if ( Project("RES_FILE") ) {
-	    tmake_error("Both .rc and .res file specified.\n" .
-			"Please specify one of them, not both.");
-	}
-	$project{"RES_FILE"} = $project{"RC_FILE"};
-	$project{"RES_FILE"} =~ s/\.rc$/.res/i;
-	Project('TARGETDEPS += $$RES_FILE');
-    }
-    if ( Project("RES_FILE") ) {
-	Project('TMAKE_LIBS *= $$RES_FILE');
-    }
-    $obj_ext  = "o";
-    $dir_sep  = "/";
-    $gnuwin32 = 1;
-    if ( Config("qt") ) {
-	$qtdir = $ENV{"QTDIR"};
-	$project{"INCPATH"} =~ s/\$\(QTDIR\)/$qtdir/;
-	$project{"INCPATH"} =~ s/\\/\//g;
-	$project{"TMAKE_LIBS"} =~ s/\$\(QTDIR\)/$qtdir/;
-	$project{"TMAKE_LIBS"} =~ s/\\/\//g;
-    }
-    StdInit();
-    if ( Project("VERSION") ) {
-	$project{"VER_MAJ"} = $project{"VERSION"};
-	$project{"VER_MAJ"} =~ s/\.\d+$//;
-	$project{"VER_MIN"} = $project{"VERSION"};
-	$project{"VER_MIN"} =~ s/^\d+\.//;
-    }    
-    if ( Config("staticlib") ) {
-	$project{"TARGET"} = "lib" . $project{"TARGET"}
-    }
-#$}
-#!
-# Makefile for building #$ Expand("TARGET")
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-####### Compiler, tools and options
-
-CC	=	#$ Expand("TMAKE_CC");
-CXX	=	#$ Expand("TMAKE_CXX");
-CFLAGS	=	#$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-CXXFLAGS=	#$ Expand("TMAKE_CXXFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-INCPATH	=	#$ ExpandPath("INCPATH",'-I',' -I','');
-#$ !Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LINK	=	#$ Expand("TMAKE_LINK");
-LFLAGS	=	#$ Expand("TMAKE_LFLAGS");
-LIBS	=	#$ Expand("TMAKE_LIBS");
-#$ !Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-AR	=	#$ Expand("TMAKE_AR");
-RANLIB	=	#$ Expand("TMAKE_RANLIB");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-MOC	=	#$ Expand("TMAKE_MOC");
-
-ZIP	=	#$ Expand("TMAKE_ZIP");
-
-####### Files
-
-HEADERS =	#$ ExpandList("HEADERS");
-SOURCES =	#$ ExpandList("SOURCES");
-OBJECTS =	#$ ExpandList("OBJECTS");
-SRCMOC	=	#$ ExpandList("SRCMOC");
-OBJMOC	=	#$ ExpandList("OBJMOC");
-DIST	=	#$ ExpandList("DISTFILES");
-TARGET	=	#$ ExpandGlue("TARGET",$project{"DESTDIR"},"",$project{"TARGET_EXT"});
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .c
-
-.cpp.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cxx.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cc.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.c.o:
-	#$ Expand("TMAKE_RUN_CC_IMP");
-
-####### Build rules
-
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-$(TARGET): $(HEADERS) $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-#$ Project("TMAKE_APP_OR_DLL") || DisableOutput();
-	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)
-#$ Project("TMAKE_APP_OR_DLL") || EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-	-rm -f $(TARGET)
-	$(AR) $(TARGET) $(OBJECTS) $(OBJMOC)
-	#$ ExpandGlue("TMAKE_RANLIB","",""," \$(TARGET)");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ (Config("dll") && Project("DLLDESTDIR")) || DisableOutput();
-	-cp $(TARGET) #$ Expand("DLLDESTDIR");
-#$ (Config("dll") && Project("DLLDESTDIR")) || EnableOutput();
-#$ Project('RC_FILE') || DisableOutput();
-
-#$ Substitute("\$\$RES_FILE: \$\$RC_FILE\n\t\$\$TMAKE_RC \$\$RC_FILE");
-#$ Project('RC_FILE') || EnableOutput();
-
-moc: $(SRCMOC)
-
-#$ TmakeSelf();
-
-dist:
-	#$ Substitute('$(ZIP) $$PROJECT.zip $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)');
-
-clean:
-	-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(TARGET)
-	#$ ExpandGlue("TMAKE_CLEAN","-rm -f "," ","");
-	-rm -f *~ core
-	#$ ExpandGlue("CLEAN_FILES","-rm -f "," ","");
-
-####### Compile
-
-#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
-#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
-#$ BuildMocSrc(Project("HEADERS"));
-#$ BuildMocSrc(Project("SOURCES"));
diff --git a/tmake/lib/win32-g++/lib.t b/tmake/lib/win32-g++/lib.t
deleted file mode 100644
index d8ac6c7..0000000
--- a/tmake/lib/win32-g++/lib.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 libraries.
-#!
-#$ Project('TMAKE_LIB_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-g++/subdirs.t b/tmake/lib/win32-g++/subdirs.t
deleted file mode 100644
index 8b881ab..0000000
--- a/tmake/lib/win32-g++/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Win32 template
-#$ IncludeTemplate("../win32/subdirs.t");
diff --git a/tmake/lib/win32-g++/tmake.conf b/tmake/lib/win32-g++/tmake.conf
deleted file mode 100644
index d313a44..0000000
--- a/tmake/lib/win32-g++/tmake.conf
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# 
-#
-# tmake configuration for Win32/g++ (Cygnus gnu-win32)
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-
-TMAKE_RUN_CC		= $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
-TMAKE_RUN_CC_IMP	= $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
-TMAKE_RUN_CXX		= $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
-TMAKE_RUN_CXX_IMP	= $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
-
-TMAKE_LINK		= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_CONSOLE	= -Wl,-subsystem,console
-TMAKE_LFLAGS_WINDOWS	= -Wl,-subsystem,windows
-TMAKE_LFLAGS_CONSOLE_DLL= -Wl,-subsystem,console
-TMAKE_LFLAGS_WINDOWS_DLL= -Wl,-subsystem,windows
-
-TMAKE_LIBS		=
-TMAKE_LIBS_CONSOLE	=
-TMAKE_LIBS_WINDOWS	= -luser32 -lgdi32 -lcomdlg32 -limm32 -lole32 -luuid -lwsock32
-TMAKE_LIBS_QT		= -L$(QTDIR)/lib -lqt
-TMAKE_LIBS_QT_DLL	= -lqtmain
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lopengl32
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_ZIP		= zip -r -9
diff --git a/tmake/lib/win32-mingw/app.t b/tmake/lib/win32-mingw/app.t
deleted file mode 100644
index fc4dc2c..0000000
--- a/tmake/lib/win32-mingw/app.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 applications.
-#!
-#$ Project('TMAKE_APP_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-mingw/generic.t b/tmake/lib/win32-mingw/generic.t
deleted file mode 100644
index 4988d59..0000000
--- a/tmake/lib/win32-mingw/generic.t
+++ /dev/null
@@ -1,239 +0,0 @@
-#!
-#! This is a tmake template for building Win32 applications or libraries.
-#!
-#${
-    if ( Config("qt") ) {
-	if ( !(Project("DEFINES") =~ /QT_NODLL/) &&
-	     ((Project("DEFINES") =~ /QT_(?:MAKE)?DLL/) ||
-	      ($ENV{"QT_DLL"} && !$ENV{"QT_NODLL"})) ) {
-	    Project('TMAKE_QT_DLL = 1');
-	    if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-		Project('CONFIG += dll');
-	    }
-	}
-    }
-    if ( Config("dll") || Project("TMAKE_APP_FLAG") ) {
-	Project('CONFIG -= staticlib');
-	Project('TMAKE_APP_OR_DLL = 1');
-    } else {
-	Project('CONFIG += staticlib');
-    }
-    if ( Config("warn_off") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_OFF');
-    } elsif ( Config("warn_on") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_ON');
-    }
-    if ( Config("debug") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_DEBUG');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG');
-    } elsif ( Config("release") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_RELEASE');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE');
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows' );
-    }
-    if ( Config("qt") ) {
-	Project('CONFIG *= moc');
-	AddIncludePath(Project("TMAKE_INCDIR_QT"));
-	if ( Config("release") ) {
-	    Project('DEFINES += NO_DEBUG');
-	}
-	if ( Config("opengl") ) {
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-	    if ( Project("TMAKE_QT_DLL") ) {
-		Project('DEFINES -= QT_DLL');
-		Project('DEFINES *= QT_MAKEDLL');
-		Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_QT_DLL');
-	    }
-	} else {
-	    if ( Project("TMAKE_QT_DLL") ) {
-		Project('DEFINES *= QT_DLL');
-	    }
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-	    if ( Project("TMAKE_QT_DLL") ) {
-		my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt");
-		Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/");
-		if ( !Config("dll") ) {
-		    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL');
-		}
-	    }
-	}
-    }
-    if ( Config("opengl") ) {
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    if ( Config("dll") ) {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE_DLL');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS_DLL');
-	if ( Project("TMAKE_LIB_FLAG") ) {
-	    my $ver = Project("VERSION");
-	    $ver =~ s/\.//g;
-	    $project{"TARGET_EXT"} = "${ver}.dll";
-	} else {
-	    $project{"TARGET_EXT"} = ".dll";
-	}
-    } else {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS');
-	if ( Project("TMAKE_APP_FLAG") ) {
-	    $project{"TARGET_EXT"} = ".exe";
-	} else {
-	    $project{"TARGET_EXT"} = ".a";
-	}
-    }
-    if ( Config("windows") ) {
-	if ( Config("console") ) {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	    Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-	} else {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_WINDOWS_ANY');
-	}
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_WINDOWS');
-    } else {
-	Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-    }
-    if ( Config("moc") ) {
-	$moc_aware = 1;
-    }
-    Project('TMAKE_LIBS += $$LIBS');
-    Project('TMAKE_FILETAGS = HEADERS SOURCES DEF_FILE RC_FILE TARGET TMAKE_LIBS DESTDIR DLLDESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project("TMAKE_FILETAGS")) ) {
-	$project{$_} =~ s-[/\\]+-/-g;
-    }
-    if ( Project("DEF_FILE") ) {
-	Project('TMAKE_LFLAGS *= $$DEF_FILE');
-    }
-    if ( Project("RC_FILE") ) {
-	if ( Project("RES_FILE") ) {
-	    tmake_error("Both .rc and .res file specified.\n" .
-			"Please specify one of them, not both.");
-	}
-	$project{"RES_FILE"} = $project{"RC_FILE"};
-	$project{"RES_FILE"} =~ s/\.rc$/.res/i;
-	Project('TARGETDEPS += $$RES_FILE');
-    }
-    if ( Project("RES_FILE") ) {
-	Project('TMAKE_LIBS *= $$RES_FILE');
-    }
-    $obj_ext  = "o";
-    $dir_sep  = "/";
-    $gnuwin32 = 1;
-    if ( Config("qt") ) {
-	$qtdir = $ENV{"QTDIR"};
-	$project{"INCPATH"} =~ s/\$\(QTDIR\)/$qtdir/;
-	$project{"INCPATH"} =~ s/\\/\//g;
-	$project{"TMAKE_LIBS"} =~ s/\$\(QTDIR\)/$qtdir/;
-	$project{"TMAKE_LIBS"} =~ s/\\/\//g;
-    }
-    StdInit();
-    if ( Project("VERSION") ) {
-	$project{"VER_MAJ"} = $project{"VERSION"};
-	$project{"VER_MAJ"} =~ s/\.\d+$//;
-	$project{"VER_MIN"} = $project{"VERSION"};
-	$project{"VER_MIN"} =~ s/^\d+\.//;
-    }    
-    if ( Config("staticlib") ) {
-	$project{"TARGET"} = "lib" . $project{"TARGET"};
-    }
-#$}
-#!
-# Makefile for building #$ Expand("TARGET")
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-####### Compiler, tools and options
-
-CC	=	#$ Expand("TMAKE_CC");
-CXX	=	#$ Expand("TMAKE_CXX");
-CFLAGS	=	#$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-CXXFLAGS=	#$ Expand("TMAKE_CXXFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-INCPATH	=	#$ ExpandPath("INCPATH",'-I',' -I','');
-#$ !Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LINK	=	#$ Expand("TMAKE_LINK");
-LFLAGS	=	#$ Expand("TMAKE_LFLAGS");
-LIBS	=	#$ Expand("TMAKE_LIBS");
-#$ !Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-AR	=	#$ Expand("TMAKE_AR");
-RANLIB	=	#$ Expand("TMAKE_RANLIB");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-MOC	=	#$ Expand("TMAKE_MOC");
-
-ZIP	=	#$ Expand("TMAKE_ZIP");
-
-####### Files
-
-HEADERS =	#$ ExpandList("HEADERS");
-SOURCES =	#$ ExpandList("SOURCES");
-OBJECTS =	#$ ExpandList("OBJECTS");
-SRCMOC	=	#$ ExpandList("SRCMOC");
-OBJMOC	=	#$ ExpandList("OBJMOC");
-DIST	=	#$ ExpandList("DISTFILES");
-TARGET	=	#$ ExpandGlue("TARGET",$project{"DESTDIR"},"",$project{"TARGET_EXT"});
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .c
-
-.cpp.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cxx.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cc.o:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.c.o:
-	#$ Expand("TMAKE_RUN_CC_IMP");
-
-####### Build rules
-
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-$(TARGET): $(HEADERS) $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-#$ Project("TMAKE_APP_OR_DLL") || DisableOutput();
-	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)
-#$ Project("TMAKE_APP_OR_DLL") || EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-	-rm -f $(TARGET)
-	$(AR) $(TARGET) $(OBJECTS) $(OBJMOC)
-	#$ ExpandGlue("TMAKE_RANLIB","",""," \$(TARGET)");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ (Config("dll") && Project("DLLDESTDIR")) || DisableOutput();
-	-cp $(TARGET) #$ Expand("DLLDESTDIR");
-#$ (Config("dll") && Project("DLLDESTDIR")) || EnableOutput();
-#$ Project('RC_FILE') || DisableOutput();
-
-#$ Substitute("\$\$RES_FILE: \$\$RC_FILE\n\t\$\$TMAKE_RC \$\$RC_FILE");
-#$ Project('RC_FILE') || EnableOutput();
-
-moc: $(SRCMOC)
-
-#$ TmakeSelf();
-
-dist:
-	#$ Substitute('$(ZIP) $$PROJECT.zip $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)');
-
-clean:
-	-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(TARGET)
-	#$ ExpandGlue("TMAKE_CLEAN","-rm -f "," ","");
-	-rm -f *~ core
-	#$ ExpandGlue("CLEAN_FILES","-rm -f "," ","");
-
-####### Compile
-
-#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
-#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
-#$ BuildMocSrc(Project("HEADERS"));
-#$ BuildMocSrc(Project("SOURCES"));
diff --git a/tmake/lib/win32-mingw/lib.t b/tmake/lib/win32-mingw/lib.t
deleted file mode 100644
index d8ac6c7..0000000
--- a/tmake/lib/win32-mingw/lib.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 libraries.
-#!
-#$ Project('TMAKE_LIB_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-mingw/subdirs.t b/tmake/lib/win32-mingw/subdirs.t
deleted file mode 100644
index 8b881ab..0000000
--- a/tmake/lib/win32-mingw/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Win32 template
-#$ IncludeTemplate("../win32/subdirs.t");
diff --git a/tmake/lib/win32-mingw/tmake.conf b/tmake/lib/win32-mingw/tmake.conf
deleted file mode 100644
index c6d1918..0000000
--- a/tmake/lib/win32-mingw/tmake.conf
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# 
-#
-# tmake configuration for Win32/mingw (MINGW gnu-win32)
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= gcc
-TMAKE_CFLAGS		=
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	=
-TMAKE_CFLAGS_RELEASE	= -O2 -s
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
-
-TMAKE_CXX		= g++
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_INCDIR_QT		= $(QTDIR)/include
-
-TMAKE_RUN_CC		= $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
-TMAKE_RUN_CC_IMP	= $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
-TMAKE_RUN_CXX		= $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
-TMAKE_RUN_CXX_IMP	= $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
-
-TMAKE_LINK		= g++
-TMAKE_LFLAGS		=
-TMAKE_LFLAGS_RELEASE	= -s
-TMAKE_LFLAGS_DEBUG	=
-TMAKE_LFLAGS_CONSOLE	= -Wl,-subsystem,console
-TMAKE_LFLAGS_WINDOWS	= -Wl,-subsystem,windows
-TMAKE_LFLAGS_CONSOLE_DLL= -Wl,-subsystem,console
-TMAKE_LFLAGS_WINDOWS_DLL= -Wl,-subsystem,windows
-
-TMAKE_LIBS		=
-TMAKE_LIBS_CONSOLE	=
-TMAKE_LIBS_WINDOWS	= -luser32 -lgdi32 -lcomdlg32 -limm32 -lole32 -luuid -lwsock32
-TMAKE_LIBS_QT		= -L$(QTDIR)/lib -lqt
-TMAKE_LIBS_QT_DLL	= -lqtmain
-TMAKE_LIBS_QT_OPENGL	= -lqgl
-TMAKE_LIBS_OPENGL	= -lopengl32
-
-TMAKE_MOC		= moc
-
-TMAKE_AR		= ar cqs
-TMAKE_RANLIB		=
-
-TMAKE_ZIP		= zip -r -9
diff --git a/tmake/lib/win32-msvc/app.t b/tmake/lib/win32-msvc/app.t
deleted file mode 100644
index fc4dc2c..0000000
--- a/tmake/lib/win32-msvc/app.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 applications.
-#!
-#$ Project('TMAKE_APP_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-msvc/generic.t b/tmake/lib/win32-msvc/generic.t
deleted file mode 100644
index 3344236..0000000
--- a/tmake/lib/win32-msvc/generic.t
+++ /dev/null
@@ -1,229 +0,0 @@
-#!
-#! This is a tmake template for building Win32 applications or libraries.
-#!
-#${
-    if ( Config("qt") ) {
-	if ( !(Project("DEFINES") =~ /QT_NODLL/) &&
-	     ((Project("DEFINES") =~ /QT_(?:MAKE)?DLL/) ||
-	      ($ENV{"QT_DLL"} && !$ENV{"QT_NODLL"})) ) {
-	    Project('TMAKE_QT_DLL = 1');
-	    if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-		Project('CONFIG += dll');
-	    }
-	}
-    }
-    if ( Config("dll") || Project("TMAKE_APP_FLAG") ) {
-	Project('CONFIG -= staticlib');
-	Project('TMAKE_APP_OR_DLL = 1');
-    } else {
-	Project('CONFIG += staticlib');
-    }
-    if ( Config("warn_off") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_OFF');
-    } elsif ( Config("warn_on") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_ON');
-    }
-    if ( Config("debug") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_DEBUG');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG');
-    } elsif ( Config("release") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE');
-	Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_RELEASE');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE');
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows' );
-    }
-    if ( Config("qt") ) {
-	Project('CONFIG *= moc');
-	AddIncludePath(Project("TMAKE_INCDIR_QT"));
-	if ( Config("release") ) {
-	    Project('DEFINES += NO_DEBUG');
-	}
-	if ( Config("opengl") ) {
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-	    if ( Project("TMAKE_QT_DLL") ) {
-		Project('DEFINES -= QT_DLL');
-		Project('DEFINES *= QT_MAKEDLL');
-		Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_QT_DLL');
-	    }
-	} else {
-	    if ( Project("TMAKE_QT_DLL") ) {
-		Project('DEFINES *= QT_DLL');
-	    }
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-	    if ( Project("TMAKE_QT_DLL") ) {
-		my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt");
-		Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/");
-		if ( !Config("dll") ) {
-		    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL');
-		}
-	    }
-	}
-    }
-    if ( Config("opengl") ) {
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    if ( Config("dll") ) {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE_DLL');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS_DLL');
-	if ( Project("TMAKE_LIB_FLAG") ) {
-	    my $ver = Project("VERSION");
-	    $ver =~ s/\.//g;
-	    $project{"TARGET_EXT"} = "${ver}.dll";
-	} else {
-	    $project{"TARGET_EXT"} = ".dll";
-	}
-    } else {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS');
-	if ( Project("TMAKE_APP_FLAG") ) {
-	    $project{"TARGET_EXT"} = ".exe";
-	} else {
-	    $project{"TARGET_EXT"} = ".lib";
-	}
-    }
-    if ( Config("windows") ) {
-	if ( Config("console") ) {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	    Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-	} else {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_WINDOWS_ANY');
-	}
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_WINDOWS');
-    } else {
-	Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-    }
-    if ( Config("moc") ) {
-	$moc_aware = 1;
-    }
-    Project('TMAKE_LIBS += $$LIBS');
-    Project('TMAKE_FILETAGS = HEADERS SOURCES DEF_FILE RC_FILE TARGET TMAKE_LIBS DESTDIR DLLDESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project("TMAKE_FILETAGS")) ) {
-	$project{$_} =~ s-[/\\]+-\\-g;
-    }
-    if ( Project("DEF_FILE") ) {
-	Project('TMAKE_LFLAGS *= /DEF:$$DEF_FILE');
-    }
-    if ( Project("RC_FILE") ) {
-	if ( Project("RES_FILE") ) {
-	    tmake_error("Both .rc and .res file specified.\n" .
-			"Please specify one of them, not both.");
-	}
-	$project{"RES_FILE"} = $project{"RC_FILE"};
-	$project{"RES_FILE"} =~ s/\.rc$/.res/i;
-	Project('TARGETDEPS += $$RES_FILE');
-    }
-    if ( Project("RES_FILE") ) {
-	Project('TMAKE_LIBS *= $$RES_FILE');
-    }
-    StdInit();
-    if ( Project("VERSION") ) {
-	$project{"VER_MAJ"} = $project{"VERSION"};
-	$project{"VER_MAJ"} =~ s/\.\d+$//;
-	$project{"VER_MIN"} = $project{"VERSION"};
-	$project{"VER_MIN"} =~ s/^\d+\.//;
-    }
-    Project('debug:TMAKE_CLEAN += $$TARGET.pdb vc*.pdb $$TARGET.ilk');
-#$}
-#!
-# Makefile for building #$ Expand("TARGET")
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-####### Compiler, tools and options
-
-CC	=	#$ Expand("TMAKE_CC");
-CXX	=	#$ Expand("TMAKE_CXX");
-CFLAGS	=	#$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-CXXFLAGS=	#$ Expand("TMAKE_CXXFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-INCPATH	=	#$ ExpandPath("INCPATH",'-I',' -I','');
-#$ !Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LINK	=	#$ Expand("TMAKE_LINK");
-LFLAGS	=	#$ Expand("TMAKE_LFLAGS");
-LIBS	=	#$ Expand("TMAKE_LIBS");
-#$ !Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LIB	=	#$ Expand("TMAKE_LIB");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-MOC	=	#$ Expand("TMAKE_MOC");
-
-ZIP	=	#$ Expand("TMAKE_ZIP");
-
-####### Files
-
-HEADERS =	#$ ExpandList("HEADERS");
-SOURCES =	#$ ExpandList("SOURCES");
-OBJECTS =	#$ ExpandList("OBJECTS");
-SRCMOC	=	#$ ExpandList("SRCMOC");
-OBJMOC	=	#$ ExpandList("OBJMOC");
-DIST	=	#$ ExpandList("DISTFILES");
-TARGET	=	#$ ExpandGlue("TARGET",$project{"DESTDIR"},"",$project{"TARGET_EXT"});
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .c
-
-.cpp.obj:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cxx.obj:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.cc.obj:
-	#$ Expand("TMAKE_RUN_CXX_IMP");
-
-.c.obj:
-	#$ Expand("TMAKE_RUN_CC_IMP");
-
-####### Build rules
-
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-$(TARGET): $(HEADERS) $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-#$ Project("TMAKE_APP_OR_DLL") || DisableOutput();
-	$(LINK) $(LFLAGS) /OUT:$(TARGET) @<<
-	    $(OBJECTS) $(OBJMOC) $(LIBS)
-#$ Project("TMAKE_APP_OR_DLL") || EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-	$(LIB) /OUT:$(TARGET) @<<
-	    $(OBJECTS) $(OBJMOC)
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-<<
-#$ (Config("dll") && Project("DLLDESTDIR")) || DisableOutput();
-	-copy $(TARGET) #$ Expand("DLLDESTDIR");
-#$ (Config("dll") && Project("DLLDESTDIR")) || EnableOutput();
-#$ Project("RC_FILE") || DisableOutput();
-
-#$ Substitute("\$\$RES_FILE: \$\$RC_FILE\n\t\$\$TMAKE_RC \$\$RC_FILE");
-#$ Project("RC_FILE") || EnableOutput();
-
-moc: $(SRCMOC)
-
-#$ TmakeSelf();
-
-dist:
-	#$ Substitute('$(ZIP) $$PROJECT.zip $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)');
-
-clean:
-	#$ ExpandGlue("OBJECTS","-del ","\n\t-del ","");
-	#$ ExpandGlue("SRCMOC" ,"-del ","\n\t-del ","");
-	#$ ExpandGlue("OBJMOC" ,"-del ","\n\t-del ","");
-	-del $(TARGET)
-	#$ ExpandGlue("TMAKE_CLEAN","-del ","\n\t-del ","");
-	#$ ExpandGlue("CLEAN_FILES","-del ","\n\t-del ","");
-
-####### Compile
-
-#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
-#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
-#$ BuildMocSrc(Project("HEADERS"));
-#$ BuildMocSrc(Project("SOURCES"));
diff --git a/tmake/lib/win32-msvc/lib.t b/tmake/lib/win32-msvc/lib.t
deleted file mode 100644
index d8ac6c7..0000000
--- a/tmake/lib/win32-msvc/lib.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 libraries.
-#!
-#$ Project('TMAKE_LIB_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-msvc/subdirs.t b/tmake/lib/win32-msvc/subdirs.t
deleted file mode 100644
index 8b881ab..0000000
--- a/tmake/lib/win32-msvc/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Win32 template
-#$ IncludeTemplate("../win32/subdirs.t");
diff --git a/tmake/lib/win32-msvc/tmake.conf b/tmake/lib/win32-msvc/tmake.conf
deleted file mode 100644
index e3191a3..0000000
--- a/tmake/lib/win32-msvc/tmake.conf
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# 
-#
-# tmake configuration for Win32/Microsoft C++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= cl
-TMAKE_CFLAGS		= -nologo
-TMAKE_CFLAGS_WARN_ON	= -W3
-TMAKE_CFLAGS_WARN_OFF	= -W0
-TMAKE_CFLAGS_RELEASE	= -O2
-TMAKE_CFLAGS_DEBUG	= -Zi
-TMAKE_CFLAGS_MT		= -MT
-TMAKE_CFLAGS_MT_DBG	= -MTd
-TMAKE_CFLAGS_MT_DLL	= -MD
-TMAKE_CFLAGS_MT_DLLDBG	= -MDd
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= $$TMAKE_CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_MT	= $$TMAKE_CFLAGS_MT
-TMAKE_CXXFLAGS_MT_DBG	= $$TMAKE_CFLAGS_MT_DBG
-TMAKE_CXXFLAGS_MT_DLL	= $$TMAKE_CFLAGS_MT_DLL
-TMAKE_CXXFLAGS_MT_DLLDBG= $$TMAKE_CFLAGS_MT_DLLDBG
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_INCDIR_QT		= $(QTDIR)\include
-
-TMAKE_RUN_CC		= $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
-TMAKE_RUN_CC_IMP	= $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
-TMAKE_RUN_CXX		= $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
-TMAKE_RUN_CXX_IMP	= $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
-
-TMAKE_LINK		= link
-TMAKE_LFLAGS		= /NOLOGO
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	= /DEBUG
-TMAKE_LFLAGS_CONSOLE	= /SUBSYSTEM:console
-TMAKE_LFLAGS_WINDOWS	= /SUBSYSTEM:windows
-TMAKE_LFLAGS_CONSOLE_DLL= /SUBSYSTEM:console /DLL
-TMAKE_LFLAGS_WINDOWS_DLL= /SUBSYSTEM:windows /DLL
-TMAKE_LFLAGS_QT_DLL	= /BASE:0x39D00000
-
-TMAKE_LIBS		=
-TMAKE_LIBS_CONSOLE	=
-TMAKE_LIBS_WINDOWS	= user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib
-TMAKE_LIBS_QT		= $(QTDIR)\lib\qt.lib
-TMAKE_LIBS_QT_DLL	= $(QTDIR)\lib\qtmain.lib
-TMAKE_LIBS_QT_OPENGL	= $(QTDIR)\lib\qgl.lib
-TMAKE_LIBS_OPENGL	= opengl32.lib glu32.lib
-
-TMAKE_MOC		= moc
-
-TMAKE_LIB		= lib /NOLOGO
-TMAKE_RC		= rc
-
-TMAKE_ZIP		= zip -r -9
diff --git a/tmake/lib/win32-msvc/vcapp.t b/tmake/lib/win32-msvc/vcapp.t
deleted file mode 100644
index ac7ae23..0000000
--- a/tmake/lib/win32-msvc/vcapp.t
+++ /dev/null
@@ -1,244 +0,0 @@
-#!
-#! This TMAKE template - Microsoft Visual C++ 5.0 applications
-#!
-#${
-    if ( Config("qt") ) {
-	if ( !(Project("DEFINES") =~ /QT_NODLL/) &&
-	     ((Project("DEFINES") =~ /QT_(?:MAKE)?DLL/) ||
-	      ($ENV{"QT_DLL"} && !$ENV{"QT_NODLL"})) ) {
-	    Project('TMAKE_QT_DLL = 1');
-	    if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) {
-		Project('CONFIG += dll');
-	    }
-	}
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows');
-    }
-    if ( Config("qt") ) {
-	$moc_aware = 1;
-	AddIncludePath(Project('TMAKE_INCDIR_QT'));
-	if ( Config("opengl") ) {
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( Project("TMAKE_QT_DLL") ) {
-	    Project('DEFINES *= QT_DLL');
-	}
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-	if ( Project("TMAKE_QT_DLL") ) {
-	    my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt");
-	    Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/");
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL');
-	}
-    }
-    if ( Config("opengl") ) {
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    Project('TMAKE_LIBS += $$LIBS');
-
-    if ( Config("console") ) {
-	$project{"VC_PROJ_TYPE"} = 'Win32 (x86) Console Application';
-	$project{"VC_PROJ_CODE"} = '0x0103';
-	$vc_base_libs = 'kernel32.lib user32.lib gdi32.lib winspool.lib ' .
-			'comdlg32.lib advapi32.lib shell32.lib ole32.lib ' .
-			'oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ';
-	$vc_libs = $vc_base_libs;
-	$vc_link_release = '/nologo /subsystem:console /machine:I386';
-	$vc_link_debug   = '/nologo /subsystem:console /debug /machine:I386 /pdbtype:sept';
-	$vc_cpp_def_release = '/D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" ';
-	$vc_cpp_def_debug   = '/D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" ';
-    } else {
-	$project{"VC_PROJ_TYPE"} = 'Win32 (x86) Application';
-	$project{"VC_PROJ_CODE"} = '0x0101';
-	$vc_base_libs = 'kernel32.lib user32.lib gdi32.lib winspool.lib ' .
-			'comdlg32.lib advapi32.lib shell32.lib ole32.lib ' .
-			'oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ';
-	$vc_libs = $vc_base_libs . 'wsock32.lib ';
-	$vc_link_release = '/nologo /subsystem:windows /machine:I386';
-	$vc_link_debug   = '/nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept';
-	$vc_cpp_def_release = '/D "NDEBUG" /D "WIN32" /D "_WINDOWS" ';
-	$vc_cpp_def_debug   = '/D "_DEBUG" /D "WIN32" /D "_WINDOWS" ';
-    }
-    $project{"VC_BASE_LINK_RELEASE"} = $vc_base_libs . $vc_link_release;
-    $project{"VC_BASE_LINK_DEBUG"}   = $vc_base_libs . $vc_link_debug;
-    $tmake_libs = Project('TMAKE_LIBS') ? (Project('TMAKE_LIBS') . " ") : "";
-    $project{"VC_LINK_RELEASE"} = $vc_libs . $tmake_libs . $vc_link_release;
-    $project{"VC_LINK_DEBUG"}   = $vc_libs . $tmake_libs . $vc_link_debug;
-
-    $vc_cpp_opt_release = '/nologo /W3 /GX /O2 ';
-    $vc_cpp_opt_debug   = '/nologo /W3 /Gm /GX /Zi /Od ';
-    $vc_cpp_opt_common  = '/YX /FD /c';
-    $project{"VC_BASE_CPP_RELEASE"} = $vc_cpp_opt_release . $vc_cpp_def_release . $vc_cpp_opt_common;
-    $project{"VC_BASE_CPP_DEBUG"}   = $vc_cpp_opt_debug   . $vc_cpp_def_debug   . $vc_cpp_opt_common;
-    ExpandPath("INCPATH",'/I ',' /I ','');
-    if ( $text ne "" ) { $vc_inc = $text . " ";  $text = ""; } else { $vc_inc = ""; }
-    ExpandGlue("DEFINES",'/D "','" /D "','"');
-    if ( $text ne "" ) { $vc_def = $text . " ";  $text = ""; } else { $vc_def = ""; }
-    $project{"VC_CPP_RELEASE"} = $vc_cpp_opt_release . $vc_inc . $vc_cpp_def_release . $vc_def . $vc_cpp_opt_common;
-    $project{"VC_CPP_DEBUG"}   = $vc_cpp_opt_debug   . $vc_inc . $vc_cpp_def_debug   . $vc_def . $vc_cpp_opt_common;
-
-    $project{"MAKEFILE"}  = $project{"PROJECT"} . ".mak";
-    $project{"TARGETAPP"} = $project{"TARGET"}  . ".exe";
-    Project('TMAKE_FILETAGS = HEADERS SOURCES TARGET DESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project('TMAKE_FILETAGS')) ) {
-	$project{$_} =~ s-/-\\-g;
-    }
-    StdInit();
-    if ( defined($project{"DESTDIR"}) ) {
-	$project{"TARGETAPP"} = $project{"DESTDIR"} . "\\" . $project{"TARGETAPP"};
-	$project{"TARGETAPP"} =~ s/\\+/\\/g;
-    }
-    %all_files = ();
-    @files = split(/\s+/,$project{"HEADERS"});
-    foreach ( @files ) { $all_files{$_} = "h" };
-    @files = split(/\s+/,$project{"SOURCES"});
-    foreach ( @files ) { $all_files{$_} = "s" };
-    if ( $moc_aware ) {
-        @files = split(/\s+/,$project{"_HDRMOC"});
-	foreach ( @files ) { $all_files{$_} = "m"; }
-	@files = split(/\s+/,$project{"_SRCMOC"});
-	foreach ( @files ) { $all_files{$_} = "i"; }
-    }
-    %file_names = ();
-    foreach $f ( %all_files ) {
-	$n = $f;
-	$n =~ s/^.*\\//;
-	$file_names{$n} = $f;
-	$file_path{$n}  = ".\\" . $f;
-	$file_path2{$n} = (($f =~ /^\./) ? "" : ".\\") . $f;
-    }
-#$}
-# Microsoft Developer Studio Project File - #$ Substitute('Name="$$TARGET" - Package Owner=<4>');
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
-# ** DO NOT EDIT **
-
-# TARGTYPE #$ Substitute('"$$VC_PROJ_TYPE" $$VC_PROJ_CODE');
-
-CFG=#$ Substitute('$$TARGET - Win32 Debug');
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "#$ ExpandGlue('MAKEFILE','','','".');
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f #$ Substitute('"$$MAKEFILE" CFG="$$TARGET - Win32 Debug"');
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE #$ Substitute('"$$TARGET - Win32 Release" (based on "$$VC_PROJ_TYPE")');
-!MESSAGE #$ Substitute('"$$TARGET - Win32 Debug" (based on "$$VC_PROJ_TYPE")');
-!MESSAGE 
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-#$ Config("windows") && ($text='MTL=midl.exe');
-RSC=rc.exe
-
-!IF  "$(CFG)" == #$ Substitute('"$$TARGET - Win32 Release"');
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-#$ Config("windows") && ($text='# PROP Ignore_Export_Lib 0');
-# PROP Target_Dir ""
-# ADD BASE CPP #$ Expand("VC_BASE_CPP_RELEASE");
-# ADD CPP #$ Expand("VC_CPP_RELEASE");
-#$ Config("windows") || DisableOutput();
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
-#$ Config("windows") || EnableOutput();
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 #$ Expand("VC_BASE_LINK_RELEASE");
-# ADD LINK32 #$ Expand("VC_LINK_RELEASE");
-
-!ELSEIF  "$(CFG)" == #$ Substitute('"$$TARGET - Win32 Debug"');
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-#$ Config("windows") && ($text='# PROP Ignore_Export_Lib 0');
-# PROP Target_Dir ""
-# ADD BASE CPP #$ Expand("VC_BASE_CPP_DEBUG");
-# ADD CPP #$ Expand("VC_CPP_DEBUG");
-#$ Config("windows") || DisableOutput();
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
-#$ Config("windows") || EnableOutput();
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 #$ Expand("VC_BASE_LINK_DEBUG");
-# ADD LINK32 #$ Expand("VC_LINK_DEBUG");
-
-!ENDIF 
-
-# Begin Target
-
-# Name #$Substitute('"$$TARGET - Win32 Release"');
-# Name #$Substitute('"$$TARGET - Win32 Debug"');
-#${
-    foreach $n ( sort keys %file_names ) {
-	$f  = $file_names{$n};
-	$p  = $file_path{$n};
-	$p2 = $file_path2{$n};
-	$t  = $all_files{$f};
-	if ( ($t eq "h") && $moc_output{$f} ) {
-	    my($build);
-	    $build = "\n\n# Begin Custom Build - Running moc...\nInputPath=" . $p2 . "\n\n"
-		   . '"' . $moc_output{$f} . '" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"'
-		   . "\n\tmoc $p2 -o " . $moc_output{$f} . "\n\n"
-		   . "# End Custom Build\n\n";
-	    $text .= ("# Begin Source File\n\nSOURCE=$p\n\n"
-		   . '!IF  "$(CFG)" == "' . $project{"TARGET"} . ' - Win32 Release"'
-		   . $build);
-	    $text .= ('!ELSEIF  "$(CFG)" == "' . $project{"TARGET"} . ' - Win32 Debug"'
-		   . $build
-		   . "!ENDIF \n\n# End Source File\n");
-	} elsif ( $t eq "i" ) {
-	    my($build,$dn);
-	    $build = "\n\n# Begin Custom Build - Running moc...\nInputPath=" . $p2 . "\n\n"
-		   . '"' . $f . '" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"'
-		   . "\n\tmoc ". $moc_input{$f} . " -o $f\n\n"
-		   . "# End Custom Build\n\n";
-	    $dn = $n;
-	    $dn =~ s/\..*//;
-	    $dn =~ tr/a-z/A-Z/;
-	    $text .= ("# Begin Source File\n\nSOURCE=$p\n"
-		   . "USERDEP__$dn=" . '"' . $moc_input{$f} . '"' . "\n\n"
-		   . '!IF  "$(CFG)" == "' . $project{"TARGET"} . ' - Win32 Release"'
-		   . $build);
-	    $text .= ('!ELSEIF  "$(CFG)" == "' . $project{"TARGET"} . ' - Win32 Debug"'
-		   . $build
-		   . "!ENDIF \n\n# End Source File\n");
-	} elsif ( $t eq "s" || $t eq "m" || $t eq "h" ) {
-	    $text .= "# Begin Source File\n\nSOURCE=$p\n# End Source File\n";
-	}
-    }
-    chop $text;
-#$}
-# End Target
-# End Project
diff --git a/tmake/lib/win32-msvc/vclib.t b/tmake/lib/win32-msvc/vclib.t
deleted file mode 100644
index 11cd1d7..0000000
--- a/tmake/lib/win32-msvc/vclib.t
+++ /dev/null
@@ -1,178 +0,0 @@
-#!
-#! This TMAKE template - Microsoft Visual C++ 5.0 libraries
-#!
-#${
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows');
-    }
-    if ( Config("qt") ) {
-	$moc_aware = 1;
-	AddIncludePath(Project('TMAKE_INCDIR_QT'));
-    }
-
-    $project{"VC_PROJ_TYPE"} = 'Win32 (x86) Static Library';
-    $project{"VC_PROJ_CODE"} = '0x0104';
-
-    $vc_cpp_def_release = '/D "NDEBUG" /D "WIN32" /D "_WINDOWS" ';
-    $vc_cpp_def_debug   = '/D "_DEBUG" /D "WIN32" /D "_WINDOWS" ';
-    $vc_cpp_opt_release = '/nologo /W3 /GX /O2 ';
-    $vc_cpp_opt_debug   = '/nologo /W3 /Gm /GX /Zi /Od ';
-    $vc_cpp_opt_common  = '/YX /FD /c';
-    $project{"VC_BASE_CPP_RELEASE"} = $vc_cpp_opt_release . $vc_cpp_def_release . $vc_cpp_opt_common;
-    $project{"VC_BASE_CPP_DEBUG"}   = $vc_cpp_opt_debug   . $vc_cpp_def_debug   . $vc_cpp_opt_common;
-    ExpandPath("INCPATH",'/I ',' /I ','');
-    if ( $text ne "" ) { $vc_inc = $text . " ";  $text = ""; } else { $vc_inc = ""; }
-    ExpandGlue("DEFINES",'/D "','" /D "','"');
-    if ( $text ne "" ) { $vc_def = $text . " ";  $text = ""; } else { $vc_def = ""; }
-    $project{"VC_CPP_RELEASE"} = $vc_cpp_opt_release . $vc_inc . $vc_cpp_def_release . $vc_def . $vc_cpp_opt_common;
-    $project{"VC_CPP_DEBUG"}   = $vc_cpp_opt_debug   . $vc_inc . $vc_cpp_def_debug   . $vc_def . $vc_cpp_opt_common;
-
-    $project{"MAKEFILE"}  = $project{"PROJECT"} . ".mak";
-    $project{"TARGETLIB"} = $project{"TARGET"}  . ".lib";
-    Project('TMAKE_FILETAGS = HEADERS SOURCES TARGET DESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project('TMAKE_FILETAGS')) ) {
-	$project{$_} =~ s-/-\\-g;
-    }
-    StdInit();
-    if ( defined($project{"DESTDIR"}) ) {
-	$project{"TARGETLIB"} = $project{"DESTDIR"} . "\\" . $project{"TARGETLIB"};
-	$project{"TARGETLIB"} =~ s/\\+/\\/g;
-    }
-    %all_files = ();
-    @files = split(/\s+/,$project{"HEADERS"});
-    foreach ( @files ) { $all_files{$_} = "h" };
-    @files = split(/\s+/,$project{"SOURCES"});
-    foreach ( @files ) { $all_files{$_} = "s" };
-    if ( $moc_aware ) {
-        @files = split(/\s+/,$project{"_HDRMOC"});
-	foreach ( @files ) { $all_files{$_} = "m"; }
-	@files = split(/\s+/,$project{"_SRCMOC"});
-	foreach ( @files ) { $all_files{$_} = "i"; }
-    }
-    %file_names = ();
-    foreach $f ( %all_files ) {
-	$n = $f;
-	$n =~ s/^.*\\//;
-	$file_names{$n} = $f;
-	$file_path{$n}  = ".\\" . $f;
-	$file_path2{$n} = (($f =~ /^\./) ? "" : ".\\") . $f;
-    }
-#$}
-# Microsoft Developer Studio Project File - #$ Substitute('Name="$$TARGET" - Package Owner=<4>');
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
-# ** DO NOT EDIT **
-
-# TARGTYPE #$ Substitute('"$$VC_PROJ_TYPE" $$VC_PROJ_CODE');
-
-CFG=#$ Substitute('$$TARGET - Win32 Debug');
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "#$ ExpandGlue('MAKEFILE','','','".');
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f #$ Substitute('"$$MAKEFILE" CFG="$$TARGET - Win32 Debug"');
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE #$ Substitute('"$$TARGET - Win32 Release" (based on "$$VC_PROJ_TYPE")');
-!MESSAGE #$ Substitute('"$$TARGET - Win32 Debug" (based on "$$VC_PROJ_TYPE")');
-!MESSAGE 
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-
-!IF  "$(CFG)" == #$ Substitute('"$$TARGET - Win32 Release"');
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-# ADD BASE CPP #$ Expand("VC_BASE_CPP_RELEASE");
-# ADD CPP #$ Expand("VC_CPP_RELEASE");
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo #$ Project("TARGETLIB") && Substitute('/out:"$$TARGETLIB"');
-
-!ELSEIF  "$(CFG)" == #$ Substitute('"$$TARGET - Win32 Debug"');
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP #$ Expand("VC_BASE_CPP_DEBUG");
-# ADD CPP #$ Expand("VC_CPP_DEBUG");
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo #$ Project("TARGETLIB") && Substitute('/out:"$$TARGETLIB"');
-
-!ENDIF 
-
-# Begin Target
-
-# Name #$Substitute('"$$TARGET - Win32 Release"');
-# Name #$Substitute('"$$TARGET - Win32 Debug"');
-#${
-    foreach $n ( sort keys %file_names ) {
-	$f  = $file_names{$n};
-	$p  = $file_path{$n};
-	$p2 = $file_path2{$n};
-	$t  = $all_files{$f};
-	if ( ($t eq "h") && $moc_output{$f} ) {
-	    my($build);
-	    $build = "\n\n# Begin Custom Build - Running moc...\nInputPath=" . $p2 . "\n\n"
-		   . '"' . $moc_output{$f} . '" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"'
-		   . "\n\tmoc $p2 -o " . $moc_output{$f} . "\n\n"
-		   . "# End Custom Build\n\n";
-	    $text .= ("# Begin Source File\n\nSOURCE=$p\n\n"
-		   . '!IF  "$(CFG)" == "' . $project{"TARGET"} . ' - Win32 Release"'
-		   . $build);
-	    $text .= ('!ELSEIF  "$(CFG)" == "' . $project{"TARGET"} . ' - Win32 Debug"'
-		   . $build
-		   . "!ENDIF \n\n# End Source File\n");
-	} elsif ( $t eq "i" ) {
-	    my($build,$dn);
-	    $build = "\n\n# Begin Custom Build - Running moc...\nInputPath=" . $p2 . "\n\n"
-		   . '"' . $f . '" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"'
-		   . "\n\tmoc ". $moc_input{$f} . " -o $f\n\n"
-		   . "# End Custom Build\n\n";
-	    $dn = $n;
-	    $dn =~ s/\..*//;
-	    $dn =~ tr/a-z/A-Z/;
-	    $text .= ("# Begin Source File\n\nSOURCE=$p\n"
-		   . "USERDEP__$dn=" . '"' . $moc_input{$f} . '"' . "\n\n"
-		   . '!IF  "$(CFG)" == "' . $project{"TARGET"} . ' - Win32 Release"'
-		   . $build);
-	    $text .= ('!ELSEIF  "$(CFG)" == "' . $project{"TARGET"} . ' - Win32 Debug"'
-		   . $build
-		   . "!ENDIF \n\n# End Source File\n");
-	} elsif ( $t eq "s" || $t eq "m" || $t eq "h" ) {
-	    $text .= "# Begin Source File\n\nSOURCE=$p\n# End Source File\n";
-	}
-    }
-    chop $text;
-#$}
-# End Target
-# End Project
diff --git a/tmake/lib/win32-symantec/app.t b/tmake/lib/win32-symantec/app.t
deleted file mode 100644
index fc4dc2c..0000000
--- a/tmake/lib/win32-symantec/app.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 applications.
-#!
-#$ Project('TMAKE_APP_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-symantec/generic.t b/tmake/lib/win32-symantec/generic.t
deleted file mode 100644
index ab39654..0000000
--- a/tmake/lib/win32-symantec/generic.t
+++ /dev/null
@@ -1,211 +0,0 @@
-#!
-#! This is a tmake template for building Win32 applications or libraries.
-#!
-#${
-    if ( Config("qt") ) {
-	if ( $ENV{"QT_DLL"} && !$ENV{"QT_NODLL"} ) {
-	    Project('TMAKE_QT_DLL = 1');
-	    if ( Project("TARGET") eq "qt" ) {
-		Project('CONFIG += dll');
-	    }
-	}
-    }
-    if ( Config("dll") || Project("TMAKE_APP_FLAG") ) {
-	Project('CONFIG -= staticlib');
-	Project('TMAKE_APP_OR_DLL = 1');
-    } else {
-	Project('CONFIG += staticlib');
-    }
-    if ( Config("warn_off") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF');
-    } elsif ( Config("warn_on") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON');
-    }
-    if ( Config("debug") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG');
-    } elsif ( Config("release") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE');
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows' );
-    }
-    if ( Config("qt") ) {
-	$moc_aware = 1;
-	AddIncludePath(Project('TMAKE_INCDIR_QT'));
-	if ( Config("opengl") ) {
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( Project("TARGET") eq "qt" ) {
-	    if ( Project("TMAKE_QT_DLL") && !(Project("DEFINES") =~ /QT_NODLL/) ) {
-		Project('DEFINES *= QT_MAKEDLL');
-	    }
-	} else {
-	    if ( Project("TMAKE_QT_DLL") && !(Project("DEFINES") =~ /QT_NODLL/) ) {
-		Project('DEFINES *= QT_DLL');
-	    }
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-	    if ( (Project("DEFINES") =~ /QT_DLL/) ) {
-		my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt");
-		Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/");
-		Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL');
-	    }
-	}
-    }
-    if ( Config("opengl") ) {
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    if ( Config("dll") ) {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE_DLL');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS_DLL');
-	if ( Project("TMAKE_LIB_FLAG") ) {
-	    my $ver = Project("VERSION");
-	    $ver =~ s/\.//g;
-	    $project{"TARGET_EXT"} = "${ver}.dll";
-	} else {
-	    $project{"TARGET_EXT"} = ".dll";
-	}
-    } else {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS');
-	if ( Project('TMAKE_APP_FLAG') ) {
-	    $project{"TARGET_EXT"} = ".exe";
-	} else {
-	    $project{"TARGET_EXT"} = ".lib";
-	}
-    }
-    if ( Config("windows") ) {
-	if ( Config("console") ) {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	    Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-	} else {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_WINDOWS_ANY');
-	}
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_WINDOWS');
-    } else {
-	Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-    }
-    Project('TMAKE_LIBS += $$LIBS');
-    Project('TMAKE_FILETAGS = HEADERS SOURCES DEF_FILE RC_FILE TARGET TMAKE_LIBS DESTDIR DLLDESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project('TMAKE_FILETAGS')) ) {
-	$project{$_} =~ s-[/\\]+-\\-g;
-    }
-    if ( Project('DEF_FILE') ) {
-	Project('TMAKE_LFLAGS *= /DEF:$$DEF_FILE');
-    }
-    if ( Project('RC_FILE') ) {
-	if ( Project('RES_FILE') ) {
-	    tmake_error("Both .rc and .res file specified.\n" .
-			"Please specify one of them, not both.");
-	}
-	$project{"RES_FILE"} = $project{"RC_FILE"};
-	$project{"RES_FILE"} =~ s/\.rc$/.res/i;
-	Project('TARGETDEPS += $$RES_FILE');
-    }
-    if ( Project('RES_FILE') ) {
-	Project('TMAKE_LIBS *= $$RES_FILE');
-    }
-    StdInit();
-    if ( Project("VERSION") ) {
-	$project{"VER_MAJ"} = $project{"VERSION"};
-	$project{"VER_MAJ"} =~ s/\.\d+$//;
-	$project{"VER_MIN"} = $project{"VERSION"};
-	$project{"VER_MIN"} =~ s/^\d+\.//;
-    }    
-#$}
-#!
-# Makefile for building #$ Expand("TARGET")
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-####### Compiler, tools and options
-
-CC	=	#$ Expand("TMAKE_CC");
-CFLAGS	=	#$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-INCPATH	=	#$ ExpandPath("INCPATH",'-I',' -I','');
-#$ !Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LINK	=	#$ Expand("TMAKE_LINK");
-LFLAGS	=	#$ Expand("TMAKE_LFLAGS");
-LIBS	=	#$ Expand("TMAKE_LIBS");
-#$ !Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LIB	=	#$ Expand("TMAKE_LIB");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-MOC	=	#$ Expand("TMAKE_MOC");
-
-ZIP	=	#$ Expand("TMAKE_ZIP");
-
-####### Files
-
-HEADERS =	#$ ExpandList("HEADERS");
-SOURCES =	#$ ExpandList("SOURCES");
-OBJECTS =	#$ ExpandList("OBJECTS");
-SRCMOC	=	#$ ExpandList("SRCMOC");
-OBJMOC	=	#$ ExpandList("OBJMOC");
-DIST	=	#$ ExpandList("DISTFILES");
-TARGET	=	#$ ExpandGlue("TARGET",$project{"DESTDIR"},"",$project{"TARGET_EXT"});
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .c
-
-.cpp.obj:
-	#$ Expand("TMAKE_COMPILE_IMP");
-
-.cxx.obj:
-	#$ Expand("TMAKE_COMPILE_IMP");
-
-.cc.obj:
-	#$ Expand("TMAKE_COMPILE_IMP");
-
-.c.obj:
-	#$ Expand("TMAKE_COMPILE_IMP");
-
-####### Build rules
-
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-$(TARGET): $(HEADERS) $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-#$ Project("TMAKE_APP_OR_DLL") || DisableOutput();
-	$(LINK) $(LFLAGS) $(OBJECTS) $(OBJMOC), $(TARGET),, $(LIBS)
-#$ Project("TMAKE_APP_OR_DLL") || EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-	-del $(TARGET)
-#${
-# $text = "\t\$(LIB) \$(TARGET) "
-#   . join(" \\\n+",split(/\s+/,$project{"OBJECTS"})) . " \\\n+"
-#   . join(" \\\n+",split(/\s+/,$project{"OBJMOC"})) . ",;";
-#$}
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ (Config("dll") && Project("DLLDESTDIR")) || DisableOutput();
-	-copy $(TARGET) #$ Expand("DLLDESTDIR");
-#$ (Config("dll") && Project("DLLDESTDIR")) || EnableOutput();
-#$ Project('RC_FILE') || DisableOutput();
-
-#$ Substitute("\$\$RES_FILE: \$\$RC_FILE\n\t\$\$TMAKE_RC \$\$RC_FILE");
-#$ Project('RC_FILE') || EnableOutput();
-
-moc: $(SRCMOC)
-
-#$ TmakeSelf();
-
-dist:
-	#$ Substitute('$(ZIP) $$PROJECT.zip $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)');
-
-clean:
-	#$ ExpandGlue("OBJECTS","-del ","\n\t-del ","");
-	#$ ExpandGlue("SRCMOC" ,"-del ","\n\t-del ","");
-	#$ ExpandGlue("OBJMOC" ,"-del ","\n\t-del ","");
-	-del $(TARGET)
-	#$ ExpandGlue("CLEAN_FILES","-del ","\n\t-del ","");
-
-####### Compile
-
-#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
-#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
-#$ BuildMocSrc(Project("HEADERS"));
-#$ BuildMocSrc(Project("SOURCES"));
diff --git a/tmake/lib/win32-symantec/lib.t b/tmake/lib/win32-symantec/lib.t
deleted file mode 100644
index d8ac6c7..0000000
--- a/tmake/lib/win32-symantec/lib.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 libraries.
-#!
-#$ Project('TMAKE_LIB_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-symantec/subdirs.t b/tmake/lib/win32-symantec/subdirs.t
deleted file mode 100644
index 8b881ab..0000000
--- a/tmake/lib/win32-symantec/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Win32 template
-#$ IncludeTemplate("../win32/subdirs.t");
diff --git a/tmake/lib/win32-symantec/tmake.conf b/tmake/lib/win32-symantec/tmake.conf
deleted file mode 100644
index 81f88c2..0000000
--- a/tmake/lib/win32-symantec/tmake.conf
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# 
-#
-# tmake configuration for Win32/Symantec C++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= sc
-TMAKE_CFLAGS		= -mn -w2
-TMAKE_CFLAGS_WARN_ON	=
-TMAKE_CFLAGS_WARN_OFF	= -w
-TMAKE_CFLAGS_RELEASE	= -o
-TMAKE_CFLAGS_DEBUG	= -g
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= $$TMAKE_CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_INCDIR_QT		= $(QTDIR)\include
-
-TMAKE_RUN_CC		= $(CC) -c $(CFLAGS) $(INCPATH) -o$obj $src
-TMAKE_RUN_CC_IMP	= $(CC) -c $(CFLAGS) $(INCPATH) -o$@ $<
-TMAKE_RUN_CXX		= $(CXX) -c $(CXXFLAGS) $(INCPATH) -o$obj $src
-TMAKE_RUN_CXX_IMP	= $(CXX) -c $(CXXFLAGS) $(INCPATH) -o$@ $<
-
-TMAKE_LINK		= link
-TMAKE_LFLAGS		= /NOLOGO /NOI
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	= /DEBUG
-TMAKE_LFLAGS_CONSOLE	= /SUBSYSTEM:console
-TMAKE_LFLAGS_WINDOWS	= /SUBSYSTEM:windows
-TMAKE_LFLAGS_CONSOLE_DLL= /SUBSYSTEM:console /DLL
-TMAKE_LFLAGS_WINDOWS_DLL= /SUBSYSTEM:windows /DLL
-
-TMAKE_LIBS		=
-TMAKE_LIBS_CONSOLE	=
-TMAKE_LIBS_WINDOWS	= user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib
-TMAKE_LIBS_QT		= $(QTDIR)\lib\qt.lib
-TMAKE_LIBS_QT_DLL	= $(QTDIR)\lib\qtmain.lib
-TMAKE_LIBS_QT_OPENGL	= $(QTDIR)\lib\qgl.lib
-TMAKE_LIBS_OPENGL	= opengl32.lib
-
-TMAKE_MOC		= moc
-
-TMAKE_LIB		= lib /C /N /NOI /P:32
-TMAKE_RC		= rc
-
-TMAKE_ZIP		= zip -r -9
diff --git a/tmake/lib/win32-visage/app.t b/tmake/lib/win32-visage/app.t
deleted file mode 100644
index fc4dc2c..0000000
--- a/tmake/lib/win32-visage/app.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 applications.
-#!
-#$ Project('TMAKE_APP_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-visage/generic.t b/tmake/lib/win32-visage/generic.t
deleted file mode 100644
index b5b1fb6..0000000
--- a/tmake/lib/win32-visage/generic.t
+++ /dev/null
@@ -1,207 +0,0 @@
-#!
-#! This is a tmake template for building Win32 applications or libraries.
-#!
-#${
-    if ( Config("qt") ) {
-	if ( $ENV{"QT_DLL"} && !$ENV{"QT_NODLL"} ) {
-	    Project('TMAKE_QT_DLL = 1');
-	    if ( Project("TARGET") eq "qt" ) {
-		Project('CONFIG += dll');
-	    }
-	}
-    }
-    if ( Config("dll") || Project("TMAKE_APP_FLAG") ) {
-	Project('CONFIG -= staticlib');
-	Project('TMAKE_APP_OR_DLL = 1');
-    } else {
-	Project('CONFIG += staticlib');
-    }
-    if ( Config("warn_off") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF');
-    } elsif ( Config("warn_on") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON');
-    }
-    if ( Config("debug") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG');
-    } elsif ( Config("release") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE');
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows' );
-    }
-    if ( Config("qt") ) {
-	$moc_aware = 1;
-	AddIncludePath(Project('TMAKE_INCDIR_QT'));
-	if ( Config("opengl") ) {
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( Project("TARGET") eq "qt" ) {
-	    if ( Project("TMAKE_QT_DLL") && !(Project("DEFINES") =~ /QT_NODLL/) ) {
-		Project('DEFINES *= QT_MAKEDLL');
-	    }
-	} else {
-	    if ( Project("TMAKE_QT_DLL") && !(Project("DEFINES") =~ /QT_NODLL/) ) {
-		Project('DEFINES *= QT_DLL');
-	    }
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-	    if ( (Project("DEFINES") =~ /QT_DLL/) ) {
-		my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt");
-		Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/");
-		Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL');
-	    }
-	}
-    }
-    if ( Config("opengl") ) {
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    if ( Config("dll") ) {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE_DLL');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS_DLL');
-	if ( Project("TMAKE_LIB_FLAG") ) {
-	    my $ver = Project("VERSION");
-	    $ver =~ s/\.//g;
-	    $project{"TARGET_EXT"} = "${ver}.dll";
-	} else {
-	    $project{"TARGET_EXT"} = ".dll";
-	}
-    } else {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS');
-	if ( Project('TMAKE_APP_FLAG') ) {
-	    $project{"TARGET_EXT"} = ".exe";
-	} else {
-	    $project{"TARGET_EXT"} = ".lib";
-	}
-    }
-    if ( Config("windows") ) {
-	if ( Config("console") ) {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	    Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-	} else {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_WINDOWS_ANY');
-	}
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_WINDOWS');
-    } else {
-	Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-    }
-    Project('TMAKE_LIBS += $$LIBS');
-    Project('TMAKE_FILETAGS = HEADERS SOURCES DEF_FILE RC_FILE TARGET TMAKE_LIBS DESTDIR DLLDESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project('TMAKE_FILETAGS')) ) {
-	$project{$_} =~ s-[/\\]+-\\-g;
-    }
-    if ( Project('DEF_FILE') ) {
-	Project('TMAKE_LFLAGS *= /DEF:$$DEF_FILE');
-    }
-    if ( Project('RC_FILE') ) {
-	if ( Project('RES_FILE') ) {
-	    tmake_error("Both .rc and .res file specified.\n" .
-			"Please specify one of them, not both.");
-	}
-	$project{"RES_FILE"} = $project{"RC_FILE"};
-	$project{"RES_FILE"} =~ s/\.rc$/.res/i;
-	Project('TARGETDEPS += $$RES_FILE');
-    }
-    if ( Project('RES_FILE') ) {
-	Project('TMAKE_LIBS *= $$RES_FILE');
-    }
-    StdInit();
-    if ( Project("VERSION") ) {
-	$project{"VER_MAJ"} = $project{"VERSION"};
-	$project{"VER_MAJ"} =~ s/\.\d+$//;
-	$project{"VER_MIN"} = $project{"VERSION"};
-	$project{"VER_MIN"} =~ s/^\d+\.//;
-    }    
-#$}
-#!
-# Makefile for building #$ Expand("TARGET")
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-####### Compiler, tools and options
-
-CC	=	#$ Expand("TMAKE_CC");
-CFLAGS	=	#$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D","");
-INCPATH	=	#$ ExpandGlue("INCPATH",'-I',' -I','');
-#$ !Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LINK	=	#$ Expand("TMAKE_LINK");
-LFLAGS	=	#$ Expand("TMAKE_LFLAGS");
-LIBS	=	#$ Expand("TMAKE_LIBS");
-#$ !Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LIB	=	#$ Expand("TMAKE_LIB");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-MOC	=	#$ Expand("TMAKE_MOC");
-
-ZIP	=	#$ Expand("TMAKE_ZIP");
-
-####### Files
-
-HEADERS =	#$ ExpandList("HEADERS");
-SOURCES =	#$ ExpandList("SOURCES");
-OBJECTS =	#$ ExpandList("OBJECTS");
-SRCMOC	=	#$ ExpandList("SRCMOC");
-OBJMOC	=	#$ ExpandList("OBJMOC");
-DIST	=	#$ ExpandList("DISTFILES");
-TARGET	=	#$ ExpandGlue("TARGET",$project{"DESTDIR"},"",$project{"TARGET_EXT"});
-
-####### Implicit rules
-
-.SUFFIXES: .cpp .cxx .cc .c
-
-.cpp.obj:
-	#$ Expand("TMAKE_COMPILE_IMP");
-
-.cxx.obj:
-	#$ Expand("TMAKE_COMPILE_IMP");
-
-.cc.obj:
-	#$ Expand("TMAKE_COMPILE_IMP");
-
-.c.obj:
-	#$ Expand("TMAKE_COMPILE_IMP");
-
-####### Build rules
-
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-$(TARGET): $(HEADERS) $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-#$ Project("TMAKE_APP_OR_DLL") || DisableOutput();
-$(TARGET): $(OBJECTS) $(LIBS) #$ Expand("TARGETDEPS");
-	$(LINK) -B"$(LFLAGS)" $(OBJECTS) $(LIBS) -Fe$(TARGET)
-#$ Project("TMAKE_APP_OR_DLL") || EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-	$(LIB) /OUT:$(TARGET) $(OBJECTS) $(OBJMOC)
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ (Config("dll") && Project("DLLDESTDIR")) || DisableOutput();
-	-copy $(TARGET) #$ Expand("DLLDESTDIR");
-#$ (Config("dll") && Project("DLLDESTDIR")) || EnableOutput();
-#$ Project('RC_FILE') || DisableOutput();
-
-#$ Substitute("\$\$RES_FILE: \$\$RC_FILE\n\t\$\$TMAKE_RC \$\$RC_FILE");
-#$ Project('RC_FILE') || EnableOutput();
-
-moc: $(SRCMOC)
-
-#$ TmakeSelf();
-
-dist:
-	#$ Substitute('$(ZIP) $$PROJECT.zip $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)');
-
-clean:
-	#$ ExpandGlue("OBJECTS","-del ","\n\t-del ","");
-	#$ ExpandGlue("SRCMOC" ,"-del ","\n\t-del ","");
-	#$ ExpandGlue("OBJMOC" ,"-del ","\n\t-del ","");
-	-del $(TARGET)
-	#$ ExpandGlue("CLEAN_FILES","-del ","\n\t-del ","");
-
-####### Compile
-
-#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
-#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
-#$ BuildMocSrc(Project("HEADERS"));
-#$ BuildMocSrc(Project("SOURCES"));
diff --git a/tmake/lib/win32-visage/lib.t b/tmake/lib/win32-visage/lib.t
deleted file mode 100644
index d8ac6c7..0000000
--- a/tmake/lib/win32-visage/lib.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 libraries.
-#!
-#$ Project('TMAKE_LIB_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-visage/subdirs.t b/tmake/lib/win32-visage/subdirs.t
deleted file mode 100644
index 8b881ab..0000000
--- a/tmake/lib/win32-visage/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Win32 template
-#$ IncludeTemplate("../win32/subdirs.t");
diff --git a/tmake/lib/win32-visage/tmake.conf b/tmake/lib/win32-visage/tmake.conf
deleted file mode 100644
index 69d3a82..0000000
--- a/tmake/lib/win32-visage/tmake.conf
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# 
-#
-# tmake configuration for Win32/IBM Visual Age
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= icc -C
-TMAKE_CFLAGS		= -Q -Ft -Gd -Gm+ -qrtti=all
-TMAKE_CFLAGS_WARN_ON	= -W3
-TMAKE_CFLAGS_WARN_OFF	= -W0
-TMAKE_CFLAGS_RELEASE	= -Gl+ -O -Oc+
-TMAKE_CFLAGS_DEBUG	= -Fb* -Ti -Tm
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= $$TMAKE_CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_INCDIR_QT		= $(QTDIR)\include
-
-TMAKE_RUN_CC		= $(CC) -c $(CFLAGS) $(INCPATH) -Fo"$obj" $src
-TMAKE_RUN_CC_IMP	= $(CC) -c $(CFLAGS) $(INCPATH) -Fo"$@" $<
-TMAKE_RUN_CXX		= $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo"$obj" $src
-TMAKE_RUN_CXX_IMP	= $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo"$@" $<
-
-TMAKE_LINK		= icc -Tdp $(CFLAGS)
-TMAKE_LFLAGS		= -nologo -code:RX -data:RW -def -noe
-TMAKE_LFLAGS_RELEASE	= -OPTF
-TMAKE_LFLAGS_DEBUG	= -de -br
-TMAKE_LFLAGS_CONSOLE	= -pmtype:vio
-TMAKE_LFLAGS_WINDOWS	= -pmtype:pm
-TMAKE_LFLAGS_CONSOLE_DLL= -DLL
-TMAKE_LFLAGS_WINDOWS_DLL= -DLL
-
-TMAKE_LIBS		=
-TMAKE_LIBS_CONSOLE	=
-TMAKE_LIBS_WINDOWS	= user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib
-TMAKE_LIBS_QT		= $(QTDIR)\lib\qt.lib
-TMAKE_LIBS_QT_DLL	= $(QTDIR)\lib\qtmain.lib
-TMAKE_LIBS_QT_OPENGL	= $(QTDIR)\lib\qgl.lib
-TMAKE_LIBS_OPENGL	= opengl32.lib glu32.lib
-
-TMAKE_MOC		= moc
-
-TMAKE_LIB		= ilib
-TMAKE_RC		= rc
-
-TMAKE_ZIP		= zip -r -9
diff --git a/tmake/lib/win32-watcom/app.t b/tmake/lib/win32-watcom/app.t
deleted file mode 100644
index fc4dc2c..0000000
--- a/tmake/lib/win32-watcom/app.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 applications.
-#!
-#$ Project('TMAKE_APP_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-watcom/generic.t b/tmake/lib/win32-watcom/generic.t
deleted file mode 100644
index 883c794..0000000
--- a/tmake/lib/win32-watcom/generic.t
+++ /dev/null
@@ -1,201 +0,0 @@
-#!
-#! This is a tmake template for building Win32 applications or libraries.
-#!
-#${
-    if ( Config("qt") ) {
-	if ( $ENV{"QT_DLL"} && !$ENV{"QT_NODLL"} ) {
-	    Project('TMAKE_QT_DLL = 1');
-	    if ( Project("TARGET") eq "qt" ) {
-		Project('CONFIG += dll');
-	    }
-	}
-    }
-    if ( Config("dll") || Project("TMAKE_APP_FLAG") ) {
-	Project('CONFIG -= staticlib');
-	Project('TMAKE_APP_OR_DLL = 1');
-    } else {
-	Project('CONFIG += staticlib');
-    }
-    if ( Config("warn_off") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF');
-    } elsif ( Config("warn_on") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON');
-    }
-    if ( Config("debug") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG');
-    } elsif ( Config("release") ) {
-	Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE');
-	Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE');
-    }
-    if ( Config("qt") || Config("opengl") ) {
-	Project('CONFIG += windows' );
-    }
-    if ( Config("qt") ) {
-	$moc_aware = 1;
-	AddIncludePath(Project('TMAKE_INCDIR_QT'));
-	if ( Config("opengl") ) {
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL');
-	}
-	if ( Project("TARGET") eq "qt" ) {
-	    if ( Project("TMAKE_QT_DLL") && !(Project("DEFINES") =~ /QT_NODLL/) ) {
-		Project('DEFINES *= QT_MAKEDLL');
-	    }
-	} else {
-	    if ( Project("TMAKE_QT_DLL") && !(Project("DEFINES") =~ /QT_NODLL/) ) {
-		Project('DEFINES *= QT_DLL');
-	    }
-	    Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT');
-	    if ( (Project("DEFINES") =~ /QT_DLL/) ) {
-		my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt");
-		Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/");
-		Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL');
-	    }
-	}
-    }
-    if ( Config("opengl") ) {
-	Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL');
-    }
-    if ( Config("dll") ) {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE_DLL');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS_DLL');
-	if ( Project("TMAKE_LIB_FLAG") ) {
-	    my $ver = Project("VERSION");
-	    $ver =~ s/\.//g;
-	    $project{"TARGET_EXT"} = "${ver}.dll";
-	} else {
-	    $project{"TARGET_EXT"} = ".dll";
-	}
-    } else {
-	Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE');
-	Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS');
-	if ( Project('TMAKE_APP_FLAG') ) {
-	    $project{"TARGET_EXT"} = ".exe";
-	} else {
-	    $project{"TARGET_EXT"} = ".lib";
-	}
-    }
-    if ( Config("windows") ) {
-	if ( Config("console") ) {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	    Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-	} else {
-	    Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_WINDOWS_ANY');
-	}
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_WINDOWS');
-    } else {
-	Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY');
-	Project('TMAKE_LIBS   *= $$TMAKE_LIBS_CONSOLE');
-    }
-    Project('TMAKE_LIBS += $$LIBS');
-    Project('TMAKE_FILETAGS = HEADERS SOURCES DEF_FILE RC_FILE TARGET TMAKE_LIBS DESTDIR DLLDESTDIR $$FILETAGS');
-    foreach ( split(/\s/,Project('TMAKE_FILETAGS')) ) {
-	$project{$_} =~ s-[/\\]+-\\-g;
-    }
-    if ( Project('DEF_FILE') ) {
-	Project('TMAKE_LFLAGS *= /DEF:$$DEF_FILE');
-    }
-    if ( Project('RC_FILE') ) {
-	if ( Project('RES_FILE') ) {
-	    tmake_error("Both .rc and .res file specified.\n" .
-			"Please specify one of them, not both.");
-	}
-	$project{"RES_FILE"} = $project{"RC_FILE"};
-	$project{"RES_FILE"} =~ s/\.rc$/.res/i;
-	Project('TARGETDEPS += $$RES_FILE');
-    }
-    if ( Project('RES_FILE') ) {
-	Project('TMAKE_LIBS *= $$RES_FILE');
-    }
-    $linebreak = '&';
-    StdInit();
-    if ( Project("VERSION") ) {
-	$project{"VER_MAJ"} = $project{"VERSION"};
-	$project{"VER_MAJ"} =~ s/\.\d+$//;
-	$project{"VER_MIN"} = $project{"VERSION"};
-	$project{"VER_MIN"} =~ s/^\d+\.//;
-    }    
-#$}
-#!
-# Makefile for building #$ Expand("TARGET")
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-####### Compiler, tools and options
-
-#$ Config("qt") || DisableOutput();
-QTDIR	=	#$ $text = $ENV{"QTDIR"};
-#$ Config("qt") || EnableOutput();
-CC	=	#$ Expand("TMAKE_CC");
-CFLAGS	=	#$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-d="," -d=","");
-INCPATH	=	#$ ExpandPath("INCPATH",'-i=',' -i=','');
-#$ !Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LINK	=	#$ Expand("TMAKE_LINK");
-LFLAGS	=	#$ Expand("TMAKE_LFLAGS");
-LIBS	=	#$ Expand("TMAKE_LIBS");
-#$ !Project("TMAKE_APP_OR_DLL") && EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-LIB	=	#$ Expand("TMAKE_LIB");
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-MOC	=	#$ Expand("TMAKE_MOC");
-
-ZIP	=	#$ Expand("TMAKE_ZIP");
-
-####### Files
-
-HEADERS =	#$ ExpandList("HEADERS");
-SOURCES =	#$ ExpandList("SOURCES");
-OBJECTS =	#$ ExpandList("OBJECTS");
-SRCMOC	=	#$ ExpandList("SRCMOC");
-OBJMOC	=	#$ ExpandList("OBJMOC");
-DIST	=	#$ ExpandList("DISTFILES");
-TARGET	=	#$ ExpandGlue("TARGET",$project{"DESTDIR"},"",$project{"TARGET_EXT"});
-TMPLIST =	#$ ExpandGlue("TARGET","","",".lst");
-####### Build rules
-
-all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)';
-
-$(TARGET): $(HEADERS) $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS");
-	@%create $(TMPLIST)
-#$ Project("TMAKE_APP_OR_DLL") || DisableOutput();
-	@%append $(TMPLIST) NAME #$ Expand("TARGET");
-	#$ ExpandGlue("OBJECTS",'@%append $(TMPLIST) FIL ',",","");
-	#$ ExpandGlue("OBJMOC" ,'@%append $(TMPLIST) FIL ',",","");
-	#$ ExpandGlue("TMAKE_LIBS" ,'@%append $(TMPLIST) LIBR ',",","");
-	$(LINK) $(LFLAGS) @$(TMPLIST)
-#$ Project("TMAKE_APP_OR_DLL") || EnableOutput();
-#$ Project("TMAKE_APP_OR_DLL") && DisableOutput();
-	@for %i in ( $(OBJECTS) $(OBJMOC) ) do @%append $(TMPLIST) +'%i'
-	$(LIB) $(TARGET) @$(TMPLIST)
-#$ Project("TMAKE_APP_OR_DLL") && EnableOutput();
-	del $(TMPLIST)
-#$ (Config("dll") && Project("DLLDESTDIR")) || DisableOutput();
-	-copy $(TARGET) #$ Expand("DLLDESTDIR");
-#$ (Config("dll") && Project("DLLDESTDIR")) || EnableOutput();
-#$ Project('RC_FILE') || DisableOutput();
-
-#$ Substitute("\$\$RES_FILE: \$\$RC_FILE\n\t\$\$TMAKE_RC \$\$RC_FILE");
-#$ Project('RC_FILE') || EnableOutput();
-
-moc: $(SRCMOC)
-
-#$ TmakeSelf();
-
-dist:
-	#$ Substitute('$(ZIP) $$PROJECT.zip $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)');
-
-clean:
-	#$ ExpandGlue("OBJECTS","-del ","\n\t-del ","");
-	#$ ExpandGlue("SRCMOC" ,"-del ","\n\t-del ","");
-	#$ ExpandGlue("OBJMOC" ,"-del ","\n\t-del ","");
-	-del $(TARGET)
-	#$ ExpandGlue("CLEAN_FILES","-del ","\n\t-del ","");
-
-####### Compile
-
-#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
-#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
-#$ BuildMocSrc(Project("HEADERS"));
-#$ BuildMocSrc(Project("SOURCES"));
diff --git a/tmake/lib/win32-watcom/lib.t b/tmake/lib/win32-watcom/lib.t
deleted file mode 100644
index d8ac6c7..0000000
--- a/tmake/lib/win32-watcom/lib.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for building Win32 libraries.
-#!
-#$ Project('TMAKE_LIB_FLAG = 1');
-#$ IncludeTemplate("generic.t");
diff --git a/tmake/lib/win32-watcom/subdirs.t b/tmake/lib/win32-watcom/subdirs.t
deleted file mode 100644
index 8b881ab..0000000
--- a/tmake/lib/win32-watcom/subdirs.t
+++ /dev/null
@@ -1,2 +0,0 @@
-#! Use the common Win32 template
-#$ IncludeTemplate("../win32/subdirs.t");
diff --git a/tmake/lib/win32-watcom/tmake.conf b/tmake/lib/win32-watcom/tmake.conf
deleted file mode 100644
index 862e915..0000000
--- a/tmake/lib/win32-watcom/tmake.conf
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# 
-#
-# tmake configuration for Win32/Watcom C++
-#
-
-TEMPLATE		= app
-CONFIG			= qt warn_on release
-
-TMAKE_CC		= wcl386
-TMAKE_CFLAGS		= -zq
-TMAKE_CFLAGS_WARN_ON	= -w2
-TMAKE_CFLAGS_WARN_OFF	= -w0
-TMAKE_CFLAGS_RELEASE	= -ox
-TMAKE_CFLAGS_DEBUG	= -d2
-TMAKE_CFLAGS_YACC	=
-
-TMAKE_CXX		= $$TMAKE_CC
-TMAKE_CXXFLAGS		= $$TMAKE_CFLAGS
-TMAKE_CXXFLAGS_WARN_ON	= $$TMAKE_CFLAGS_WARN_ON
-TMAKE_CXXFLAGS_WARN_OFF	= $$TMAKE_CFLAGS_WARN_OFF
-TMAKE_CXXFLAGS_RELEASE	= $$TMAKE_CFLAGS_RELEASE
-TMAKE_CXXFLAGS_DEBUG	= $$TMAKE_CFLAGS_DEBUG
-TMAKE_CXXFLAGS_YACC	= $$TMAKE_CFLAGS_YACC
-
-TMAKE_INCDIR		=
-TMAKE_INCDIR_QT		= $(QTDIR)\include
-
-TMAKE_RUN_CC		= $(CC) -c $(CFLAGS) $(INCPATH) -fo=$obj $src
-TMAKE_RUN_CXX		= $(CXX) -c $(CXXFLAGS) $(INCPATH) -fo=$obj $src
-
-TMAKE_LINK		= wlink
-TMAKE_LFLAGS		= op quiet op c
-TMAKE_LFLAGS_RELEASE	=
-TMAKE_LFLAGS_DEBUG	= d all
-TMAKE_LFLAGS_CONSOLE	= sys nt
-TMAKE_LFLAGS_WINDOWS	= sys nt_win
-TMAKE_LFLAGS_CONSOLE_DLL= sys nt
-TMAKE_LFLAGS_WINDOWS_DLL= sys nt_win
-
-TMAKE_LIBS		=
-TMAKE_LIBS_CONSOLE	=
-TMAKE_LIBS_WINDOWS	=
-TMAKE_LIBS_QT		= %QTDIR%\lib\qt.lib
-TMAKE_LIBS_QT_DLL	= %QTDIR%\lib\qtmain.lib
-TMAKE_LIBS_QT_OPENGL	= %QTDIR%\lib\qgl.lib
-TMAKE_LIBS_OPENGL	= opengl32.lib
-
-TMAKE_MOC		= moc
-
-TMAKE_LIB		= wlib -b -c -n -q -p=512
-TMAKE_RC		= rc
-
-TMAKE_ZIP		= zip -r -9
diff --git a/tmake/lib/win32/subdirs.t b/tmake/lib/win32/subdirs.t
deleted file mode 100644
index 4c857fd..0000000
--- a/tmake/lib/win32/subdirs.t
+++ /dev/null
@@ -1,54 +0,0 @@
-#############################################################################
-#!
-#! This is a tmake template for creating a makefile that invokes make in
-#! sub directories - for Win32.
-#!
-#${
-    StdInit();
-    $m = "";
-    foreach ( split(/\s+/,$project{"SUBDIRS"}) ) {
-	$m = $m . "\tcd $_\n\tDOMAKE\n\t\@cd ..\n";
-    }
-    $project{"SUBMAKE"} = $m;
-    Project('MAKEFILE') || Project('MAKEFILE = Makefile');
-    Project('TMAKE') || Project('TMAKE = tmake');
-#$}
-#!
-# Makefile for building targets in sub directories.
-# Generated by tmake at #$ Now();
-#     Project: #$ Expand("PROJECT");
-#    Template: #$ Expand("TEMPLATE");
-#############################################################################
-
-MAKEFILE=	#$ Expand("MAKEFILE");
-TMAKE	=	#$ Expand("TMAKE");
-
-SUBDIRS =	#$ ExpandList("SUBDIRS");
-
-all: $(SUBDIRS)
-
-#${
-    foreach ( split(/\s+/,$project{"SUBDIRS"}) ) {
-	if ( Project("TMAKE_NOFORCE") ) {
-	    $text = $text . $_ . ":\n\t" .
-		"cd $_\n\t\$(MAKE\)\n\t\@cd ..\n\n";
-	} else {
-	    $text = $text . $_ . ": FORCE\n\t" .
-		"cd $_\n\t\$(MAKE\)\n\t\@cd ..\n\n";
-	}
-    }
-#$}
-#$ TmakeSelf();
-
-tmake_all:
-#${
-    foreach ( split(/\s+/,$project{"SUBDIRS"}) ) {
-	$text .= "\tcd $_\n\t\$(TMAKE\) $_.pro -o \$(MAKEFILE)\n\t\@cd ..\n";
-    }
-#$}
-
-clean:
-#$ $text = $project{"SUBMAKE"}; $text =~ s/DOMAKE/\$(MAKE\) clean/g;
-#$ Project("TMAKE_NOFORCE") && DisableOutput();
-FORCE:
-#$ Project("TMAKE_NOFORCE") && EnableOutput();
diff --git a/vhdlparser/CMakeLists.txt b/vhdlparser/CMakeLists.txt
new file mode 100644
index 0000000..1f60ae0
--- /dev/null
+++ b/vhdlparser/CMakeLists.txt
@@ -0,0 +1,10 @@
+include_directories(${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/qtools)
+add_library(vhdlparser STATIC
+CharStream.cc
+ParseException.cc
+Token.cc
+TokenMgrError.cc
+VhdlParser.cc
+VhdlParserTokenManager.cc
+VhdlParserIF.cpp
+)
diff --git a/vhdlparser/CharStream.h b/vhdlparser/CharStream.h
index 409439f..2543ad1 100644
--- a/vhdlparser/CharStream.h
+++ b/vhdlparser/CharStream.h
@@ -30,13 +30,29 @@ namespace parser {
 class CharStream {
 public:
           void setTabSize(int i) { tabSize = i; }
-          int  getTabSize(int)   { return tabSize; }
-  virtual int  getColumn()       { return trackLineColumn ? bufcolumn[bufpos] : -1; }
-  virtual int  getLine()         { return trackLineColumn ? bufline[bufpos] : -1; }
-  virtual int  getEndColumn()    { return trackLineColumn ? bufcolumn[bufpos] : -1; }
-  virtual int  getEndLine()      { return trackLineColumn ? bufline[bufpos] : -1; }
-  virtual int  getBeginColumn()  { return trackLineColumn ? bufcolumn[tokenBegin] : -1; }
-  virtual int  getBeginLine()    { return trackLineColumn ? bufline[tokenBegin] : -1; }
+          int  getTabSize(int i) { return tabSize; }
+ private:
+  int getBufcolumn(int pos) {
+    if (trackLineColumn && pos>=0) {
+      return bufcolumn[pos];
+    } else {
+      return -1;
+    }
+  }
+  int getBufline(int pos) {
+    if (trackLineColumn && pos>=0) {
+      return bufline[pos];
+    } else {
+      return -1;
+    }
+  }
+ public:
+  virtual int getColumn() { return getBufcolumn(bufpos); }
+  virtual int getLine() { return getBufline(bufpos); }
+  virtual int getEndColumn() { return getBufcolumn(bufpos); }
+  virtual int getEndLine() { return getBufline(bufpos); }
+  virtual int getBeginColumn() { return getBufcolumn(tokenBegin); }
+  virtual int getBeginLine() { return getBufline(tokenBegin); }
 
   virtual bool getTrackLineColumn()         { return trackLineColumn; }
   virtual void setTrackLineColumn(bool val) { trackLineColumn = val; }
@@ -179,7 +195,7 @@ public:
   }
 
   CharStream(ReaderStream *input_stream, int startline,
-             int startcolumn, int) :
+             int startcolumn, int buffersize) :
     bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0), 
     tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
     available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
@@ -248,4 +264,4 @@ public:
 }
 }
 #endif
-/* JavaCC - OriginalChecksum=89f4cb30f0d3487ee809cca18a2924f2 (do not edit this line) */
+/* JavaCC - OriginalChecksum=3f0e693d1617236429891c8c95713d73 (do not edit this line) */
diff --git a/vhdlparser/ErrorHandler.h b/vhdlparser/ErrorHandler.h
index 2170489..9f7dc07 100644
--- a/vhdlparser/ErrorHandler.h
+++ b/vhdlparser/ErrorHandler.h
@@ -24,7 +24,7 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
       // expectedKind - token kind that the parser was trying to consume.
       // expectedToken - the image of the token - tokenImages[expectedKind].
       // actual - the actual token that the parser got instead.
-      virtual void handleUnexpectedToken(int, JAVACC_STRING_TYPE expectedToken, Token *actual, VhdlParser *) {
+      virtual void handleUnexpectedToken(int expectedKind, JAVACC_STRING_TYPE expectedToken, Token *actual, VhdlParser *parser) {
         error_count++;
         fprintf(stderr, "Expecting %s at: %d:%d but got %s\n", addUnicodeEscapes(expectedToken).c_str(), actual->beginLine, actual->beginColumn, addUnicodeEscapes(actual->image).c_str());
       }
@@ -32,14 +32,14 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
       // last - the last token successfully parsed.
       // unexpected - the token at which the error occurs.
       // production - the production in which this error occurrs.
-      virtual void handleParseError(Token *, Token *unexpected, JAVACC_SIMPLE_STRING production, VhdlParser *) {
+      virtual void handleParseError(Token *last, Token *unexpected, JAVACC_SIMPLE_STRING production, VhdlParser *parser) {
         error_count++;
         fprintf(stderr, "Encountered: %s at: %d:%d while parsing: %s\n", addUnicodeEscapes(unexpected->image).c_str(), unexpected->beginLine, unexpected->beginColumn, production.c_str());
       }
       virtual int getErrorCount() {
         return error_count;
       }
-      virtual void handleOtherError(JAVACC_STRING_TYPE message, VhdlParser *) {
+      virtual void handleOtherError(JAVACC_STRING_TYPE message, VhdlParser *parser) {
         fprintf(stderr, "Error: %s\n", (char*)message.c_str());
       }
       virtual ~ErrorHandler() {}
@@ -62,11 +62,11 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
        //    errorAfter  : prefix that was seen before this error occurred
        //    curchar     : the offending character
        //
-       virtual void lexicalError(bool EOFSeen, int, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, VhdlParserTokenManager*) {
+       virtual void lexicalError(bool EOFSeen, int lexState, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, VhdlParserTokenManager* token_manager) {
         // by default, we just print an error message and return.
         fprintf(stderr, "Lexical error at: %d:%d. Encountered: %c after: %s.\n", errorLine, errorColumn, curChar, (EOFSeen? "EOF" : (const char*)errorAfter.c_str()));
       }
-       virtual void lexicalError(JAVACC_STRING_TYPE errorMessage, VhdlParserTokenManager*) {
+       virtual void lexicalError(JAVACC_STRING_TYPE errorMessage, VhdlParserTokenManager* token_manager) {
         fprintf(stderr, "%s\n", (char*)errorMessage.c_str());
       }
       virtual ~TokenManagerErrorHandler() {}
diff --git a/vhdlparser/Makefile.in b/vhdlparser/Makefile
similarity index 57%
rename from vhdlparser/Makefile.in
rename to vhdlparser/Makefile
index ef2c774..4725470 100644
--- a/vhdlparser/Makefile.in
+++ b/vhdlparser/Makefile
@@ -1,39 +1,22 @@
 #
-# 
+# Copyright (C) 1997-2015 by Dimitri van Heesch.
 #
-# Copyright (C) 1997-2000 by Dimitri van Heesch.
-# 
 # Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby 
-# granted. No representations are made about the suitability of this software 
+# documentation under the terms of the GNU General Public License is hereby
+# granted. No representations are made about the suitability of this software
 # for any purpose. It is provided "as is" without express or implied warranty.
 # See the GNU General Public License for more details.
-# 
+#
 # Documents produced by Doxygen are derivative works derived from the
 # input used in their production; they are not affected by this license.
-# 
-
-all: Makefile.vhdlparser Makefile
-	$(MAKE) -f Makefile.vhdlparser    $@
-
-Makefile.vhdlparser: vhdlparser.pro 
-	$(ENV) $(PERL) "$(TMAKE)" vhdlparser.pro >Makefile.vhdlparser
-
-tmake: 
-	$(ENV) $(PERL) "$(TMAKE)" vhdlparser.pro >Makefile.vhdlparser
-
-clean: Makefile.vhdlparser 
-	$(MAKE) -f Makefile.vhdlparser    clean 
+#
 
 regenerate:
-	$(RM) CharStream.cc CharStream.h ErrorHandler.h ParseException.cc ParseException.h \
+	rm -f CharStream.cc CharStream.h ErrorHandler.h ParseException.cc ParseException.h \
 	      Token.cc Token.h TokenManager.h TokenMgrError.cc TokenMgrError.h VhdlParser.cc VhdlParser.h \
 	      VhdlParserConstants.h VhdlParserTokenManager.cc VhdlParserTokenManager.h \
               JavaCC.h
 	javacc vhdlparser.jj
-	$(CP) JavaCC.h.in JavaCC.h
-
-distclean: clean
-	$(RM) Makefile vhdlparser.pro
+	cp JavaCC.h.in JavaCC.h
 
 FORCE:
diff --git a/vhdlparser/TokenManager.h b/vhdlparser/TokenManager.h
index 775e43d..0c2caa6 100644
--- a/vhdlparser/TokenManager.h
+++ b/vhdlparser/TokenManager.h
@@ -2,9 +2,12 @@
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 #ifndef TOKENMANAGER_H
 #define TOKENMANAGER_H
+#include <iostream>
 #include "JavaCC.h"
 #include "Token.h"
 
+using namespace std;
+
 namespace vhdl {
 namespace parser {
 /**
@@ -21,7 +24,7 @@ public:
   virtual       ~TokenManager() { }
   virtual Token *getNextToken() = 0;
   virtual void   lexicalError() {
-  	fprintf(stderr,"Lexical error encountered.");
+  	cerr << "Lexical error encountered." << endl;
   }
 
 };
diff --git a/vhdlparser/TokenMgrError.cc b/vhdlparser/TokenMgrError.cc
index 6231196..74908f0 100644
--- a/vhdlparser/TokenMgrError.cc
+++ b/vhdlparser/TokenMgrError.cc
@@ -64,7 +64,7 @@ namespace parser {
 // i < 16 - guaranteed
 char hexChar(int i) {
   if (i < 10) {
-    return i - '0';
+    return i + '0';
   }
   return 'a' + (i - 10);
 }
@@ -115,4 +115,4 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) {
 
 }
 }
-/* JavaCC - OriginalChecksum=2fe11435e6701b2fca885354b08bfdf6 (do not edit this line) */
+/* JavaCC - OriginalChecksum=72f292bc267bd0602e63291bf864f942 (do not edit this line) */
diff --git a/vhdlparser/VhdlParser.cc b/vhdlparser/VhdlParser.cc
index c695c93..acdea91 100644
--- a/vhdlparser/VhdlParser.cc
+++ b/vhdlparser/VhdlParser.cc
@@ -62,7 +62,7 @@ return tok->image.c_str();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::access_type_definition() {Token *tok=0;QCString str,str1;if (!hasError) {
@@ -76,7 +76,7 @@ QCString VhdlParser::access_type_definition() {Token *tok=0;QCString str,str1;if
     
 str=tok->image.c_str(); return str+str1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::actual_designator() {QCString str;Token *t=0;
@@ -118,7 +118,7 @@ return str;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::actual_parameter_part() {QCString s;if (!hasError) {
@@ -128,7 +128,7 @@ QCString VhdlParser::actual_parameter_part() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::actual_part() {QCString s,s1;
@@ -187,7 +187,7 @@ s+="(";s+=s1+")";return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::adding_operator() {
@@ -231,7 +231,7 @@ return "&";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::aggregate() {QCString s,s1,s2;if (!hasError) {
@@ -276,7 +276,7 @@ s+=","+s1;
     
 return "("+s+")";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::alias_declaration() {QCString s,s1,s2;if (!hasError) {
@@ -358,7 +358,7 @@ addVhdlType(s2.data(),getLine(ALIAS_T),Entry::VARIABLE_SEC,VhdlDocGen::ALIAS,0,s
 
  return s2+" "+s+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::alias_designator() {Token *tok=0;QCString s;
@@ -403,7 +403,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::allocator() {
@@ -435,7 +435,7 @@ void VhdlParser::allocator() {
         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
       }
     }
-  }
+}
 
 
 void VhdlParser::architecture_body() {QCString s,s1;if (!hasError) {
@@ -528,7 +528,7 @@ error_skipto(BEGIN_T);
     }
     
 lastEntity=0;lastCompound=0; genLabels.resize(0);
-  }
+}
 
 
 void VhdlParser::architecture_declarative_part() {if (!hasError) {
@@ -568,7 +568,7 @@ void VhdlParser::architecture_declarative_part() {if (!hasError) {
     end_label_2: ;
     }
     
-  }
+}
 
 
 void VhdlParser::architecture_statement_part() {if (!hasError) {
@@ -601,7 +601,7 @@ void VhdlParser::architecture_statement_part() {if (!hasError) {
     end_label_3: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::array_type_definition() {QCString s;
@@ -634,7 +634,7 @@ return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::assertion() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
@@ -689,7 +689,7 @@ s.prepend("assert ");
    if(t1) s2.prepend(" report ");
     return s+s1+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::assertion_statement() {QCString s,s1,s2;Token *t=0;if (!hasError) {
@@ -724,7 +724,7 @@ QCString VhdlParser::assertion_statement() {QCString s,s1,s2;Token *t=0;if (!has
 if(t) s+=":";
     return s+s1+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::association_element() {QCString s,s1;if (!hasError) {
@@ -749,7 +749,7 @@ QCString VhdlParser::association_element() {QCString s,s1;if (!hasError) {
     
 return s+" => "+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::association_list() {QCString s,s1;if (!hasError) {
@@ -786,7 +786,7 @@ s+=","+s1;
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::attribute_declaration() {QCString s,s1;if (!hasError) {
@@ -813,7 +813,7 @@ QCString VhdlParser::attribute_declaration() {QCString s,s1;if (!hasError) {
 addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,s1.data(),Public);
     return " attribute "+s+":"+s1+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::attribute_designator() {QCString s;Token *tok=0;
@@ -847,7 +847,7 @@ return tok->image.c_str();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::attribute_name() {QCString s,s1;if (!hasError) {
@@ -896,7 +896,7 @@ s+"("+s1+")";
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::attribute_specification() {QCString s,s1,s2;if (!hasError) {
@@ -932,7 +932,7 @@ QCString t= s1+" is "+s2;
    addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public);
    return " attribute "+s+" of "+s1+ " is "+s2+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::base() {Token *tok=0;if (!hasError) {
@@ -942,7 +942,7 @@ QCString VhdlParser::base() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::base_specifier() {Token *tok=0;if (!hasError) {
@@ -952,7 +952,7 @@ QCString VhdlParser::base_specifier() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::base_unit_declaration() {QCString s;if (!hasError) {
@@ -962,7 +962,7 @@ QCString VhdlParser::base_unit_declaration() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::based_integer() {Token *tok=0;if (!hasError) {
@@ -972,7 +972,7 @@ QCString VhdlParser::based_integer() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::based_literal() {Token *tok=0;if (!hasError) {
@@ -982,7 +982,7 @@ QCString VhdlParser::based_literal() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::basic_identifier() {Token *tok=0;if (!hasError) {
@@ -992,7 +992,7 @@ QCString VhdlParser::basic_identifier() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 void VhdlParser::binding_indication() {if (!hasError) {
@@ -1045,7 +1045,7 @@ void VhdlParser::binding_indication() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 QCString VhdlParser::bit_string_literal() {Token *tok=0;if (!hasError) {
@@ -1055,7 +1055,7 @@ QCString VhdlParser::bit_string_literal() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::bit_value() {Token *tok=0;if (!hasError) {
@@ -1065,7 +1065,7 @@ QCString VhdlParser::bit_value() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 void VhdlParser::block_configuration() {if (!hasError) {
@@ -1127,7 +1127,7 @@ void VhdlParser::block_configuration() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::block_declarative_item() {
@@ -1261,7 +1261,7 @@ void VhdlParser::block_declarative_item() {
         }
       }
     }
-  }
+}
 
 
 void VhdlParser::block_declarative_part() {if (!hasError) {
@@ -1301,7 +1301,7 @@ void VhdlParser::block_declarative_part() {if (!hasError) {
     end_label_7: ;
     }
     
-  }
+}
 
 
 void VhdlParser::block_header() {if (!hasError) {
@@ -1369,7 +1369,7 @@ void VhdlParser::block_header() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 void VhdlParser::block_specification() {if (!hasError) {
@@ -1400,7 +1400,7 @@ void VhdlParser::block_specification() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 void VhdlParser::block_statement() {QCString s;if (!hasError) {
@@ -1503,7 +1503,7 @@ pushLabel(genLabels,s);
     }
     
 genLabels=popLabel(genLabels);
-  }
+}
 
 
 void VhdlParser::block_statement_part() {if (!hasError) {
@@ -1536,7 +1536,7 @@ void VhdlParser::block_statement_part() {if (!hasError) {
     end_label_8: ;
     }
     
-  }
+}
 
 
 void VhdlParser::case_statement() {QCString s;if (!hasError) {
@@ -1630,7 +1630,7 @@ QCString ca="case "+s;
     
 FlowChart::moveToPrevLevel();
          FlowChart::addFlowChart(FlowChart::END_CASE,"end case",0);
-  }
+}
 
 
 void VhdlParser::case_statement_alternative() {QCString s;if (!hasError) {
@@ -1657,7 +1657,7 @@ QCString t="when ";
     }
     
 FlowChart::moveToPrevLevel();
-  }
+}
 
 
 QCString VhdlParser::character_literal() {Token *tok=0;if (!hasError) {
@@ -1667,13 +1667,13 @@ QCString VhdlParser::character_literal() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::choice() {QCString s;
     if (jj_2_10(2147483647)) {if (!hasError) {
       
-      s = simple_expression();
+      s = discrete_range();
       }
       if (!hasError) {
       
@@ -1682,7 +1682,7 @@ return s;
       
     } else if (jj_2_11(2147483647)) {if (!hasError) {
       
-      s = discrete_range();
+      s = simple_expression();
       }
       if (!hasError) {
       
@@ -1718,7 +1718,7 @@ return " others ";
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::choices() {QCString s,s1;if (!hasError) {
@@ -1755,7 +1755,7 @@ s+="|";s+=s1;
     
 return s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::component_configuration() {if (!hasError) {
@@ -1816,7 +1816,7 @@ void VhdlParser::component_configuration() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::component_declaration() {QCString s;if (!hasError) {
@@ -1910,7 +1910,7 @@ addVhdlType(s.data(),getLine(COMPONENT_T),Entry::VARIABLE_SEC,VhdlDocGen::COMPON
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::component_instantiation_statement() {QCString s,s1;if (!hasError) {
@@ -1960,7 +1960,7 @@ addCompInst(s.lower().data(),s1.lower().data(),0,getLine());
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::component_specification() {if (!hasError) {
@@ -1976,7 +1976,7 @@ void VhdlParser::component_specification() {if (!hasError) {
     name();
     }
     
-  }
+}
 
 
 QCString VhdlParser::composite_type_definition() {QCString s,s1;
@@ -1998,7 +1998,7 @@ return s;
       }
       if (!hasError) {
       
-return s;
+return s+"#";
       }
       
       break;
@@ -2009,7 +2009,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::concurrent_assertion_statement() {if (!hasError) {
@@ -2051,7 +2051,7 @@ void VhdlParser::concurrent_assertion_statement() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::concurrent_procedure_call_statement() {if (!hasError) {
@@ -2093,7 +2093,7 @@ void VhdlParser::concurrent_procedure_call_statement() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::concurrent_signal_assignment_statement() {if (!hasError) {
@@ -2150,7 +2150,7 @@ void VhdlParser::concurrent_signal_assignment_statement() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 void VhdlParser::concurrent_statement() {
@@ -2217,7 +2217,7 @@ void VhdlParser::concurrent_statement() {
         }
       }
     }
-  }
+}
 
 
 QCString VhdlParser::condition() {QCString s;if (!hasError) {
@@ -2227,7 +2227,7 @@ QCString VhdlParser::condition() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::condition_clause() {QCString s;if (!hasError) {
@@ -2241,7 +2241,7 @@ QCString VhdlParser::condition_clause() {QCString s;if (!hasError) {
     
 return " until "+s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::conditional_signal_assignment() {if (!hasError) {
@@ -2265,7 +2265,7 @@ void VhdlParser::conditional_signal_assignment() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::conditional_waveforms() {if (!hasError) {
@@ -2319,7 +2319,7 @@ void VhdlParser::conditional_waveforms() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 void VhdlParser::configuration_declaration() {QCString s,s1;if (!hasError) {
@@ -2398,7 +2398,7 @@ confName=s+"::"+s1;
     }
     
 genLabels.resize(0); confName="";
-  }
+}
 
 
 void VhdlParser::configuration_declarative_item() {
@@ -2429,7 +2429,7 @@ void VhdlParser::configuration_declarative_item() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 void VhdlParser::configuration_declarative_part() {if (!hasError) {
@@ -2454,7 +2454,7 @@ void VhdlParser::configuration_declarative_part() {if (!hasError) {
     end_label_12: ;
     }
     
-  }
+}
 
 
 void VhdlParser::configuration_item() {
@@ -2478,7 +2478,7 @@ void VhdlParser::configuration_item() {
         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
       }
     }
-  }
+}
 
 
 void VhdlParser::configuration_specification() {if (!hasError) {
@@ -2498,7 +2498,7 @@ void VhdlParser::configuration_specification() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 QCString VhdlParser::constant_declaration() {QCString s,s1,s2;Token *t=0;if (!hasError) {
@@ -2548,7 +2548,7 @@ if(t)
      it.prepend("constant ");
      return it;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::constraint_array_definition() {QCString s,s1;if (!hasError) {
@@ -2570,7 +2570,7 @@ QCString VhdlParser::constraint_array_definition() {QCString s,s1;if (!hasError)
     
 return s+" "+s1;
 assert(false);
-  }
+}
 
 
 void VhdlParser::context_clause() {if (!hasError) {
@@ -2594,7 +2594,7 @@ void VhdlParser::context_clause() {if (!hasError) {
     end_label_13: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::constraint() {QCString s;
@@ -2621,7 +2621,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::context_item() {
@@ -2645,7 +2645,7 @@ void VhdlParser::context_item() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 QCString VhdlParser::decimal_literal() {Token *tok=0;if (!hasError) {
@@ -2655,7 +2655,7 @@ QCString VhdlParser::decimal_literal() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::delay_mechanism() {QCString s;
@@ -2712,7 +2712,7 @@ return s+" inertial ";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::design_file() {
@@ -2767,7 +2767,7 @@ void VhdlParser::design_file() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 void VhdlParser::design_unit() {if (!hasError) {
@@ -2779,7 +2779,7 @@ void VhdlParser::design_unit() {if (!hasError) {
     library_unit();
     }
     
-  }
+}
 
 
 QCString VhdlParser::designator() {QCString s;
@@ -2813,7 +2813,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::direction() {Token *tok=0;
@@ -2846,7 +2846,7 @@ return tok->image.c_str();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::disconnection_specification() {if (!hasError) {
@@ -2870,7 +2870,7 @@ void VhdlParser::disconnection_specification() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::guarded_signal_specificatio() {if (!hasError) {
@@ -2886,7 +2886,7 @@ void VhdlParser::guarded_signal_specificatio() {if (!hasError) {
     name();
     }
     
-  }
+}
 
 
 QCString VhdlParser::discrete_range() {QCString s;
@@ -2913,7 +2913,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::element_association() {QCString s,s1;if (!hasError) {
@@ -2940,7 +2940,7 @@ if(!s.isEmpty())
  return s+"=>"+s1;
 return s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::element_declaration() {QCString s,s1;if (!hasError) {
@@ -2960,9 +2960,11 @@ QCString VhdlParser::element_declaration() {QCString s,s1;if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-return s+":"+s1;
+addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s1.data(),Public);
+  //addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public);
+  return s+":"+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::entity_aspect() {Token *tok=0;QCString s,s1;
@@ -3041,7 +3043,7 @@ return tok->image.c_str();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::entity_class() {
@@ -3239,7 +3241,7 @@ return "file";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::entity_class_entry() {QCString s;if (!hasError) {
@@ -3268,7 +3270,7 @@ s+="<>";
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::entity_class_entry_list() {QCString s,s1,s2;if (!hasError) {
@@ -3312,7 +3314,7 @@ s2+=",";s2+=s;
     
 return s1+s2;
 assert(false);
-  }
+}
 
 
 void VhdlParser::entity_declaration() {QCString s;if (!hasError) {
@@ -3403,7 +3405,7 @@ lastEntity=current;
     }
     
 lastEntity=0;lastCompound=0; genLabels.resize(0);
-  }
+}
 
 
 void VhdlParser::entity_declarative_item() {
@@ -3548,7 +3550,7 @@ void VhdlParser::entity_declarative_item() {
         }
       }
     }
-  }
+}
 
 
 void VhdlParser::entity_declarative_part() {if (!hasError) {
@@ -3588,7 +3590,7 @@ void VhdlParser::entity_declarative_part() {if (!hasError) {
     end_label_16: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::entity_designator() {QCString s,s1;if (!hasError) {
@@ -3613,7 +3615,7 @@ QCString VhdlParser::entity_designator() {QCString s,s1;if (!hasError) {
     
 return s+s1;
 assert(false);
-  }
+}
 
 
 void VhdlParser::entity_header() {if (!hasError) {
@@ -3655,7 +3657,7 @@ currP=VhdlDocGen::PORT;
     }
     }
     
-  }
+}
 
 
 QCString VhdlParser::entity_name_list() {QCString s,s1;
@@ -3726,7 +3728,7 @@ return "all";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::entity_specification() {QCString s,s1;if (!hasError) {
@@ -3744,7 +3746,7 @@ QCString VhdlParser::entity_specification() {QCString s,s1;if (!hasError) {
     
 return s+":"+s1;
 assert(false);
-  }
+}
 
 
 void VhdlParser::entity_statement() {
@@ -3777,7 +3779,7 @@ void VhdlParser::entity_statement() {
         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
       }
     }
-  }
+}
 
 
 void VhdlParser::entity_statement_part() {if (!hasError) {
@@ -3806,7 +3808,7 @@ void VhdlParser::entity_statement_part() {if (!hasError) {
     end_label_18: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::entity_tag() {QCString s;
@@ -3842,7 +3844,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::enumeration_literal() {QCString s;
@@ -3876,7 +3878,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::enumeration_type_definition() {QCString s,s1;if (!hasError) {
@@ -3921,7 +3923,7 @@ s+=",";s+=s1;
     
 return "("+s+")";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::exit_statement() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
@@ -3995,7 +3997,7 @@ lab.resize(0);
 
   return s+s1+s2+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::expression() {QCString s,s1,s2;if (!hasError) {
@@ -4037,7 +4039,7 @@ s+=s1;s+=s2;
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::logop() {
@@ -4114,7 +4116,7 @@ return "or" ;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::extended_identifier() {Token *t;if (!hasError) {
@@ -4124,7 +4126,7 @@ QCString VhdlParser::extended_identifier() {Token *t;if (!hasError) {
     
 return t->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::factor() {QCString s,s1;
@@ -4210,7 +4212,7 @@ s1="not ";return s1+s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::file_declaration() {QCString s,s1,s2,s3;if (!hasError) {
@@ -4254,7 +4256,7 @@ QCString t1=s2+" "+s3;
    addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public);
    return " file "+s+":"+s2+" "+s3+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::file_logical_name() {QCString s;if (!hasError) {
@@ -4264,7 +4266,7 @@ QCString VhdlParser::file_logical_name() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::file_open_information() {QCString s,s1,s2;if (!hasError) {
@@ -4297,7 +4299,7 @@ QCString VhdlParser::file_open_information() {QCString s,s1,s2;if (!hasError) {
     
 s2="open "+s+" is "+s1;  return s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::file_type_definition() {QCString s,s1;if (!hasError) {
@@ -4315,7 +4317,7 @@ QCString VhdlParser::file_type_definition() {QCString s,s1;if (!hasError) {
     
 s1=" file of "+s; return s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::floating_type_definition() {QCString s;if (!hasError) {
@@ -4325,7 +4327,7 @@ QCString VhdlParser::floating_type_definition() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::formal_designator() {QCString s;Token *tok=0;
@@ -4361,7 +4363,7 @@ return tok->image.c_str();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::formal_parameter_list() {QCString s;if (!hasError) {
@@ -4371,7 +4373,7 @@ QCString VhdlParser::formal_parameter_list() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::formal_part() {QCString s,s1;if (!hasError) {
@@ -4408,10 +4410,10 @@ s+"("+s1+")";
     
 return s;
 assert(false);
-  }
+}
 
 
-QCString VhdlParser::full_type_declaration() {QCString s,s1,s2;if (!hasError) {
+QCString VhdlParser::full_type_declaration() {Entry *tmpEntry;QCString s,s1,s2;if (!hasError) {
     
     jj_consume_token(TYPE_T);
     }
@@ -4425,6 +4427,11 @@ QCString VhdlParser::full_type_declaration() {QCString s,s1,s2;if (!hasError) {
     }
     if (!hasError) {
     
+tmpEntry=current;
+  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,0,Public);
+    }
+    if (!hasError) {
+    
     try {if (!hasError) {
       
       s2 = type_definition();
@@ -4439,10 +4446,27 @@ error_skipto(SEMI_T);
     jj_consume_token(SEMI_T);
     }
     
-addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
-          return "type "+s+" is "+s2+";";
+if (s2.contains("#")) {
+        VhdlDocGen::deleteAllChars(s2,'#');
+        tmpEntry->spec=VhdlDocGen::RECORD;
+        tmpEntry->type=s2.data();
+        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public);
+      }
+      else if (s2.contains("%")) {
+        VhdlDocGen::deleteAllChars(s2,'%');
+        tmpEntry->spec=VhdlDocGen::UNITS;
+        tmpEntry->type=s2.data();
+        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public);
+      }
+      else {
+        tmpEntry->spec=VhdlDocGen::TYPE;
+        tmpEntry->type=s2.data();
+        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
+      }
+      tmpEntry=0;
+      return "type "+s+" is "+s2+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::function_call() {QCString s,s1;if (!hasError) {
@@ -4464,7 +4488,7 @@ QCString VhdlParser::function_call() {QCString s,s1;if (!hasError) {
     
 return s+"("+s1+")";
 assert(false);
-  }
+}
 
 
 void VhdlParser::generate_statement() {QCString s;if (!hasError) {
@@ -4528,7 +4552,7 @@ error_skipto(GENERATE_T);
     }
     
 genLabels=popLabel(genLabels);
-  }
+}
 
 
 void VhdlParser::generate_scheme() {
@@ -4560,7 +4584,7 @@ void VhdlParser::generate_scheme() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 void VhdlParser::generic_clause() {QCString s;if (!hasError) {
@@ -4589,7 +4613,7 @@ parse_sec=GEN_SEC;
     }
     
 parse_sec=0;
-  }
+}
 
 
 QCString VhdlParser::generic_list() {QCString s;if (!hasError) {
@@ -4599,7 +4623,7 @@ QCString VhdlParser::generic_list() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::generic_map_aspect() {if (!hasError) {
@@ -4623,7 +4647,7 @@ void VhdlParser::generic_map_aspect() {if (!hasError) {
     jj_consume_token(RPAREN_T);
     }
     
-  }
+}
 
 
 QCString VhdlParser::group_constituent() {QCString s;
@@ -4659,7 +4683,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::group_constituent_list() {QCString s,s1,s2;if (!hasError) {
@@ -4699,7 +4723,7 @@ s2+=",";s2+=s1;
     
 return s+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::group_declaration() {QCString s,s1,s2;if (!hasError) {
@@ -4737,7 +4761,7 @@ QCString VhdlParser::group_declaration() {QCString s,s1,s2;if (!hasError) {
     
 return "group "+s+":"+s1+"("+s2+");";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::group_template_declaration() {QCString s,s1;if (!hasError) {
@@ -4771,7 +4795,7 @@ QCString VhdlParser::group_template_declaration() {QCString s,s1;if (!hasError)
     
 return "group "+s+ "is ("+s1+");";
 assert(false);
-  }
+}
 
 
 void VhdlParser::guarded_signal_specification() {if (!hasError) {
@@ -4787,7 +4811,7 @@ void VhdlParser::guarded_signal_specification() {if (!hasError) {
     type_mark();
     }
     
-  }
+}
 
 
 QCString VhdlParser::identifier() {Token *tok=0;
@@ -4820,7 +4844,7 @@ return tok->image.c_str();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::identifier_list() {QCString str,str1;if (!hasError) {
@@ -4857,7 +4881,7 @@ str+=",";str+=str1;
     
 return str;
 assert(false);
-  }
+}
 
 
 void VhdlParser::if_statement() {QCString s,s1;if (!hasError) {
@@ -4991,7 +5015,7 @@ FlowChart::addFlowChart(FlowChart::ELSE_NO,0,0);
     
 FlowChart::moveToPrevLevel();
           FlowChart::addFlowChart(FlowChart::ENDIF_NO,0,0);
-  }
+}
 
 
 QCString VhdlParser::incomplete_type_declaration() {QCString s;if (!hasError) {
@@ -5009,7 +5033,7 @@ QCString VhdlParser::incomplete_type_declaration() {QCString s;if (!hasError) {
     
 return "type "+s+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::index_constraint() {QCString s="("; QCString s1,s2;if (!hasError) {
@@ -5058,7 +5082,7 @@ s+=",";s+=s1;
     
 return s+")";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::index_specification() {QCString s;
@@ -5106,7 +5130,7 @@ return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::index_subtype_definition() {QCString s;if (!hasError) {
@@ -5124,10 +5148,10 @@ QCString VhdlParser::index_subtype_definition() {QCString s;if (!hasError) {
     
 return s+" range <> ";
 assert(false);
-  }
+}
 
 
-QCString VhdlParser::instantiation_unit() {QCString s,s1,s2;Token *tok=0;
+QCString VhdlParser::instantiation_unit() {QCString s,s1,s2;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case COMPONENT_T:
     case BASIC_IDENTIFIER:
@@ -5136,7 +5160,7 @@ QCString VhdlParser::instantiation_unit() {QCString s,s1,s2;Token *tok=0;
       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case COMPONENT_T:{if (!hasError) {
         
-        tok = jj_consume_token(COMPONENT_T);
+        jj_consume_token(COMPONENT_T);
         }
         
         break;
@@ -5152,14 +5176,29 @@ QCString VhdlParser::instantiation_unit() {QCString s,s1,s2;Token *tok=0;
       }
       if (!hasError) {
       
-s1="component"; return s;
+s1="component "; return s;
       }
       
       break;
       }
     case ENTITY_T:{if (!hasError) {
       
-      tok = jj_consume_token(ENTITY_T);
+      jj_consume_token(ENTITY_T);
+      }
+      if (!hasError) {
+      
+      if (jj_2_38(2)) {if (!hasError) {
+        
+        jj_consume_token(BASIC_IDENTIFIER);
+        }
+        if (!hasError) {
+        
+        jj_consume_token(DOT_T);
+        }
+        
+      } else {
+        ;
+      }
       }
       if (!hasError) {
       
@@ -5167,7 +5206,7 @@ s1="component"; return s;
       }
       if (!hasError) {
       
-s=tok->image.c_str()+s2;
+s="entity "+s2;
       }
       if (!hasError) {
       
@@ -5224,7 +5263,7 @@ s1="configuration ";return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::instantiation_list() {QCString s;Token *tok=0;
@@ -5269,7 +5308,7 @@ return tok->image.c_str();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::integer() {Token *t;if (!hasError) {
@@ -5279,7 +5318,7 @@ QCString VhdlParser::integer() {Token *t;if (!hasError) {
     
 return t->image.c_str();
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::integer_type_definition() {QCString s;if (!hasError) {
@@ -5289,11 +5328,11 @@ QCString VhdlParser::integer_type_definition() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::interface_declaration() {QCString s,s1;
-    if (jj_2_38(5)) {if (!hasError) {
+    if (jj_2_39(5)) {if (!hasError) {
       
       s = interface_subprogram_declaration();
       }
@@ -5317,7 +5356,7 @@ return s;
         }
       default:
         jj_la1[121] = jj_gen;
-        if (jj_2_39(5)) {if (!hasError) {
+        if (jj_2_40(5)) {if (!hasError) {
           
           s = interface_variable_declaration();
           }
@@ -5326,7 +5365,7 @@ return s;
 return s;
           }
           
-        } else if (jj_2_40(5)) {if (!hasError) {
+        } else if (jj_2_41(5)) {if (!hasError) {
           
           interface_file_declaration();
           }
@@ -5335,7 +5374,7 @@ return s;
 return s;
           }
           
-        } else if (jj_2_41(2147483647)) {if (!hasError) {
+        } else if (jj_2_42(2147483647)) {if (!hasError) {
           
           subprogram_declaration();
           }
@@ -5377,7 +5416,7 @@ if (parse_sec==GEN_SEC)
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::interface_element() {QCString s;if (!hasError) {
@@ -5387,7 +5426,7 @@ QCString VhdlParser::interface_element() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::interface_file_declaration() {QCString s,s1;if (!hasError) {
@@ -5410,7 +5449,7 @@ QCString VhdlParser::interface_file_declaration() {QCString s,s1;if (!hasError)
 addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public);
    return " file "+s+":"+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::interface_list() {QCString s,s1,s2;if (!hasError) {
@@ -5447,7 +5486,7 @@ s2+=";";s2+=s1;
     
 return s+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::interface_variable_declaration() {Token *tok=0;Token *tok1=0;Token *tok2=0;QCString s,s1,s2,s3,s4,s5;if (!hasError) {
@@ -5595,7 +5634,7 @@ if(tok)
                     } // if component
               return it;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::iteration_scheme() {QCString s;
@@ -5642,7 +5681,7 @@ QCString q=lab+" for "+s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::label() {QCString s;if (!hasError) {
@@ -5652,7 +5691,7 @@ QCString VhdlParser::label() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::library_clause() {QCString s;if (!hasError) {
@@ -5678,11 +5717,11 @@ if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") )
                    QCString s1="library "+s;
                    return s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::library_unit() {QCString s;
-    if (jj_2_42(2)) {if (!hasError) {
+    if (jj_2_43(2)) {if (!hasError) {
       
       primary_unit();
       }
@@ -5719,11 +5758,11 @@ return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::literal() {QCString s;
-    if (jj_2_43(2147483647)) {if (!hasError) {
+    if (jj_2_44(2147483647)) {if (!hasError) {
       
       s = bit_string_literal();
       }
@@ -5732,7 +5771,7 @@ QCString VhdlParser::literal() {QCString s;
 return s;
       }
       
-    } else if (jj_2_44(2147483647)) {if (!hasError) {
+    } else if (jj_2_45(2147483647)) {if (!hasError) {
       
       s = numeric_literal();
       }
@@ -5741,7 +5780,7 @@ return s;
 return s;
       }
       
-    } else if (jj_2_45(2147483647)) {if (!hasError) {
+    } else if (jj_2_46(2147483647)) {if (!hasError) {
       
       s = enumeration_literal();
       }
@@ -5781,7 +5820,7 @@ return "null";
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::logical_operator() {QCString s;if (!hasError) {
@@ -5791,7 +5830,7 @@ QCString VhdlParser::logical_operator() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::loop_statement() {QCString s,s1,s2,s3;if (!hasError) {
@@ -5882,7 +5921,7 @@ QCString q = s+" loop "+s2+" end loop" +s3;
          FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0);
         return q;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::miscellaneous_operator() {Token *t=0;
@@ -5926,7 +5965,7 @@ return "not";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::mode() {Token *tok=0;
@@ -5992,7 +6031,7 @@ return "linkage";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::multiplying_operation() {Token *tok=0;
@@ -6047,7 +6086,7 @@ return tok->image.c_str();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::name() {QCString s,s1;if (!hasError) {
@@ -6083,7 +6122,7 @@ QCString VhdlParser::name() {QCString s,s1;if (!hasError) {
     }
     if (!hasError) {
     
-    if (jj_2_46(2147483647)) {if (!hasError) {
+    if (jj_2_47(2147483647)) {if (!hasError) {
       
       s1 = name_ext1();
       }
@@ -6099,7 +6138,7 @@ s+=s1;
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::name_ext1() {QCString s,s1,s2;if (!hasError) {
@@ -6109,7 +6148,7 @@ QCString VhdlParser::name_ext1() {QCString s,s1,s2;if (!hasError) {
     if (!hasError) {
     
     while (!hasError) {
-      if (jj_2_47(2147483647)) {
+      if (jj_2_48(2147483647)) {
         ;
       } else {
         goto end_label_26;
@@ -6128,12 +6167,12 @@ s+=s1;
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::name_ext() {QCString s,s1,s2;if (!hasError) {
     
-    if (jj_2_48(2147483647)) {if (!hasError) {
+    if (jj_2_49(2147483647)) {if (!hasError) {
       
       jj_consume_token(DOT_T);
       }
@@ -6146,7 +6185,7 @@ QCString VhdlParser::name_ext() {QCString s,s1,s2;if (!hasError) {
 s+=".";s+=s1;
       }
       
-    } else if (jj_2_49(2147483647)) {if (!hasError) {
+    } else if (jj_2_50(2147483647)) {if (!hasError) {
       
       s1 = test_att_name();
       }
@@ -6155,7 +6194,7 @@ s+=".";s+=s1;
 s+=s1;
       }
       
-    } else if (jj_2_50(2147483647)) {if (!hasError) {
+    } else if (jj_2_51(2147483647)) {if (!hasError) {
       
       jj_consume_token(LPAREN_T);
       }
@@ -6172,7 +6211,7 @@ s+=s1;
 s+="(";s+=s1;s+=")";
       }
       
-    } else if (jj_2_51(2147483647)) {if (!hasError) {
+    } else if (jj_2_52(2147483647)) {if (!hasError) {
       
       jj_consume_token(LPAREN_T);
       }
@@ -6228,12 +6267,12 @@ s+=")";
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::test_att_name() {QCString s,s1;if (!hasError) {
     
-    if (jj_2_52(2147483647)) {if (!hasError) {
+    if (jj_2_53(2147483647)) {if (!hasError) {
       
       s1 = signature();
       }
@@ -6288,7 +6327,7 @@ s+="(";s+=s1;s+=")";
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::indexed_name() {QCString s,s1,s2;if (!hasError) {
@@ -6341,7 +6380,7 @@ s+=",";s+=s1;
     
 return s+")";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::next_statement() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
@@ -6414,7 +6453,7 @@ if(t) s+=":";
   if(t1) s2.prepend("when ");
   return s+s1+s2+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::null_statement() {QCString s;if (!hasError) {
@@ -6452,11 +6491,11 @@ s+=":";
     
 return s+="null";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::numeric_literal() {QCString s;
-    if (jj_2_53(2147483647)) {if (!hasError) {
+    if (jj_2_54(2147483647)) {if (!hasError) {
       
       s = physical_literal();
       }
@@ -6487,7 +6526,7 @@ return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::object_class() {
@@ -6568,7 +6607,7 @@ return "type";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::operator_symbol() {Token *tok=0;if (!hasError) {
@@ -6578,7 +6617,7 @@ QCString VhdlParser::operator_symbol() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 void VhdlParser::options() {if (!hasError) {
@@ -6614,7 +6653,7 @@ void VhdlParser::options() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 void VhdlParser::package_body() {QCString s;if (!hasError) {
@@ -6690,7 +6729,7 @@ lastCompound=current;
     }
     
 lastCompound=0; genLabels.resize(0);
-  }
+}
 
 
 void VhdlParser::package_body_declarative_item() {
@@ -6757,7 +6796,7 @@ void VhdlParser::package_body_declarative_item() {
       }
     default:
       jj_la1[152] = jj_gen;
-      if (jj_2_54(3)) {if (!hasError) {
+      if (jj_2_55(3)) {if (!hasError) {
         
         group_template_declaration();
         }
@@ -6778,7 +6817,7 @@ void VhdlParser::package_body_declarative_item() {
         }
       }
     }
-  }
+}
 
 
 void VhdlParser::package_body_declarative_part() {if (!hasError) {
@@ -6813,7 +6852,7 @@ void VhdlParser::package_body_declarative_part() {if (!hasError) {
     end_label_29: ;
     }
     
-  }
+}
 
 
 void VhdlParser::package_declaration() {QCString s;if (!hasError) {
@@ -6888,7 +6927,7 @@ lastCompound=current;
     }
     
 lastEntity=0;lastCompound=0; genLabels.resize(0);
-  }
+}
 
 
 void VhdlParser::geninter() {if (!hasError) {
@@ -6930,7 +6969,7 @@ void VhdlParser::geninter() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 void VhdlParser::package_declarative_item() {
@@ -7004,7 +7043,7 @@ void VhdlParser::package_declarative_item() {
       }
     default:
       jj_la1[159] = jj_gen;
-      if (jj_2_55(2147483647)) {if (!hasError) {
+      if (jj_2_56(2147483647)) {if (!hasError) {
         
         attribute_declaration();
         }
@@ -7034,7 +7073,7 @@ void VhdlParser::package_declarative_item() {
           }
         default:
           jj_la1[160] = jj_gen;
-          if (jj_2_56(3)) {if (!hasError) {
+          if (jj_2_57(3)) {if (!hasError) {
             
             group_template_declaration();
             }
@@ -7050,7 +7089,7 @@ void VhdlParser::package_declarative_item() {
               }
             default:
               jj_la1[161] = jj_gen;
-              if (jj_2_57(5)) {if (!hasError) {
+              if (jj_2_58(5)) {if (!hasError) {
                 
                 package_instantiation_declaration();
                 }
@@ -7075,7 +7114,7 @@ void VhdlParser::package_declarative_item() {
         }
       }
     }
-  }
+}
 
 
 void VhdlParser::package_declarative_part() {if (!hasError) {
@@ -7115,7 +7154,7 @@ void VhdlParser::package_declarative_part() {if (!hasError) {
     end_label_30: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::parameter_specification() {QCString s,s1;if (!hasError) {
@@ -7133,12 +7172,12 @@ QCString VhdlParser::parameter_specification() {QCString s,s1;if (!hasError) {
     
 return s+" in "+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::physical_literal() {QCString s,s1;if (!hasError) {
     
-    if (jj_2_58(2147483647)) {if (!hasError) {
+    if (jj_2_59(2147483647)) {if (!hasError) {
       
       s = abstract_literal();
       }
@@ -7154,7 +7193,7 @@ QCString VhdlParser::physical_literal() {QCString s,s1;if (!hasError) {
     
 s+=" ";s+=s1;s.prepend(" "); return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::physical_type_definition() {QCString s,s1,s2;if (!hasError) {
@@ -7171,6 +7210,10 @@ QCString VhdlParser::physical_type_definition() {QCString s,s1,s2;if (!hasError)
     }
     if (!hasError) {
     
+addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,0,Public);
+    }
+    if (!hasError) {
+    
     while (!hasError) {
       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case BASIC_IDENTIFIER:
@@ -7185,10 +7228,6 @@ QCString VhdlParser::physical_type_definition() {QCString s,s1,s2;if (!hasError)
       
       s1 = secondary_unit_declaration();
       }
-      if (!hasError) {
-      
-s2+=s1;s2+="#";
-      }
       
     }
     end_label_31: ;
@@ -7220,12 +7259,9 @@ s2+=s1;s2+="#";
     }
     }
     
-current->args=s2;
-               current->args.prepend("units");
-             current->spec=VhdlDocGen::UNITS;
-            return s2;
+return s+"%";
 assert(false);
-  }
+}
 
 
 void VhdlParser::port_clause() {if (!hasError) {
@@ -7250,7 +7286,7 @@ void VhdlParser::port_clause() {if (!hasError) {
     }
     
 currP=0;
-  }
+}
 
 
 QCString VhdlParser::port_list() {QCString s;if (!hasError) {
@@ -7260,7 +7296,7 @@ QCString VhdlParser::port_list() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::port_map_aspect() {if (!hasError) {
@@ -7284,11 +7320,11 @@ void VhdlParser::port_map_aspect() {if (!hasError) {
     jj_consume_token(RPAREN_T);
     }
     
-  }
+}
 
 
 QCString VhdlParser::primary() {QCString s,s1;
-    if (jj_2_59(2147483647)) {if (!hasError) {
+    if (jj_2_60(2147483647)) {if (!hasError) {
       
       s = function_call();
       }
@@ -7297,7 +7333,7 @@ QCString VhdlParser::primary() {QCString s,s1;
 return s;
       }
       
-    } else if (jj_2_60(2147483647)) {if (!hasError) {
+    } else if (jj_2_61(2147483647)) {if (!hasError) {
       
       jj_consume_token(LPAREN_T);
       }
@@ -7314,7 +7350,7 @@ return s;
 s="("+s1+")"; return s;
       }
       
-    } else if (jj_2_61(2147483647)) {if (!hasError) {
+    } else if (jj_2_62(2147483647)) {if (!hasError) {
       
       s = qualified_expression();
       }
@@ -7323,7 +7359,7 @@ s="("+s1+")"; return s;
 return s;
       }
       
-    } else if (jj_2_62(2147483647)) {if (!hasError) {
+    } else if (jj_2_63(2147483647)) {if (!hasError) {
       
       s = type_conversion();
       }
@@ -7332,7 +7368,7 @@ return s;
 return s;
       }
       
-    } else if (jj_2_63(2147483647)) {if (!hasError) {
+    } else if (jj_2_64(2147483647)) {if (!hasError) {
       
       s = literal();
       }
@@ -7341,7 +7377,7 @@ return s;
 s.prepend(" ");return s;
       }
       
-    } else if (jj_2_64(2147483647)) {if (!hasError) {
+    } else if (jj_2_65(2147483647)) {if (!hasError) {
       
       s = name();
       }
@@ -7381,7 +7417,7 @@ return s;
       }
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::primary_unit() {
@@ -7402,12 +7438,12 @@ void VhdlParser::primary_unit() {
       }
     default:
       jj_la1[167] = jj_gen;
-      if (jj_2_65(2147483647)) {if (!hasError) {
+      if (jj_2_66(2147483647)) {if (!hasError) {
         
         package_instantiation_declaration();
         }
         
-      } else if (jj_2_66(4)) {if (!hasError) {
+      } else if (jj_2_67(4)) {if (!hasError) {
         
         interface_package_declaration();
         }
@@ -7428,7 +7464,7 @@ void VhdlParser::primary_unit() {
         }
       }
     }
-  }
+}
 
 
 QCString VhdlParser::procedure_call() {QCString s,s1;if (!hasError) {
@@ -7465,12 +7501,12 @@ s1.prepend("("); s1.append(")");
     
 return s+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::procedure_call_statement() {QCString s,s1;if (!hasError) {
     
-    if (jj_2_67(2)) {if (!hasError) {
+    if (jj_2_68(2)) {if (!hasError) {
       
       s = identifier();
       }
@@ -7498,7 +7534,7 @@ s+=":";
     
 return s+s1+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::process_declarative_item() {QCString s;
@@ -7586,7 +7622,7 @@ return s;
       }
     default:
       jj_la1[170] = jj_gen;
-      if (jj_2_68(3)) {if (!hasError) {
+      if (jj_2_69(3)) {if (!hasError) {
         
         s = attribute_declaration();
         }
@@ -7621,7 +7657,7 @@ return s;
           }
         default:
           jj_la1[171] = jj_gen;
-          if (jj_2_69(3)) {if (!hasError) {
+          if (jj_2_70(3)) {if (!hasError) {
             
             s = group_template_declaration();
             }
@@ -7653,7 +7689,7 @@ return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::process_declarative_part() {QCString s,s1;if (!hasError) {
@@ -7695,7 +7731,7 @@ s+=s1;
     
 return s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::process_statement() {QCString s,s1,s2;Token *tok=0;if (!hasError) {
@@ -7880,7 +7916,7 @@ if(s.isEmpty())
   createFlow();
    currName="";
    newEntry();
-  }
+}
 
 
 void VhdlParser::process_statement_part() {if (!hasError) {
@@ -7920,7 +7956,7 @@ void VhdlParser::process_statement_part() {if (!hasError) {
     end_label_33: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::qualified_expression() {QCString s,s1;if (!hasError) {
@@ -7937,7 +7973,7 @@ s=s1+"'";
     }
     if (!hasError) {
     
-    if (jj_2_70(2147483647)) {if (!hasError) {
+    if (jj_2_71(2147483647)) {if (!hasError) {
       
       s1 = aggregate();
       }
@@ -7977,11 +8013,11 @@ s+="(";s+=s1;s+=")";
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::range() {QCString s,s1,s2;
-    if (jj_2_71(2147483647)) {if (!hasError) {
+    if (jj_2_72(2147483647)) {if (!hasError) {
       
       s = simple_expression();
       }
@@ -7998,7 +8034,7 @@ QCString VhdlParser::range() {QCString s,s1,s2;
 return s+" "+s1+" "+s2;
       }
       
-    } else if (jj_2_72(2147483647)) {if (!hasError) {
+    } else if (jj_2_73(2147483647)) {if (!hasError) {
       
       s = attribute_name();
       }
@@ -8012,7 +8048,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::range_constraint() {QCString s,s1;if (!hasError) {
@@ -8026,7 +8062,7 @@ QCString VhdlParser::range_constraint() {QCString s,s1;if (!hasError) {
     
 return " range "+s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::record_type_definition() {if (!hasError) {
@@ -8080,7 +8116,7 @@ void VhdlParser::record_type_definition() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 QCString VhdlParser::relation() {QCString s,s1,s2;if (!hasError) {
@@ -8114,7 +8150,7 @@ QCString VhdlParser::relation() {QCString s,s1,s2;if (!hasError) {
     
 return s+s1+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::relation_operator() {
@@ -8191,7 +8227,7 @@ return "/=";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::report_statement() {Token *t=0;Token *t1=0;QCString s,s1,s2;if (!hasError) {
@@ -8251,7 +8287,7 @@ if(t) s.append(":");
         if(t1) s2.prepend(" severity ");
         return s+s1+s2+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::return_statement() {QCString s,s1;if (!hasError) {
@@ -8319,7 +8355,7 @@ s+=":";
     
 return s+" return "+s1+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::scalar_type_definition() {QCString s,s1;
@@ -8341,7 +8377,7 @@ return s;
       }
       if (!hasError) {
       
-      if (jj_2_73(2147483647)) {if (!hasError) {
+      if (jj_2_74(2147483647)) {if (!hasError) {
         
         s1 = physical_type_definition();
         }
@@ -8352,7 +8388,7 @@ return s;
       }
       if (!hasError) {
       
-s+=" ";s+=s1;return s;
+return s+" "+s1+"%";
       }
       
       break;
@@ -8363,7 +8399,7 @@ s+=" ";s+=s1;return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::secondary_unit() {
@@ -8387,7 +8423,7 @@ void VhdlParser::secondary_unit() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 QCString VhdlParser::secondary_unit_declaration() {QCString s,s1;if (!hasError) {
@@ -8407,9 +8443,12 @@ QCString VhdlParser::secondary_unit_declaration() {QCString s,s1;if (!hasError)
     jj_consume_token(SEMI_T);
     }
     
-return s+"="+s1;
+//printf("\n %s %s [%d]",s.data(),s1.data(),getLine());
+  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,s1.data(),Public);
+
+  return s+"="+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::selected_name() {QCString s,s1;if (!hasError) {
@@ -8427,7 +8466,7 @@ QCString VhdlParser::selected_name() {QCString s,s1;if (!hasError) {
     
 return s+"."+s1;
 assert(false);
-  }
+}
 
 
 void VhdlParser::selected_signal_assignment() {if (!hasError) {
@@ -8463,7 +8502,7 @@ void VhdlParser::selected_signal_assignment() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::selected_waveforms() {if (!hasError) {
@@ -8510,7 +8549,7 @@ void VhdlParser::selected_waveforms() {if (!hasError) {
     end_label_35: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::sensitivity_clause() {QCString s;if (!hasError) {
@@ -8525,7 +8564,7 @@ QCString VhdlParser::sensitivity_clause() {QCString s;if (!hasError) {
 s.prepend(" on ");
   return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::sensitivity_list() {QCString s,s1;if (!hasError) {
@@ -8562,13 +8601,13 @@ s+=",";s+=s1;
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::sequence_of_statement() {QCString s,s1;if (!hasError) {
     
     while (!hasError) {
-      if (jj_2_74(3)) {
+      if (jj_2_75(3)) {
         ;
       } else {
         goto end_label_37;
@@ -8587,11 +8626,11 @@ s+=s1;
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::sequential_statement() {QCString s;
-    if (jj_2_75(2147483647)) {if (!hasError) {
+    if (jj_2_76(2147483647)) {if (!hasError) {
       
       s = signal_assignment_statement();
       }
@@ -8600,7 +8639,7 @@ QCString VhdlParser::sequential_statement() {QCString s;
 FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
       }
       
-    } else if (jj_2_76(3)) {if (!hasError) {
+    } else if (jj_2_77(3)) {if (!hasError) {
       
       s = assertion_statement();
       }
@@ -8609,7 +8648,7 @@ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
 FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
       }
       
-    } else if (jj_2_77(3)) {if (!hasError) {
+    } else if (jj_2_78(3)) {if (!hasError) {
       
       s = report_statement();
       }
@@ -8618,7 +8657,7 @@ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
 FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
       }
       
-    } else if (jj_2_78(3)) {if (!hasError) {
+    } else if (jj_2_79(3)) {if (!hasError) {
       
       s = wait_statement();
       }
@@ -8627,7 +8666,7 @@ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
 FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
       }
       
-    } else if (jj_2_79(2147483647)) {if (!hasError) {
+    } else if (jj_2_80(2147483647)) {if (!hasError) {
       
       s = variable_assignment_statement();
       }
@@ -8636,7 +8675,7 @@ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
 FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
       }
       
-    } else if (jj_2_80(3)) {if (!hasError) {
+    } else if (jj_2_81(3)) {if (!hasError) {
       
       s = procedure_call_statement();
       }
@@ -8645,7 +8684,7 @@ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
 FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
       }
       
-    } else if (jj_2_81(3)) {if (!hasError) {
+    } else if (jj_2_82(3)) {if (!hasError) {
       
       if_statement();
       }
@@ -8654,7 +8693,7 @@ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
 return s;
       }
       
-    } else if (jj_2_82(3)) {if (!hasError) {
+    } else if (jj_2_83(3)) {if (!hasError) {
       
       case_statement();
       }
@@ -8663,7 +8702,7 @@ return s;
 return s;
       }
       
-    } else if (jj_2_83(3)) {if (!hasError) {
+    } else if (jj_2_84(3)) {if (!hasError) {
       
       loop_statement();
       }
@@ -8672,7 +8711,7 @@ return s;
 return s;
       }
       
-    } else if (jj_2_84(3)) {if (!hasError) {
+    } else if (jj_2_85(3)) {if (!hasError) {
       
       s = next_statement();
       }
@@ -8681,7 +8720,7 @@ return s;
 return s;
       }
       
-    } else if (jj_2_85(3)) {if (!hasError) {
+    } else if (jj_2_86(3)) {if (!hasError) {
       
       s = exit_statement();
       }
@@ -8690,7 +8729,7 @@ return s;
 return s;
       }
       
-    } else if (jj_2_86(3)) {if (!hasError) {
+    } else if (jj_2_87(3)) {if (!hasError) {
       
       s = return_statement();
       }
@@ -8721,7 +8760,7 @@ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::shift_expression() {QCString s,s1,s2;if (!hasError) {
@@ -8755,7 +8794,7 @@ QCString VhdlParser::shift_expression() {QCString s,s1,s2;if (!hasError) {
     
 return s+s1+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::shift_operator() {
@@ -8832,7 +8871,7 @@ return "ror";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::sign() {
@@ -8865,11 +8904,11 @@ return "-";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::signal_assignment_statement() {QCString s,s1,s2,s3;
-    if (jj_2_88(2147483647)) {if (!hasError) {
+    if (jj_2_89(2147483647)) {if (!hasError) {
       
       conditional_signal_assignment_wave();
       }
@@ -8878,7 +8917,7 @@ QCString VhdlParser::signal_assignment_statement() {QCString s,s1,s2,s3;
 return "";
       }
       
-    } else if (jj_2_89(2147483647)) {if (!hasError) {
+    } else if (jj_2_90(2147483647)) {if (!hasError) {
       
       selected_signal_assignment_wave();
       }
@@ -8895,7 +8934,7 @@ return "";
       case BASIC_IDENTIFIER:
       case EXTENDED_CHARACTER:{if (!hasError) {
         
-        if (jj_2_87(2)) {if (!hasError) {
+        if (jj_2_88(2)) {if (!hasError) {
           
           s = identifier();
           }
@@ -8959,7 +8998,7 @@ return s+s1+"<="+s2+s3+";";
       }
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::semi() {if (!hasError) {
@@ -8967,7 +9006,7 @@ void VhdlParser::semi() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::signal_declaration() {Token* tok=0;QCString s,s1,s2,s3,s4;if (!hasError) {
@@ -9030,7 +9069,7 @@ if(tok)
       s3.prepend(":=");
      s4=s1+s2+s3;
      addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public);
-  }
+}
 
 
 QCString VhdlParser::signal_kind() {
@@ -9063,7 +9102,7 @@ return "bus";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::signal_list() {QCString s,s1;
@@ -9133,7 +9172,7 @@ return "all";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::signature() {QCString s,s1,s2;if (!hasError) {
@@ -9215,7 +9254,7 @@ s+="return ";s+=s1;
     
 s1="["+s+"]";return s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::simple_expression() {QCString s,s1,s2;if (!hasError) {
@@ -9245,7 +9284,7 @@ s+=s1;
     if (!hasError) {
     
     while (!hasError) {
-      if (jj_2_90(2147483647)) {
+      if (jj_2_91(2147483647)) {
         ;
       } else {
         goto end_label_40;
@@ -9268,7 +9307,7 @@ s+=s1;s+=s2;
     
 return s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::simple_name() {if (!hasError) {
@@ -9276,7 +9315,7 @@ void VhdlParser::simple_name() {if (!hasError) {
     name();
     }
     
-  }
+}
 
 
 QCString VhdlParser::slice_name() {QCString s,s1;if (!hasError) {
@@ -9298,7 +9337,7 @@ QCString VhdlParser::slice_name() {QCString s,s1;if (!hasError) {
     
 return s+"("+s1+")";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::string_literal() {Token *tok=0;if (!hasError) {
@@ -9308,7 +9347,7 @@ QCString VhdlParser::string_literal() {Token *tok=0;if (!hasError) {
     
 return tok->image.c_str();
 assert(false);
-  }
+}
 
 
 void VhdlParser::subprogram_body() {QCString s;if (!hasError) {
@@ -9381,11 +9420,11 @@ if (s.data())
 tempEntry->endBodyLine=getLine(END_T);
       createFlow();
       currP=0;
-  }
+}
 
 
 void VhdlParser::subprogram_declaration() {
-    if (jj_2_91(2147483647)) {if (!hasError) {
+    if (jj_2_92(2147483647)) {if (!hasError) {
       
       subprogram_instantiation_declaration();
       }
@@ -9416,7 +9455,7 @@ currP=0;
         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
       }
     }
-  }
+}
 
 
 void VhdlParser::subprogram_1() {
@@ -9440,7 +9479,7 @@ void VhdlParser::subprogram_1() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 QCString VhdlParser::subprogram_declarative_item() {QCString s;
@@ -9539,7 +9578,7 @@ return s;
       }
     default:
       jj_la1[214] = jj_gen;
-      if (jj_2_92(2147483647)) {if (!hasError) {
+      if (jj_2_93(2147483647)) {if (!hasError) {
         
         s = attribute_declaration();
         }
@@ -9574,7 +9613,7 @@ return s;
           }
         default:
           jj_la1[215] = jj_gen;
-          if (jj_2_93(3)) {if (!hasError) {
+          if (jj_2_94(3)) {if (!hasError) {
             
             s = group_template_declaration();
             }
@@ -9606,7 +9645,7 @@ return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::subprogram_declarative_part() {QCString s,s1;if (!hasError) {
@@ -9649,7 +9688,7 @@ s+=s1;
     
 return s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::subprogram_kind() {
@@ -9673,7 +9712,7 @@ void VhdlParser::subprogram_kind() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 void VhdlParser::subprogram_specification() {QCString s;Token *tok=0;Token *t;
@@ -9727,7 +9766,7 @@ param_sec=0;
       }
       if (!hasError) {
       
-      if (jj_2_94(2)) {if (!hasError) {
+      if (jj_2_95(2)) {if (!hasError) {
         
         gen_interface_list();
         }
@@ -9738,7 +9777,7 @@ param_sec=0;
       }
       if (!hasError) {
       
-      if (jj_2_95(2)) {if (!hasError) {
+      if (jj_2_96(2)) {if (!hasError) {
         
         gen_assoc_list();
         }
@@ -9867,7 +9906,7 @@ tempEntry=current;
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 void VhdlParser::subprogram_statement_part() {if (!hasError) {
@@ -9907,7 +9946,7 @@ void VhdlParser::subprogram_statement_part() {if (!hasError) {
     end_label_42: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::subtype_declaration() {QCString s,s1;if (!hasError) {
@@ -9934,7 +9973,7 @@ QCString VhdlParser::subtype_declaration() {QCString s,s1;if (!hasError) {
 addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SUBTYPE,0,s1.data(),Public);
   return " subtype "+s+" is "+s1+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::subtype_indication() {QCString s,s1,s2;if (!hasError) {
@@ -9943,7 +9982,7 @@ QCString VhdlParser::subtype_indication() {QCString s,s1,s2;if (!hasError) {
     }
     if (!hasError) {
     
-    if (jj_2_96(2147483647)) {if (!hasError) {
+    if (jj_2_97(2147483647)) {if (!hasError) {
       
       s1 = name();
       }
@@ -9954,7 +9993,7 @@ QCString VhdlParser::subtype_indication() {QCString s,s1,s2;if (!hasError) {
     }
     if (!hasError) {
     
-    if (jj_2_97(2147483647)) {if (!hasError) {
+    if (jj_2_98(2147483647)) {if (!hasError) {
       
       s2 = constraint();
       }
@@ -9966,11 +10005,11 @@ QCString VhdlParser::subtype_indication() {QCString s,s1,s2;if (!hasError) {
     
 return s+" "+s1+" "+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::suffix() {QCString s;
-    if (jj_2_98(2147483647)) {if (!hasError) {
+    if (jj_2_99(2147483647)) {if (!hasError) {
       
       s = name();
       }
@@ -10021,7 +10060,7 @@ return " all ";
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::target() {QCString s;
@@ -10057,7 +10096,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::term() {QCString s,s1,s2;if (!hasError) {
@@ -10067,7 +10106,7 @@ QCString VhdlParser::term() {QCString s,s1,s2;if (!hasError) {
     if (!hasError) {
     
     while (!hasError) {
-      if (jj_2_99(2)) {
+      if (jj_2_100(2)) {
         ;
       } else {
         goto end_label_43;
@@ -10090,7 +10129,7 @@ s+=s1;s+=s2;
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::timeout_clause() {QCString s;if (!hasError) {
@@ -10104,7 +10143,7 @@ QCString VhdlParser::timeout_clause() {QCString s;if (!hasError) {
     
 return " for "+s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::type_conversion() {QCString s,s1;if (!hasError) {
@@ -10126,11 +10165,11 @@ QCString VhdlParser::type_conversion() {QCString s,s1;if (!hasError) {
     
 return s+"("+s1+")";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::type_declaration() {QCString s;
-    if (jj_2_100(3)) {if (!hasError) {
+    if (jj_2_101(3)) {if (!hasError) {
       
       s = full_type_declaration();
       }
@@ -10159,7 +10198,7 @@ return s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::type_definition() {QCString s;
@@ -10213,7 +10252,7 @@ return s;
       }
     default:
       jj_la1[228] = jj_gen;
-      if (jj_2_101(2)) {if (!hasError) {
+      if (jj_2_102(2)) {if (!hasError) {
         
         protected_type_body();
         }
@@ -10243,7 +10282,7 @@ return "";
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::type_mark() {QCString s;if (!hasError) {
@@ -10253,7 +10292,7 @@ QCString VhdlParser::type_mark() {QCString s;if (!hasError) {
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::unconstraint_array_definition() {QCString s,s1,s2,s3;if (!hasError) {
@@ -10310,7 +10349,7 @@ s3+=",";s3+=s1;
     
 return "array("+s+s3+") of "+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::use_clause() {QCString s,s1;if (!hasError) {
@@ -10366,7 +10405,7 @@ QStringList ql1=QStringList::split(",",s,FALSE);
                    s1="use "+s;
                    return s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::variable_assignment_statement() {QCString s,s1,s2;
@@ -10377,7 +10416,7 @@ QCString VhdlParser::variable_assignment_statement() {QCString s,s1,s2;
     case BASIC_IDENTIFIER:
     case EXTENDED_CHARACTER:{if (!hasError) {
       
-      if (jj_2_102(2)) {if (!hasError) {
+      if (jj_2_103(2)) {if (!hasError) {
         
         s = identifier();
         }
@@ -10434,7 +10473,7 @@ return "";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::variable_declaration() {Token *tok=0;Token *t1=0;QCString s,s1,s2;if (!hasError) {
@@ -10513,7 +10552,7 @@ int spec;
     addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public);
     return val;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::wait_statement() {QCString s,s1,s2,s3;Token *t=0;if (!hasError) {
@@ -10593,7 +10632,7 @@ QCString VhdlParser::wait_statement() {QCString s,s1,s2,s3;Token *t=0;if (!hasEr
 if(t) s.append(":");
   return s+" wait "+s1+s2+s3+";";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::waveform() {QCString s,s1;
@@ -10668,7 +10707,7 @@ return " unaffected ";
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::waveform_element() {QCString s,s1;if (!hasError) {
@@ -10701,7 +10740,7 @@ s1.prepend(" after ");
     
 return s+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::protected_type_body() {if (!hasError) {
@@ -10747,7 +10786,7 @@ QCString VhdlParser::protected_type_body() {if (!hasError) {
     
 return "";
 assert(false);
-  }
+}
 
 
 void VhdlParser::protected_type_body_declarative_item() {
@@ -10814,7 +10853,7 @@ void VhdlParser::protected_type_body_declarative_item() {
       }
     default:
       jj_la1[243] = jj_gen;
-      if (jj_2_103(2147483647)) {if (!hasError) {
+      if (jj_2_104(2147483647)) {if (!hasError) {
         
         attribute_declaration();
         }
@@ -10837,7 +10876,7 @@ void VhdlParser::protected_type_body_declarative_item() {
           }
         default:
           jj_la1[244] = jj_gen;
-          if (jj_2_104(3)) {if (!hasError) {
+          if (jj_2_105(3)) {if (!hasError) {
             
             group_template_declaration();
             }
@@ -10860,7 +10899,7 @@ void VhdlParser::protected_type_body_declarative_item() {
         }
       }
     }
-  }
+}
 
 
 void VhdlParser::protected_type_body_declarative_part() {if (!hasError) {
@@ -10897,7 +10936,7 @@ void VhdlParser::protected_type_body_declarative_part() {if (!hasError) {
     end_label_47: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::protected_type_declaration() {if (!hasError) {
@@ -10942,7 +10981,7 @@ error_skipto(END_T);
     
 return "";
 assert(false);
-  }
+}
 
 
 void VhdlParser::protected_type_declarative_item() {
@@ -10976,7 +11015,7 @@ void VhdlParser::protected_type_declarative_item() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 void VhdlParser::protected_type_declarative_part() {if (!hasError) {
@@ -11008,7 +11047,7 @@ void VhdlParser::protected_type_declarative_part() {if (!hasError) {
     end_label_48: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::context_ref() {QCString s;if (!hasError) {
@@ -11026,7 +11065,7 @@ QCString VhdlParser::context_ref() {QCString s;if (!hasError) {
     
 return "context "+s ;
 assert(false);
-  }
+}
 
 
 void VhdlParser::context_declaration() {QCString s,s1;if (!hasError) {
@@ -11108,7 +11147,7 @@ parse_sec=CONTEXT_SEC;
     
 parse_sec=0;
                           addVhdlType(s.data(),getLine(LIBRARY_T),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,"context",s1.data(),Public);
-  }
+}
 
 
 QCString VhdlParser::libustcont_stats() {QCString s;
@@ -11152,7 +11191,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 void VhdlParser::package_instantiation_declaration() {QCString s,s1,s2;if (!hasError) {
@@ -11201,7 +11240,7 @@ void VhdlParser::package_instantiation_declaration() {QCString s,s1,s2;if (!hasE
     
 QCString q=" is new "+s1+s2;
       addVhdlType(s.data(),getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public);
-  }
+}
 
 
 QCString VhdlParser::interface_package_declaration() {QCString s,s1;if (!hasError) {
@@ -11243,7 +11282,7 @@ QCString VhdlParser::interface_package_declaration() {QCString s,s1;if (!hasErro
 current->name=s;
                             return "package "+s+" is new "+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::subprogram_instantiation_declaration() {QCString s,s1,s2;if (!hasError) {
@@ -11294,7 +11333,7 @@ QCString q= " is new "+s1+s2;
       addVhdlType(s.data(),getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public);
     return q;
 assert(false);
-  }
+}
 
 
 void VhdlParser::gen_assoc_list() {if (!hasError) {
@@ -11318,7 +11357,7 @@ void VhdlParser::gen_assoc_list() {if (!hasError) {
     jj_consume_token(RPAREN_T);
     }
     
-  }
+}
 
 
 void VhdlParser::gen_interface_list() {if (!hasError) {
@@ -11348,7 +11387,7 @@ void VhdlParser::gen_interface_list() {if (!hasError) {
     jj_consume_token(RPAREN_T);
     }
     
-  }
+}
 
 
 void VhdlParser::case_scheme() {if (!hasError) {
@@ -11369,7 +11408,7 @@ void VhdlParser::case_scheme() {if (!hasError) {
     }
     if (!hasError) {
     
-    if (jj_2_105(3)) {if (!hasError) {
+    if (jj_2_106(3)) {if (!hasError) {
       
       ttend();
       }
@@ -11395,7 +11434,7 @@ void VhdlParser::case_scheme() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::when_stats() {if (!hasError) {
@@ -11406,7 +11445,7 @@ void VhdlParser::when_stats() {if (!hasError) {
       }
       if (!hasError) {
       
-      if (jj_2_106(2)) {if (!hasError) {
+      if (jj_2_107(2)) {if (!hasError) {
         
         label();
         }
@@ -11445,7 +11484,7 @@ void VhdlParser::when_stats() {if (!hasError) {
     end_label_50: ;
     }
     
-  }
+}
 
 
 void VhdlParser::ttend() {if (!hasError) {
@@ -11473,7 +11512,7 @@ void VhdlParser::ttend() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::generate_statement_body() {if (!hasError) {
@@ -11485,7 +11524,7 @@ void VhdlParser::generate_statement_body() {if (!hasError) {
     generate_statement_body();
     }
     
-  }
+}
 
 
 void VhdlParser::generate_statement_body1() {if (!hasError) {
@@ -11512,7 +11551,7 @@ void VhdlParser::generate_statement_body1() {if (!hasError) {
     case VARIABLE_T:{if (!hasError) {
       
       while (!hasError) {
-        if (jj_2_107(2147483647)) {
+        if (jj_2_108(2147483647)) {
           ;
         } else {
           goto end_label_51;
@@ -11566,7 +11605,7 @@ void VhdlParser::generate_statement_body1() {if (!hasError) {
     end_label_52: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::external_name() {QCString s,s1,s2;if (!hasError) {
@@ -11598,7 +11637,7 @@ QCString t="<<"+s;
                          QCString t1=s1+":"+s2+">>";
                          return   s+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::sig_stat() {Token *t;
@@ -11642,7 +11681,7 @@ return t->image.data();
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::external_pathname() {QCString s;
@@ -11686,11 +11725,11 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::absolute_pathname() {QCString s,s1;
-    if (jj_2_108(2147483647)) {if (!hasError) {
+    if (jj_2_109(2147483647)) {if (!hasError) {
       
       jj_consume_token(DOT_T);
       }
@@ -11731,7 +11770,7 @@ return "."+s;
       }
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::relative_pathname() {QCString s,s1,s2;if (!hasError) {
@@ -11740,7 +11779,7 @@ QCString VhdlParser::relative_pathname() {QCString s,s1,s2;if (!hasError) {
     }
     if (!hasError) {
     
-    if (jj_2_109(2147483647)) {if (!hasError) {
+    if (jj_2_110(2147483647)) {if (!hasError) {
       
       s1 = pathname_element_list();
       }
@@ -11756,7 +11795,7 @@ QCString VhdlParser::relative_pathname() {QCString s,s1,s2;if (!hasError) {
     
 return s+s1+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::neg_list() {QCString s;if (!hasError) {
@@ -11789,7 +11828,7 @@ s+="^.";
     
 return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::pathname_element() {QCString s,s1;if (!hasError) {
@@ -11825,7 +11864,7 @@ if(!s1.isEmpty())
 
     return s;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::pathname_element_list() {QCString s,s1,s2;if (!hasError) {
@@ -11846,7 +11885,7 @@ s+=".";
     if (!hasError) {
     
     while (!hasError) {
-      if (jj_2_110(2147483647)) {
+      if (jj_2_111(2147483647)) {
         ;
       } else {
         goto end_label_54;
@@ -11869,7 +11908,7 @@ s2+=s1;s2+=".";
     
 return s+s2;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::package_path_name() {QCString s;if (!hasError) {
@@ -11883,11 +11922,11 @@ QCString VhdlParser::package_path_name() {QCString s;if (!hasError) {
     
 return "@"+s;
 assert(false);
-  }
+}
 
 
 void VhdlParser::conditional_signal_assignment_wave() {
-    if (jj_2_111(2147483647)) {if (!hasError) {
+    if (jj_2_112(2147483647)) {if (!hasError) {
       
       conditional_force_assignment();
       }
@@ -11911,7 +11950,7 @@ void VhdlParser::conditional_signal_assignment_wave() {
         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
       }
     }
-  }
+}
 
 
 void VhdlParser::conditional_waveform_assignment() {if (!hasError) {
@@ -11971,7 +12010,7 @@ void VhdlParser::conditional_waveform_assignment() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::else_wave_list() {if (!hasError) {
@@ -12002,7 +12041,7 @@ void VhdlParser::else_wave_list() {if (!hasError) {
     }
     }
     
-  }
+}
 
 
 void VhdlParser::conditional_force_assignment() {if (!hasError) {
@@ -12080,11 +12119,11 @@ void VhdlParser::conditional_force_assignment() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::selected_signal_assignment_wave() {
-    if (jj_2_112(2147483647)) {if (!hasError) {
+    if (jj_2_113(2147483647)) {if (!hasError) {
       
       selected_force_assignment();
       }
@@ -12104,7 +12143,7 @@ void VhdlParser::selected_signal_assignment_wave() {
         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
       }
     }
-  }
+}
 
 
 void VhdlParser::selected_variable_assignment() {if (!hasError) {
@@ -12147,11 +12186,11 @@ void VhdlParser::selected_variable_assignment() {if (!hasError) {
     sel_var_list();
     }
     
-  }
+}
 
 
 void VhdlParser::select_name() {
-    if (jj_2_113(2147483647)) {if (!hasError) {
+    if (jj_2_114(2147483647)) {if (!hasError) {
       
       aggregate();
       }
@@ -12174,7 +12213,7 @@ void VhdlParser::select_name() {
         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
       }
     }
-  }
+}
 
 
 void VhdlParser::selected_waveform_assignment() {if (!hasError) {
@@ -12234,7 +12273,7 @@ void VhdlParser::selected_waveform_assignment() {if (!hasError) {
     sel_wave_list();
     }
     
-  }
+}
 
 
 void VhdlParser::selected_force_assignment() {if (!hasError) {
@@ -12297,7 +12336,7 @@ void VhdlParser::selected_force_assignment() {if (!hasError) {
     sel_var_list();
     }
     
-  }
+}
 
 
 void VhdlParser::sel_var_list() {if (!hasError) {
@@ -12341,7 +12380,7 @@ void VhdlParser::sel_var_list() {if (!hasError) {
     if (!hasError) {
     
     while (!hasError) {
-      if (jj_2_114(2147483647)) {
+      if (jj_2_115(2147483647)) {
         ;
       } else {
         goto end_label_55;
@@ -12385,7 +12424,7 @@ void VhdlParser::sel_var_list() {if (!hasError) {
     end_label_55: ;
     }
     
-  }
+}
 
 
 void VhdlParser::sel_wave_list() {if (!hasError) {
@@ -12428,7 +12467,7 @@ void VhdlParser::sel_wave_list() {if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-  }
+}
 
 
 void VhdlParser::inout_stat() {
@@ -12452,7 +12491,7 @@ void VhdlParser::inout_stat() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
 void VhdlParser::else_stat() {if (!hasError) {
@@ -12498,7 +12537,7 @@ void VhdlParser::else_stat() {if (!hasError) {
     end_label_57: ;
     }
     
-  }
+}
 
 
 QCString VhdlParser::interface_subprogram_declaration() {QCString s;
@@ -12533,7 +12572,7 @@ return s;
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::iproc() {QCString s,s1;if (!hasError) {
@@ -12552,7 +12591,7 @@ QCString VhdlParser::iproc() {QCString s,s1;if (!hasError) {
 current->name=s;
   return "procedure "+s+s1;
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::ifunc() {QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;if (!hasError) {
@@ -12666,7 +12705,7 @@ QCString q;
                     }
          currP=0;return "";
 assert(false);
-  }
+}
 
 
 QCString VhdlParser::param() {QCString s,s1;Token *tok=0;if (!hasError) {
@@ -12719,7 +12758,7 @@ if(tok)
                     }
                       return s+"("+s1+")";
 assert(false);
-  }
+}
 
 
 void VhdlParser::parseInline() {
@@ -12749,7 +12788,7 @@ void VhdlParser::parseInline() {
       jj_consume_token(-1);
       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
     }
-  }
+}
 
 
  VhdlParser::VhdlParser(TokenManager *tm){
@@ -12812,7 +12851,7 @@ Token * VhdlParser::jj_consume_token(int kind)  {
       jj_gen++;
       if (++jj_gc > 100) {
         jj_gc = 0;
-        for (int i = 0; i < 114; i++) {
+        for (int i = 0; i < 115; i++) {
           JJCalls *c = &jj_2_rtns[i];
           while (c != NULL) {
             if (c->gen < jj_gen) c->first = NULL;
@@ -12825,7 +12864,8 @@ Token * VhdlParser::jj_consume_token(int kind)  {
     token = oldToken;
     jj_kind = kind;
     JAVACC_STRING_TYPE image = kind >= 0 ? tokenImage[kind] : tokenImage[0];
-    errorHandler->handleUnexpectedToken(kind, image.substr(1, image.size() - 2), getToken(1), this), hasError = true;
+    errorHandler->handleUnexpectedToken(kind, image.substr(1, image.size() - 2), getToken(1), this);
+    hasError = true;
     return token;
   }
 
@@ -12900,7 +12940,7 @@ int VhdlParser::jj_ntk_f(){
 
   void VhdlParser::jj_rescan_token(){
     jj_rescan = true;
-    for (int i = 0; i < 114; i++) {
+    for (int i = 0; i < 115; i++) {
       JJCalls *p = &jj_2_rtns[i];
       do {
         if (p->gen > jj_gen) {
@@ -13020,6 +13060,7 @@ int VhdlParser::jj_ntk_f(){
             case 111: jj_3_112(); break;
             case 112: jj_3_113(); break;
             case 113: jj_3_114(); break;
+            case 114: jj_3_115(); break;
           }
         }
         p = p->next;
diff --git a/vhdlparser/VhdlParser.h b/vhdlparser/VhdlParser.h
index 91bf32d..08a9a63 100644
--- a/vhdlparser/VhdlParser.h
+++ b/vhdlparser/VhdlParser.h
@@ -582,7 +582,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_1() || jj_done;
+    return (!jj_3_1() || jj_done);
  { jj_save(0, xla); }
   }
 
@@ -590,7 +590,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_2() || jj_done;
+    return (!jj_3_2() || jj_done);
  { jj_save(1, xla); }
   }
 
@@ -598,7 +598,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_3() || jj_done;
+    return (!jj_3_3() || jj_done);
  { jj_save(2, xla); }
   }
 
@@ -606,7 +606,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_4() || jj_done;
+    return (!jj_3_4() || jj_done);
  { jj_save(3, xla); }
   }
 
@@ -614,7 +614,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_5() || jj_done;
+    return (!jj_3_5() || jj_done);
  { jj_save(4, xla); }
   }
 
@@ -622,7 +622,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_6() || jj_done;
+    return (!jj_3_6() || jj_done);
  { jj_save(5, xla); }
   }
 
@@ -630,7 +630,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_7() || jj_done;
+    return (!jj_3_7() || jj_done);
  { jj_save(6, xla); }
   }
 
@@ -638,7 +638,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_8() || jj_done;
+    return (!jj_3_8() || jj_done);
  { jj_save(7, xla); }
   }
 
@@ -646,7 +646,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_9() || jj_done;
+    return (!jj_3_9() || jj_done);
  { jj_save(8, xla); }
   }
 
@@ -654,7 +654,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_10() || jj_done;
+    return (!jj_3_10() || jj_done);
  { jj_save(9, xla); }
   }
 
@@ -662,7 +662,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_11() || jj_done;
+    return (!jj_3_11() || jj_done);
  { jj_save(10, xla); }
   }
 
@@ -670,7 +670,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_12() || jj_done;
+    return (!jj_3_12() || jj_done);
  { jj_save(11, xla); }
   }
 
@@ -678,7 +678,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_13() || jj_done;
+    return (!jj_3_13() || jj_done);
  { jj_save(12, xla); }
   }
 
@@ -686,7 +686,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_14() || jj_done;
+    return (!jj_3_14() || jj_done);
  { jj_save(13, xla); }
   }
 
@@ -694,7 +694,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_15() || jj_done;
+    return (!jj_3_15() || jj_done);
  { jj_save(14, xla); }
   }
 
@@ -702,7 +702,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_16() || jj_done;
+    return (!jj_3_16() || jj_done);
  { jj_save(15, xla); }
   }
 
@@ -710,7 +710,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_17() || jj_done;
+    return (!jj_3_17() || jj_done);
  { jj_save(16, xla); }
   }
 
@@ -718,7 +718,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_18() || jj_done;
+    return (!jj_3_18() || jj_done);
  { jj_save(17, xla); }
   }
 
@@ -726,7 +726,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_19() || jj_done;
+    return (!jj_3_19() || jj_done);
  { jj_save(18, xla); }
   }
 
@@ -734,7 +734,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_20() || jj_done;
+    return (!jj_3_20() || jj_done);
  { jj_save(19, xla); }
   }
 
@@ -742,7 +742,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_21() || jj_done;
+    return (!jj_3_21() || jj_done);
  { jj_save(20, xla); }
   }
 
@@ -750,7 +750,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_22() || jj_done;
+    return (!jj_3_22() || jj_done);
  { jj_save(21, xla); }
   }
 
@@ -758,7 +758,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_23() || jj_done;
+    return (!jj_3_23() || jj_done);
  { jj_save(22, xla); }
   }
 
@@ -766,7 +766,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_24() || jj_done;
+    return (!jj_3_24() || jj_done);
  { jj_save(23, xla); }
   }
 
@@ -774,7 +774,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_25() || jj_done;
+    return (!jj_3_25() || jj_done);
  { jj_save(24, xla); }
   }
 
@@ -782,7 +782,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_26() || jj_done;
+    return (!jj_3_26() || jj_done);
  { jj_save(25, xla); }
   }
 
@@ -790,7 +790,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_27() || jj_done;
+    return (!jj_3_27() || jj_done);
  { jj_save(26, xla); }
   }
 
@@ -798,7 +798,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_28() || jj_done;
+    return (!jj_3_28() || jj_done);
  { jj_save(27, xla); }
   }
 
@@ -806,7 +806,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_29() || jj_done;
+    return (!jj_3_29() || jj_done);
  { jj_save(28, xla); }
   }
 
@@ -814,7 +814,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_30() || jj_done;
+    return (!jj_3_30() || jj_done);
  { jj_save(29, xla); }
   }
 
@@ -822,7 +822,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_31() || jj_done;
+    return (!jj_3_31() || jj_done);
  { jj_save(30, xla); }
   }
 
@@ -830,7 +830,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_32() || jj_done;
+    return (!jj_3_32() || jj_done);
  { jj_save(31, xla); }
   }
 
@@ -838,7 +838,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_33() || jj_done;
+    return (!jj_3_33() || jj_done);
  { jj_save(32, xla); }
   }
 
@@ -846,7 +846,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_34() || jj_done;
+    return (!jj_3_34() || jj_done);
  { jj_save(33, xla); }
   }
 
@@ -854,7 +854,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_35() || jj_done;
+    return (!jj_3_35() || jj_done);
  { jj_save(34, xla); }
   }
 
@@ -862,7 +862,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_36() || jj_done;
+    return (!jj_3_36() || jj_done);
  { jj_save(35, xla); }
   }
 
@@ -870,7 +870,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_37() || jj_done;
+    return (!jj_3_37() || jj_done);
  { jj_save(36, xla); }
   }
 
@@ -878,7 +878,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_38() || jj_done;
+    return (!jj_3_38() || jj_done);
  { jj_save(37, xla); }
   }
 
@@ -886,7 +886,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_39() || jj_done;
+    return (!jj_3_39() || jj_done);
  { jj_save(38, xla); }
   }
 
@@ -894,7 +894,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_40() || jj_done;
+    return (!jj_3_40() || jj_done);
  { jj_save(39, xla); }
   }
 
@@ -902,7 +902,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_41() || jj_done;
+    return (!jj_3_41() || jj_done);
  { jj_save(40, xla); }
   }
 
@@ -910,7 +910,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_42() || jj_done;
+    return (!jj_3_42() || jj_done);
  { jj_save(41, xla); }
   }
 
@@ -918,7 +918,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_43() || jj_done;
+    return (!jj_3_43() || jj_done);
  { jj_save(42, xla); }
   }
 
@@ -926,7 +926,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_44() || jj_done;
+    return (!jj_3_44() || jj_done);
  { jj_save(43, xla); }
   }
 
@@ -934,7 +934,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_45() || jj_done;
+    return (!jj_3_45() || jj_done);
  { jj_save(44, xla); }
   }
 
@@ -942,7 +942,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_46() || jj_done;
+    return (!jj_3_46() || jj_done);
  { jj_save(45, xla); }
   }
 
@@ -950,7 +950,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_47() || jj_done;
+    return (!jj_3_47() || jj_done);
  { jj_save(46, xla); }
   }
 
@@ -958,7 +958,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_48() || jj_done;
+    return (!jj_3_48() || jj_done);
  { jj_save(47, xla); }
   }
 
@@ -966,7 +966,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_49() || jj_done;
+    return (!jj_3_49() || jj_done);
  { jj_save(48, xla); }
   }
 
@@ -974,7 +974,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_50() || jj_done;
+    return (!jj_3_50() || jj_done);
  { jj_save(49, xla); }
   }
 
@@ -982,7 +982,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_51() || jj_done;
+    return (!jj_3_51() || jj_done);
  { jj_save(50, xla); }
   }
 
@@ -990,7 +990,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_52() || jj_done;
+    return (!jj_3_52() || jj_done);
  { jj_save(51, xla); }
   }
 
@@ -998,7 +998,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_53() || jj_done;
+    return (!jj_3_53() || jj_done);
  { jj_save(52, xla); }
   }
 
@@ -1006,7 +1006,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_54() || jj_done;
+    return (!jj_3_54() || jj_done);
  { jj_save(53, xla); }
   }
 
@@ -1014,7 +1014,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_55() || jj_done;
+    return (!jj_3_55() || jj_done);
  { jj_save(54, xla); }
   }
 
@@ -1022,7 +1022,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_56() || jj_done;
+    return (!jj_3_56() || jj_done);
  { jj_save(55, xla); }
   }
 
@@ -1030,7 +1030,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_57() || jj_done;
+    return (!jj_3_57() || jj_done);
  { jj_save(56, xla); }
   }
 
@@ -1038,7 +1038,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_58() || jj_done;
+    return (!jj_3_58() || jj_done);
  { jj_save(57, xla); }
   }
 
@@ -1046,7 +1046,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_59() || jj_done;
+    return (!jj_3_59() || jj_done);
  { jj_save(58, xla); }
   }
 
@@ -1054,7 +1054,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_60() || jj_done;
+    return (!jj_3_60() || jj_done);
  { jj_save(59, xla); }
   }
 
@@ -1062,7 +1062,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_61() || jj_done;
+    return (!jj_3_61() || jj_done);
  { jj_save(60, xla); }
   }
 
@@ -1070,7 +1070,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_62() || jj_done;
+    return (!jj_3_62() || jj_done);
  { jj_save(61, xla); }
   }
 
@@ -1078,7 +1078,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_63() || jj_done;
+    return (!jj_3_63() || jj_done);
  { jj_save(62, xla); }
   }
 
@@ -1086,7 +1086,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_64() || jj_done;
+    return (!jj_3_64() || jj_done);
  { jj_save(63, xla); }
   }
 
@@ -1094,7 +1094,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_65() || jj_done;
+    return (!jj_3_65() || jj_done);
  { jj_save(64, xla); }
   }
 
@@ -1102,7 +1102,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_66() || jj_done;
+    return (!jj_3_66() || jj_done);
  { jj_save(65, xla); }
   }
 
@@ -1110,7 +1110,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_67() || jj_done;
+    return (!jj_3_67() || jj_done);
  { jj_save(66, xla); }
   }
 
@@ -1118,7 +1118,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_68() || jj_done;
+    return (!jj_3_68() || jj_done);
  { jj_save(67, xla); }
   }
 
@@ -1126,7 +1126,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_69() || jj_done;
+    return (!jj_3_69() || jj_done);
  { jj_save(68, xla); }
   }
 
@@ -1134,7 +1134,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_70() || jj_done;
+    return (!jj_3_70() || jj_done);
  { jj_save(69, xla); }
   }
 
@@ -1142,7 +1142,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_71() || jj_done;
+    return (!jj_3_71() || jj_done);
  { jj_save(70, xla); }
   }
 
@@ -1150,7 +1150,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_72() || jj_done;
+    return (!jj_3_72() || jj_done);
  { jj_save(71, xla); }
   }
 
@@ -1158,7 +1158,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_73() || jj_done;
+    return (!jj_3_73() || jj_done);
  { jj_save(72, xla); }
   }
 
@@ -1166,7 +1166,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_74() || jj_done;
+    return (!jj_3_74() || jj_done);
  { jj_save(73, xla); }
   }
 
@@ -1174,7 +1174,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_75() || jj_done;
+    return (!jj_3_75() || jj_done);
  { jj_save(74, xla); }
   }
 
@@ -1182,7 +1182,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_76() || jj_done;
+    return (!jj_3_76() || jj_done);
  { jj_save(75, xla); }
   }
 
@@ -1190,7 +1190,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_77() || jj_done;
+    return (!jj_3_77() || jj_done);
  { jj_save(76, xla); }
   }
 
@@ -1198,7 +1198,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_78() || jj_done;
+    return (!jj_3_78() || jj_done);
  { jj_save(77, xla); }
   }
 
@@ -1206,7 +1206,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_79() || jj_done;
+    return (!jj_3_79() || jj_done);
  { jj_save(78, xla); }
   }
 
@@ -1214,7 +1214,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_80() || jj_done;
+    return (!jj_3_80() || jj_done);
  { jj_save(79, xla); }
   }
 
@@ -1222,7 +1222,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_81() || jj_done;
+    return (!jj_3_81() || jj_done);
  { jj_save(80, xla); }
   }
 
@@ -1230,7 +1230,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_82() || jj_done;
+    return (!jj_3_82() || jj_done);
  { jj_save(81, xla); }
   }
 
@@ -1238,7 +1238,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_83() || jj_done;
+    return (!jj_3_83() || jj_done);
  { jj_save(82, xla); }
   }
 
@@ -1246,7 +1246,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_84() || jj_done;
+    return (!jj_3_84() || jj_done);
  { jj_save(83, xla); }
   }
 
@@ -1254,7 +1254,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_85() || jj_done;
+    return (!jj_3_85() || jj_done);
  { jj_save(84, xla); }
   }
 
@@ -1262,7 +1262,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_86() || jj_done;
+    return (!jj_3_86() || jj_done);
  { jj_save(85, xla); }
   }
 
@@ -1270,7 +1270,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_87() || jj_done;
+    return (!jj_3_87() || jj_done);
  { jj_save(86, xla); }
   }
 
@@ -1278,7 +1278,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_88() || jj_done;
+    return (!jj_3_88() || jj_done);
  { jj_save(87, xla); }
   }
 
@@ -1286,7 +1286,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_89() || jj_done;
+    return (!jj_3_89() || jj_done);
  { jj_save(88, xla); }
   }
 
@@ -1294,7 +1294,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_90() || jj_done;
+    return (!jj_3_90() || jj_done);
  { jj_save(89, xla); }
   }
 
@@ -1302,7 +1302,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_91() || jj_done;
+    return (!jj_3_91() || jj_done);
  { jj_save(90, xla); }
   }
 
@@ -1310,7 +1310,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_92() || jj_done;
+    return (!jj_3_92() || jj_done);
  { jj_save(91, xla); }
   }
 
@@ -1318,7 +1318,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_93() || jj_done;
+    return (!jj_3_93() || jj_done);
  { jj_save(92, xla); }
   }
 
@@ -1326,7 +1326,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_94() || jj_done;
+    return (!jj_3_94() || jj_done);
  { jj_save(93, xla); }
   }
 
@@ -1334,7 +1334,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_95() || jj_done;
+    return (!jj_3_95() || jj_done);
  { jj_save(94, xla); }
   }
 
@@ -1342,7 +1342,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_96() || jj_done;
+    return (!jj_3_96() || jj_done);
  { jj_save(95, xla); }
   }
 
@@ -1350,7 +1350,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_97() || jj_done;
+    return (!jj_3_97() || jj_done);
  { jj_save(96, xla); }
   }
 
@@ -1358,7 +1358,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_98() || jj_done;
+    return (!jj_3_98() || jj_done);
  { jj_save(97, xla); }
   }
 
@@ -1366,7 +1366,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_99() || jj_done;
+    return (!jj_3_99() || jj_done);
  { jj_save(98, xla); }
   }
 
@@ -1374,7 +1374,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_100() || jj_done;
+    return (!jj_3_100() || jj_done);
  { jj_save(99, xla); }
   }
 
@@ -1382,7 +1382,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_101() || jj_done;
+    return (!jj_3_101() || jj_done);
  { jj_save(100, xla); }
   }
 
@@ -1390,7 +1390,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_102() || jj_done;
+    return (!jj_3_102() || jj_done);
  { jj_save(101, xla); }
   }
 
@@ -1398,7 +1398,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_103() || jj_done;
+    return (!jj_3_103() || jj_done);
  { jj_save(102, xla); }
   }
 
@@ -1406,7 +1406,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_104() || jj_done;
+    return (!jj_3_104() || jj_done);
  { jj_save(103, xla); }
   }
 
@@ -1414,7 +1414,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_105() || jj_done;
+    return (!jj_3_105() || jj_done);
  { jj_save(104, xla); }
   }
 
@@ -1422,7 +1422,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_106() || jj_done;
+    return (!jj_3_106() || jj_done);
  { jj_save(105, xla); }
   }
 
@@ -1430,7 +1430,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_107() || jj_done;
+    return (!jj_3_107() || jj_done);
  { jj_save(106, xla); }
   }
 
@@ -1438,7 +1438,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_108() || jj_done;
+    return (!jj_3_108() || jj_done);
  { jj_save(107, xla); }
   }
 
@@ -1446,7 +1446,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_109() || jj_done;
+    return (!jj_3_109() || jj_done);
  { jj_save(108, xla); }
   }
 
@@ -1454,7 +1454,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_110() || jj_done;
+    return (!jj_3_110() || jj_done);
  { jj_save(109, xla); }
   }
 
@@ -1462,7 +1462,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_111() || jj_done;
+    return (!jj_3_111() || jj_done);
  { jj_save(110, xla); }
   }
 
@@ -1470,7 +1470,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_112() || jj_done;
+    return (!jj_3_112() || jj_done);
  { jj_save(111, xla); }
   }
 
@@ -1478,7 +1478,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_113() || jj_done;
+    return (!jj_3_113() || jj_done);
  { jj_save(112, xla); }
   }
 
@@ -1486,76 +1486,16 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return !jj_3_114() || jj_done;
+    return (!jj_3_114() || jj_done);
  { jj_save(113, xla); }
   }
 
- inline bool jj_3R_257()
- {
-    if (jj_done) return true;
-    if (jj_3R_366()) return true;
-    return false;
-  }
-
- inline bool jj_3R_256()
- {
-    if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    return false;
-  }
-
- inline bool jj_3R_122()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_256()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_257()) jj_scanpos = xsp;
-    if (jj_scan_token(LOOP_T)) return true;
-    if (jj_3R_258()) return true;
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(LOOP_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_628()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
- inline bool jj_3_45()
- {
-    if (jj_done) return true;
-    if (jj_3R_96()) return true;
-    return false;
-  }
-
- inline bool jj_3_44()
- {
-    if (jj_done) return true;
-    if (jj_3R_95()) return true;
-    return false;
-  }
-
- inline bool jj_3R_232()
+ inline bool jj_2_115(int xla)
  {
-    if (jj_done) return true;
-    if (jj_scan_token(NULL_T)) return true;
-    return false;
-  }
-
- inline bool jj_3_43()
- {
-    if (jj_done) return true;
-    if (jj_3R_94()) return true;
-    return false;
-  }
-
- inline bool jj_3R_231()
- {
-    if (jj_done) return true;
-    if (jj_3R_355()) return true;
-    return false;
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    jj_done = false;
+    return (!jj_3_115() || jj_done);
+ { jj_save(114, xla); }
   }
 
  inline bool jj_3R_230()
@@ -1600,7 +1540,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_42()
+ inline bool jj_3_43()
  {
     if (jj_done) return true;
     if (jj_3R_93()) return true;
@@ -1665,6 +1605,15 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_411()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_195()
  {
     if (jj_done) return true;
@@ -1713,15 +1662,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_411()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_91()
  {
     if (jj_done) return true;
@@ -1739,7 +1679,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_41()
+ inline bool jj_3_42()
  {
     if (jj_done) return true;
     if (jj_3R_92()) return true;
@@ -1761,14 +1701,14 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_40()
+ inline bool jj_3_41()
  {
     if (jj_done) return true;
     if (jj_3R_91()) return true;
     return false;
   }
 
- inline bool jj_3_39()
+ inline bool jj_3_40()
  {
     if (jj_done) return true;
     if (jj_3R_90()) return true;
@@ -1782,7 +1722,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_38()
+ inline bool jj_3_39()
  {
     if (jj_done) return true;
     if (jj_3R_89()) return true;
@@ -1794,14 +1734,14 @@ void parseInline();
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_38()) {
+    if (jj_3_39()) {
     jj_scanpos = xsp;
     if (jj_3R_555()) {
     jj_scanpos = xsp;
-    if (jj_3_39()) {
-    jj_scanpos = xsp;
     if (jj_3_40()) {
     jj_scanpos = xsp;
+    if (jj_3_41()) {
+    jj_scanpos = xsp;
     if (jj_3R_556()) {
     jj_scanpos = xsp;
     if (jj_3R_557()) return true;
@@ -1817,7 +1757,15 @@ void parseInline();
  {
     if (jj_done) return true;
     if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_67()) return true;
+    return false;
+  }
+
+ inline bool jj_3_38()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(BASIC_IDENTIFIER)) return true;
+    if (jj_scan_token(DOT_T)) return true;
     return false;
   }
 
@@ -1883,9 +1831,11 @@ void parseInline();
  {
     if (jj_done) return true;
     if (jj_scan_token(ENTITY_T)) return true;
-    if (jj_3R_59()) return true;
     Token * xsp;
     xsp = jj_scanpos;
+    if (jj_3_38()) jj_scanpos = xsp;
+    if (jj_3R_59()) return true;
+    xsp = jj_scanpos;
     if (jj_3R_411()) jj_scanpos = xsp;
     return false;
   }
@@ -1908,7 +1858,7 @@ void parseInline();
  inline bool jj_3_37()
  {
     if (jj_done) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_67()) return true;
     return false;
   }
 
@@ -1922,15 +1872,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_154()
- {
-    if (jj_done) return true;
-    if (jj_3R_157()) return true;
-    if (jj_scan_token(RANGE_T)) return true;
-    if (jj_scan_token(BOX_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_425()
  {
     if (jj_done) return true;
@@ -1944,6 +1885,15 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_154()
+ {
+    if (jj_done) return true;
+    if (jj_3R_157()) return true;
+    if (jj_scan_token(RANGE_T)) return true;
+    if (jj_scan_token(BOX_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_621()
  {
     if (jj_done) return true;
@@ -1954,7 +1904,7 @@ void parseInline();
  inline bool jj_3R_620()
  {
     if (jj_done) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_67()) return true;
     return false;
   }
 
@@ -1974,7 +1924,7 @@ void parseInline();
  {
     if (jj_done) return true;
     if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_67()) return true;
     Token * xsp;
     while (true) {
       xsp = jj_scanpos;
@@ -2079,6 +2029,17 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_423()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(77)) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_519()) jj_scanpos = xsp;
+    return false;
+  }
+
  inline bool jj_3R_163()
  {
     if (jj_done) return true;
@@ -2098,30 +2059,19 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_544()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_543()) return true;
-    return false;
-  }
-
- inline bool jj_3R_423()
+ inline bool jj_3_115()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(77)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_519()) jj_scanpos = xsp;
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
     return false;
   }
 
- inline bool jj_3_114()
+ inline bool jj_3R_544()
  {
     if (jj_done) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_543()) return true;
     return false;
   }
 
@@ -2168,6 +2118,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_545()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_58()) return true;
+    return false;
+  }
+
  inline bool jj_3R_382()
  {
     if (jj_done) return true;
@@ -2182,14 +2140,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_545()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_58()) return true;
-    return false;
-  }
-
  inline bool jj_3R_304()
  {
     if (jj_done) return true;
@@ -2197,18 +2147,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_474()
- {
-    if (jj_done) return true;
-    if (jj_3R_543()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_544()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
  inline bool jj_3R_424()
  {
     if (jj_done) return true;
@@ -2237,6 +2175,18 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_474()
+ {
+    if (jj_done) return true;
+    if (jj_3R_543()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_544()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
  inline bool jj_3R_607()
  {
     if (jj_done) return true;
@@ -2244,6 +2194,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_303()
+ {
+    if (jj_done) return true;
+    if (jj_3R_58()) return true;
+    if (jj_3R_384()) return true;
+    return false;
+  }
+
  inline bool jj_3R_606()
  {
     if (jj_done) return true;
@@ -2263,6 +2221,15 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_342()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(PROCEDURE_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_3R_423()) return true;
+    return false;
+  }
+
  inline bool jj_3R_70()
  {
     if (jj_done) return true;
@@ -2274,23 +2241,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_303()
- {
-    if (jj_done) return true;
-    if (jj_3R_58()) return true;
-    if (jj_3R_384()) return true;
-    return false;
-  }
-
- inline bool jj_3R_342()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(PROCEDURE_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_3R_423()) return true;
-    return false;
-  }
-
  inline bool jj_3R_170()
  {
     if (jj_done) return true;
@@ -2342,17 +2292,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_66()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(GENERIC_T)) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_158()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_384()
  {
     if (jj_done) return true;
@@ -2365,7 +2304,18 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_321()
+ inline bool jj_3R_66()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(GENERIC_T)) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_158()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_321()
  {
     if (jj_done) return true;
     if (jj_scan_token(IF_T)) return true;
@@ -2373,42 +2323,42 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_168()
+ inline bool jj_3R_383()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_320()) {
+    if (jj_scan_token(53)) {
     jj_scanpos = xsp;
-    if (jj_3R_321()) return true;
+    if (jj_scan_token(75)) return true;
     }
     return false;
   }
 
- inline bool jj_3R_320()
+ inline bool jj_3R_446()
  {
     if (jj_done) return true;
-    if (jj_scan_token(FOR_T)) return true;
-    if (jj_3R_407()) return true;
+    if (jj_3R_404()) return true;
     return false;
   }
 
- inline bool jj_3R_383()
+ inline bool jj_3R_168()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(53)) {
+    if (jj_3R_320()) {
     jj_scanpos = xsp;
-    if (jj_scan_token(75)) return true;
+    if (jj_3R_321()) return true;
     }
     return false;
   }
 
- inline bool jj_3R_446()
+ inline bool jj_3R_320()
  {
     if (jj_done) return true;
-    if (jj_3R_404()) return true;
+    if (jj_scan_token(FOR_T)) return true;
+    if (jj_3R_407()) return true;
     return false;
   }
 
@@ -2427,10 +2377,22 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_462()
+ inline bool jj_3R_305()
  {
     if (jj_done) return true;
-    if (jj_3R_533()) return true;
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_85()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(134)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(137)) return true;
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_385()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
@@ -2451,29 +2413,18 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_305()
+ inline bool jj_3R_302()
  {
     if (jj_done) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_85()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(134)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(137)) return true;
-    }
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_385()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_3R_383()) return true;
     return false;
   }
 
- inline bool jj_3R_302()
+ inline bool jj_3_111()
  {
     if (jj_done) return true;
-    if (jj_3R_383()) return true;
+    if (jj_3R_142()) return true;
+    if (jj_scan_token(DOT_T)) return true;
     return false;
   }
 
@@ -2487,14 +2438,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_110()
- {
-    if (jj_done) return true;
-    if (jj_3R_142()) return true;
-    if (jj_scan_token(DOT_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_144()
  {
     if (jj_done) return true;
@@ -2513,22 +2456,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_113()
+ inline bool jj_3_114()
  {
     if (jj_done) return true;
     if (jj_3R_108()) return true;
     return false;
   }
 
- inline bool jj_3R_156()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_311()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_368()
  {
     if (jj_done) return true;
@@ -2561,17 +2495,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_136()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(TYPE_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_576()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_574()
  {
     if (jj_done) return true;
@@ -2599,17 +2522,14 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_63()
+ inline bool jj_3R_462()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_156()) jj_scanpos = xsp;
+    if (jj_3R_533()) return true;
     return false;
   }
 
- inline bool jj_3_112()
+ inline bool jj_3_113()
  {
     if (jj_done) return true;
     if (jj_3R_144()) return true;
@@ -2638,39 +2558,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_569()
- {
-    if (jj_done) return true;
-    if (jj_3R_312()) return true;
-    return false;
-  }
-
- inline bool jj_3R_397()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(INTEGER)) return true;
-    return false;
-  }
-
- inline bool jj_3R_311()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_396()) {
-    jj_scanpos = xsp;
-    if (jj_3R_397()) return true;
-    }
-    return false;
-  }
-
- inline bool jj_3R_396()
- {
-    if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    return false;
-  }
-
  inline bool jj_3R_270()
  {
     if (jj_done) return true;
@@ -2697,6 +2584,15 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_156()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_311()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_143()
  {
     if (jj_done) return true;
@@ -2714,12 +2610,14 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_656()
+ inline bool jj_3R_136()
  {
     if (jj_done) return true;
-    if (jj_scan_token(FILE_T)) return true;
-    if (jj_scan_token(OF_T)) return true;
-    if (jj_3R_157()) return true;
+    if (jj_scan_token(TYPE_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_3R_576()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
@@ -2734,7 +2632,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_111()
+ inline bool jj_3_112()
  {
     if (jj_done) return true;
     if (jj_3R_143()) return true;
@@ -2748,22 +2646,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_579()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(OPEN_T)) return true;
-    if (jj_3R_58()) return true;
-    return false;
-  }
-
- inline bool jj_3R_533()
+ inline bool jj_3R_63()
  {
     if (jj_done) return true;
+    if (jj_3R_59()) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_579()) jj_scanpos = xsp;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_580()) return true;
+    if (jj_3R_156()) jj_scanpos = xsp;
     return false;
   }
 
@@ -2784,6 +2673,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_569()
+ {
+    if (jj_done) return true;
+    if (jj_3R_312()) return true;
+    return false;
+  }
+
  inline bool jj_3R_268()
  {
     if (jj_done) return true;
@@ -2791,37 +2687,48 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_580()
+ inline bool jj_3R_397()
  {
     if (jj_done) return true;
-    if (jj_3R_58()) return true;
+    if (jj_scan_token(INTEGER)) return true;
     return false;
   }
 
- inline bool jj_3R_126()
+ inline bool jj_3R_311()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_267()) {
+    if (jj_3R_396()) {
     jj_scanpos = xsp;
-    if (jj_3R_268()) return true;
+    if (jj_3R_397()) return true;
     }
     return false;
   }
 
- inline bool jj_3R_267()
+ inline bool jj_3R_396()
  {
     if (jj_done) return true;
-    if (jj_3R_143()) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3R_448()
+ inline bool jj_3R_126()
  {
     if (jj_done) return true;
-    if (jj_scan_token(DOUBLEMULT_T)) return true;
-    if (jj_3R_369()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_267()) {
+    jj_scanpos = xsp;
+    if (jj_3R_268()) return true;
+    }
+    return false;
+  }
+
+ inline bool jj_3R_267()
+ {
+    if (jj_done) return true;
+    if (jj_3R_143()) return true;
     return false;
   }
 
@@ -2855,317 +2762,294 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_109()
+ inline bool jj_3_110()
  {
     if (jj_done) return true;
     if (jj_3R_141()) return true;
     return false;
   }
 
- inline bool jj_3R_375()
+ inline bool jj_3R_656()
  {
     if (jj_done) return true;
     if (jj_scan_token(FILE_T)) return true;
-    if (jj_3R_196()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_84()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_462()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(OF_T)) return true;
+    if (jj_3R_157()) return true;
     return false;
   }
 
- inline bool jj_3R_263()
+ inline bool jj_3R_579()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_scan_token(OPEN_T)) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
- inline bool jj_3R_283()
+ inline bool jj_3R_611()
  {
     if (jj_done) return true;
-    if (jj_scan_token(NOT_T)) return true;
-    if (jj_3R_369()) return true;
+    if (jj_3R_141()) return true;
     return false;
   }
 
- inline bool jj_3R_282()
+ inline bool jj_3R_533()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ABS_T)) return true;
-    if (jj_3R_369()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_579()) jj_scanpos = xsp;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_3R_580()) return true;
     return false;
   }
 
- inline bool jj_3R_135()
+ inline bool jj_3R_142()
  {
     if (jj_done) return true;
+    if (jj_3R_69()) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_281()) {
-    jj_scanpos = xsp;
-    if (jj_3R_282()) {
-    jj_scanpos = xsp;
-    if (jj_3R_283()) return true;
-    }
-    }
+    if (jj_3R_301()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_281()
+ inline bool jj_3R_580()
  {
     if (jj_done) return true;
-    if (jj_3R_369()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_448()) jj_scanpos = xsp;
+    if (jj_3R_58()) return true;
     return false;
   }
 
- inline bool jj_3R_611()
+ inline bool jj_3R_639()
  {
     if (jj_done) return true;
-    if (jj_3R_141()) return true;
+    if (jj_scan_token(NEG_T)) return true;
+    if (jj_scan_token(DOT_T)) return true;
     return false;
   }
 
- inline bool jj_3R_696()
+ inline bool jj_3R_610()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_96()) return true;
+    Token * xsp;
+    if (jj_3R_639()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_639()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
- inline bool jj_3R_142()
+ inline bool jj_3R_448()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_301()) jj_scanpos = xsp;
+    if (jj_scan_token(DOUBLEMULT_T)) return true;
+    if (jj_3R_369()) return true;
     return false;
   }
 
- inline bool jj_3R_146()
+ inline bool jj_3_109()
  {
     if (jj_done) return true;
-    if (jj_3R_308()) return true;
-    if (jj_3R_145()) return true;
+    if (jj_scan_token(DOT_T)) return true;
+    if (jj_3R_141()) return true;
     return false;
   }
 
- inline bool jj_3R_393()
+ inline bool jj_3R_553()
  {
     if (jj_done) return true;
-    if (jj_scan_token(OR_T)) return true;
+    if (jj_3R_610()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_611()) jj_scanpos = xsp;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_392()
+ inline bool jj_3R_375()
  {
     if (jj_done) return true;
-    if (jj_scan_token(XOR_T)) return true;
+    if (jj_scan_token(FILE_T)) return true;
+    if (jj_3R_196()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_84()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_462()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_391()
+ inline bool jj_3R_263()
  {
     if (jj_done) return true;
-    if (jj_scan_token(XNOR_T)) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_639()
+ inline bool jj_3R_609()
  {
     if (jj_done) return true;
-    if (jj_scan_token(NEG_T)) return true;
     if (jj_scan_token(DOT_T)) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_390()
+ inline bool jj_3R_283()
  {
     if (jj_done) return true;
-    if (jj_scan_token(NOR_T)) return true;
+    if (jj_scan_token(NOT_T)) return true;
+    if (jj_3R_369()) return true;
     return false;
   }
 
- inline bool jj_3R_610()
+ inline bool jj_3R_282()
  {
     if (jj_done) return true;
-    Token * xsp;
-    if (jj_3R_639()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_639()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_scan_token(ABS_T)) return true;
+    if (jj_3R_369()) return true;
     return false;
   }
 
- inline bool jj_3R_389()
+ inline bool jj_3R_608()
  {
     if (jj_done) return true;
-    if (jj_scan_token(NAND_T)) return true;
+    if (jj_scan_token(DOT_T)) return true;
+    if (jj_3R_141()) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_308()
+ inline bool jj_3R_552()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_388()) {
-    jj_scanpos = xsp;
-    if (jj_3R_389()) {
-    jj_scanpos = xsp;
-    if (jj_3R_390()) {
-    jj_scanpos = xsp;
-    if (jj_3R_391()) {
-    jj_scanpos = xsp;
-    if (jj_3R_392()) {
+    if (jj_3R_608()) {
     jj_scanpos = xsp;
-    if (jj_3R_393()) return true;
-    }
-    }
-    }
-    }
+    if (jj_3R_609()) return true;
     }
     return false;
   }
 
- inline bool jj_3R_388()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(AND_T)) return true;
-    return false;
-  }
-
- inline bool jj_3_108()
+ inline bool jj_3R_135()
  {
     if (jj_done) return true;
-    if (jj_scan_token(DOT_T)) return true;
-    if (jj_3R_141()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_281()) {
+    jj_scanpos = xsp;
+    if (jj_3R_282()) {
+    jj_scanpos = xsp;
+    if (jj_3R_283()) return true;
+    }
+    }
     return false;
   }
 
- inline bool jj_3R_553()
+ inline bool jj_3R_281()
  {
     if (jj_done) return true;
-    if (jj_3R_610()) return true;
+    if (jj_3R_369()) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_611()) jj_scanpos = xsp;
-    if (jj_3R_69()) return true;
+    if (jj_3R_448()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_609()
+ inline bool jj_3R_488()
  {
     if (jj_done) return true;
-    if (jj_scan_token(DOT_T)) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_554()) return true;
     return false;
   }
 
- inline bool jj_3R_58()
+ inline bool jj_3R_487()
  {
     if (jj_done) return true;
-    if (jj_3R_145()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_146()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_3R_553()) return true;
     return false;
   }
 
- inline bool jj_3R_608()
+ inline bool jj_3R_696()
  {
     if (jj_done) return true;
-    if (jj_scan_token(DOT_T)) return true;
-    if (jj_3R_141()) return true;
-    if (jj_3R_69()) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_96()) return true;
     return false;
   }
 
- inline bool jj_3R_552()
+ inline bool jj_3R_395()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_608()) {
+    if (jj_3R_486()) {
     jj_scanpos = xsp;
-    if (jj_3R_609()) return true;
+    if (jj_3R_487()) {
+    jj_scanpos = xsp;
+    if (jj_3R_488()) return true;
+    }
     }
     return false;
   }
 
- inline bool jj_3R_488()
+ inline bool jj_3R_486()
  {
     if (jj_done) return true;
-    if (jj_3R_554()) return true;
+    if (jj_3R_552()) return true;
     return false;
   }
 
- inline bool jj_3R_487()
+ inline bool jj_3R_146()
  {
     if (jj_done) return true;
-    if (jj_3R_553()) return true;
+    if (jj_3R_308()) return true;
+    if (jj_3R_145()) return true;
     return false;
   }
 
- inline bool jj_3R_395()
+ inline bool jj_3R_393()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_486()) {
-    jj_scanpos = xsp;
-    if (jj_3R_487()) {
-    jj_scanpos = xsp;
-    if (jj_3R_488()) return true;
-    }
-    }
+    if (jj_scan_token(OR_T)) return true;
     return false;
   }
 
- inline bool jj_3R_486()
+ inline bool jj_3_106()
  {
     if (jj_done) return true;
-    if (jj_3R_552()) return true;
+    if (jj_3R_138()) return true;
     return false;
   }
 
- inline bool jj_3_105()
+ inline bool jj_3R_392()
  {
     if (jj_done) return true;
-    if (jj_3R_138()) return true;
+    if (jj_scan_token(XOR_T)) return true;
     return false;
   }
 
- inline bool jj_3R_264()
+ inline bool jj_3R_391()
  {
     if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_79()) return true;
+    if (jj_scan_token(XNOR_T)) return true;
     return false;
   }
 
- inline bool jj_3R_262()
+ inline bool jj_3R_485()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_scan_token(VARIABLE_T)) return true;
     return false;
   }
 
- inline bool jj_3R_485()
+ inline bool jj_3R_390()
  {
     if (jj_done) return true;
-    if (jj_scan_token(VARIABLE_T)) return true;
+    if (jj_scan_token(NOR_T)) return true;
     return false;
   }
 
@@ -3176,18 +3060,41 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_124()
+ inline bool jj_3R_389()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(NAND_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_308()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_262()) jj_scanpos = xsp;
-    if (jj_scan_token(EXIT_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_263()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_264()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_388()) {
+    jj_scanpos = xsp;
+    if (jj_3R_389()) {
+    jj_scanpos = xsp;
+    if (jj_3R_390()) {
+    jj_scanpos = xsp;
+    if (jj_3R_391()) {
+    jj_scanpos = xsp;
+    if (jj_3R_392()) {
+    jj_scanpos = xsp;
+    if (jj_3R_393()) return true;
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+ inline bool jj_3R_388()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(AND_T)) return true;
     return false;
   }
 
@@ -3213,24 +3120,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_687()
+ inline bool jj_3_108()
  {
     if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_96()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_696()) { jj_scanpos = xsp; break; }
-    }
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
- inline bool jj_3_107()
- {
-    if (jj_done) return true;
-    if (jj_3R_140()) return true;
+    if (jj_3R_140()) return true;
     return false;
   }
 
@@ -3241,28 +3134,14 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_208()
- {
-    if (jj_done) return true;
-    if (jj_3R_351()) return true;
-    return false;
-  }
-
- inline bool jj_3R_207()
- {
-    if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    return false;
-  }
-
- inline bool jj_3R_96()
+ inline bool jj_3R_58()
  {
     if (jj_done) return true;
+    if (jj_3R_145()) return true;
     Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_207()) {
-    jj_scanpos = xsp;
-    if (jj_3R_208()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_146()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
@@ -3279,13 +3158,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_694()
- {
-    if (jj_done) return true;
-    if (jj_3R_351()) return true;
-    return false;
-  }
-
  inline bool jj_3R_408()
  {
     if (jj_done) return true;
@@ -3318,29 +3190,19 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_693()
- {
-    if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    return false;
-  }
-
- inline bool jj_3R_683()
+ inline bool jj_3R_264()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_693()) {
-    jj_scanpos = xsp;
-    if (jj_3R_694()) return true;
-    }
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_79()) return true;
     return false;
   }
 
- inline bool jj_3_36()
+ inline bool jj_3R_262()
  {
     if (jj_done) return true;
-    if (jj_3R_88()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
@@ -3359,10 +3221,18 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_35()
+ inline bool jj_3R_124()
  {
     if (jj_done) return true;
-    if (jj_3R_87()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_262()) jj_scanpos = xsp;
+    if (jj_scan_token(EXIT_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_263()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_264()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
@@ -3373,7 +3243,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_106()
+ inline bool jj_3_107()
  {
     if (jj_done) return true;
     if (jj_3R_139()) return true;
@@ -3381,6 +3251,20 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_687()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_96()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_696()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_138()
  {
     if (jj_done) return true;
@@ -3399,13 +3283,39 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_208()
+ {
+    if (jj_done) return true;
+    if (jj_3R_351()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_207()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_96()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_207()) {
+    jj_scanpos = xsp;
+    if (jj_3R_208()) return true;
+    }
+    return false;
+  }
+
  inline bool jj_3R_651()
  {
     if (jj_done) return true;
     if (jj_scan_token(WHEN_T)) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_106()) jj_scanpos = xsp;
+    if (jj_3_107()) jj_scanpos = xsp;
     if (jj_3R_85()) return true;
     if (jj_scan_token(ARROW_T)) return true;
     if (jj_3R_661()) return true;
@@ -3424,33 +3334,29 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_469()
- {
-    if (jj_done) return true;
-    if (jj_3R_538()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_539()) return true;
-    return false;
-  }
-
- inline bool jj_3R_684()
+ inline bool jj_3R_694()
  {
     if (jj_done) return true;
-    if (jj_3R_233()) return true;
+    if (jj_3R_351()) return true;
     return false;
   }
 
- inline bool jj_3R_584()
+ inline bool jj_3R_693()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ALL_T)) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3R_583()
+ inline bool jj_3R_683()
  {
     if (jj_done) return true;
-    if (jj_scan_token(OTHER_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_693()) {
+    jj_scanpos = xsp;
+    if (jj_3R_694()) return true;
+    }
     return false;
   }
 
@@ -3464,47 +3370,17 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_637()
- {
-    if (jj_done) return true;
-    if (jj_3R_658()) return true;
-    return false;
-  }
-
- inline bool jj_3R_582()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    if (jj_3R_637()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_637()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
- inline bool jj_3R_538()
+ inline bool jj_3_36()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_582()) {
-    jj_scanpos = xsp;
-    if (jj_3R_583()) {
-    jj_scanpos = xsp;
-    if (jj_3R_584()) return true;
-    }
-    }
+    if (jj_3R_88()) return true;
     return false;
   }
 
- inline bool jj_3R_658()
+ inline bool jj_3_35()
  {
     if (jj_done) return true;
-    if (jj_3R_683()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_684()) jj_scanpos = xsp;
+    if (jj_3R_87()) return true;
     return false;
   }
 
@@ -3529,32 +3405,67 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_32()
+ inline bool jj_3R_469()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    if (jj_3R_538()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_539()) return true;
     return false;
   }
 
- inline bool jj_3_34()
+ inline bool jj_3R_684()
  {
     if (jj_done) return true;
-    if (jj_3R_86()) return true;
+    if (jj_3R_233()) return true;
     return false;
   }
 
- inline bool jj_3_33()
+ inline bool jj_3R_584()
  {
     if (jj_done) return true;
-    if (jj_3R_65()) return true;
+    if (jj_scan_token(ALL_T)) return true;
     return false;
   }
 
- inline bool jj_3R_542()
+ inline bool jj_3R_583()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_541()) return true;
+    if (jj_scan_token(OTHER_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_637()
+ {
+    if (jj_done) return true;
+    if (jj_3R_658()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_582()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    if (jj_3R_637()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_637()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+ inline bool jj_3R_538()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_582()) {
+    jj_scanpos = xsp;
+    if (jj_3R_583()) {
+    jj_scanpos = xsp;
+    if (jj_3R_584()) return true;
+    }
+    }
     return false;
   }
 
@@ -3574,6 +3485,16 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_658()
+ {
+    if (jj_done) return true;
+    if (jj_3R_683()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_684()) jj_scanpos = xsp;
+    return false;
+  }
+
  inline bool jj_3R_107()
  {
     if (jj_done) return true;
@@ -3604,29 +3525,120 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_605()
+ inline bool jj_3_32()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BOX_T)) return true;
+    if (jj_3R_64()) return true;
     return false;
   }
 
- inline bool jj_3R_348()
+ inline bool jj_3_34()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ENTITY_T)) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_86()) return true;
     return false;
   }
 
- inline bool jj_3R_682()
+ inline bool jj_3_33()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_65()) return true;
     return false;
   }
 
- inline bool jj_3R_473()
+ inline bool jj_3R_542()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_541()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_682()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_253()
+ {
+    if (jj_done) return true;
+    if (jj_3R_365()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_692()
+ {
+    if (jj_done) return true;
+    if (jj_3R_702()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_605()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(BOX_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_681()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_692()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+ inline bool jj_3R_719()
+ {
+    if (jj_done) return true;
+    if (jj_3R_381()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_718()
+ {
+    if (jj_done) return true;
+    if (jj_3R_378()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_348()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(ENTITY_T)) return true;
+    if (jj_3R_69()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_717()
+ {
+    if (jj_done) return true;
+    if (jj_3R_346()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_702()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_717()) {
+    jj_scanpos = xsp;
+    if (jj_3R_718()) {
+    jj_scanpos = xsp;
+    if (jj_3R_719()) return true;
+    }
+    }
+    return false;
+  }
+
+ inline bool jj_3R_473()
  {
     if (jj_done) return true;
     if (jj_3R_541()) return true;
@@ -3638,10 +3650,30 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_253()
+ inline bool jj_3R_680()
  {
     if (jj_done) return true;
-    if (jj_3R_365()) return true;
+    if (jj_3R_69()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_252()
+ {
+    if (jj_done) return true;
+    if (jj_3R_364()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_657()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(PROTECTED_T)) return true;
+    if (jj_3R_681()) return true;
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(PROTECTED_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_682()) jj_scanpos = xsp;
     return false;
   }
 
@@ -3655,6 +3687,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_691()
+ {
+    if (jj_done) return true;
+    if (jj_3R_701()) return true;
+    return false;
+  }
+
  inline bool jj_3R_619()
  {
     if (jj_done) return true;
@@ -3671,29 +3710,28 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_692()
+ inline bool jj_3_104()
  {
     if (jj_done) return true;
-    if (jj_3R_702()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_64()) return true;
     return false;
   }
 
- inline bool jj_3R_600()
+ inline bool jj_3R_679()
  {
     if (jj_done) return true;
-    if (jj_scan_token(GROUP_T)) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_691()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
- inline bool jj_3R_681()
+ inline bool jj_3R_600()
  {
     if (jj_done) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_692()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_scan_token(GROUP_T)) return true;
     return false;
   }
 
@@ -3718,10 +3756,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_719()
+ inline bool jj_3R_716()
  {
     if (jj_done) return true;
-    if (jj_3R_381()) return true;
+    if (jj_3R_382()) return true;
     return false;
   }
 
@@ -3732,53 +3770,45 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_718()
+ inline bool jj_3R_595()
  {
     if (jj_done) return true;
-    if (jj_3R_378()) return true;
+    if (jj_scan_token(VARIABLE_T)) return true;
     return false;
   }
 
- inline bool jj_3R_595()
+ inline bool jj_3R_594()
  {
     if (jj_done) return true;
-    if (jj_scan_token(VARIABLE_T)) return true;
+    if (jj_scan_token(SIGNAL_T)) return true;
     return false;
   }
 
- inline bool jj_3R_594()
+ inline bool jj_3_105()
  {
     if (jj_done) return true;
-    if (jj_scan_token(SIGNAL_T)) return true;
+    if (jj_3R_65()) return true;
     return false;
   }
 
- inline bool jj_3R_593()
+ inline bool jj_3R_715()
  {
     if (jj_done) return true;
-    if (jj_scan_token(CONSTANT_T)) return true;
+    if (jj_3R_381()) return true;
     return false;
   }
 
- inline bool jj_3R_717()
+ inline bool jj_3R_593()
  {
     if (jj_done) return true;
-    if (jj_3R_346()) return true;
+    if (jj_scan_token(CONSTANT_T)) return true;
     return false;
   }
 
- inline bool jj_3R_702()
+ inline bool jj_3R_714()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_717()) {
-    jj_scanpos = xsp;
-    if (jj_3R_718()) {
-    jj_scanpos = xsp;
-    if (jj_3R_719()) return true;
-    }
-    }
+    if (jj_3R_378()) return true;
     return false;
   }
 
@@ -3796,6 +3826,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_713()
+ {
+    if (jj_done) return true;
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
  inline bool jj_3R_590()
  {
     if (jj_done) return true;
@@ -3810,6 +3847,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_712()
+ {
+    if (jj_done) return true;
+    if (jj_3R_376()) return true;
+    return false;
+  }
+
  inline bool jj_3R_588()
  {
     if (jj_done) return true;
@@ -3817,6 +3861,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_711()
+ {
+    if (jj_done) return true;
+    if (jj_3R_375()) return true;
+    return false;
+  }
+
  inline bool jj_3R_587()
  {
     if (jj_done) return true;
@@ -3824,6 +3875,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_710()
+ {
+    if (jj_done) return true;
+    if (jj_3R_374()) return true;
+    return false;
+  }
+
  inline bool jj_3R_586()
  {
     if (jj_done) return true;
@@ -3831,10 +3889,24 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_680()
+ inline bool jj_3R_709()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_372()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_708()
+ {
+    if (jj_done) return true;
+    if (jj_3R_371()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_707()
+ {
+    if (jj_done) return true;
+    if (jj_3R_370()) return true;
     return false;
   }
 
@@ -3902,23 +3974,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_252()
- {
-    if (jj_done) return true;
-    if (jj_3R_364()) return true;
-    return false;
-  }
-
- inline bool jj_3R_657()
+ inline bool jj_3R_706()
  {
     if (jj_done) return true;
-    if (jj_scan_token(PROTECTED_T)) return true;
-    if (jj_3R_681()) return true;
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(PROTECTED_T)) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_682()) jj_scanpos = xsp;
+    if (jj_3R_524()) return true;
     return false;
   }
 
@@ -3929,36 +3988,70 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_562()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(CONFIGURATION_T)) return true;
-    if (jj_3R_59()) return true;
-    return false;
-  }
-
- inline bool jj_3R_691()
+ inline bool jj_3R_705()
  {
     if (jj_done) return true;
-    if (jj_3R_701()) return true;
+    if (jj_3R_92()) return true;
     return false;
   }
 
- inline bool jj_3_103()
+ inline bool jj_3R_701()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_705()) {
+    jj_scanpos = xsp;
+    if (jj_3R_706()) {
+    jj_scanpos = xsp;
+    if (jj_3R_707()) {
+    jj_scanpos = xsp;
+    if (jj_3R_708()) {
+    jj_scanpos = xsp;
+    if (jj_3R_709()) {
+    jj_scanpos = xsp;
+    if (jj_3R_710()) {
+    jj_scanpos = xsp;
+    if (jj_3R_711()) {
+    jj_scanpos = xsp;
+    if (jj_3R_712()) {
+    jj_scanpos = xsp;
+    if (jj_3R_713()) {
+    jj_scanpos = xsp;
+    if (jj_3R_714()) {
+    jj_scanpos = xsp;
+    if (jj_3R_715()) {
+    jj_scanpos = xsp;
+    if (jj_3_105()) {
+    jj_scanpos = xsp;
+    if (jj_3R_716()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     return false;
   }
 
- inline bool jj_3R_679()
+ inline bool jj_3R_562()
  {
     if (jj_done) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_691()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_scan_token(CONFIGURATION_T)) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_251()
+ {
+    if (jj_done) return true;
+    if (jj_3R_363()) return true;
     return false;
   }
 
@@ -3988,56 +4081,52 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_716()
- {
-    if (jj_done) return true;
-    if (jj_3R_382()) return true;
-    return false;
-  }
-
- inline bool jj_3_31()
- {
-    if (jj_done) return true;
-    if (jj_3R_85()) return true;
-    if (jj_scan_token(ARROW_T)) return true;
-    return false;
-  }
-
- inline bool jj_3R_704()
+ inline bool jj_3R_527()
  {
     if (jj_done) return true;
-    if (jj_3R_196()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_84()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(AFTER_T)) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
- inline bool jj_3_104()
+ inline bool jj_3R_137()
  {
     if (jj_done) return true;
-    if (jj_3R_65()) return true;
+    if (jj_scan_token(PROTECTED_T)) return true;
+    if (jj_scan_token(BODY_T)) return true;
+    if (jj_3R_679()) return true;
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(PROTECTED_T)) return true;
+    if (jj_scan_token(BODY_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_680()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_715()
+ inline bool jj_3R_495()
  {
     if (jj_done) return true;
-    if (jj_3R_381()) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_444()) return true;
     return false;
   }
 
- inline bool jj_3R_714()
+ inline bool jj_3_31()
  {
     if (jj_done) return true;
-    if (jj_3R_378()) return true;
+    if (jj_3R_85()) return true;
+    if (jj_scan_token(ARROW_T)) return true;
     return false;
   }
 
- inline bool jj_3R_713()
+ inline bool jj_3R_704()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    if (jj_3R_196()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_84()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
@@ -4048,20 +4137,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_712()
- {
-    if (jj_done) return true;
-    if (jj_3R_376()) return true;
-    return false;
-  }
-
- inline bool jj_3R_711()
- {
-    if (jj_done) return true;
-    if (jj_3R_375()) return true;
-    return false;
-  }
-
  inline bool jj_3_29()
  {
     if (jj_done) return true;
@@ -4069,20 +4144,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_710()
- {
-    if (jj_done) return true;
-    if (jj_3R_374()) return true;
-    return false;
-  }
-
- inline bool jj_3R_709()
- {
-    if (jj_done) return true;
-    if (jj_3R_372()) return true;
-    return false;
-  }
-
  inline bool jj_3R_358()
  {
     if (jj_done) return true;
@@ -4091,10 +4152,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_708()
+ inline bool jj_3R_444()
  {
     if (jj_done) return true;
-    if (jj_3R_371()) return true;
+    if (jj_3R_58()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_527()) jj_scanpos = xsp;
     return false;
   }
 
@@ -4108,110 +4172,60 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_707()
- {
-    if (jj_done) return true;
-    if (jj_3R_370()) return true;
-    return false;
-  }
-
- inline bool jj_3R_706()
+ inline bool jj_3R_160()
  {
     if (jj_done) return true;
-    if (jj_3R_524()) return true;
+    if (jj_3R_84()) return true;
     return false;
   }
 
- inline bool jj_3R_162()
+ inline bool jj_3R_406()
  {
     if (jj_done) return true;
-    if (jj_3R_84()) return true;
+    if (jj_scan_token(UNAFFECTED_T)) return true;
     return false;
   }
 
- inline bool jj_3R_705()
+ inline bool jj_3R_159()
  {
     if (jj_done) return true;
-    if (jj_3R_92()) return true;
+    if (jj_3R_83()) return true;
     return false;
   }
 
- inline bool jj_3R_701()
+ inline bool jj_3R_67()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_705()) {
-    jj_scanpos = xsp;
-    if (jj_3R_706()) {
-    jj_scanpos = xsp;
-    if (jj_3R_707()) {
-    jj_scanpos = xsp;
-    if (jj_3R_708()) {
-    jj_scanpos = xsp;
-    if (jj_3R_709()) {
-    jj_scanpos = xsp;
-    if (jj_3R_710()) {
-    jj_scanpos = xsp;
-    if (jj_3R_711()) {
+    if (jj_3R_159()) {
     jj_scanpos = xsp;
-    if (jj_3R_712()) {
-    jj_scanpos = xsp;
-    if (jj_3R_713()) {
-    jj_scanpos = xsp;
-    if (jj_3R_714()) {
-    jj_scanpos = xsp;
-    if (jj_3R_715()) {
-    jj_scanpos = xsp;
-    if (jj_3_104()) {
-    jj_scanpos = xsp;
-    if (jj_3R_716()) return true;
-    }
-    }
-    }
-    }
-    }
-    }
+    if (jj_3R_160()) return true;
     }
-    }
-    }
-    }
-    }
-    }
-    return false;
-  }
-
- inline bool jj_3R_251()
- {
-    if (jj_done) return true;
-    if (jj_3R_363()) return true;
-    return false;
-  }
-
- inline bool jj_3R_161()
- {
-    if (jj_done) return true;
-    if (jj_3R_83()) return true;
     return false;
   }
 
- inline bool jj_3R_68()
+ inline bool jj_3R_317()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_161()) {
+    if (jj_3R_405()) {
     jj_scanpos = xsp;
-    if (jj_3R_162()) return true;
+    if (jj_3R_406()) return true;
     }
     return false;
   }
 
- inline bool jj_3R_527()
+ inline bool jj_3R_405()
  {
     if (jj_done) return true;
-    if (jj_scan_token(AFTER_T)) return true;
-    if (jj_3R_58()) return true;
+    if (jj_3R_444()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_495()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
@@ -4224,26 +4238,28 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_137()
+ inline bool jj_3R_250()
  {
     if (jj_done) return true;
-    if (jj_scan_token(PROTECTED_T)) return true;
-    if (jj_scan_token(BODY_T)) return true;
-    if (jj_3R_679()) return true;
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(PROTECTED_T)) return true;
-    if (jj_scan_token(BODY_T)) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_680()) jj_scanpos = xsp;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_495()
+ inline bool jj_3R_117()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_444()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_250()) jj_scanpos = xsp;
+    if (jj_scan_token(WAIT_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_251()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_252()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_253()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
@@ -4299,13 +4315,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_444()
+ inline bool jj_3R_155()
  {
     if (jj_done) return true;
-    if (jj_3R_58()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_527()) jj_scanpos = xsp;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_154()) return true;
     return false;
   }
 
@@ -4328,37 +4342,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_406()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(UNAFFECTED_T)) return true;
-    return false;
-  }
-
- inline bool jj_3R_317()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_405()) {
-    jj_scanpos = xsp;
-    if (jj_3R_406()) return true;
-    }
-    return false;
-  }
-
- inline bool jj_3R_405()
- {
-    if (jj_done) return true;
-    if (jj_3R_444()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_495()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
  inline bool jj_3R_558()
  {
     if (jj_done) return true;
@@ -4367,11 +4350,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_250()
+ inline bool jj_3R_461()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_scan_token(VARASSIGN_T)) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
@@ -4385,144 +4368,75 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_117()
+ inline bool jj_3R_374()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_250()) jj_scanpos = xsp;
-    if (jj_scan_token(WAIT_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_251()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_252()) jj_scanpos = xsp;
+    if (jj_scan_token(101)) jj_scanpos = xsp;
+    if (jj_scan_token(VARIABLE_T)) return true;
+    if (jj_3R_196()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_84()) return true;
     xsp = jj_scanpos;
-    if (jj_3R_253()) jj_scanpos = xsp;
+    if (jj_3R_461()) jj_scanpos = xsp;
     if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_404()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_493()) {
-    jj_scanpos = xsp;
-    if (jj_3R_494()) return true;
-    }
-    return false;
-  }
-
- inline bool jj_3R_493()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(TRANSPORT_T)) return true;
-    return false;
-  }
-
- inline bool jj_3_28()
- {
-    if (jj_done) return true;
-    if (jj_3R_82()) return true;
-    return false;
-  }
-
- inline bool jj_3_27()
- {
-    if (jj_done) return true;
-    if (jj_3R_81()) return true;
-    return false;
-  }
-
- inline bool jj_3R_155()
+ inline bool jj_3R_472()
  {
     if (jj_done) return true;
     if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_154()) return true;
-    return false;
-  }
-
- inline bool jj_3R_276()
- {
-    if (jj_done) return true;
-    if (jj_3R_82()) return true;
+    if (jj_3R_471()) return true;
     return false;
   }
 
- inline bool jj_3R_133()
+ inline bool jj_3R_404()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_275()) {
+    if (jj_3R_493()) {
     jj_scanpos = xsp;
-    if (jj_3R_276()) return true;
+    if (jj_3R_494()) return true;
     }
     return false;
   }
 
- inline bool jj_3R_275()
- {
-    if (jj_done) return true;
-    if (jj_3R_81()) return true;
-    return false;
-  }
-
- inline bool jj_3R_461()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(VARASSIGN_T)) return true;
-    if (jj_3R_58()) return true;
-    return false;
-  }
-
- inline bool jj_3R_374()
+ inline bool jj_3R_493()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(101)) jj_scanpos = xsp;
-    if (jj_scan_token(VARIABLE_T)) return true;
-    if (jj_3R_196()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_84()) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_461()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(TRANSPORT_T)) return true;
     return false;
   }
 
- inline bool jj_3R_472()
+ inline bool jj_3R_439()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_471()) return true;
+    if (jj_3R_526()) return true;
     return false;
   }
 
- inline bool jj_3R_703()
+ inline bool jj_3_28()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ARRAY_T)) return true;
     if (jj_3R_82()) return true;
-    if (jj_scan_token(OF_T)) return true;
-    if (jj_3R_84()) return true;
     return false;
   }
 
- inline bool jj_3R_439()
+ inline bool jj_3_103()
  {
     if (jj_done) return true;
-    if (jj_3R_526()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3_102()
+ inline bool jj_3_27()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_81()) return true;
     return false;
   }
 
@@ -4543,7 +4457,7 @@ void parseInline();
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_102()) jj_scanpos = xsp;
+    if (jj_3_103()) jj_scanpos = xsp;
     if (jj_3R_114()) return true;
     if (jj_scan_token(VARASSIGN_T)) return true;
     if (jj_3R_58()) return true;
@@ -4551,41 +4465,29 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_372()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(CONSTANT_T)) return true;
-    if (jj_3R_196()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_84()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_458()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
- inline bool jj_3_26()
+ inline bool jj_3R_276()
  {
     if (jj_done) return true;
-    if (jj_3R_80()) return true;
+    if (jj_3R_82()) return true;
     return false;
   }
 
- inline bool jj_3R_379()
+ inline bool jj_3R_133()
  {
     if (jj_done) return true;
-    if (jj_scan_token(FOR_T)) return true;
-    if (jj_3R_177()) return true;
-    if (jj_3R_331()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_275()) {
+    jj_scanpos = xsp;
+    if (jj_3R_276()) return true;
+    }
     return false;
   }
 
- inline bool jj_3R_566()
+ inline bool jj_3R_275()
  {
     if (jj_done) return true;
-    if (jj_3R_332()) return true;
+    if (jj_3R_81()) return true;
     return false;
   }
 
@@ -4603,22 +4505,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_565()
- {
-    if (jj_done) return true;
-    if (jj_3R_80()) return true;
-    return false;
-  }
-
- inline bool jj_3R_507()
+ inline bool jj_3R_703()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_565()) {
-    jj_scanpos = xsp;
-    if (jj_3R_566()) return true;
-    }
+    if (jj_scan_token(ARRAY_T)) return true;
+    if (jj_3R_82()) return true;
+    if (jj_scan_token(OF_T)) return true;
+    if (jj_3R_84()) return true;
     return false;
   }
 
@@ -4653,7 +4546,21 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_101()
+ inline bool jj_3R_372()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(CONSTANT_T)) return true;
+    if (jj_3R_196()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_84()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_458()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3_102()
  {
     if (jj_done) return true;
     if (jj_3R_137()) return true;
@@ -4674,6 +4581,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3_26()
+ {
+    if (jj_done) return true;
+    if (jj_3R_80()) return true;
+    return false;
+  }
+
  inline bool jj_3R_633()
  {
     if (jj_done) return true;
@@ -4681,6 +4595,16 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_379()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(FOR_T)) return true;
+    if (jj_3R_177()) return true;
+    if (jj_3R_331()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_632()
  {
     if (jj_done) return true;
@@ -4701,7 +4625,7 @@ void parseInline();
     jj_scanpos = xsp;
     if (jj_3R_635()) {
     jj_scanpos = xsp;
-    if (jj_3_101()) {
+    if (jj_3_102()) {
     jj_scanpos = xsp;
     if (jj_3R_636()) return true;
     }
@@ -4712,38 +4636,47 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_25()
+ inline bool jj_3R_566()
  {
     if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_79()) return true;
-    if (jj_scan_token(ELSE_T)) return true;
+    if (jj_3R_332()) return true;
     return false;
   }
 
- inline bool jj_3R_349()
+ inline bool jj_3_98()
  {
     if (jj_done) return true;
-    if (jj_scan_token(CONFIGURATION_T)) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_133()) return true;
     return false;
   }
 
- inline bool jj_3_97()
+ inline bool jj_3R_457()
  {
     if (jj_done) return true;
-    if (jj_3R_133()) return true;
+    if (jj_3R_531()) return true;
     return false;
   }
 
- inline bool jj_3R_457()
+ inline bool jj_3R_565()
  {
     if (jj_done) return true;
-    if (jj_3R_531()) return true;
+    if (jj_3R_80()) return true;
     return false;
   }
 
- inline bool jj_3_100()
+ inline bool jj_3R_507()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_565()) {
+    jj_scanpos = xsp;
+    if (jj_3R_566()) return true;
+    }
+    return false;
+  }
+
+ inline bool jj_3_101()
  {
     if (jj_done) return true;
     if (jj_3R_136()) return true;
@@ -4755,21 +4688,13 @@ void parseInline();
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_100()) {
+    if (jj_3_101()) {
     jj_scanpos = xsp;
     if (jj_3R_457()) return true;
     }
     return false;
   }
 
- inline bool jj_3R_319()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_79()) return true;
-    return false;
-  }
-
  inline bool jj_3R_105()
  {
     if (jj_done) return true;
@@ -4780,17 +4705,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_318()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_79()) return true;
-    if (jj_scan_token(ELSE_T)) return true;
-    if (jj_3R_317()) return true;
-    return false;
-  }
-
- inline bool jj_3_99()
+ inline bool jj_3_100()
  {
     if (jj_done) return true;
     if (jj_3R_134()) return true;
@@ -4805,20 +4720,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_167()
- {
-    if (jj_done) return true;
-    if (jj_3R_317()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_318()) { jj_scanpos = xsp; break; }
-    }
-    xsp = jj_scanpos;
-    if (jj_3R_319()) jj_scanpos = xsp;
-    return false;
-  }
-
  inline bool jj_3R_365()
  {
     if (jj_done) return true;
@@ -4827,17 +4728,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_71()
- {
-    if (jj_done) return true;
-    if (jj_3R_114()) return true;
-    if (jj_scan_token(LESSTHAN_T)) return true;
-    if (jj_3R_166()) return true;
-    if (jj_3R_167()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_129()
  {
     if (jj_done) return true;
@@ -4845,7 +4735,7 @@ void parseInline();
     Token * xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3_99()) { jj_scanpos = xsp; break; }
+      if (jj_3_100()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
@@ -4857,14 +4747,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_364()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(UNTIL_T)) return true;
-    if (jj_3R_79()) return true;
-    return false;
-  }
-
  inline bool jj_3R_114()
  {
     if (jj_done) return true;
@@ -4877,7 +4759,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_98()
+ inline bool jj_3_99()
  {
     if (jj_done) return true;
     if (jj_3R_59()) return true;
@@ -4891,24 +4773,34 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_96()
+ inline bool jj_3_25()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_79()) return true;
+    if (jj_scan_token(ELSE_T)) return true;
     return false;
   }
 
- inline bool jj_3R_217()
+ inline bool jj_3R_349()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ALL_T)) return true;
+    if (jj_scan_token(CONFIGURATION_T)) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_79()
+ inline bool jj_3_97()
  {
     if (jj_done) return true;
-    if (jj_3R_58()) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_217()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(ALL_T)) return true;
     return false;
   }
 
@@ -4926,10 +4818,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_24()
+ inline bool jj_3R_319()
  {
     if (jj_done) return true;
-    if (jj_3R_78()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_79()) return true;
     return false;
   }
 
@@ -4958,10 +4851,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_23()
+ inline bool jj_3R_318()
  {
     if (jj_done) return true;
-    if (jj_3R_77()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_79()) return true;
+    if (jj_scan_token(ELSE_T)) return true;
+    if (jj_3R_317()) return true;
     return false;
   }
 
@@ -4972,13 +4868,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_22()
- {
-    if (jj_done) return true;
-    if (jj_3R_76()) return true;
-    return false;
-  }
-
  inline bool jj_3R_84()
  {
     if (jj_done) return true;
@@ -4991,255 +4880,197 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_75()
+ inline bool jj_3R_167()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_317()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_318()) { jj_scanpos = xsp; break; }
+    }
+    xsp = jj_scanpos;
+    if (jj_3R_319()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3_21()
+ inline bool jj_3R_71()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_75()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(79)) jj_scanpos = xsp;
-    if (jj_scan_token(ASSERT_T)) return true;
+    if (jj_3R_114()) return true;
+    if (jj_scan_token(LESSTHAN_T)) return true;
+    if (jj_3R_166()) return true;
+    if (jj_3R_167()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_503()
+ inline bool jj_3R_371()
  {
     if (jj_done) return true;
-    if (jj_3R_78()) return true;
+    if (jj_scan_token(SUBTYPE_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_3R_84()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_502()
+ inline bool jj_3R_630()
  {
     if (jj_done) return true;
-    if (jj_3R_77()) return true;
+    if (jj_3R_112()) return true;
     return false;
   }
 
- inline bool jj_3_20()
+ inline bool jj_3R_571()
  {
     if (jj_done) return true;
-    if (jj_3R_74()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_630()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
- inline bool jj_3R_73()
+ inline bool jj_3R_364()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_scan_token(UNTIL_T)) return true;
+    if (jj_3R_79()) return true;
     return false;
   }
 
- inline bool jj_3R_501()
+ inline bool jj_3R_79()
  {
     if (jj_done) return true;
-    if (jj_3R_76()) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
- inline bool jj_3R_371()
+ inline bool jj_3R_523()
  {
     if (jj_done) return true;
-    if (jj_scan_token(SUBTYPE_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_84()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_569()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
- inline bool jj_3_19()
+ inline bool jj_3_24()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_73()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(79)) jj_scanpos = xsp;
-    if (jj_scan_token(PROCESS_T)) return true;
+    if (jj_3R_78()) return true;
     return false;
   }
 
- inline bool jj_3R_630()
+ inline bool jj_3R_521()
  {
     if (jj_done) return true;
-    if (jj_3R_112()) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_312()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
- inline bool jj_3R_571()
+ inline bool jj_3_96()
  {
     if (jj_done) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_630()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_3R_132()) return true;
     return false;
   }
 
- inline bool jj_3R_72()
+ inline bool jj_3_23()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_77()) return true;
     return false;
   }
 
- inline bool jj_3R_500()
+ inline bool jj_3_95()
  {
     if (jj_done) return true;
-    if (jj_3R_87()) return true;
+    if (jj_3R_131()) return true;
     return false;
   }
 
- inline bool jj_3_18()
+ inline bool jj_3_22()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_72()) jj_scanpos = xsp;
-    if (jj_scan_token(BLOCK_T)) return true;
+    if (jj_3R_76()) return true;
     return false;
   }
 
- inline bool jj_3R_499()
+ inline bool jj_3R_75()
  {
     if (jj_done) return true;
-    if (jj_3R_560()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_498()
+ inline bool jj_3_21()
  {
     if (jj_done) return true;
-    if (jj_3R_74()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_75()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(79)) jj_scanpos = xsp;
+    if (jj_scan_token(ASSERT_T)) return true;
     return false;
   }
 
- inline bool jj_3R_497()
+ inline bool jj_3R_522()
  {
     if (jj_done) return true;
-    if (jj_3R_88()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(84)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(52)) return true;
+    }
     return false;
   }
 
- inline bool jj_3R_523()
+ inline bool jj_3R_503()
  {
     if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_569()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_3R_78()) return true;
     return false;
   }
 
- inline bool jj_3R_409()
+ inline bool jj_3R_432()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_496()) {
-    jj_scanpos = xsp;
-    if (jj_3R_497()) {
-    jj_scanpos = xsp;
-    if (jj_3R_498()) {
-    jj_scanpos = xsp;
-    if (jj_3R_499()) {
-    jj_scanpos = xsp;
-    if (jj_3R_500()) {
-    jj_scanpos = xsp;
-    if (jj_3R_501()) {
-    jj_scanpos = xsp;
-    if (jj_3R_502()) {
-    jj_scanpos = xsp;
-    if (jj_3R_503()) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(187)) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    return false;
-  }
-
- inline bool jj_3R_496()
- {
-    if (jj_done) return true;
-    if (jj_3R_559()) return true;
-    return false;
-  }
-
- inline bool jj_3_17()
- {
-    if (jj_done) return true;
-    if (jj_3R_71()) return true;
-    return false;
-  }
-
- inline bool jj_3R_521()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_312()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
- inline bool jj_3_95()
- {
-    if (jj_done) return true;
-    if (jj_3R_132()) return true;
-    return false;
-  }
-
- inline bool jj_3_94()
- {
-    if (jj_done) return true;
-    if (jj_3R_131()) return true;
-    return false;
-  }
-
- inline bool jj_3R_172()
- {
-    if (jj_done) return true;
-    if (jj_3R_324()) return true;
+    if (jj_3R_522()) jj_scanpos = xsp;
+    if (jj_scan_token(FUNCTION_T)) return true;
+    if (jj_3R_520()) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_523()) jj_scanpos = xsp;
+    if (jj_scan_token(RETURN_T)) return true;
+    if (jj_3R_157()) return true;
     return false;
   }
 
- inline bool jj_3R_522()
+ inline bool jj_3R_502()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(84)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(52)) return true;
-    }
+    if (jj_3R_77()) return true;
     return false;
   }
 
- inline bool jj_3R_171()
+ inline bool jj_3_20()
  {
     if (jj_done) return true;
-    if (jj_3R_71()) return true;
+    if (jj_3R_74()) return true;
     return false;
   }
 
- inline bool jj_3_16()
+ inline bool jj_3R_73()
  {
     if (jj_done) return true;
     if (jj_3R_69()) return true;
@@ -5247,59 +5078,26 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_432()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_522()) jj_scanpos = xsp;
-    if (jj_scan_token(FUNCTION_T)) return true;
-    if (jj_3R_520()) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_523()) jj_scanpos = xsp;
-    if (jj_scan_token(RETURN_T)) return true;
-    if (jj_3R_157()) return true;
-    return false;
-  }
-
- inline bool jj_3R_76()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3_16()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(79)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_171()) {
-    jj_scanpos = xsp;
-    if (jj_3R_172()) return true;
-    }
-    return false;
-  }
-
- inline bool jj_3_15()
+ inline bool jj_3R_501()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_76()) return true;
     return false;
   }
 
- inline bool jj_3R_78()
+ inline bool jj_3_19()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_15()) jj_scanpos = xsp;
+    if (jj_3R_73()) jj_scanpos = xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(79)) jj_scanpos = xsp;
-    if (jj_3R_176()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(PROCESS_T)) return true;
     return false;
   }
 
- inline bool jj_3_14()
+ inline bool jj_3R_72()
  {
     if (jj_done) return true;
     if (jj_3R_69()) return true;
@@ -5307,37 +5105,34 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_13()
+ inline bool jj_3R_500()
  {
     if (jj_done) return true;
-    if (jj_3R_70()) return true;
+    if (jj_3R_87()) return true;
     return false;
   }
 
- inline bool jj_3R_87()
+ inline bool jj_3_18()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_14()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(79)) jj_scanpos = xsp;
-    if (jj_3R_187()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_72()) jj_scanpos = xsp;
+    if (jj_scan_token(BLOCK_T)) return true;
     return false;
   }
 
- inline bool jj_3R_678()
+ inline bool jj_3R_499()
  {
     if (jj_done) return true;
-    if (jj_3R_690()) return true;
+    if (jj_3R_560()) return true;
     return false;
   }
 
- inline bool jj_3R_468()
+ inline bool jj_3R_498()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_74()) return true;
     return false;
   }
 
@@ -5362,43 +5157,64 @@ void parseInline();
     xsp = jj_scanpos;
     if (jj_3R_521()) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3_94()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
     if (jj_3_95()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3_96()) jj_scanpos = xsp;
     if (jj_3R_423()) return true;
     return false;
   }
 
- inline bool jj_3R_677()
+ inline bool jj_3R_497()
  {
     if (jj_done) return true;
-    if (jj_3R_689()) return true;
+    if (jj_3R_88()) return true;
     return false;
   }
 
- inline bool jj_3R_654()
+ inline bool jj_3R_409()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_677()) {
+    if (jj_3R_496()) {
     jj_scanpos = xsp;
-    if (jj_3R_678()) return true;
+    if (jj_3R_497()) {
+    jj_scanpos = xsp;
+    if (jj_3R_498()) {
+    jj_scanpos = xsp;
+    if (jj_3R_499()) {
+    jj_scanpos = xsp;
+    if (jj_3R_500()) {
+    jj_scanpos = xsp;
+    if (jj_3R_501()) {
+    jj_scanpos = xsp;
+    if (jj_3R_502()) {
+    jj_scanpos = xsp;
+    if (jj_3R_503()) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(187)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     }
     return false;
   }
 
- inline bool jj_3R_175()
+ inline bool jj_3R_496()
  {
     if (jj_done) return true;
-    if (jj_3R_328()) return true;
+    if (jj_3R_559()) return true;
     return false;
   }
 
- inline bool jj_3R_174()
+ inline bool jj_3_17()
  {
     if (jj_done) return true;
-    if (jj_3R_70()) return true;
+    if (jj_3R_71()) return true;
     return false;
   }
 
@@ -5414,15 +5230,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_177()
- {
-    if (jj_done) return true;
-    if (jj_3R_330()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_59()) return true;
-    return false;
-  }
-
  inline bool jj_3R_629()
  {
     if (jj_done) return true;
@@ -5441,7 +5248,14 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_92()
+ inline bool jj_3R_172()
+ {
+    if (jj_done) return true;
+    if (jj_3R_324()) return true;
+    return false;
+  }
+
+ inline bool jj_3_93()
  {
     if (jj_done) return true;
     if (jj_3R_64()) return true;
@@ -5455,64 +5269,116 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_673()
+ inline bool jj_3R_171()
  {
     if (jj_done) return true;
-    if (jj_3R_381()) return true;
+    if (jj_3R_71()) return true;
     return false;
   }
 
- inline bool jj_3R_77()
+ inline bool jj_3_16()
  {
     if (jj_done) return true;
     if (jj_3R_69()) return true;
     if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_173()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_174()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_175()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3_93()
+ inline bool jj_3R_76()
  {
     if (jj_done) return true;
-    if (jj_3R_65()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3_16()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(79)) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_171()) {
+    jj_scanpos = xsp;
+    if (jj_3R_172()) return true;
+    }
     return false;
   }
 
- inline bool jj_3R_672()
+ inline bool jj_3R_673()
  {
     if (jj_done) return true;
-    if (jj_3R_378()) return true;
+    if (jj_3R_381()) return true;
     return false;
   }
 
- inline bool jj_3R_671()
+ inline bool jj_3_15()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_670()
+ inline bool jj_3_94()
  {
     if (jj_done) return true;
-    if (jj_3R_376()) return true;
+    if (jj_3R_65()) return true;
     return false;
   }
 
- inline bool jj_3R_669()
+ inline bool jj_3R_672()
  {
     if (jj_done) return true;
-    if (jj_3R_375()) return true;
+    if (jj_3R_378()) return true;
     return false;
   }
 
- inline bool jj_3R_668()
+ inline bool jj_3R_78()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3_15()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(79)) jj_scanpos = xsp;
+    if (jj_3R_176()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_671()
+ {
+    if (jj_done) return true;
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_670()
+ {
+    if (jj_done) return true;
+    if (jj_3R_376()) return true;
+    return false;
+  }
+
+ inline bool jj_3_14()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3_13()
+ {
+    if (jj_done) return true;
+    if (jj_3R_70()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_669()
+ {
+    if (jj_done) return true;
+    if (jj_3R_375()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_668()
  {
     if (jj_done) return true;
     if (jj_3R_374()) return true;
@@ -5533,10 +5399,16 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_467()
+ inline bool jj_3R_87()
  {
     if (jj_done) return true;
-    if (jj_3R_537()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3_14()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(79)) jj_scanpos = xsp;
+    if (jj_3R_187()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
@@ -5554,40 +5426,43 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_466()
+ inline bool jj_3R_678()
  {
     if (jj_done) return true;
-    if (jj_3R_66()) return true;
+    if (jj_3R_690()) return true;
     return false;
   }
 
- inline bool jj_3R_179()
+ inline bool jj_3R_468()
  {
     if (jj_done) return true;
-    if (jj_3R_332()) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_178()
+ inline bool jj_3R_664()
  {
     if (jj_done) return true;
-    if (jj_3R_331()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_370()) return true;
     return false;
   }
 
- inline bool jj_3R_664()
+ inline bool jj_3R_677()
  {
     if (jj_done) return true;
-    if (jj_3R_370()) return true;
+    if (jj_3R_689()) return true;
     return false;
   }
 
- inline bool jj_3R_186()
+ inline bool jj_3R_654()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BAR_T)) return true;
-    if (jj_3R_185()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_677()) {
+    jj_scanpos = xsp;
+    if (jj_3R_678()) return true;
+    }
     return false;
   }
 
@@ -5625,7 +5500,7 @@ void parseInline();
     jj_scanpos = xsp;
     if (jj_3R_673()) {
     jj_scanpos = xsp;
-    if (jj_3_93()) {
+    if (jj_3_94()) {
     jj_scanpos = xsp;
     if (jj_3R_674()) return true;
     }
@@ -5643,23 +5518,17 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_377()
+ inline bool jj_3R_175()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMPONENT_T)) return true;
-    if (jj_3R_69()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(56)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_466()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_467()) jj_scanpos = xsp;
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(COMPONENT_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_468()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_328()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_174()
+ {
+    if (jj_done) return true;
+    if (jj_3R_70()) return true;
     return false;
   }
 
@@ -5671,23 +5540,16 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_80()
+ inline bool jj_3R_177()
  {
     if (jj_done) return true;
-    if (jj_scan_token(FOR_T)) return true;
-    if (jj_3R_177()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_178()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_179()) jj_scanpos = xsp;
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(FOR_T)) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_330()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3_91()
+ inline bool jj_3_92()
  {
     if (jj_done) return true;
     if (jj_3R_130()) return true;
@@ -5713,32 +5575,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_12()
- {
-    if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    return false;
-  }
-
- inline bool jj_3_11()
- {
-    if (jj_done) return true;
-    if (jj_3R_68()) return true;
-    return false;
-  }
-
- inline bool jj_3R_85()
- {
-    if (jj_done) return true;
-    if (jj_3R_185()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_186()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
  inline bool jj_3R_200()
  {
     if (jj_done) return true;
@@ -5747,20 +5583,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_10()
- {
-    if (jj_done) return true;
-    if (jj_3R_67()) return true;
-    return false;
-  }
-
- inline bool jj_3R_336()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(OTHER_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_572()
  {
     if (jj_done) return true;
@@ -5787,7 +5609,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_90()
+ inline bool jj_3_91()
  {
     if (jj_done) return true;
     if (jj_3R_128()) return true;
@@ -5795,129 +5617,163 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_335()
+ inline bool jj_3R_77()
  {
     if (jj_done) return true;
     if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_173()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_174()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_175()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_334()
+ inline bool jj_3R_467()
  {
     if (jj_done) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_537()) return true;
     return false;
   }
 
- inline bool jj_3R_185()
+ inline bool jj_3R_459()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_333()) {
-    jj_scanpos = xsp;
-    if (jj_3R_334()) {
-    jj_scanpos = xsp;
-    if (jj_3R_335()) {
-    jj_scanpos = xsp;
-    if (jj_3R_336()) return true;
-    }
-    }
-    }
+    if (jj_3R_532()) return true;
     return false;
   }
 
- inline bool jj_3R_333()
+ inline bool jj_3R_466()
  {
     if (jj_done) return true;
-    if (jj_3R_67()) return true;
+    if (jj_3R_66()) return true;
     return false;
   }
 
- inline bool jj_3R_627()
+ inline bool jj_3R_162()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_128()) return true;
+    if (jj_3R_129()) return true;
     return false;
   }
 
- inline bool jj_3R_459()
+ inline bool jj_3R_179()
  {
     if (jj_done) return true;
-    if (jj_3R_532()) return true;
+    if (jj_3R_332()) return true;
     return false;
   }
 
- inline bool jj_3R_160()
+ inline bool jj_3R_178()
  {
     if (jj_done) return true;
-    if (jj_3R_128()) return true;
-    if (jj_3R_129()) return true;
+    if (jj_3R_331()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_351()
+ inline bool jj_3R_186()
  {
     if (jj_done) return true;
-    if (jj_scan_token(CHARACTER_LITERAL)) return true;
+    if (jj_scan_token(BAR_T)) return true;
+    if (jj_3R_185()) return true;
     return false;
   }
 
- inline bool jj_3R_613()
+ inline bool jj_3R_377()
  {
     if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_scan_token(COMPONENT_T)) return true;
+    if (jj_3R_69()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(56)) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_466()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_467()) jj_scanpos = xsp;
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(COMPONENT_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_468()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_524()
+ inline bool jj_3R_80()
  {
     if (jj_done) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_570()) return true;
-    if (jj_scan_token(BEGIN_T)) return true;
-    if (jj_3R_571()) return true;
-    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(FOR_T)) return true;
+    if (jj_3R_177()) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_572()) jj_scanpos = xsp;
+    if (jj_3R_178()) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_573()) jj_scanpos = xsp;
+    if (jj_3R_179()) jj_scanpos = xsp;
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(FOR_T)) return true;
     if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_625()
+ inline bool jj_3R_524()
  {
     if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_85()) return true;
-    if (jj_scan_token(ARROW_T)) return true;
-    if (jj_3R_258()) return true;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_3R_570()) return true;
+    if (jj_scan_token(BEGIN_T)) return true;
+    if (jj_3R_571()) return true;
+    if (jj_scan_token(END_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_572()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_573()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_617()
+ inline bool jj_3_12()
  {
     if (jj_done) return true;
     if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_626()
+ inline bool jj_3_11()
  {
     if (jj_done) return true;
-    if (jj_3R_625()) return true;
+    if (jj_3R_68()) return true;
     return false;
   }
 
- inline bool jj_3R_659()
+ inline bool jj_3R_85()
  {
     if (jj_done) return true;
-    if (jj_3R_70()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_185()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_186()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+ inline bool jj_3_10()
+ {
+    if (jj_done) return true;
+    if (jj_3R_67()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_336()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(OTHER_T)) return true;
     return false;
   }
 
@@ -5928,83 +5784,97 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_434()
+ inline bool jj_3R_335()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_59()) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_159()
+ inline bool jj_3R_334()
  {
     if (jj_done) return true;
-    if (jj_3R_313()) return true;
+    if (jj_3R_68()) return true;
     return false;
   }
 
- inline bool jj_3R_255()
+ inline bool jj_3R_434()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_627()
  {
     if (jj_done) return true;
     if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_67()
+ inline bool jj_3R_185()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_159()) jj_scanpos = xsp;
-    if (jj_3R_129()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_160()) { jj_scanpos = xsp; break; }
+    if (jj_3R_333()) {
+    jj_scanpos = xsp;
+    if (jj_3R_334()) {
+    jj_scanpos = xsp;
+    if (jj_3R_335()) {
+    jj_scanpos = xsp;
+    if (jj_3R_336()) return true;
+    }
+    }
     }
     return false;
   }
 
- inline bool jj_3R_121()
+ inline bool jj_3R_333()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_255()) jj_scanpos = xsp;
-    if (jj_scan_token(CASE_T)) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_625()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_626()) { jj_scanpos = xsp; break; }
-    }
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(CASE_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_627()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_67()) return true;
     return false;
   }
 
- inline bool jj_3R_650()
+ inline bool jj_3R_161()
  {
     if (jj_done) return true;
-    if (jj_3R_409()) return true;
+    if (jj_3R_313()) return true;
     return false;
   }
 
- inline bool jj_3R_616()
+ inline bool jj_3R_351()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(CHARACTER_LITERAL)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_68()
  {
     if (jj_done) return true;
     Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_161()) jj_scanpos = xsp;
+    if (jj_3R_129()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_650()) { jj_scanpos = xsp; break; }
+      if (jj_3R_162()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
+ inline bool jj_3R_613()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_357()
  {
     if (jj_done) return true;
@@ -6046,11 +5916,20 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_660()
+ inline bool jj_3R_625()
  {
     if (jj_done) return true;
-    if (jj_3R_328()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_85()) return true;
+    if (jj_scan_token(ARROW_T)) return true;
+    if (jj_3R_258()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_617()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
@@ -6061,6 +5940,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_626()
+ {
+    if (jj_done) return true;
+    if (jj_3R_625()) return true;
+    return false;
+  }
+
  inline bool jj_3R_603()
  {
     if (jj_done) return true;
@@ -6068,6 +5954,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_659()
+ {
+    if (jj_done) return true;
+    if (jj_3R_70()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_602()
  {
     if (jj_done) return true;
@@ -6095,15 +5989,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_506()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_564()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_578()
  {
     if (jj_done) return true;
@@ -6111,29 +5996,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_559()
- {
-    if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_scan_token(BLOCK_T)) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_613()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(56)) jj_scanpos = xsp;
-    if (jj_3R_614()) return true;
-    if (jj_3R_615()) return true;
-    if (jj_scan_token(BEGIN_T)) return true;
-    if (jj_3R_616()) return true;
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(BLOCK_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_617()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_577()
  {
     if (jj_done) return true;
@@ -6153,58 +6015,40 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_9()
- {
-    if (jj_done) return true;
-    if (jj_3R_66()) return true;
-    return false;
-  }
-
- inline bool jj_3R_418()
- {
-    if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_506()) jj_scanpos = xsp;
-    return false;
-  }
-
- inline bool jj_3R_648()
- {
-    if (jj_done) return true;
-    if (jj_3R_537()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_660()) jj_scanpos = xsp;
-    return false;
-  }
-
- inline bool jj_3R_647()
+ inline bool jj_3R_255()
  {
     if (jj_done) return true;
-    if (jj_3R_66()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_659()) jj_scanpos = xsp;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_614()
+ inline bool jj_3R_121()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_647()) jj_scanpos = xsp;
+    if (jj_3R_255()) jj_scanpos = xsp;
+    if (jj_scan_token(CASE_T)) return true;
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_3R_625()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_626()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(CASE_T)) return true;
     xsp = jj_scanpos;
-    if (jj_3R_648()) jj_scanpos = xsp;
+    if (jj_3R_627()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_649()
+ inline bool jj_3R_650()
  {
     if (jj_done) return true;
-    if (jj_3R_140()) return true;
+    if (jj_3R_409()) return true;
     return false;
   }
 
@@ -6224,277 +6068,295 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_615()
+ inline bool jj_3R_616()
  {
     if (jj_done) return true;
     Token * xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_649()) { jj_scanpos = xsp; break; }
+      if (jj_3R_650()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
- inline bool jj_3R_299()
+ inline bool jj_3_90()
  {
     if (jj_done) return true;
-    if (jj_3R_382()) return true;
+    if (jj_3R_127()) return true;
     return false;
   }
 
- inline bool jj_3_89()
+ inline bool jj_3R_660()
  {
     if (jj_done) return true;
-    if (jj_3R_127()) return true;
+    if (jj_3R_328()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3_7()
+ inline bool jj_3_89()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    if (jj_3R_126()) return true;
     return false;
   }
 
- inline bool jj_3_88()
+ inline bool jj_3R_525()
  {
     if (jj_done) return true;
-    if (jj_3R_126()) return true;
+    if (jj_3R_404()) return true;
     return false;
   }
 
- inline bool jj_3_8()
+ inline bool jj_3R_506()
  {
     if (jj_done) return true;
-    if (jj_3R_65()) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_564()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
- inline bool jj_3R_298()
+ inline bool jj_3_88()
  {
     if (jj_done) return true;
-    if (jj_3R_381()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_525()
+ inline bool jj_3R_437()
  {
     if (jj_done) return true;
-    if (jj_3R_404()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3_88()) jj_scanpos = xsp;
+    if (jj_3R_114()) return true;
+    if (jj_scan_token(LESSTHAN_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_525()) jj_scanpos = xsp;
+    if (jj_3R_317()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_297()
+ inline bool jj_3R_559()
  {
     if (jj_done) return true;
-    if (jj_3R_380()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_scan_token(BLOCK_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_613()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(56)) jj_scanpos = xsp;
+    if (jj_3R_614()) return true;
+    if (jj_3R_615()) return true;
+    if (jj_scan_token(BEGIN_T)) return true;
+    if (jj_3R_616()) return true;
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(BLOCK_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_617()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_296()
+ inline bool jj_3_9()
  {
     if (jj_done) return true;
-    if (jj_3R_379()) return true;
+    if (jj_3R_66()) return true;
     return false;
   }
 
- inline bool jj_3_87()
+ inline bool jj_3R_436()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_127()) return true;
     return false;
   }
 
- inline bool jj_3R_295()
+ inline bool jj_3R_386()
  {
     if (jj_done) return true;
-    if (jj_3R_378()) return true;
+    if (jj_3R_476()) return true;
+    if (jj_3R_68()) return true;
     return false;
   }
 
- inline bool jj_3R_437()
+ inline bool jj_3R_418()
  {
     if (jj_done) return true;
+    if (jj_3R_59()) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_87()) jj_scanpos = xsp;
-    if (jj_3R_114()) return true;
-    if (jj_scan_token(LESSTHAN_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_525()) jj_scanpos = xsp;
-    if (jj_3R_317()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_506()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_436()
+ inline bool jj_3R_360()
  {
     if (jj_done) return true;
-    if (jj_3R_127()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_435()) {
+    jj_scanpos = xsp;
+    if (jj_3R_436()) {
+    jj_scanpos = xsp;
+    if (jj_3R_437()) return true;
+    }
+    }
     return false;
   }
 
- inline bool jj_3R_293()
+ inline bool jj_3R_435()
  {
     if (jj_done) return true;
-    if (jj_3R_377()) return true;
+    if (jj_3R_126()) return true;
     return false;
   }
 
- inline bool jj_3R_294()
+ inline bool jj_3R_648()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    if (jj_3R_537()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_660()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_386()
+ inline bool jj_3R_401()
  {
     if (jj_done) return true;
-    if (jj_3R_476()) return true;
-    if (jj_3R_67()) return true;
+    if (jj_scan_token(MINUS_T)) return true;
     return false;
   }
 
- inline bool jj_3R_292()
+ inline bool jj_3R_647()
  {
     if (jj_done) return true;
-    if (jj_3R_376()) return true;
+    if (jj_3R_66()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_659()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_291()
+ inline bool jj_3R_614()
  {
     if (jj_done) return true;
-    if (jj_3R_375()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_647()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_648()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_360()
+ inline bool jj_3R_313()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_435()) {
-    jj_scanpos = xsp;
-    if (jj_3R_436()) {
+    if (jj_3R_400()) {
     jj_scanpos = xsp;
-    if (jj_3R_437()) return true;
-    }
+    if (jj_3R_401()) return true;
     }
     return false;
   }
 
- inline bool jj_3R_435()
+ inline bool jj_3R_400()
  {
     if (jj_done) return true;
-    if (jj_3R_126()) return true;
+    if (jj_scan_token(PLUS_T)) return true;
     return false;
   }
 
- inline bool jj_3R_290()
+ inline bool jj_3R_649()
  {
     if (jj_done) return true;
-    if (jj_3R_374()) return true;
+    if (jj_3R_140()) return true;
     return false;
   }
 
- inline bool jj_3R_289()
+ inline bool jj_3R_615()
  {
     if (jj_done) return true;
-    if (jj_3R_373()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_649()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
- inline bool jj_3R_288()
+ inline bool jj_3R_551()
  {
     if (jj_done) return true;
-    if (jj_3R_372()) return true;
+    if (jj_scan_token(ROR_T)) return true;
     return false;
   }
 
- inline bool jj_3R_287()
+ inline bool jj_3R_550()
  {
     if (jj_done) return true;
-    if (jj_3R_371()) return true;
+    if (jj_scan_token(ROL_T)) return true;
     return false;
   }
 
- inline bool jj_3R_286()
+ inline bool jj_3R_549()
  {
     if (jj_done) return true;
-    if (jj_3R_370()) return true;
+    if (jj_scan_token(SRA_T)) return true;
     return false;
   }
 
- inline bool jj_3R_420()
+ inline bool jj_3R_548()
  {
     if (jj_done) return true;
-    if (jj_3R_507()) return true;
+    if (jj_scan_token(SLA_T)) return true;
     return false;
   }
 
- inline bool jj_3R_401()
+ inline bool jj_3R_547()
  {
     if (jj_done) return true;
-    if (jj_scan_token(MINUS_T)) return true;
+    if (jj_scan_token(SRL_T)) return true;
     return false;
   }
 
- inline bool jj_3R_419()
+ inline bool jj_3R_546()
  {
     if (jj_done) return true;
-    if (jj_3R_381()) return true;
+    if (jj_scan_token(SLL_T)) return true;
     return false;
   }
 
- inline bool jj_3R_140()
+ inline bool jj_3R_299()
+ {
+    if (jj_done) return true;
+    if (jj_3R_382()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_476()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_285()) {
-    jj_scanpos = xsp;
-    if (jj_3R_286()) {
-    jj_scanpos = xsp;
-    if (jj_3R_287()) {
-    jj_scanpos = xsp;
-    if (jj_3R_288()) {
-    jj_scanpos = xsp;
-    if (jj_3R_289()) {
-    jj_scanpos = xsp;
-    if (jj_3R_290()) {
-    jj_scanpos = xsp;
-    if (jj_3R_291()) {
-    jj_scanpos = xsp;
-    if (jj_3R_292()) {
-    jj_scanpos = xsp;
-    if (jj_3R_293()) {
-    jj_scanpos = xsp;
-    if (jj_3R_294()) {
-    jj_scanpos = xsp;
-    if (jj_3R_295()) {
+    if (jj_3R_546()) {
     jj_scanpos = xsp;
-    if (jj_3R_296()) {
+    if (jj_3R_547()) {
     jj_scanpos = xsp;
-    if (jj_3R_297()) {
+    if (jj_3R_548()) {
     jj_scanpos = xsp;
-    if (jj_3R_298()) {
+    if (jj_3R_549()) {
     jj_scanpos = xsp;
-    if (jj_3_8()) {
+    if (jj_3R_550()) {
     jj_scanpos = xsp;
-    if (jj_3R_299()) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
+    if (jj_3R_551()) return true;
     }
     }
     }
@@ -6503,248 +6365,285 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_285()
+ inline bool jj_3_7()
  {
     if (jj_done) return true;
-    if (jj_3R_92()) return true;
+    if (jj_3R_64()) return true;
     return false;
   }
 
- inline bool jj_3R_313()
+ inline bool jj_3_8()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_400()) {
-    jj_scanpos = xsp;
-    if (jj_3R_401()) return true;
-    }
+    if (jj_3R_65()) return true;
     return false;
   }
 
- inline bool jj_3R_400()
+ inline bool jj_3R_298()
  {
     if (jj_done) return true;
-    if (jj_scan_token(PLUS_T)) return true;
+    if (jj_3R_381()) return true;
     return false;
   }
 
- inline bool jj_3R_551()
+ inline bool jj_3R_297()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ROR_T)) return true;
+    if (jj_3R_380()) return true;
     return false;
   }
 
- inline bool jj_3R_550()
+ inline bool jj_3R_306()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ROL_T)) return true;
+    if (jj_3R_68()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_386()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_549()
+ inline bool jj_3R_296()
  {
     if (jj_done) return true;
-    if (jj_scan_token(SRA_T)) return true;
+    if (jj_3R_379()) return true;
     return false;
   }
 
- inline bool jj_3R_548()
+ inline bool jj_3R_295()
  {
     if (jj_done) return true;
-    if (jj_scan_token(SLA_T)) return true;
+    if (jj_3R_378()) return true;
     return false;
   }
 
- inline bool jj_3R_332()
+ inline bool jj_3R_244()
  {
     if (jj_done) return true;
-    if (jj_scan_token(FOR_T)) return true;
-    if (jj_3R_418()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_419()) { jj_scanpos = xsp; break; }
-    }
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_420()) { jj_scanpos = xsp; break; }
-    }
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(FOR_T)) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_362()) return true;
     return false;
   }
 
- inline bool jj_3R_547()
+ inline bool jj_3_87()
  {
     if (jj_done) return true;
-    if (jj_scan_token(SRL_T)) return true;
+    if (jj_3R_125()) return true;
     return false;
   }
 
- inline bool jj_3R_546()
+ inline bool jj_3R_293()
  {
     if (jj_done) return true;
-    if (jj_scan_token(SLL_T)) return true;
+    if (jj_3R_377()) return true;
     return false;
   }
 
- inline bool jj_3R_476()
+ inline bool jj_3R_294()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_546()) {
-    jj_scanpos = xsp;
-    if (jj_3R_547()) {
-    jj_scanpos = xsp;
-    if (jj_3R_548()) {
-    jj_scanpos = xsp;
-    if (jj_3R_549()) {
-    jj_scanpos = xsp;
-    if (jj_3R_550()) {
-    jj_scanpos = xsp;
-    if (jj_3R_551()) return true;
-    }
-    }
-    }
-    }
-    }
+    if (jj_3R_64()) return true;
     return false;
   }
 
- inline bool jj_3R_306()
+ inline bool jj_3R_292()
  {
     if (jj_done) return true;
-    if (jj_3R_67()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_386()) jj_scanpos = xsp;
+    if (jj_3R_376()) return true;
     return false;
   }
 
- inline bool jj_3R_244()
+ inline bool jj_3R_291()
  {
     if (jj_done) return true;
-    if (jj_3R_362()) return true;
+    if (jj_3R_375()) return true;
     return false;
   }
 
- inline bool jj_3R_94()
+ inline bool jj_3_86()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BIT_STRING_LITERAL)) return true;
+    if (jj_3R_124()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_290()
+ {
+    if (jj_done) return true;
+    if (jj_3R_374()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_289()
+ {
+    if (jj_done) return true;
+    if (jj_3R_373()) return true;
     return false;
   }
 
- inline bool jj_3R_239()
+ inline bool jj_3R_288()
  {
     if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_3R_372()) return true;
     return false;
   }
 
- inline bool jj_3_86()
+ inline bool jj_3_85()
  {
     if (jj_done) return true;
-    if (jj_3R_125()) return true;
+    if (jj_3R_123()) return true;
     return false;
   }
 
- inline bool jj_3R_417()
+ inline bool jj_3R_287()
  {
     if (jj_done) return true;
-    if (jj_3R_328()) return true;
+    if (jj_3R_371()) return true;
     return false;
   }
 
- inline bool jj_3_85()
+ inline bool jj_3R_118()
  {
     if (jj_done) return true;
-    if (jj_3R_124()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_416()
+ inline bool jj_3R_286()
  {
     if (jj_done) return true;
-    if (jj_3R_70()) return true;
+    if (jj_3R_370()) return true;
     return false;
   }
 
- inline bool jj_3R_415()
+ inline bool jj_3R_420()
  {
     if (jj_done) return true;
-    if (jj_scan_token(USE_T)) return true;
-    if (jj_3R_505()) return true;
+    if (jj_3R_507()) return true;
     return false;
   }
 
- inline bool jj_3_84()
+ inline bool jj_3R_419()
  {
     if (jj_done) return true;
-    if (jj_3R_123()) return true;
+    if (jj_3R_381()) return true;
     return false;
   }
 
- inline bool jj_3R_331()
+ inline bool jj_3_80()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_415()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_416()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_417()) jj_scanpos = xsp;
+    if (jj_3R_118()) jj_scanpos = xsp;
+    if (jj_3R_114()) return true;
+    if (jj_scan_token(VARASSIGN_T)) return true;
     return false;
   }
 
- inline bool jj_3R_118()
+ inline bool jj_3_84()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_122()) return true;
     return false;
   }
 
- inline bool jj_3_79()
+ inline bool jj_3R_140()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_118()) jj_scanpos = xsp;
-    if (jj_3R_114()) return true;
-    if (jj_scan_token(VARASSIGN_T)) return true;
+    if (jj_3R_285()) {
+    jj_scanpos = xsp;
+    if (jj_3R_286()) {
+    jj_scanpos = xsp;
+    if (jj_3R_287()) {
+    jj_scanpos = xsp;
+    if (jj_3R_288()) {
+    jj_scanpos = xsp;
+    if (jj_3R_289()) {
+    jj_scanpos = xsp;
+    if (jj_3R_290()) {
+    jj_scanpos = xsp;
+    if (jj_3R_291()) {
+    jj_scanpos = xsp;
+    if (jj_3R_292()) {
+    jj_scanpos = xsp;
+    if (jj_3R_293()) {
+    jj_scanpos = xsp;
+    if (jj_3R_294()) {
+    jj_scanpos = xsp;
+    if (jj_3R_295()) {
+    jj_scanpos = xsp;
+    if (jj_3R_296()) {
+    jj_scanpos = xsp;
+    if (jj_3R_297()) {
+    jj_scanpos = xsp;
+    if (jj_3R_298()) {
+    jj_scanpos = xsp;
+    if (jj_3_8()) {
+    jj_scanpos = xsp;
+    if (jj_3R_299()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     return false;
   }
 
- inline bool jj_3_83()
+ inline bool jj_3R_285()
  {
     if (jj_done) return true;
-    if (jj_3R_122()) return true;
+    if (jj_3R_92()) return true;
     return false;
   }
 
- inline bool jj_3_82()
+ inline bool jj_3_83()
  {
     if (jj_done) return true;
     if (jj_3R_121()) return true;
     return false;
   }
 
- inline bool jj_3_81()
+ inline bool jj_3_82()
  {
     if (jj_done) return true;
     if (jj_3R_120()) return true;
     return false;
   }
 
- inline bool jj_3_80()
+ inline bool jj_3R_332()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(FOR_T)) return true;
+    if (jj_3R_418()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_419()) { jj_scanpos = xsp; break; }
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_420()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(FOR_T)) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3_81()
  {
     if (jj_done) return true;
     if (jj_3R_119()) return true;
@@ -6766,7 +6665,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_75()
+ inline bool jj_3_76()
  {
     if (jj_done) return true;
     Token * xsp;
@@ -6777,21 +6676,37 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_78()
+ inline bool jj_3_79()
  {
     if (jj_done) return true;
     if (jj_3R_117()) return true;
     return false;
   }
 
- inline bool jj_3_77()
+ inline bool jj_3_78()
  {
     if (jj_done) return true;
     if (jj_3R_116()) return true;
     return false;
   }
 
- inline bool jj_3_76()
+ inline bool jj_3R_94()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(BIT_STRING_LITERAL)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_239()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3_77()
  {
     if (jj_done) return true;
     if (jj_3R_115()) return true;
@@ -6808,6 +6723,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_417()
+ {
+    if (jj_done) return true;
+    if (jj_3R_328()) return true;
+    return false;
+  }
+
  inline bool jj_3R_112()
  {
     if (jj_done) return true;
@@ -6815,15 +6737,13 @@ void parseInline();
     xsp = jj_scanpos;
     if (jj_3R_242()) {
     jj_scanpos = xsp;
-    if (jj_3_76()) {
-    jj_scanpos = xsp;
     if (jj_3_77()) {
     jj_scanpos = xsp;
     if (jj_3_78()) {
     jj_scanpos = xsp;
-    if (jj_3R_243()) {
+    if (jj_3_79()) {
     jj_scanpos = xsp;
-    if (jj_3_80()) {
+    if (jj_3R_243()) {
     jj_scanpos = xsp;
     if (jj_3_81()) {
     jj_scanpos = xsp;
@@ -6837,6 +6757,8 @@ void parseInline();
     jj_scanpos = xsp;
     if (jj_3_86()) {
     jj_scanpos = xsp;
+    if (jj_3_87()) {
+    jj_scanpos = xsp;
     if (jj_3R_244()) return true;
     }
     }
@@ -6860,96 +6782,76 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_508()
+ inline bool jj_3R_416()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_59()) return true;
+    if (jj_3R_70()) return true;
     return false;
   }
 
- inline bool jj_3R_338()
+ inline bool jj_3R_415()
  {
     if (jj_done) return true;
-    if (jj_scan_token(SEVERITY_T)) return true;
-    if (jj_3R_58()) return true;
+    if (jj_scan_token(USE_T)) return true;
+    if (jj_3R_505()) return true;
     return false;
   }
 
- inline bool jj_3_74()
+ inline bool jj_3R_508()
  {
     if (jj_done) return true;
-    if (jj_3R_112()) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3R_258()
+ inline bool jj_3R_331()
  {
     if (jj_done) return true;
     Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3_74()) { jj_scanpos = xsp; break; }
-    }
+    xsp = jj_scanpos;
+    if (jj_3R_415()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_416()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_417()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_266()
+ inline bool jj_3_75()
  {
     if (jj_done) return true;
-    if (jj_3R_58()) return true;
+    if (jj_3R_112()) return true;
     return false;
   }
 
- inline bool jj_3R_421()
+ inline bool jj_3R_258()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
     Token * xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_508()) { jj_scanpos = xsp; break; }
+      if (jj_3_75()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
- inline bool jj_3R_378()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(ATTRIBUTE_T)) return true;
-    if (jj_3R_219()) return true;
-    if (jj_scan_token(OF_T)) return true;
-    if (jj_3R_469()) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
- inline bool jj_3R_315()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_314()) return true;
-    return false;
-  }
-
- inline bool jj_3R_110()
+ inline bool jj_3R_421()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(APOSTROPHE_T)) return true;
     if (jj_3R_59()) return true;
     Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_239()) jj_scanpos = xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_508()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
- inline bool jj_3_73()
+ inline bool jj_3R_266()
  {
     if (jj_done) return true;
-    if (jj_3R_111()) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
@@ -6961,29 +6863,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_354()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(RANGE_T)) return true;
-    return false;
-  }
-
- inline bool jj_3R_219()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_353()) {
-    jj_scanpos = xsp;
-    if (jj_3R_354()) return true;
-    }
-    return false;
-  }
-
- inline bool jj_3R_353()
+ inline bool jj_3_74()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_111()) return true;
     return false;
   }
 
@@ -7001,13 +6884,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_688()
- {
-    if (jj_done) return true;
-    if (jj_3R_111()) return true;
-    return false;
-  }
-
  inline bool jj_3R_324()
  {
     if (jj_done) return true;
@@ -7022,51 +6898,60 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_6()
+ inline bool jj_3R_338()
  {
     if (jj_done) return true;
-    if (jj_3R_63()) return true;
-    if (jj_scan_token(ARROW_T)) return true;
+    if (jj_scan_token(SEVERITY_T)) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
- inline bool jj_3R_64()
+ inline bool jj_3R_688()
+ {
+    if (jj_done) return true;
+    if (jj_3R_111()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_471()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ATTRIBUTE_T)) return true;
     if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_157()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(DOT_T)) return true;
+    if (jj_3R_99()) return true;
     return false;
   }
 
- inline bool jj_3R_337()
+ inline bool jj_3R_378()
  {
     if (jj_done) return true;
-    if (jj_scan_token(REPORT_T)) return true;
+    if (jj_scan_token(ATTRIBUTE_T)) return true;
+    if (jj_3R_219()) return true;
+    if (jj_scan_token(OF_T)) return true;
+    if (jj_3R_469()) return true;
+    if (jj_scan_token(IS_T)) return true;
     if (jj_3R_58()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_471()
+ inline bool jj_3R_315()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(DOT_T)) return true;
-    if (jj_3R_99()) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_314()) return true;
     return false;
   }
 
- inline bool jj_3R_165()
+ inline bool jj_3R_110()
  {
     if (jj_done) return true;
-    if (jj_3R_314()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(APOSTROPHE_T)) return true;
+    if (jj_3R_59()) return true;
     Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_315()) { jj_scanpos = xsp; break; }
-    }
+    xsp = jj_scanpos;
+    if (jj_3R_239()) jj_scanpos = xsp;
     return false;
   }
 
@@ -7080,29 +6965,29 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_402()
+ inline bool jj_3R_354()
  {
     if (jj_done) return true;
-    if (jj_3R_63()) return true;
-    if (jj_scan_token(ARROW_T)) return true;
+    if (jj_scan_token(RANGE_T)) return true;
     return false;
   }
 
- inline bool jj_3R_314()
+ inline bool jj_3R_219()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_402()) jj_scanpos = xsp;
-    if (jj_3R_403()) return true;
+    if (jj_3R_353()) {
+    jj_scanpos = xsp;
+    if (jj_3R_354()) return true;
+    }
     return false;
   }
 
- inline bool jj_3R_247()
+ inline bool jj_3R_353()
  {
     if (jj_done) return true;
-    if (jj_3R_139()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
@@ -7116,17 +7001,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_115()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_247()) jj_scanpos = xsp;
-    if (jj_3R_187()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_675()
  {
     if (jj_done) return true;
@@ -7146,24 +7020,38 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_265()
+ inline bool jj_3_6()
+ {
+    if (jj_done) return true;
+    if (jj_3R_63()) return true;
+    if (jj_scan_token(ARROW_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_64()
  {
     if (jj_done) return true;
+    if (jj_scan_token(ATTRIBUTE_T)) return true;
     if (jj_3R_69()) return true;
     if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_157()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_187()
+ inline bool jj_3R_337()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ASSERT_T)) return true;
-    if (jj_3R_79()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_337()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_338()) jj_scanpos = xsp;
+    if (jj_scan_token(REPORT_T)) return true;
+    if (jj_3R_58()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_265()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
@@ -7180,13 +7068,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_5()
- {
-    if (jj_done) return true;
-    if (jj_3R_62()) return true;
-    return false;
-  }
-
  inline bool jj_3R_249()
  {
     if (jj_done) return true;
@@ -7195,10 +7076,15 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_698()
+ inline bool jj_3R_165()
  {
     if (jj_done) return true;
-    if (jj_3R_703()) return true;
+    if (jj_3R_314()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_315()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
@@ -7210,22 +7096,21 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_697()
+ inline bool jj_3R_402()
  {
     if (jj_done) return true;
-    if (jj_3R_62()) return true;
+    if (jj_3R_63()) return true;
+    if (jj_scan_token(ARROW_T)) return true;
     return false;
   }
 
- inline bool jj_3R_689()
+ inline bool jj_3R_314()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_697()) {
-    jj_scanpos = xsp;
-    if (jj_3R_698()) return true;
-    }
+    if (jj_3R_402()) jj_scanpos = xsp;
+    if (jj_3R_403()) return true;
     return false;
   }
 
@@ -7237,6 +7122,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_247()
+ {
+    if (jj_done) return true;
+    if (jj_3R_139()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_116()
  {
     if (jj_done) return true;
@@ -7258,6 +7151,17 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_115()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_247()) jj_scanpos = xsp;
+    if (jj_3R_187()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_482()
  {
     if (jj_done) return true;
@@ -7324,10 +7228,23 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_465()
+ inline bool jj_3R_187()
  {
     if (jj_done) return true;
-    if (jj_3R_233()) return true;
+    if (jj_scan_token(ASSERT_T)) return true;
+    if (jj_3R_79()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_337()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_338()) jj_scanpos = xsp;
+    return false;
+  }
+
+ inline bool jj_3_5()
+ {
+    if (jj_done) return true;
+    if (jj_3R_62()) return true;
     return false;
   }
 
@@ -7348,6 +7265,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_698()
+ {
+    if (jj_done) return true;
+    if (jj_3R_703()) return true;
+    return false;
+  }
+
  inline bool jj_3R_690()
  {
     if (jj_done) return true;
@@ -7365,143 +7289,97 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_236()
+ inline bool jj_3R_697()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_235()) return true;
+    if (jj_3R_62()) return true;
     return false;
   }
 
- inline bool jj_3_71()
+ inline bool jj_3R_689()
  {
     if (jj_done) return true;
-    if (jj_3R_67()) return true;
-    if (jj_3R_109()) return true;
-    if (jj_3R_67()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_697()) {
+    jj_scanpos = xsp;
+    if (jj_3R_698()) return true;
+    }
     return false;
   }
 
  inline bool jj_3_72()
  {
     if (jj_done) return true;
-    if (jj_3R_110()) return true;
-    return false;
-  }
-
- inline bool jj_3R_81()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(RANGE_T)) return true;
-    if (jj_3R_83()) return true;
-    return false;
-  }
-
- inline bool jj_3R_575()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(NEW_T)) return true;
-    if (jj_3R_84()) return true;
-    return false;
-  }
-
- inline bool jj_3_70()
- {
-    if (jj_done) return true;
-    if (jj_3R_108()) return true;
-    return false;
-  }
-
- inline bool jj_3R_182()
- {
-    if (jj_done) return true;
-    if (jj_3R_110()) return true;
-    return false;
-  }
-
- inline bool jj_3R_181()
- {
-    if (jj_done) return true;
-    if (jj_3R_67()) return true;
+    if (jj_3R_68()) return true;
     if (jj_3R_109()) return true;
-    if (jj_3R_67()) return true;
+    if (jj_3R_68()) return true;
     return false;
   }
 
- inline bool jj_3R_83()
+ inline bool jj_3_73()
  {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_181()) {
-    jj_scanpos = xsp;
-    if (jj_3R_182()) return true;
-    }
+    if (jj_done) return true;
+    if (jj_3R_110()) return true;
     return false;
   }
 
- inline bool jj_3R_530()
+ inline bool jj_3R_81()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3_4()) {
-    jj_scanpos = xsp;
-    if (jj_3R_575()) return true;
-    }
+    if (jj_scan_token(RANGE_T)) return true;
+    if (jj_3R_83()) return true;
     return false;
   }
 
- inline bool jj_3_4()
+ inline bool jj_3_71()
  {
     if (jj_done) return true;
-    if (jj_scan_token(NEW_T)) return true;
-    if (jj_3R_61()) return true;
+    if (jj_3R_108()) return true;
     return false;
   }
 
- inline bool jj_3R_536()
+ inline bool jj_3R_182()
  {
     if (jj_done) return true;
-    if (jj_3R_309()) return true;
+    if (jj_3R_110()) return true;
     return false;
   }
 
- inline bool jj_3R_227()
+ inline bool jj_3R_181()
  {
     if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_3R_68()) return true;
+    if (jj_3R_109()) return true;
+    if (jj_3R_68()) return true;
     return false;
   }
 
- inline bool jj_3R_535()
+ inline bool jj_3R_83()
  {
     if (jj_done) return true;
-    if (jj_scan_token(CHARACTER_LITERAL)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_181()) {
+    jj_scanpos = xsp;
+    if (jj_3R_182()) return true;
+    }
     return false;
   }
 
- inline bool jj_3R_534()
+ inline bool jj_3R_465()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_233()) return true;
     return false;
   }
 
- inline bool jj_3R_463()
+ inline bool jj_3R_227()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_534()) {
-    jj_scanpos = xsp;
-    if (jj_3R_535()) {
-    jj_scanpos = xsp;
-    if (jj_3R_536()) return true;
-    }
-    }
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
@@ -7526,6 +7404,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_236()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_235()) return true;
+    return false;
+  }
+
  inline bool jj_3R_341()
  {
     if (jj_done) return true;
@@ -7544,14 +7430,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_464()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_84()) return true;
-    return false;
-  }
-
  inline bool jj_3R_192()
  {
     if (jj_done) return true;
@@ -7559,19 +7437,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_376()
+ inline bool jj_3R_575()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ALIAS_T)) return true;
-    if (jj_3R_463()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_464()) jj_scanpos = xsp;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_59()) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_465()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(NEW_T)) return true;
+    if (jj_3R_84()) return true;
     return false;
   }
 
@@ -7582,149 +7452,162 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_108()
+ inline bool jj_3R_530()
  {
     if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_235()) return true;
     Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_236()) { jj_scanpos = xsp; break; }
+    xsp = jj_scanpos;
+    if (jj_3_4()) {
+    jj_scanpos = xsp;
+    if (jj_3R_575()) return true;
     }
-    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
- inline bool jj_3R_272()
+ inline bool jj_3_4()
  {
     if (jj_done) return true;
-    if (jj_scan_token(MINUS_T)) return true;
+    if (jj_scan_token(NEW_T)) return true;
+    if (jj_3R_61()) return true;
     return false;
   }
 
- inline bool jj_3R_273()
+ inline bool jj_3R_536()
  {
     if (jj_done) return true;
-    if (jj_scan_token(AMPERSAND_T)) return true;
+    if (jj_3R_309()) return true;
     return false;
   }
 
- inline bool jj_3R_128()
+ inline bool jj_3R_535()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_271()) {
-    jj_scanpos = xsp;
-    if (jj_3R_272()) {
-    jj_scanpos = xsp;
-    if (jj_3R_273()) return true;
-    }
-    }
+    if (jj_scan_token(CHARACTER_LITERAL)) return true;
     return false;
   }
 
- inline bool jj_3R_271()
+ inline bool jj_3R_534()
  {
     if (jj_done) return true;
-    if (jj_scan_token(PLUS_T)) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3_3()
+ inline bool jj_3R_463()
  {
     if (jj_done) return true;
-    if (jj_3R_60()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_534()) {
+    jj_scanpos = xsp;
+    if (jj_3R_535()) {
+    jj_scanpos = xsp;
+    if (jj_3R_536()) return true;
+    }
+    }
     return false;
   }
 
- inline bool jj_3R_491()
+ inline bool jj_3R_464()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BOX_T)) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_84()) return true;
     return false;
   }
 
- inline bool jj_3R_492()
+ inline bool jj_3R_376()
  {
     if (jj_done) return true;
+    if (jj_scan_token(ALIAS_T)) return true;
+    if (jj_3R_463()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_464()) jj_scanpos = xsp;
+    if (jj_scan_token(IS_T)) return true;
     if (jj_3R_59()) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_60()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_465()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_403()
+ inline bool jj_3R_189()
  {
     if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_490()) {
-    jj_scanpos = xsp;
-    if (jj_3R_491()) {
+    if (jj_scan_token(15)) {
     jj_scanpos = xsp;
-    if (jj_3R_492()) return true;
-    }
+    if (jj_3R_339()) return true;
     }
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
- inline bool jj_3R_490()
+ inline bool jj_3R_108()
  {
     if (jj_done) return true;
-    if (jj_3R_60()) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_235()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_236()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
- inline bool jj_3_2()
+ inline bool jj_3R_272()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
+    if (jj_scan_token(MINUS_T)) return true;
     return false;
   }
 
- inline bool jj_3R_225()
+ inline bool jj_3R_273()
  {
     if (jj_done) return true;
-    if (jj_3R_165()) return true;
+    if (jj_scan_token(AMPERSAND_T)) return true;
     return false;
   }
 
- inline bool jj_3R_189()
+ inline bool jj_3R_128()
  {
     if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(15)) {
+    if (jj_3R_271()) {
     jj_scanpos = xsp;
-    if (jj_3R_339()) return true;
+    if (jj_3R_272()) {
+    jj_scanpos = xsp;
+    if (jj_3R_273()) return true;
+    }
     }
-    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
- inline bool jj_3_1()
+ inline bool jj_3R_271()
  {
     if (jj_done) return true;
-    if (jj_3R_58()) return true;
+    if (jj_scan_token(PLUS_T)) return true;
     return false;
   }
 
- inline bool jj_3R_153()
+ inline bool jj_3R_188()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_188()
+ inline bool jj_3_3()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_60()) return true;
     return false;
   }
 
@@ -7754,13 +7637,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_152()
- {
-    if (jj_done) return true;
-    if (jj_3R_58()) return true;
-    return false;
-  }
-
  inline bool jj_3R_340()
  {
     if (jj_done) return true;
@@ -7768,25 +7644,20 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_151()
+ inline bool jj_3R_491()
  {
     if (jj_done) return true;
-    if (jj_scan_token(OPEN_T)) return true;
+    if (jj_scan_token(BOX_T)) return true;
     return false;
   }
 
- inline bool jj_3R_60()
+ inline bool jj_3R_492()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_151()) {
-    jj_scanpos = xsp;
-    if (jj_3R_152()) {
-    jj_scanpos = xsp;
-    if (jj_3R_153()) return true;
-    }
-    }
+    if (jj_3R_59()) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
@@ -7801,29 +7672,43 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_655()
+ inline bool jj_3R_518()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ACCESS_T)) return true;
-    if (jj_3R_84()) return true;
+    if (jj_3R_382()) return true;
     return false;
   }
 
- inline bool jj_3R_518()
+ inline bool jj_3R_403()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_490()) {
+    jj_scanpos = xsp;
+    if (jj_3R_491()) {
+    jj_scanpos = xsp;
+    if (jj_3R_492()) return true;
+    }
+    }
+    return false;
+  }
+
+ inline bool jj_3R_490()
  {
     if (jj_done) return true;
-    if (jj_3R_382()) return true;
+    if (jj_3R_60()) return true;
     return false;
   }
 
- inline bool jj_3R_224()
+ inline bool jj_3_2()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BASED_LITERAL)) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3_69()
+ inline bool jj_3_70()
  {
     if (jj_done) return true;
     if (jj_3R_65()) return true;
@@ -7837,10 +7722,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_223()
+ inline bool jj_3R_225()
  {
     if (jj_done) return true;
-    if (jj_scan_token(INTEGER)) return true;
+    if (jj_3R_165()) return true;
     return false;
   }
 
@@ -7851,29 +7736,14 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_222()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(DECIMAL_LITERAL)) return true;
-    return false;
-  }
-
- inline bool jj_3R_103()
+ inline bool jj_3_1()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_222()) {
-    jj_scanpos = xsp;
-    if (jj_3R_223()) {
-    jj_scanpos = xsp;
-    if (jj_3R_224()) return true;
-    }
-    }
+    if (jj_3R_58()) return true;
     return false;
   }
 
- inline bool jj_3_68()
+ inline bool jj_3_69()
  {
     if (jj_done) return true;
     if (jj_3R_64()) return true;
@@ -7908,6 +7778,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_153()
+ {
+    if (jj_done) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
  inline bool jj_3R_511()
  {
     if (jj_done) return true;
@@ -7922,6 +7799,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_152()
+ {
+    if (jj_done) return true;
+    if (jj_3R_58()) return true;
+    return false;
+  }
+
  inline bool jj_3R_422()
  {
     if (jj_done) return true;
@@ -7941,13 +7825,13 @@ void parseInline();
     jj_scanpos = xsp;
     if (jj_3R_515()) {
     jj_scanpos = xsp;
-    if (jj_3_68()) {
+    if (jj_3_69()) {
     jj_scanpos = xsp;
     if (jj_3R_516()) {
     jj_scanpos = xsp;
     if (jj_3R_517()) {
     jj_scanpos = xsp;
-    if (jj_3_69()) {
+    if (jj_3_70()) {
     jj_scanpos = xsp;
     if (jj_3R_518()) return true;
     }
@@ -7980,7 +7864,37 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_67()
+ inline bool jj_3R_151()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(OPEN_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_60()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_151()) {
+    jj_scanpos = xsp;
+    if (jj_3R_152()) {
+    jj_scanpos = xsp;
+    if (jj_3R_153()) return true;
+    }
+    }
+    return false;
+  }
+
+ inline bool jj_3R_655()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(ACCESS_T)) return true;
+    if (jj_3R_84()) return true;
+    return false;
+  }
+
+ inline bool jj_3_68()
  {
     if (jj_done) return true;
     if (jj_3R_69()) return true;
@@ -7993,12 +7907,48 @@ void parseInline();
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_67()) jj_scanpos = xsp;
+    if (jj_3_68()) jj_scanpos = xsp;
     if (jj_3R_176()) return true;
     if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
+ inline bool jj_3R_224()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(BASED_LITERAL)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_223()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(INTEGER)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_222()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(DECIMAL_LITERAL)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_103()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_222()) {
+    jj_scanpos = xsp;
+    if (jj_3R_223()) {
+    jj_scanpos = xsp;
+    if (jj_3R_224()) return true;
+    }
+    }
+    return false;
+  }
+
  inline bool jj_3R_176()
  {
     if (jj_done) return true;
@@ -8009,7 +7959,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_65()
+ inline bool jj_3_66()
  {
     if (jj_done) return true;
     if (jj_3R_86()) return true;
@@ -8023,7 +7973,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_66()
+ inline bool jj_3_67()
  {
     if (jj_done) return true;
     if (jj_3R_107()) return true;
@@ -8062,7 +8012,7 @@ void parseInline();
     jj_scanpos = xsp;
     if (jj_3R_203()) {
     jj_scanpos = xsp;
-    if (jj_3_66()) {
+    if (jj_3_67()) {
     jj_scanpos = xsp;
     if (jj_3R_204()) return true;
     }
@@ -8072,14 +8022,14 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_64()
+ inline bool jj_3_65()
  {
     if (jj_done) return true;
     if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3_63()
+ inline bool jj_3_64()
  {
     if (jj_done) return true;
     if (jj_3R_106()) return true;
@@ -8093,7 +8043,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_62()
+ inline bool jj_3_63()
  {
     if (jj_done) return true;
     if (jj_3R_105()) return true;
@@ -8107,7 +8057,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_61()
+ inline bool jj_3_62()
  {
     if (jj_done) return true;
     if (jj_3R_61()) return true;
@@ -8121,7 +8071,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_60()
+ inline bool jj_3_61()
  {
     if (jj_done) return true;
     if (jj_scan_token(LPAREN_T)) return true;
@@ -8137,24 +8087,24 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_59()
+ inline bool jj_3_60()
  {
     if (jj_done) return true;
     if (jj_3R_104()) return true;
     return false;
   }
 
- inline bool jj_3R_452()
+ inline bool jj_3R_241()
  {
     if (jj_done) return true;
-    if (jj_3R_105()) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3R_241()
+ inline bool jj_3R_452()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
+    if (jj_3R_105()) return true;
     return false;
   }
 
@@ -8229,6 +8179,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_240()
+ {
+    if (jj_done) return true;
+    if (jj_3R_359()) return true;
+    return false;
+  }
+
  inline bool jj_3R_537()
  {
     if (jj_done) return true;
@@ -8240,13 +8197,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_240()
- {
-    if (jj_done) return true;
-    if (jj_3R_359()) return true;
-    return false;
-  }
-
  inline bool jj_3R_111()
  {
     if (jj_done) return true;
@@ -8265,7 +8215,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_58()
+ inline bool jj_3_59()
  {
     if (jj_done) return true;
     if (jj_3R_103()) return true;
@@ -8294,25 +8244,25 @@ void parseInline();
     if (jj_done) return true;
     if (jj_3R_69()) return true;
     if (jj_scan_token(IN_T)) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_67()) return true;
     return false;
   }
 
- inline bool jj_3_57()
+ inline bool jj_3_58()
  {
     if (jj_done) return true;
     if (jj_3R_86()) return true;
     return false;
   }
 
- inline bool jj_3_55()
+ inline bool jj_3_56()
  {
     if (jj_done) return true;
     if (jj_3R_64()) return true;
     return false;
   }
 
- inline bool jj_3_56()
+ inline bool jj_3_57()
  {
     if (jj_done) return true;
     if (jj_3R_65()) return true;
@@ -8327,7 +8277,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_54()
+ inline bool jj_3_55()
  {
     if (jj_done) return true;
     if (jj_3R_65()) return true;
@@ -8388,7 +8338,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_53()
+ inline bool jj_3_54()
  {
     if (jj_done) return true;
     if (jj_3R_102()) return true;
@@ -8509,7 +8459,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_52()
+ inline bool jj_3_53()
  {
     if (jj_done) return true;
     if (jj_scan_token(LBRACKET_T)) return true;
@@ -8555,7 +8505,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_51()
+ inline bool jj_3_52()
  {
     if (jj_done) return true;
     if (jj_scan_token(LPAREN_T)) return true;
@@ -8582,23 +8532,23 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_47()
+ inline bool jj_3_48()
  {
     if (jj_done) return true;
     if (jj_3R_98()) return true;
     return false;
   }
 
- inline bool jj_3_50()
+ inline bool jj_3_51()
  {
     if (jj_done) return true;
     if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_67()) return true;
     if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
- inline bool jj_3_49()
+ inline bool jj_3_50()
  {
     if (jj_done) return true;
     if (jj_3R_100()) return true;
@@ -8619,7 +8569,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_48()
+ inline bool jj_3_49()
  {
     if (jj_done) return true;
     if (jj_scan_token(DOT_T)) return true;
@@ -8638,7 +8588,7 @@ void parseInline();
  {
     if (jj_done) return true;
     if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_67()) return true;
     if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
@@ -8683,7 +8633,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_46()
+ inline bool jj_3_47()
  {
     if (jj_done) return true;
     if (jj_3R_97()) return true;
@@ -8849,6 +8799,74 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_257()
+ {
+    if (jj_done) return true;
+    if (jj_3R_366()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_256()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3R_122()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_256()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_257()) jj_scanpos = xsp;
+    if (jj_scan_token(LOOP_T)) return true;
+    if (jj_3R_258()) return true;
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(LOOP_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_628()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3_46()
+ {
+    if (jj_done) return true;
+    if (jj_3R_96()) return true;
+    return false;
+  }
+
+ inline bool jj_3_45()
+ {
+    if (jj_done) return true;
+    if (jj_3R_95()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_232()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(NULL_T)) return true;
+    return false;
+  }
+
+ inline bool jj_3_44()
+ {
+    if (jj_done) return true;
+    if (jj_3R_94()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_231()
+ {
+    if (jj_done) return true;
+    if (jj_3R_355()) return true;
+    return false;
+  }
+
 
 public: 
   TokenManager *token_source;
@@ -8859,7 +8877,7 @@ public:
   Token        *jj_nt;
 private: 
   int           jj_ntk;
-  JJCalls       jj_2_rtns[115];
+  JJCalls       jj_2_rtns[116];
   bool          jj_rescan;
   int           jj_gc;
   Token        *jj_scanpos, *jj_lastpos;
diff --git a/vhdlparser/VhdlParserTokenManager.cc b/vhdlparser/VhdlParserTokenManager.cc
index ca09e99..07364a4 100644
--- a/vhdlparser/VhdlParserTokenManager.cc
+++ b/vhdlparser/VhdlParserTokenManager.cc
@@ -13,10 +13,10 @@ static const unsigned long long jjbitVec3[] = {
    0x0ULL, 0x0ULL, 0xffffffff00000000ULL, 0xffffffffffffffffULL
 };
 static const int jjnextStates[] = {
-   53, 54, 55, 56, 57, 60, 64, 65, 66, 47, 48, 2, 36, 37, 0, 3, 
-   4, 5, 7, 12, 13, 15, 16, 32, 33, 35, 38, 39, 41, 55, 56, 57, 
-   60, 59, 58, 60, 64, 65, 66, 67, 68, 70, 9, 10, 23, 24, 27, 28, 
-   44, 46, 49, 51, 26, 29, 
+   54, 55, 56, 57, 58, 61, 65, 66, 67, 48, 49, 2, 37, 38, 0, 3, 
+   4, 5, 7, 12, 13, 15, 16, 24, 23, 25, 33, 34, 36, 39, 40, 42, 
+   56, 57, 58, 61, 60, 59, 61, 65, 66, 67, 68, 69, 71, 9, 10, 28, 
+   29, 45, 47, 50, 52, 27, 30, 
 };
 static JAVACC_CHAR_TYPE jjstrLiteralChars_0[] = {0};
 static JAVACC_CHAR_TYPE jjstrLiteralChars_1[] = {0};
@@ -2683,7 +2683,7 @@ int VhdlParserTokenManager::jjMoveNfa_0(int startState, int curPos){
    curChar = input_stream->readChar();
    curPos = 0;
    int startsAt = 0;
-   jjnewStateCnt = 75;
+   jjnewStateCnt = 76;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
@@ -2814,216 +2814,216 @@ int VhdlParserTokenManager::jjMoveNfa_0(int startState, int curPos){
                   break;
                case 22:
                   if (curChar == 34)
-                     { jjCheckNAddTwoStates(23, 24); }
+                     { jjCheckNAdd(23); }
                   break;
                case 23:
                   if ((0x3ff000000000000ULL & l) != 0L)
-                     { jjCheckNAddTwoStates(23, 24); }
+                     { jjCheckNAddStates(23, 25); }
                   break;
-               case 24:
+               case 25:
                   if (curChar == 34 && kind > 179)
                      kind = 179;
                   break;
-               case 26:
+               case 27:
                   if (curChar == 34)
-                     { jjCheckNAddTwoStates(27, 28); }
+                     { jjCheckNAddTwoStates(28, 29); }
                   break;
-               case 27:
+               case 28:
                   if ((0xfffffffb00000200ULL & l) != 0L)
-                     { jjCheckNAddTwoStates(27, 28); }
+                     { jjCheckNAddTwoStates(28, 29); }
                   break;
-               case 28:
+               case 29:
                   if (curChar != 34)
                      break;
                   if (kind > 187)
                      kind = 187;
-                  { jjCheckNAddTwoStates(26, 29); }
+                  { jjCheckNAddTwoStates(27, 30); }
                   break;
-               case 29:
+               case 30:
                   if ((0xfffffffb00000200ULL & l) == 0L)
                      break;
                   if (kind > 187)
                      kind = 187;
-                  { jjCheckNAddTwoStates(26, 29); }
+                  { jjCheckNAddTwoStates(27, 30); }
                   break;
-               case 30:
+               case 31:
                   if (curChar == 45)
                      { jjCheckNAddStates(11, 13); }
                   break;
-               case 31:
+               case 32:
                   if (curChar != 35)
                      break;
                   if (kind > 7)
                      kind = 7;
-                  { jjCheckNAddStates(23, 25); }
+                  { jjCheckNAddStates(26, 28); }
                   break;
-               case 32:
+               case 33:
                   if ((0xffffffffffffdbffULL & l) == 0L)
                      break;
                   if (kind > 7)
                      kind = 7;
-                  { jjCheckNAddStates(23, 25); }
+                  { jjCheckNAddStates(26, 28); }
                   break;
-               case 33:
+               case 34:
                   if ((0x2400ULL & l) != 0L && kind > 7)
                      kind = 7;
                   break;
-               case 34:
+               case 35:
                   if (curChar == 10 && kind > 7)
                      kind = 7;
                   break;
-               case 35:
+               case 36:
                   if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 34;
+                     jjstateSet[jjnewStateCnt++] = 35;
                   break;
-               case 36:
+               case 37:
                   if (curChar == 45)
-                     jjstateSet[jjnewStateCnt++] = 31;
+                     jjstateSet[jjnewStateCnt++] = 32;
                   break;
-               case 37:
+               case 38:
                   if (curChar != 45)
                      break;
                   if (kind > 8)
                      kind = 8;
-                  { jjCheckNAddStates(26, 28); }
+                  { jjCheckNAddStates(29, 31); }
                   break;
-               case 38:
+               case 39:
                   if ((0xffffffffffffdbffULL & l) == 0L)
                      break;
                   if (kind > 8)
                      kind = 8;
-                  { jjCheckNAddStates(26, 28); }
+                  { jjCheckNAddStates(29, 31); }
                   break;
-               case 39:
+               case 40:
                   if ((0x2400ULL & l) != 0L && kind > 8)
                      kind = 8;
                   break;
-               case 40:
+               case 41:
                   if (curChar == 10 && kind > 8)
                      kind = 8;
                   break;
-               case 41:
+               case 42:
                   if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 40;
+                     jjstateSet[jjnewStateCnt++] = 41;
                   break;
-               case 42:
+               case 43:
                   if (curChar == 47)
                      { jjAddStates(9, 10); }
                   break;
-               case 43:
-                  if (curChar == 33)
-                     { jjCheckNAddTwoStates(44, 46); }
-                  break;
                case 44:
-                  { jjCheckNAddTwoStates(44, 46); }
+                  if (curChar == 33)
+                     { jjCheckNAddTwoStates(45, 47); }
                   break;
                case 45:
-                  if (curChar == 47 && kind > 9)
-                     kind = 9;
+                  { jjCheckNAddTwoStates(45, 47); }
                   break;
                case 46:
-                  if (curChar == 42)
-                     jjstateSet[jjnewStateCnt++] = 45;
+                  if (curChar == 47 && kind > 9)
+                     kind = 9;
                   break;
                case 47:
                   if (curChar == 42)
-                     jjstateSet[jjnewStateCnt++] = 43;
+                     jjstateSet[jjnewStateCnt++] = 46;
                   break;
                case 48:
                   if (curChar == 42)
-                     { jjCheckNAddTwoStates(49, 51); }
+                     jjstateSet[jjnewStateCnt++] = 44;
                   break;
                case 49:
-                  { jjCheckNAddTwoStates(49, 51); }
+                  if (curChar == 42)
+                     { jjCheckNAddTwoStates(50, 52); }
                   break;
                case 50:
+                  { jjCheckNAddTwoStates(50, 52); }
+                  break;
+               case 51:
                   if (curChar == 47 && kind > 10)
                      kind = 10;
                   break;
-               case 51:
+               case 52:
                   if (curChar == 42)
-                     jjstateSet[jjnewStateCnt++] = 50;
+                     jjstateSet[jjnewStateCnt++] = 51;
                   break;
-               case 52:
+               case 53:
                   if ((0x3ff000000000000ULL & l) == 0L)
                      break;
                   if (kind > 165)
                      kind = 165;
                   { jjCheckNAddStates(0, 8); }
                   break;
-               case 54:
+               case 55:
                   if ((0x3ff000000000000ULL & l) == 0L)
                      break;
                   if (kind > 165)
                      kind = 165;
-                  { jjCheckNAddTwoStates(53, 54); }
+                  { jjCheckNAddTwoStates(54, 55); }
                   break;
-               case 56:
+               case 57:
                   if ((0x3ff000000000000ULL & l) == 0L)
                      break;
                   if (kind > 170)
                      kind = 170;
-                  { jjCheckNAddStates(29, 32); }
+                  { jjCheckNAddStates(32, 35); }
                   break;
-               case 57:
+               case 58:
                   if (curChar == 46)
-                     { jjCheckNAdd(58); }
+                     { jjCheckNAdd(59); }
                   break;
-               case 58:
+               case 59:
                   if ((0x3ff000000000000ULL & l) == 0L)
                      break;
                   if (kind > 170)
                      kind = 170;
-                  { jjCheckNAddStates(33, 35); }
+                  { jjCheckNAddStates(36, 38); }
                   break;
-               case 61:
+               case 62:
                   if ((0x280000000000ULL & l) != 0L)
-                     { jjCheckNAdd(62); }
+                     { jjCheckNAdd(63); }
                   break;
-               case 62:
+               case 63:
                   if ((0x3ff000000000000ULL & l) == 0L)
                      break;
                   if (kind > 170)
                      kind = 170;
-                  { jjCheckNAddTwoStates(63, 62); }
+                  { jjCheckNAddTwoStates(64, 63); }
                   break;
-               case 65:
+               case 66:
                   if ((0x3ff000000000000ULL & l) != 0L)
-                     { jjCheckNAddStates(36, 38); }
+                     { jjCheckNAddStates(39, 41); }
                   break;
-               case 66:
+               case 67:
                   if (curChar == 35)
-                     { jjCheckNAdd(67); }
+                     { jjCheckNAdd(68); }
                   break;
-               case 67:
+               case 68:
                   if ((0x3ff000000000000ULL & l) != 0L)
-                     { jjCheckNAddStates(39, 41); }
+                     { jjCheckNAddStates(42, 44); }
                   break;
-               case 68:
+               case 69:
                   if (curChar == 46)
-                     { jjCheckNAdd(69); }
+                     { jjCheckNAdd(70); }
                   break;
-               case 69:
+               case 70:
                   if ((0x3ff000000000000ULL & l) != 0L)
-                     { jjCheckNAddTwoStates(69, 70); }
+                     { jjCheckNAddTwoStates(70, 71); }
                   break;
-               case 70:
+               case 71:
                   if (curChar != 35)
                      break;
                   if (kind > 172)
                      kind = 172;
-                  jjstateSet[jjnewStateCnt++] = 71;
+                  jjstateSet[jjnewStateCnt++] = 72;
                   break;
-               case 72:
+               case 73:
                   if ((0x280000000000ULL & l) != 0L)
-                     { jjCheckNAdd(73); }
+                     { jjCheckNAdd(74); }
                   break;
-               case 73:
+               case 74:
                   if ((0x3ff000000000000ULL & l) == 0L)
                      break;
                   if (kind > 172)
                      kind = 172;
-                  { jjCheckNAddTwoStates(74, 73); }
+                  { jjCheckNAddTwoStates(75, 74); }
                   break;
                default : break;
             }
@@ -3045,7 +3045,7 @@ int VhdlParserTokenManager::jjMoveNfa_0(int startState, int curPos){
                      { jjCheckNAdd(20); }
                   }
                   else if (curChar == 96)
-                     { jjCheckNAddTwoStates(26, 29); }
+                     { jjCheckNAddTwoStates(27, 30); }
                   else if (curChar == 92)
                      { jjCheckNAddTwoStates(15, 16); }
                   if ((0x7fffffe07fffffeULL & l) != 0L)
@@ -3064,7 +3064,7 @@ int VhdlParserTokenManager::jjMoveNfa_0(int startState, int curPos){
                   break;
                case 9:
                   if ((0x7fffffffffffffffULL & l) != 0L)
-                     { jjAddStates(42, 43); }
+                     { jjAddStates(45, 46); }
                   break;
                case 12:
                   if (curChar == 95)
@@ -3106,78 +3106,82 @@ int VhdlParserTokenManager::jjMoveNfa_0(int startState, int curPos){
                   break;
                case 23:
                   if ((0x7fffffe07fffffeULL & l) != 0L)
-                     { jjAddStates(44, 45); }
+                     { jjCheckNAddStates(23, 25); }
                   break;
-               case 25:
+               case 24:
+                  if (curChar == 95)
+                     { jjCheckNAddTwoStates(24, 23); }
+                  break;
+               case 26:
                   if (curChar == 96)
-                     { jjCheckNAddTwoStates(26, 29); }
+                     { jjCheckNAddTwoStates(27, 30); }
                   break;
-               case 27:
+               case 28:
                   if ((0x7fffffffffffffffULL & l) != 0L)
-                     { jjAddStates(46, 47); }
+                     { jjAddStates(47, 48); }
                   break;
-               case 29:
+               case 30:
                   if ((0x7fffffffffffffffULL & l) == 0L)
                      break;
                   if (kind > 187)
                      kind = 187;
-                  { jjCheckNAddTwoStates(26, 29); }
+                  { jjCheckNAddTwoStates(27, 30); }
                   break;
-               case 32:
+               case 33:
                   if (kind > 7)
                      kind = 7;
-                  { jjAddStates(23, 25); }
+                  { jjAddStates(26, 28); }
                   break;
-               case 38:
+               case 39:
                   if (kind > 8)
                      kind = 8;
-                  { jjAddStates(26, 28); }
+                  { jjAddStates(29, 31); }
                   break;
-               case 44:
-                  { jjAddStates(48, 49); }
+               case 45:
+                  { jjAddStates(49, 50); }
                   break;
-               case 49:
-                  { jjAddStates(50, 51); }
+               case 50:
+                  { jjAddStates(51, 52); }
                   break;
-               case 53:
+               case 54:
                   if (curChar == 95)
-                     jjstateSet[jjnewStateCnt++] = 54;
+                     jjstateSet[jjnewStateCnt++] = 55;
                   break;
-               case 55:
+               case 56:
                   if (curChar == 95)
-                     jjstateSet[jjnewStateCnt++] = 56;
+                     jjstateSet[jjnewStateCnt++] = 57;
                   break;
-               case 59:
+               case 60:
                   if (curChar == 95)
-                     jjstateSet[jjnewStateCnt++] = 58;
+                     jjstateSet[jjnewStateCnt++] = 59;
                   break;
-               case 60:
+               case 61:
                   if ((0x2000000020ULL & l) != 0L)
-                     { jjCheckNAddTwoStates(61, 62); }
+                     { jjCheckNAddTwoStates(62, 63); }
                   break;
-               case 63:
+               case 64:
                   if (curChar == 95)
-                     { jjCheckNAdd(62); }
+                     { jjCheckNAdd(63); }
                   break;
-               case 64:
+               case 65:
                   if (curChar == 95)
-                     jjstateSet[jjnewStateCnt++] = 65;
+                     jjstateSet[jjnewStateCnt++] = 66;
                   break;
-               case 67:
+               case 68:
                   if ((0x7fffffe07fffffeULL & l) != 0L)
-                     { jjCheckNAddStates(39, 41); }
+                     { jjCheckNAddStates(42, 44); }
                   break;
-               case 69:
+               case 70:
                   if ((0x7fffffe07fffffeULL & l) != 0L)
-                     { jjCheckNAddTwoStates(69, 70); }
+                     { jjCheckNAddTwoStates(70, 71); }
                   break;
-               case 71:
+               case 72:
                   if ((0x2000000020ULL & l) != 0L)
-                     { jjCheckNAddTwoStates(72, 73); }
+                     { jjCheckNAddTwoStates(73, 74); }
                   break;
-               case 74:
+               case 75:
                   if (curChar == 95)
-                     { jjCheckNAdd(73); }
+                     { jjCheckNAdd(74); }
                   break;
                default : break;
             }
@@ -3203,7 +3207,7 @@ int VhdlParserTokenManager::jjMoveNfa_0(int startState, int curPos){
                   break;
                case 9:
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(42, 43); }
+                     { jjAddStates(45, 46); }
                   break;
                case 15:
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -3213,38 +3217,38 @@ int VhdlParserTokenManager::jjMoveNfa_0(int startState, int curPos){
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
                      jjstateSet[jjnewStateCnt++] = 19;
                   break;
-               case 27:
+               case 28:
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(46, 47); }
+                     { jjAddStates(47, 48); }
                   break;
-               case 29:
+               case 30:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 187)
                      kind = 187;
-                  { jjAddStates(52, 53); }
+                  { jjAddStates(53, 54); }
                   break;
-               case 32:
+               case 33:
                   if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 7)
                      kind = 7;
-                  { jjAddStates(23, 25); }
+                  { jjAddStates(26, 28); }
                   break;
-               case 38:
+               case 39:
                   if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 8)
                      kind = 8;
-                  { jjAddStates(26, 28); }
+                  { jjAddStates(29, 31); }
                   break;
-               case 44:
+               case 45:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(48, 49); }
+                     { jjAddStates(49, 50); }
                   break;
-               case 49:
+               case 50:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(50, 51); }
+                     { jjAddStates(51, 52); }
                   break;
                default : if (i1 == 0 || l1 == 0 || i2 == 0 ||  l2 == 0) break; else break;
             }
@@ -3257,7 +3261,7 @@ int VhdlParserTokenManager::jjMoveNfa_0(int startState, int curPos){
          kind = 0x7fffffff;
       }
       ++curPos;
-      if ((i = jjnewStateCnt), (jjnewStateCnt = startsAt), (i == (startsAt = 75 - startsAt)))
+      if ((i = jjnewStateCnt), (jjnewStateCnt = startsAt), (i == (startsAt = 76 - startsAt)))
          break;
       if (input_stream->endOfInput()) { break; }
       curChar = input_stream->readChar();
@@ -3570,6 +3574,12 @@ void  VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
                       ::vhdl::parser::VhdlParser::setLineParsed(UNITS_T);
          break;
        }
+      case 137 : {
+        image.append(jjstrLiteralImages[137]);
+        lengthOfMatch = jjstrLiteralImages[137].length();
+                  ::vhdl::parser::VhdlParser::setLineParsed(SEMI_T);
+         break;
+       }
       default :
          break;
    }
@@ -3591,7 +3601,7 @@ void  VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
   void VhdlParserTokenManager::ReInitRounds() {
     int i;
     jjround = 0x80000001;
-    for (i = 75; i-- > 0;)
+    for (i = 76; i-- > 0;)
       jjrounds[i] = 0x80000000;
   }
 
diff --git a/vhdlparser/VhdlParserTokenManager.h b/vhdlparser/VhdlParserTokenManager.h
index f24c8e3..d624373 100644
--- a/vhdlparser/VhdlParserTokenManager.h
+++ b/vhdlparser/VhdlParserTokenManager.h
@@ -121,8 +121,8 @@ void  TokenLexicalActions(Token *matchedToken);
   const JAVACC_SIMPLE_STRING jjKindsForBitVector(int i, unsigned long long vec);
   const JAVACC_SIMPLE_STRING jjKindsForStateVector(int lexState, int vec[], int start, int end);
   JAVACC_CHARSTREAM*        input_stream;
-  int                       jjrounds[75];
-  int                       jjstateSet[2 * 75];
+  int                       jjrounds[76];
+  int                       jjstateSet[2 * 76];
   JAVACC_STRING_TYPE        jjimage;
   JAVACC_STRING_TYPE        image;
   int                       jjimageLen;
diff --git a/vhdlparser/vhdlparser.jj b/vhdlparser/vhdlparser.jj
index befc4e0..2886d29 100644
--- a/vhdlparser/vhdlparser.jj
+++ b/vhdlparser/vhdlparser.jj
@@ -18,7 +18,7 @@ options {
   TOKEN_MANAGER_INCLUDES="VhdlParser.h";
 
  //OUTPUT_DIRECTORY = ".";
-// DEBUG_PARSER=true;
+ //DEBUG_PARSER=true;
  //DEBUG_LOOKAHEAD=true;
 
   }
@@ -256,7 +256,7 @@ TOKEN :
 | < COMMA_T: "," >
 | < VARASSIGN_T: ":=" >
 | < COLON_T: ":" >
-| < SEMI_T: ";" >
+| < SEMI_T: ";" >{::vhdl::parser::VhdlParser::setLineParsed(SEMI_T);}
 | < LESSTHAN_T: "<=" >
 | < GREATERTHAN_T: ">=" >
 | < LT_T: "<" >
@@ -303,7 +303,7 @@ TOKEN:
  | < #LETTER_OR_DIGIT: ( <LETTER> | <DIGIT> ) >
  | < #LETTER: (<UPPER_CASE_LETTER>|<LOWER_CASE_LETTER>) >
  | < #UPPER_CASE_LETTER: ["A"-"Z"]  >
- | <BIT_STRING_LITERAL : <BASE_SPECIFIER >["\""](<LETTER_OR_DIGIT>)* ["\""] >
+ | <BIT_STRING_LITERAL : <BASE_SPECIFIER >["\""](<LETTER_OR_DIGIT>((["_"])*<LETTER_OR_DIGIT>)*) ["\""] >
  | <#BASE_SPECIFIER:["B","O","X","b","o","x"]>
  | < #DIGIT: ["0"-"9"] >
  | < #SPECIAL_CHARACTER: ["#","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","_","|"] >
@@ -656,12 +656,12 @@ QCString character_literal() :  {Token *tok=0;}
 
 QCString choice() : {QCString s;}
 {
-   LOOKAHEAD(simple_expression())
-  s=simple_expression(){ return s; }
-  |
   LOOKAHEAD(discrete_range())
   s=discrete_range(){ return s; }
   |
+   LOOKAHEAD(simple_expression())
+   s=simple_expression(){ return s; }
+  |
   LOOKAHEAD(identifier())
   s=identifier(){ return s; }
   | <OTHER_T> { return " others "; }
@@ -713,7 +713,7 @@ instantiation_list() <COLON_T> name()
 QCString composite_type_definition() :  { QCString s,s1;}
 {
  s=array_type_definition(){ return s; }
-| record_type_definition(){ return s; }
+| record_type_definition(){ return s+"#"; }
 }
 
 void concurrent_assertion_statement() :  {}
@@ -951,7 +951,13 @@ return s1;
 
 QCString element_declaration() :  {QCString s,s1;}
 {
-s=identifier_list() <COLON_T> s1=subtype_indication() <SEMI_T> {return s+":"+s1;}
+s=identifier_list() <COLON_T> s1=subtype_indication() <SEMI_T>
+{
+
+  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s1.data(),Public);
+  //addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public);
+  return s+":"+s1;
+}
 }
 
 
@@ -1191,16 +1197,37 @@ QCString formal_part() : {QCString s,s1;}
 s=name() [<LPAREN_T> formal_designator() <RPAREN_T> {s+"("+s1+")";}] {return s;}
 }
 
-QCString full_type_declaration() :  {QCString s,s1,s2;}
+QCString full_type_declaration() :  {Entry *tmpEntry;QCString s,s1,s2;}
 {
 <TYPE_T> s=identifier() <IS_T>
+{
+  tmpEntry=current;
+  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,0,Public);
+}
  try{
      s2=type_definition()
        }catch(...){error_skipto(SEMI_T);}
      <SEMI_T>
      {
-       addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
-          return "type "+s+" is "+s2+";";
+      if (s2.contains("#")) {
+        VhdlDocGen::deleteAllChars(s2,'#');
+        tmpEntry->spec=VhdlDocGen::RECORD;
+        tmpEntry->type=s2.data();
+        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public);
+      }
+      else if (s2.contains("%")) {
+        VhdlDocGen::deleteAllChars(s2,'%');
+        tmpEntry->spec=VhdlDocGen::UNITS;
+        tmpEntry->type=s2.data();
+        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public);
+      }
+      else {
+        tmpEntry->spec=VhdlDocGen::TYPE;
+        tmpEntry->type=s2.data();
+        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
+      }
+      tmpEntry=0;
+      return "type "+s+" is "+s2+";";
      }
 }
 
@@ -1340,10 +1367,10 @@ QCString index_subtype_definition() :  {QCString s;}
  s=type_mark() <RANGE_T> <BOX_T> { return s+" range <> ";}
 }
 
-QCString instantiation_unit() :  {QCString s,s1,s2;Token *tok=0;}
+QCString instantiation_unit() :  {QCString s,s1,s2;}
 {
-[ tok=<COMPONENT_T> ] s=identifier() {s1="component"; return s; }
-| tok=<ENTITY_T> s2=name() {s=tok->image.c_str()+s2;} [ <LPAREN_T> s1=identifier() <RPAREN_T> {s+="(";s+=s1;s+=")" ;}] { return s;}
+[ <COMPONENT_T> ] s=identifier() {s1="component "; return s; }
+| <ENTITY_T>  [LOOKAHEAD(2)<BASIC_IDENTIFIER> <DOT_T>] s2=name() {s="entity "+s2;} [ <LPAREN_T> s1=identifier() <RPAREN_T> {s+="(";s+=s1;s+=")" ;}] { return s;}
 | <CONFIGURATION_T> s=name() {s1="configuration ";return s;}
 }
 
@@ -1762,15 +1789,13 @@ QCString physical_literal() :  {QCString s,s1;}
 QCString physical_type_definition() : {QCString s,s1,s2;}
 {
         <UNITS_T>
-            s=identifier()<SEMI_T>
-            (s1=secondary_unit_declaration(){s2+=s1;s2+="#";})*
+            s=identifier()<SEMI_T> { addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,0,Public);}
+            (
+             s1=secondary_unit_declaration()
+            )*
             <END_T> <UNITS_T>  [name()]
-            {
-             current->args=s2;
-               current->args.prepend("units");
-             current->spec=VhdlDocGen::UNITS;
-            return s2;
-           }
+            { return s+"%";}
+
 }
 
 void port_clause() :  {}
@@ -1989,7 +2014,7 @@ QCString scalar_type_definition() : {QCString s,s1;}
 {
 
 s=enumeration_type_definition(){ return s;}
-| s=range_constraint() [LOOKAHEAD( physical_type_definition()) s1=physical_type_definition()] { s+=" ";s+=s1;return s;}
+| s=range_constraint() [LOOKAHEAD( physical_type_definition()) s1=physical_type_definition()] { return s+" "+s1+"%";}
 }
 
 void secondary_unit() :  {}
@@ -2000,7 +2025,12 @@ architecture_body()
 
 QCString secondary_unit_declaration() :  {QCString s,s1;}
 {
-s=identifier() <EQU_T> s1=physical_literal() <SEMI_T> { return s+"="+s1; }
+s=identifier() <EQU_T> s1=physical_literal() <SEMI_T>
+{
+  //printf("\n %s %s [%d]",s.data(),s1.data(),getLine());
+  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,s1.data(),Public);
+
+  return s+"="+s1; }
 }
 
 QCString selected_name() : {QCString s,s1;}
diff --git a/vhdlparser/vhdlparser.pro.in b/vhdlparser/vhdlparser.pro.in
deleted file mode 100644
index 0232fd5..0000000
--- a/vhdlparser/vhdlparser.pro.in
+++ /dev/null
@@ -1,33 +0,0 @@
-TEMPLATE	= lib
-CONFIG		= warn_on staticlib $extraopts
-HEADERS		= CharStream.h \
-		  ErrorHandler.h \
-                  JavaCC.h \
-                  ParseException.h \
-		  TokenManager.h \
-		  Token.h \
-		  vhdlstring.h \
-		  VhdlParser.h \
-		  VhdlParserConstants.h \
-		  VhdlParserTokenManager.h \
-		  TokenMgrError.h \
-	          VhdlParserIF.h \
-                  VhdlParserErrorHandler.hpp
-
-SOURCES		= CharStream.cc \
-		  ParseException.cc \
-		  Token.cc \
-		  TokenMgrError.cc \
-		  VhdlParser.cc \
-		  VhdlParserTokenManager.cc \
-                  VhdlParserIF.cpp
-
-INCLUDEPATH = . ../src ../qtools generated_src/doxygen
-#TMAKE_CXXFLAGS += -DQT_NO_CODECS -DQ T_LITE_UNICODE
-
-#must enable -fexceptions because we have try catch blocks in VhdlParser.cc
-TMAKE_CXXFLAGS +=-w -fexceptions -DQT_LITE_UNICODE
-win32:TMAKE_CXXFLAGS += -fexceptions -DQT_NODLL
-win32-g++:TMAKE_CXXFLAGS += -fexceptions -D__CYGWIN__ -DALL_STATIC
-OBJECTS_DIR = ../objects/vhdlparser
-DESTDIR = ../lib
diff --git a/winbuild/.gitignore b/winbuild/.gitignore
index a073474..e69de29 100644
--- a/winbuild/.gitignore
+++ b/winbuild/.gitignore
@@ -1,7 +0,0 @@
-Debug/
-Debug64/
-Release/
-Release64/
-Doxygen.ncb
-Doxygen.suo
-*.user
\ No newline at end of file
diff --git a/winbuild/Config.rules b/winbuild/Config.rules
deleted file mode 100644
index 788497d..0000000
--- a/winbuild/Config.rules
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-	Name="config"
-	Version="8.00"
-	>
-	<Rules>
-		<CustomBuildRule
-			Name="Config"
-			DisplayName="Config"
-			CommandLine="python "$(ProjectDir)..\src\configgen.py" -cpp [AllOptions] [AdditionalOptions] [inputs] > $(IntDir)/$(InputName)options.cpp"
-			Outputs="$(IntDir)/$(InputName)options.cpp"
-			FileExtensions="*.xml"
-			AdditionalDependencies="$(ProjectDir)..\src\configgen.py"
-			ExecutionDescription="Executing configgen for doxygen..."
-			ShowOnlyRuleProperties="false"
-			>
-		</CustomBuildRule>
-		<CustomBuildRule
-			Name="Config_dw"
-			DisplayName="Config"
-			CommandLine="python "$(ProjectDir)..\src\configgen.py" -wiz [AllOptions] [AdditionalOptions] [inputs]  > $(IntDir)/$(InputName)doc.cpp"
-			Outputs="$(IntDir)/$(InputName)doc.cpp"
-			FileExtensions="*.xml"
-			AdditionalDependencies="$(ProjectDir)..\src\configgen.py"
-			ExecutionDescription="Executing configgen for doxywizard ..."
-			ShowOnlyRuleProperties="false"
-			>
-		</CustomBuildRule>
-	</Rules>
-</VisualStudioToolFile>
diff --git a/winbuild/Doxygen.sln b/winbuild/Doxygen.sln
deleted file mode 100644
index 98e1c36..0000000
--- a/winbuild/Doxygen.sln
+++ /dev/null
@@ -1,71 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual C++ Express 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Doxygen", "Doxygen.vcproj", "{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}"
-	ProjectSection(ProjectDependencies) = postProject
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64} = {B6BB4771-8A4E-4656-AC08-1EF8AC182F64}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qtools", "qtools.vcproj", "{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doxywizard", "Doxywizard.vcproj", "{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doxysearch", "doxysearch.vcproj", "{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doxyindexer", "doxyindexer.vcproj", "{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}"
-	ProjectSection(ProjectDependencies) = postProject
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64} = {B6BB4771-8A4E-4656-AC08-1EF8AC182F64}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Debug|Win32.ActiveCfg = Debug|Win32
-		{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Debug|Win32.Build.0 = Debug|Win32
-		{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Debug|x64.ActiveCfg = Debug|x64
-		{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Debug|x64.Build.0 = Debug|x64
-		{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Release|Win32.ActiveCfg = Release|Win32
-		{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Release|Win32.Build.0 = Release|Win32
-		{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Release|x64.ActiveCfg = Release|x64
-		{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Release|x64.Build.0 = Release|x64
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Debug|Win32.Build.0 = Debug|Win32
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Debug|x64.ActiveCfg = Debug|x64
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Debug|x64.Build.0 = Debug|x64
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Release|Win32.ActiveCfg = Release|Win32
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Release|Win32.Build.0 = Release|Win32
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Release|x64.ActiveCfg = Release|x64
-		{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Release|x64.Build.0 = Release|x64
-		{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}.Debug|Win32.ActiveCfg = Debug|Win32
-		{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}.Debug|Win32.Build.0 = Debug|Win32
-		{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}.Debug|x64.ActiveCfg = Debug|x64
-		{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}.Debug|x64.Build.0 = Debug|x64
-		{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}.Release|Win32.ActiveCfg = Release|Win32
-		{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}.Release|Win32.Build.0 = Release|Win32
-		{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}.Release|x64.ActiveCfg = Release|x64
-		{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}.Release|x64.Build.0 = Release|x64
-		{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}.Debug|Win32.ActiveCfg = Debug|Win32
-		{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}.Debug|Win32.Build.0 = Debug|Win32
-		{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}.Debug|x64.ActiveCfg = Debug|Win32
-		{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}.Release|Win32.ActiveCfg = Release|Win32
-		{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}.Release|Win32.Build.0 = Release|Win32
-		{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}.Release|x64.ActiveCfg = Release|Win32
-		{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}.Release|x64.Build.0 = Release|Win32
-		{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}.Debug|Win32.Build.0 = Debug|Win32
-		{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}.Debug|x64.ActiveCfg = Debug|x64
-		{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}.Debug|x64.Build.0 = Debug|x64
-		{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}.Release|Win32.ActiveCfg = Release|Win32
-		{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}.Release|Win32.Build.0 = Release|Win32
-		{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}.Release|x64.ActiveCfg = Release|x64
-		{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/winbuild/Doxygen.vcproj b/winbuild/Doxygen.vcproj
deleted file mode 100644
index 03764f2..0000000
--- a/winbuild/Doxygen.vcproj
+++ /dev/null
@@ -1,5008 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="Doxygen"
-	ProjectGUID="{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}"
-	RootNamespace="Doxygen"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-		<ToolFile
-			RelativePath=".\Lex.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Settings.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Unistd.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Version.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Config.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Gen_head.rules"
-		/>
-		<ToolFile
-			RelativePath=".\GenResources.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Languages.rules"
-		/>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\bin\Debug"
-			IntermediateDirectory=".\Debug\doxygen"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="Config_dw"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="Config"
-			/>
-			<Tool
-				Name="Version"
-			/>
-			<Tool
-				Name="Settings"
-			/>
-			<Tool
-				Name="Unistd"
-			/>
-			<Tool
-				Name="Gen_head"
-			/>
-			<Tool
-				Name="GenResources"
-			/>
-			<Tool
-				Name="Languages"
-			/>
-			<Tool
-				Name="Lex"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug\doxygen\Doxygen.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/Zm200 "
-				Optimization="0"
-				AdditionalIncludeDirectories="..\src,..\qtools,..\libpng,..\libmd5,..\vhdlparser,$(IntDir),."
-				PreprocessorDefinitions="_CONSOLE;WIN32;_DEBUG; _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;LIBICONV_STATIC;CHARSET_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				PrecompiledHeaderFile=".\Debug\doxygen/Doxygen.pch"
-				AssemblerListingLocation=".\Debug\doxygen/"
-				ObjectFile=".\Debug\doxygen/"
-				ProgramDataBaseFileName=".\Debug\doxygen\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="qtools.lib ws2_32.lib iconv.lib shell32.lib"
-				OutputFile="..\bin\Debug\doxygen.exe"
-				LinkIncremental="2"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="Debug"
-				GenerateManifest="false"
-				IgnoreDefaultLibraryNames="libcmtd.lib libcpmtd.lib libcmt.lib"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Debug\doxygen\$(TargetName).pdb"
-				SubSystem="1"
-				LargeAddressAware="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug\doxygen/Doxygen.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="..\bin\Debug64"
-			IntermediateDirectory=".\Debug64\doxygen"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="Config_dw"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="Config"
-			/>
-			<Tool
-				Name="Version"
-			/>
-			<Tool
-				Name="Settings"
-			/>
-			<Tool
-				Name="Unistd"
-			/>
-			<Tool
-				Name="Gen_head"
-			/>
-			<Tool
-				Name="GenResources"
-			/>
-			<Tool
-				Name="Languages"
-			/>
-			<Tool
-				Name="Lex"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-				TypeLibraryName=".\Debug64\doxygen\Doxygen.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/Zm200 /bigobj"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\src,..\qtools,..\libpng,..\libmd5,..\vhdlparser,$(IntDir),."
-				PreprocessorDefinitions="_CONSOLE;WIN32;_DEBUG; _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;LIBICONV_STATIC;CHARSET_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				PrecompiledHeaderFile=".\Debug64\doxygen/Doxygen.pch"
-				AssemblerListingLocation=".\Debug64\doxygen/"
-				ObjectFile=".\Debug64\doxygen/"
-				ProgramDataBaseFileName=".\Debug64\doxygen\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="qtools.lib ws2_32.lib iconv64.lib shell32.lib"
-				OutputFile="..\bin\Debug64\doxygen.exe"
-				LinkIncremental="2"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="Debug64"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Debug64\doxygen\$(TargetName).pdb"
-				SubSystem="1"
-				LargeAddressAware="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug64\doxygen/Doxygen.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="..\bin\Release"
-			IntermediateDirectory=".\Release\doxygen"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="Config_dw"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="Config"
-			/>
-			<Tool
-				Name="Version"
-			/>
-			<Tool
-				Name="Settings"
-			/>
-			<Tool
-				Name="Unistd"
-			/>
-			<Tool
-				Name="Gen_head"
-			/>
-			<Tool
-				Name="GenResources"
-			/>
-			<Tool
-				Name="Languages"
-			/>
-			<Tool
-				Name="Lex"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Release\doxygen\Doxygen.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/Zm200 "
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories="..\src,..\qtools,..\libpng,..\libmd5,..\vhdlparser,$(IntDir),."
-				PreprocessorDefinitions="WIN32;_CINDEX_LIB_;_CINDEX_LIB_;NDEBUG;_CONSOLE; _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;LIBICONV_STATIC;CHARSET_STATIC"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile=".\Release\doxygen/Doxygen.pch"
-				AssemblerListingLocation=".\Release\doxygen/"
-				ObjectFile=".\Release\doxygen/"
-				ProgramDataBaseFileName=".\Release\doxygen\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/LTCG"
-				AdditionalDependencies="qtools.lib iconv.lib shell32.lib"
-				OutputFile="..\bin\Release\doxygen.exe"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="Release"
-				ProgramDatabaseFile=".\Release\doxygen\$(TargetName).pdb"
-				SubSystem="1"
-				LargeAddressAware="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release\doxygen/Doxygen.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="..\bin\Release64"
-			IntermediateDirectory=".\Release64\doxygen"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="Config_dw"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="Config"
-			/>
-			<Tool
-				Name="Version"
-			/>
-			<Tool
-				Name="Settings"
-			/>
-			<Tool
-				Name="Unistd"
-			/>
-			<Tool
-				Name="Gen_head"
-			/>
-			<Tool
-				Name="GenResources"
-			/>
-			<Tool
-				Name="Languages"
-			/>
-			<Tool
-				Name="Lex"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-				TypeLibraryName=".\Release64\doxygen\Doxygen.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/Zm200 "
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories="..\src,..\qtools,..\libpng,..\libmd5,..\vhdlparser,$(IntDir),."
-				PreprocessorDefinitions="WIN32;_CINDEX_LIB_;_CINDEX_LIB_;NDEBUG;_CONSOLE; _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;LIBICONV_STATIC;CHARSET_STATIC"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile=".\Release64\doxygen/Doxygen.pch"
-				AssemblerListingLocation=".\Release64\doxygen/"
-				ObjectFile=".\Release64\doxygen/"
-				ProgramDataBaseFileName=".\Release64\doxygen\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/LTCG"
-				AdditionalDependencies="qtools.lib iconv64.lib shell32.lib"
-				OutputFile="..\bin\Release64\doxygen.exe"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="Release64"
-				ProgramDatabaseFile=".\Release64\doxygen\$(TargetName).pdb"
-				SubSystem="1"
-				LargeAddressAware="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release64\doxygen/Doxygen.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			>
-			<File
-				RelativePath="..\src\arguments.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\ce_parse.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\CharStream.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\src\cite.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\clangparser.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\classdef.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\classlist.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\cmdmapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\code.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\commentcnv.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\commentscan.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\condparser.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\config.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\configoptions.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\constexp.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\context.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\cppvalue.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\dbusxmlscanner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\debug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\declinfo.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\defargs.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\defgen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\define.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\definition.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\dia.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\diagram.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\dirdef.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docbookgen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docbookvisitor.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docparser.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docsets.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\doctokenizer.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\dot.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\doxygen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\eclipsehelp.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\entry.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\filedef.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\filename.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\fileparser.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\formula.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\fortrancode.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\fortranscanner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ftextstream.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ftvhelp.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\groupdef.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htags.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmldocvisitor.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmlentity.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmlgen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmlhelp.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\image.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\index.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\language.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\latexdocvisitor.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\latexgen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\layout.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\lodepng.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\logos.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\main.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\mandocvisitor.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\mangen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\markdown.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\marshal.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\libmd5\md5.c"
-				>
-			</File>
-			<File
-				RelativePath="..\src\memberdef.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\membergroup.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\memberlist.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\membername.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\message.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\msc.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\namespacedef.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\objcache.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\outputgen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\outputlist.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pagedef.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\ParseException.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\src\perlmodgen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\plantuml.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\portable.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\portable_c.c"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\pre.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\pycode.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\pyscanner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\qhp.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\qhpxmlwriter.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\reflist.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\resourcemgr.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\rtfdocvisitor.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\rtfgen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\rtfstyle.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\scanner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\searchindex.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\sqlite3gen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\store.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tagreader.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\tclscanner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\template.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\textdocvisitor.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\textdocvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\Token.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\TokenMgrError.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tooltip.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\util.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\version.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vhdldocgen.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vhdljjparser.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\VhdlParser.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\VhdlParserIF.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\VhdlParserTokenManager.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\src\xmldocvisitor.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\xmlgen.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Yacc Files"
-			Filter="y"
-			>
-			<File
-				RelativePath="..\src\constexp.y"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="Running bison on constexp.y"
-						CommandLine="bison -l -d -p ce_parseexpYY "$(InputPath)" -o $(IntDir)\ce_parse.c&#x0D;&#x0A;bison -l -p constexpYY "$(InputPath)" -o $(IntDir)\ce_parse.cpp&#x0D;&#x0A;del $(IntDir)\ce_parse.c&#x0D;&#x0A;"
-						Outputs="$(IntDir)\ce_parse.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="Running bison on constexp.y"
-						CommandLine="bison -l -d -p ce_parseexpYY "$(InputPath)" -o $(IntDir)\ce_parse.c&#x0D;&#x0A;bison -l -p constexpYY "$(InputPath)" -o $(IntDir)\ce_parse.cpp&#x0D;&#x0A;del $(IntDir)\ce_parse.c&#x0D;&#x0A;"
-						Outputs="$(IntDir)\ce_parse.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="Running bison on constexp.y"
-						CommandLine="bison -l -d -p ce_parseexpYY "$(InputPath)" -o $(IntDir)\ce_parse.c&#x0D;&#x0A;bison -l -p constexpYY "$(InputPath)" -o $(IntDir)\ce_parse.cpp&#x0D;&#x0A;del $(IntDir)\ce_parse.c&#x0D;&#x0A;"
-						Outputs="$(IntDir)\ce_parse.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="Running bison on constexp.y"
-						CommandLine="bison -l -d -p ce_parseexpYY "$(InputPath)" -o $(IntDir)\ce_parse.c&#x0D;&#x0A;bison -l -p constexpYY "$(InputPath)" -o $(IntDir)\ce_parse.cpp&#x0D;&#x0A;del $(IntDir)\ce_parse.c&#x0D;&#x0A;"
-						Outputs="$(IntDir)\ce_parse.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Lex Files"
-			Filter="l"
-			>
-			<File
-				RelativePath="..\src\code.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\commentcnv.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\commentscan.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\config.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\constexp.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\declinfo.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\defargs.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\doctokenizer.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\fortrancode.l"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\src\fortranscanner.l"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\src\pre.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pycode.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pyscanner.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\scanner.l"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tclscanner.l"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\src\vhdlcode.l"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Lex"
-						Case="true"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Python Files"
-			>
-			<File
-				RelativePath="..\src\lang_cfg.py"
-				>
-				<FileConfiguration
-					Name="Debug|win32"
-					>
-					<Tool
-						Name="Languages"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|win32"
-					>
-					<Tool
-						Name="Languages"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Languages"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Languages"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\src\settings.py"
-				>
-				<FileConfiguration
-					Name="Debug|win32"
-					>
-					<Tool
-						Name="Settings"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|win32"
-					>
-					<Tool
-						Name="Settings"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Settings"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Settings"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="unistd.py"
-				>
-				<FileConfiguration
-					Name="Debug|win32"
-					>
-					<Tool
-						Name="Unistd"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|win32"
-					>
-					<Tool
-						Name="Unistd"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Unistd"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Unistd"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\src\version.py"
-				>
-				<FileConfiguration
-					Name="Debug|win32"
-					>
-					<Tool
-						Name="Version"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|win32"
-					>
-					<Tool
-						Name="Version"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Version"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Version"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="XML Files"
-			Filter="xml"
-			>
-			<File
-				RelativePath="..\src\config.xml"
-				>
-				<FileConfiguration
-					Name="Debug|win32"
-					>
-					<Tool
-						Name="Config"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|win32"
-					>
-					<Tool
-						Name="Config"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Config"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Config"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Generating Resource Files"
-			>
-                        <File
-                                RelativePath="..\templates\html\arrowdown.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\arrowright.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\bc_s.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\bdwn.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\bib2xhtml.pl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\close.png"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\closed.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\doc.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\doxygen.bst"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\doxygen.css"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\doxygen.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\dynsections.js"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\extsearch.js"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\folderclosed.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\folderopen.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\footer.html"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\header.html"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlallmembers.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlannotated.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlbase.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlclass.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlclasses.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlclmembers.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlclmembersindex.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmldeclcomp.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmldir.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmldirtree.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmldyncontents.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmldynheader.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlfile.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlfiles.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlflmembers.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlinclude.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlindexpages.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmljsnavindex.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmljsnavtree.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmllayout.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmemberindex.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmembersindex.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmembertabs.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmemdecl.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmemdecls.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmemdef.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmeminherit.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmemlist.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmemsummary.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmodule.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlmodules.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlnamespace.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlnamespaces.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlnavpath.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlnavtree.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlnsmembers.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlnsmembersindex.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlobjlink.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlpage.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlpages.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmlsource.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmltabs.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\htmltypeconstraints.tpl"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\jquery.js"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\mag.png"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\mag_sel.png"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\nav_f.lum"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\nav_g.png"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\nav_h.lum"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\navtree.css"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\navtree.js"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\open.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\resize.js"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\search.css"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\search.js"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\search_functions.php"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\search_l.png"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\search_m.png"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\search_opensearch.php"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\search_r.png"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\splitbar.lum"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\svgpan.js"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\sync_off.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\sync_on.luma"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\tab_a.lum"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\tab_b.lum"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\tab_h.lum"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\tab_s.lum"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\html\tabs.css"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\latex\doxygen.sty"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\xml\compound.xsd"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\templates\xml\index.xsd"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Debug|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|x64"
-                                        >
-                                        <Tool
-                                                Name="GenResources"
-                                        />
-                                </FileConfiguration>
-                        </File>
-		</Filter>
-		<Filter
-			Name="Generating header Files"
-			>
-			<File
-				RelativePath="..\src\layout_default.xml"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="Gen_head"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Gen_head"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="Gen_head"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Gen_head"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			>
-			<File
-				RelativePath="..\src\arguments.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\bufstr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ce_parse.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\CharStream.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\cite.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\clangparser.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\classdef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\classlist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\cmdmapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\code.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\commentcnv.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\commentscan.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\condparser.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\config.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\constexp.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\context.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\cppvalue.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\dbusxmlscanner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\debug.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\declinfo.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\defargs.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\defgen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\define.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\definition.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\dia.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\diagram.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\dirdef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docbookgen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docbookvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docparser.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docsets.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\doctokenizer.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\docvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\dot.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\doxygen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\eclipsehelp.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\entry.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\ErrorHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\example.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\filedef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\filename.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\fileparser.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\formula.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\fortrancode.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\fortranscanner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ftextstream.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ftvhelp.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\groupdef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htags.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmlattrib.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmldocvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmlentity.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmlgen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\htmlhelp.h"
-				>
-			</File>
-			<File
-				RelativePath=".\iconv.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\image.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\index.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\instdox.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\JavaCC.h"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\lang_cfg.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\language.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\latexdocvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\latexgen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\layout.h"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\layout_default_xml.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\lockingptr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\lodepng.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\logos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\mandocvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\mangen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\marshal.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libmd5\md5.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libmd5\md5_loc.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\memberdef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\membergroup.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\memberlist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\membername.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\message.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\msc.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\namespacedef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\navtree_css.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\objcache.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\outputgen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\outputlist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pagedef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\ParseException.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\parserintf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\perlmodgen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\plantuml.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\portable.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pre.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\printdocvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pycode.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pyscanner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\qhp.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\qhpxmlwriter.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\qtbc.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\reflist.h"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\resources.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\resourcemgr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\rtfdocvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\rtfgen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\rtfstyle.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\scanner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\searchindex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\section.h"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\settings.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\sortdict.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\store.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tagreader.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tclscanner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\template.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\Token.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\TokenManager.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\TokenMgrError.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tooltip.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_adapter.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_am.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_ar.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_br.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_ca.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_cn.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_cz.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_de.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_dk.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_en.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_eo.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_es.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_fa.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_fi.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_fr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_gr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_hr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_hu.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_id.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_it.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_je.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_jp.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_ke.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_kr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_lt.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_lv.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_mk.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_nl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_no.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_pl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_pt.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_ro.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_ru.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_sc.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_si.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_sk.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_sr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_sv.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_tr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_tw.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_ua.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_vi.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\translator_za.h"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\unistd.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\util.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\version.h"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\vhdlcode.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vhdlcode.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vhdldocgen.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vhdljjparser.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\vhdlparser.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\VhdlParserConstants.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\VhdlParserErrorHandler.hpp"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\VhdlParserIF.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\VhdlParserTokenManager.h"
-				>
-			</File>
-			<File
-				RelativePath="..\vhdlparser\vhdlstring.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\xmldocvisitor.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\xmlgen.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/winbuild/Doxywizard.vcproj b/winbuild/Doxywizard.vcproj
deleted file mode 100755
index c424dc6..0000000
--- a/winbuild/Doxywizard.vcproj
+++ /dev/null
@@ -1,718 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="doxywizard"
-	ProjectGUID="{77C9C2D3-EA3F-3D59-8B4C-0ED852890172}"
-	Keyword="Qt4VSv1.0"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-		<ToolFile
-			RelativePath=".\Lex.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Version.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Settings.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Unistd.rules"
-		/>
-		<ToolFile
-			RelativePath=".\Config.rules"
-		/>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\bin\Debug"
-			IntermediateDirectory=".\Debug\doxywizard"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="Version"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="Lex"
-			/>
-			<Tool
-				Name="Config"
-			/>
-			<Tool
-				Name="Config_dw"
-			/>
-			<Tool
-				Name="Settings"
-			/>
-			<Tool
-				Name="Unistd"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				WarningLevel="0"
-				DefaultCharType="0"
-				EnableErrorChecks="1"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="-Zm200 -w34100 -w34189 -Zm200 -w34100 -w34189 -w34100 -w34189"
-				Optimization="4"
-				AdditionalIncludeDirectories="$(IntDir);"$(QT_DIR)\include\QtCore","$(QT_DIR)\include\QtCore","$(QT_DIR)\include\QtGui","$(QT_DIR)\include\QtGui","$(QT_DIR)\include\QtXml","$(QT_DIR)\include\QtXml","$(QT_DIR)\include","..\addon\doxywizard","$(QT_DIR)\include\ActiveQt","moc","..\addon\doxywizard",".",$(QT_DIR)\mkspecs\win32-msvc2008"
-				PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,QT_NO_CAST_FROM_ASCII,QT_NO_CAST_TO_ASCII,QT_XML_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_THREAD_SUPPORT"
-				GeneratePreprocessedFile="0"
-				ExceptionHandling="1"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				TreatWChar_tAsBuiltInType="false"
-				RuntimeTypeInfo="true"
-				AssemblerListingLocation="Debug\doxywizard\"
-				ObjectFile="Debug\doxywizard\"
-				ProgramDataBaseFileName=".\Debug\doxywizard\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,QT_NO_CAST_FROM_ASCII,QT_NO_CAST_TO_ASCII,QT_XML_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_THREAD_SUPPORT,_DEBUG"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				IgnoreImportLibrary="true"
-				AdditionalOptions=""/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'""
-				AdditionalDependencies="$(QT_DIR)\lib\qtmaind.lib $(QT_DIR)\lib\QtXmld.lib $(QT_DIR)\lib\QtGuid.lib $(QT_DIR)\lib\QtCored.lib kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib msimg32.lib"
-				OutputFile="..\bin\Debug\doxywizard.exe"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="$(QT_DIR)\lib"
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Debug\doxywizard\$(TargetName).pdb"
-				SubSystem="2"
-				LargeAddressAware="2"
-				LinkTimeCodeGeneration="0"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="..\bin\Release"
-			IntermediateDirectory=".\Release\doxywizard"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="Version"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="Lex"
-			/>
-			<Tool
-				Name="Config"
-			/>
-			<Tool
-				Name="Config_dw"
-			/>
-			<Tool
-				Name="Settings"
-			/>
-			<Tool
-				Name="Unistd"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				WarningLevel="0"
-				DefaultCharType="0"
-				EnableErrorChecks="1"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="-Zm200 -w34100 -w34189 -Zm200 -w34100 -w34189 -w34100 -w34189"
-				Optimization="2"
-				AdditionalIncludeDirectories="$(IntDir);"$(QT_DIR)\include\QtCore","$(QT_DIR)\include\QtCore","$(QT_DIR)\include\QtGui","$(QT_DIR)\include\QtGui","$(QT_DIR)\include\QtXml","$(QT_DIR)\include\QtXml","$(QT_DIR)\include","..\addon\doxywizard","$(QT_DIR)\include\ActiveQt","moc","..\addon\doxywizard",".",$(QT_DIR)\mkspecs\win32-msvc2008"
-				PreprocessorDefinitions="QT_NO_DEBUG,NDEBUG,_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,QT_NO_CAST_FROM_ASCII,QT_NO_CAST_TO_ASCII,QT_NO_DEBUG,QT_XML_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_THREAD_SUPPORT,NDEBUG"
-				GeneratePreprocessedFile="0"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				TreatWChar_tAsBuiltInType="false"
-				RuntimeTypeInfo="true"
-				AssemblerListingLocation="Release\doxywizard\"
-				ObjectFile="Release\doxywizard\"
-				ProgramDataBaseFileName=".\Release\doxywizard\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="0"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="QT_NO_DEBUG,NDEBUG,_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,QT_NO_CAST_FROM_ASCII,QT_NO_CAST_TO_ASCII,QT_NO_DEBUG,QT_XML_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_THREAD_SUPPORT"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				IgnoreImportLibrary="true"
-				AdditionalOptions=""/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'""
-				AdditionalDependencies="$(QT_DIR)\lib\qtmain.lib $(QT_DIR)\lib\QtXml.lib $(QT_DIR)\lib\QtGui.lib $(QT_DIR)\lib\QtCore.lib kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib msimg32.lib"
-				OutputFile="..\bin\Release\doxywizard.exe"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="$(QT_DIR)\lib"
-				IgnoreAllDefaultLibraries="false"
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="false"
-				ProgramDatabaseFile=".\Release\doxywizard\$(TargetName).pdb"
-				SubSystem="2"
-				LargeAddressAware="2"
-				LinkTimeCodeGeneration="0"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\addon\doxywizard\doxywizard.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\expert.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\inputbool.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\inputint.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\inputstring.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\inputstrlist.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\version.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\wizard.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\addon\doxywizard\config.h"
-				>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\doxywizard.h"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\doxywizard.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard" -I&quot [...]
-						AdditionalDependencies="..\addon\doxywizard\doxywizard.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_doxywizard.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\doxywizard.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard [...]
-						AdditionalDependencies="..\addon\doxywizard\doxywizard.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_doxywizard.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\expert.h"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\expert.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard" -I&quot [...]
-						AdditionalDependencies="..\addon\doxywizard\expert.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_expert.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\expert.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard [...]
-						AdditionalDependencies="..\addon\doxywizard\expert.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_expert.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\helplabel.h"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\helplabel.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard" -I&quot [...]
-						AdditionalDependencies="..\addon\doxywizard\helplabel.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_helplabel.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\helplabel.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard [...]
-						AdditionalDependencies="..\addon\doxywizard\helplabel.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_helplabel.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\inputbool.h"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\inputbool.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard" -I&quot [...]
-						AdditionalDependencies="..\addon\doxywizard\inputbool.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_inputbool.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\inputbool.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard [...]
-						AdditionalDependencies="..\addon\doxywizard\inputbool.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_inputbool.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\inputint.h"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\inputint.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard" -I&quot [...]
-						AdditionalDependencies="..\addon\doxywizard\inputint.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_inputint.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\inputint.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard [...]
-						AdditionalDependencies="..\addon\doxywizard\inputint.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_inputint.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\inputstring.h"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\inputstring.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard" -I&quot [...]
-						AdditionalDependencies="..\addon\doxywizard\inputstring.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_inputstring.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\inputstring.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard [...]
-						AdditionalDependencies="..\addon\doxywizard\inputstring.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_inputstring.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\inputstrlist.h"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\inputstrlist.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard" -I&quot [...]
-						AdditionalDependencies="..\addon\doxywizard\inputstrlist.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_inputstrlist.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\inputstrlist.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard [...]
-						AdditionalDependencies="..\addon\doxywizard\inputstrlist.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_inputstrlist.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\wizard.h"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\wizard.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard" -I&quot [...]
-						AdditionalDependencies="..\addon\doxywizard\wizard.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_wizard.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="MOC ..\addon\doxywizard\wizard.h"
-						CommandLine="$(QT_DIR)\bin\moc.exe  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtCore" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtGui" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include\QtXml" -I"$(QT_DIR)\include" -I"..\addon\doxywizard [...]
-						AdditionalDependencies="..\addon\doxywizard\wizard.h;$(QT_DIR)\bin\moc.exe"
-						Outputs="$(IntDir)\moc\moc_wizard.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Generated Files"
-			Filter="cpp;c;cxx;moc;h;def;odl;idl;res;"
-			UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
-			>
-			<File
-				RelativePath="$(IntDir)\config_doxyw.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\configdoc.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\moc\moc_doxywizard.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\moc\moc_expert.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\moc\moc_helplabel.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\moc\moc_inputbool.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\moc\moc_inputint.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\moc\moc_inputstring.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\moc\moc_inputstrlist.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\moc\moc_wizard.cpp"
-				>
-			</File>
-			<File
-				RelativePath="$(IntDir)\rcc\qrc_doxywizard.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Lex Files"
-			Filter="l"
-			UniqueIdentifier="{E12AE0D2-192F-4d59-BD23-7D3FA58D3183}"
-			ParseFiles="false"
-			>
-			<File
-				RelativePath="..\addon\doxywizard\config_doxyw.l"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Python Files"
-			Filter="py"
-			>
-			<File
-				RelativePath="..\src\settings.py"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="Settings"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="Settings"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="unistd.py"
-				>
-				<FileConfiguration
-					Name="Debug|win32"
-					>
-					<Tool
-						Name="Unistd"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|win32"
-					>
-					<Tool
-						Name="Unistd"
-					/>
-				</FileConfiguration>
-			</File>

-			<File
-				RelativePath="..\src\version.py"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="Version"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="Version"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="XML Files"
-			Filter="xml"
-			>
-			<File
-				RelativePath="..\src\config.xml"
-				>
-				<FileConfiguration
-					Name="Debug|win32"
-					>
-					<Tool
-						Name="Config_dw"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|win32"
-					>
-					<Tool
-						Name="Config_dw"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="Config_dw"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="Config_dw"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="qrc;*"
-			UniqueIdentifier="{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}"
-			ParseFiles="false"
-			>
-			<File
-				RelativePath="..\addon\doxywizard\doxywizard.qrc"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="RCC ..\addon\doxywizard\doxywizard.qrc"
-						CommandLine="$(QT_DIR)\bin\rcc.exe -name doxywizard ..\addon\doxywizard\doxywizard.qrc -o $(IntDir)\rcc\qrc_doxywizard.cpp&#x0D;&#x0A;"
-						AdditionalDependencies="..\addon\doxywizard\doxywizard.qrc;$(QT_DIR)\bin\rcc.exe"
-						Outputs="$(IntDir)\rcc\qrc_doxywizard.cpp"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="RCC ..\addon\doxywizard\doxywizard.qrc"
-						CommandLine="$(QT_DIR)\bin\rcc.exe -name doxywizard ..\addon\doxywizard\doxywizard.qrc -o $(IntDir)\rcc\qrc_doxywizard.cpp&#x0D;&#x0A;"
-						AdditionalDependencies="..\addon\doxywizard\doxywizard.qrc;$(QT_DIR)\bin\rcc.exe"
-						Outputs="$(IntDir)\rcc\qrc_doxywizard.cpp"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\addon\doxywizard\doxywizard.rc"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/winbuild/GenResources.rules b/winbuild/GenResources.rules
deleted file mode 100644
index a496ea5..0000000
--- a/winbuild/GenResources.rules
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-	Name="GenResources"
-	Version="8.00"
-	>
-	<Rules>
-		<CustomBuildRule
-			Name="GenResources"
-			DisplayName="GenResources"
-			CommandLine="python "$(ProjectDir)..\src\res2cc_cmd.py" "$(ProjectDir)..\templates" $(IntDir)\resources.cpp"
-			Outputs="$(IntDir)\resources.cpp"
-			FileExtensions=".*"
-			AdditionalDependencies="$(ProjectDir)..\src\res2cc_cmd.py"
-			ExecutionDescription="Executing res2cc_cmd on $(ProjectDir)..\templates ..."
-			ShowOnlyRuleProperties="false"
-			>
-		</CustomBuildRule>
-	</Rules>
-</VisualStudioToolFile>
diff --git a/winbuild/Gen_head.rules b/winbuild/Gen_head.rules
deleted file mode 100644
index c2e7550..0000000
--- a/winbuild/Gen_head.rules
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-	Name="gen_head"
-	Version="8.00"
-	>
-	<Rules>
-		<CustomBuildRule
-			Name="Gen_head"
-			DisplayName="Gen_head"
-			CommandLine="python "$(ProjectDir)..\src\to_c_cmd.py" [AllOptions] [AdditionalOptions] [inputs] < "$(InputPath)" > $(IntDir)/$(InputName)$(InputExt).h"
-			Outputs="$(IntDir)/$(InputName)$(InputExt).h"
-			FileExtensions=".*"
-			AdditionalDependencies="$(ProjectDir)..\src\to_c_cmd.py"
-			ExecutionDescription="Executing to_c_cmd on $(InputPath) ..."
-			ShowOnlyRuleProperties="false"
-			>
-		</CustomBuildRule>
-	</Rules>
-</VisualStudioToolFile>
diff --git a/winbuild/Languages.rules b/winbuild/Languages.rules
deleted file mode 100755
index 8ff018a..0000000
--- a/winbuild/Languages.rules
+++ /dev/null
@@ -1,862 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-        Name="languages"
-        Version="8.00"
-        >
-        <Rules>
-                <CustomBuildRule
-                        Name="Languages"
-                        DisplayName="Languages"
-                        CommandLine="python "$(InputPath)" [AllOptions] [AdditionalOptions] > $(IntDir)/$(InputName).h"
-                        Outputs="$(IntDir)/$(InputName).h"
-                        FileExtensions="*.py"
-                        AdditionalDependencies=""
-                        ExecutionDescription="Executing languages ..."
-                        ShowOnlyRuleProperties="false"
-                        >
-                        <Properties>
-                               <EnumProperty
-                                       Name="EnglishOnlys"
-                                       DisplayName="Use English Only"
-                                       Description="Use English Only"
-                                       DefaultValue="0"
-                               >
-                                       <Values>
-                                               <EnumValue
-                                               Value="0"
-                                               Switch=""
-                                               DisplayName="Don't use English Only"
-                                               />
-                                               <EnumValue
-                                               Value="1"
-                                               Switch="ENONLY"
-                                               DisplayName="Use English Only"
-                                               />
-                                       </Values>
-                               </EnumProperty>
-
-                                   <EnumProperty
-                                           Name="armenian"
-                                           DisplayName="Use Armenian"
-                                           Description="Use Armenian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Armenian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="AM"
-                                                   DisplayName="Use Armenian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="arabic"
-                                           DisplayName="Use Arabic"
-                                           Description="Use Arabic"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Arabic"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="AR"
-                                                   DisplayName="Use Arabic"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="brazilian"
-                                           DisplayName="Use Brazilian"
-                                           Description="Use Brazilian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Brazilian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="BR"
-                                                   DisplayName="Use Brazilian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="catalan"
-                                           DisplayName="Use Catalan"
-                                           Description="Use Catalan"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Catalan"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="CA"
-                                                   DisplayName="Use Catalan"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="chinese"
-                                           DisplayName="Use Chinese"
-                                           Description="Use Chinese"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Chinese"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="CN"
-                                                   DisplayName="Use Chinese"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="czech"
-                                           DisplayName="Use Czech"
-                                           Description="Use Czech"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Czech"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="CZ"
-                                                   DisplayName="Use Czech"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="german"
-                                           DisplayName="Use German"
-                                           Description="Use German"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use German"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="DE"
-                                                   DisplayName="Use German"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="danish"
-                                           DisplayName="Use Danish"
-                                           Description="Use Danish"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Danish"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="DK"
-                                                   DisplayName="Use Danish"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="esperanto"
-                                           DisplayName="Use Esperanto"
-                                           Description="Use Esperanto"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Esperanto"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="EO"
-                                                   DisplayName="Use Esperanto"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="spanish"
-                                           DisplayName="Use Spanish"
-                                           Description="Use Spanish"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Spanish"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="ES"
-                                                   DisplayName="Use Spanish"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="persian"
-                                           DisplayName="Use Persian"
-                                           Description="Use Persian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Persian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="FA"
-                                                   DisplayName="Use Persian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="finnish"
-                                           DisplayName="Use Finnish"
-                                           Description="Use Finnish"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Finnish"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="FI"
-                                                   DisplayName="Use Finnish"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="french"
-                                           DisplayName="Use French"
-                                           Description="Use French"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use French"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="FR"
-                                                   DisplayName="Use French"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="greek"
-                                           DisplayName="Use Greek"
-                                           Description="Use Greek"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Greek"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="GR"
-                                                   DisplayName="Use Greek"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="croatian"
-                                           DisplayName="Use Croatian"
-                                           Description="Use Croatian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Croatian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="HR"
-                                                   DisplayName="Use Croatian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="hungarian"
-                                           DisplayName="Use Hungarian"
-                                           Description="Use Hungarian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Hungarian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="HU"
-                                                   DisplayName="Use Hungarian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="indonesian"
-                                           DisplayName="Use Indonesian"
-                                           Description="Use Indonesian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Indonesian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="ID"
-                                                   DisplayName="Use Indonesian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="italian"
-                                           DisplayName="Use Italian"
-                                           Description="Use Italian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Italian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="IT"
-                                                   DisplayName="Use Italian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="japaneseen"
-                                           DisplayName="Use Japanese-En"
-                                           Description="Use Japanese-En"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Japanese-En"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="JE"
-                                                   DisplayName="Use Japanese-En"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="japanese"
-                                           DisplayName="Use Japanese"
-                                           Description="Use Japanese"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Japanese"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="JP"
-                                                   DisplayName="Use Japanese"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="koreanen"
-                                           DisplayName="Use Korean-En"
-                                           Description="Use Korean-En"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Korean-En"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="KE"
-                                                   DisplayName="Use Korean-En"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="korean"
-                                           DisplayName="Use Korean"
-                                           Description="Use Korean"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Korean"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="KR"
-                                                   DisplayName="Use Korean"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="lithuanian"
-                                           DisplayName="Use Lithuanian"
-                                           Description="Use Lithuanian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Lithuanian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="LT"
-                                                   DisplayName="Use Lithuanian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="latvian"
-                                           DisplayName="Use Latvian"
-                                           Description="Use Latvian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Latvian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="LV"
-                                                   DisplayName="Use Latvian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="macedonian"
-                                           DisplayName="Use Macedonian"
-                                           Description="Use Macedonian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Macedonian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="MK"
-                                                   DisplayName="Use Macedonian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="dutch"
-                                           DisplayName="Use Dutch"
-                                           Description="Use Dutch"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Dutch"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="NL"
-                                                   DisplayName="Use Dutch"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="norwegian"
-                                           DisplayName="Use Norwegian"
-                                           Description="Use Norwegian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Norwegian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="NO"
-                                                   DisplayName="Use Norwegian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="polish"
-                                           DisplayName="Use Polish"
-                                           Description="Use Polish"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Polish"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="PL"
-                                                   DisplayName="Use Polish"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="portuguese"
-                                           DisplayName="Use Portuguese"
-                                           Description="Use Portuguese"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Portuguese"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="PT"
-                                                   DisplayName="Use Portuguese"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="romanian"
-                                           DisplayName="Use Romanian"
-                                           Description="Use Romanian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Romanian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="RO"
-                                                   DisplayName="Use Romanian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="russian"
-                                           DisplayName="Use Russian"
-                                           Description="Use Russian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Russian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="RU"
-                                                   DisplayName="Use Russian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="serbiancyrillic"
-                                           DisplayName="Use Serbian-Cyrillic"
-                                           Description="Use Serbian-Cyrillic"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Serbian-Cyrillic"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="SC"
-                                                   DisplayName="Use Serbian-Cyrillic"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="slovene"
-                                           DisplayName="Use Slovene"
-                                           Description="Use Slovene"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Slovene"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="SI"
-                                                   DisplayName="Use Slovene"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="slovak"
-                                           DisplayName="Use Slovak"
-                                           Description="Use Slovak"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Slovak"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="SK"
-                                                   DisplayName="Use Slovak"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="serbian"
-                                           DisplayName="Use Serbian"
-                                           Description="Use Serbian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Serbian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="SR"
-                                                   DisplayName="Use Serbian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="swedish"
-                                           DisplayName="Use Swedish"
-                                           Description="Use Swedish"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Swedish"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="SV"
-                                                   DisplayName="Use Swedish"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="turkish"
-                                           DisplayName="Use Turkish"
-                                           Description="Use Turkish"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Turkish"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="TR"
-                                                   DisplayName="Use Turkish"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="chinesetraditional"
-                                           DisplayName="Use Chinese-Traditional"
-                                           Description="Use Chinese-Traditional"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Chinese-Traditional"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="TW"
-                                                   DisplayName="Use Chinese-Traditional"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="ukrainian"
-                                           DisplayName="Use Ukrainian"
-                                           Description="Use Ukrainian"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Ukrainian"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="UA"
-                                                   DisplayName="Use Ukrainian"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="vietnamese"
-                                           DisplayName="Use Vietnamese"
-                                           Description="Use Vietnamese"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Vietnamese"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="VI"
-                                                   DisplayName="Use Vietnamese"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                                   <EnumProperty
-                                           Name="afrikaans"
-                                           DisplayName="Use Afrikaans"
-                                           Description="Use Afrikaans"
-                                           DefaultValue="1"
-                                   >
-                                           <Values>
-                                                   <EnumValue
-                                                   Value="0"
-                                                   Switch=""
-                                                   DisplayName="Don't use Afrikaans"
-                                                   />
-                                                   <EnumValue
-                                                   Value="1"
-                                                   Switch="ZA"
-                                                   DisplayName="Use Afrikaans"
-                                                   />
-                                           </Values>
-                                   </EnumProperty>
-        
-                        </Properties>
-                </CustomBuildRule>
-        </Rules>
-</VisualStudioToolFile>
-
diff --git a/winbuild/Lex.rules b/winbuild/Lex.rules
deleted file mode 100644
index 52df322..0000000
--- a/winbuild/Lex.rules
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-	Name="flex"
-	Version="8.00"
-	>
-	<Rules>
-		<CustomBuildRule
-			Name="Lex"
-			DisplayName="Lex"
-			CommandLine="flex [AllOptions] -t -P$(InputName)YY [AdditionalOptions] [inputs] | python "$(ProjectDir)..\src\increasebuffer.py" > $(IntDir)/$(InputName).cpp"
-			Outputs="$(IntDir)/$(InputName).cpp"
-			FileExtensions="*.l"
-			AdditionalDependencies="$(ProjectDir)..\src\increasebuffer.py"
-			ExecutionDescription="Executing Lex for $(InputPath) ..."
-			ShowOnlyRuleProperties="false"
-			>
-			<Properties>
-				<BooleanProperty
-					Name="Case"
-					DisplayName="Case insensitive"
-					Description="case insensitive"
-					Switch="-i"
-                                        IsReadOnly="true"
-				/>
-				<BooleanProperty
-					Name="Rules"
-					DisplayName="Write used lex rules"
-					Description="Write used lex rules"
-					Switch="-d"
-				/>
-			</Properties>
-		</CustomBuildRule>
-	</Rules>
-</VisualStudioToolFile>
diff --git a/winbuild/Settings.rules b/winbuild/Settings.rules
deleted file mode 100644
index 29e7266..0000000
--- a/winbuild/Settings.rules
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-	Name="settings"
-	Version="8.00"
-	>
-	<Rules>
-		<CustomBuildRule
-			Name="Settings"
-			DisplayName="Settings"
-			CommandLine="python "$(InputPath)" [AllOptions] [AdditionalOptions] $(IntDir)"
-			Outputs="$(IntDir)/$(InputName).h"
-			FileExtensions="*.py"
-			AdditionalDependencies="$(ProjectDir)..\configure"
-			ExecutionDescription="Executing Settings ..."
-			ShowOnlyRuleProperties="false"
-			>
-			<Properties>
-				<EnumProperty
-					Name="SqlLite3"
-					DisplayName="Use SqlLite3"
-					Description="Use SqlLite3"
-					DefaultValue="0"
-				>
-					<Values>
-						<EnumValue
-						Value="0"
-						Switch="NO"
-						DisplayName="Don't use SqlLite3"
-						/>
-						<EnumValue
-						Value="1"
-						Switch="YES"
-						DisplayName="Use SqlLite3"
-						/>
-					</Values>
-				</EnumProperty>
-				<EnumProperty
-					Name="CLANG"
-					DisplayName="Use CLANG"
-					Description="Use CLANG"
-					DefaultValue="0"
-				>
-					<Values>
-						<EnumValue
-						Value="0"
-						Switch="NO"
-						DisplayName="Don't use CLANG"
-						/>
-						<EnumValue
-						Value="1"
-						Switch="YES"
-						DisplayName="Use CLANG"
-						/>
-					</Values>
-				</EnumProperty>
-			</Properties>
-		</CustomBuildRule>
-	</Rules>
-</VisualStudioToolFile>
diff --git a/winbuild/Unistd.rules b/winbuild/Unistd.rules
deleted file mode 100755
index bd25661..0000000
--- a/winbuild/Unistd.rules
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-	Name="unistd"
-	Version="8.00"
-	>
-	<Rules>
-		<CustomBuildRule
-			Name="Unistd"
-			DisplayName="Unistd"
-			CommandLine="python "$(InputPath)" [AllOptions] [AdditionalOptions] $(IntDir)"
-			Outputs="$(IntDir)/$(InputName).h"
-			FileExtensions="*.py"
-			ExecutionDescription="Executing Unistd ..."
-			ShowOnlyRuleProperties="false"
-			>
-		</CustomBuildRule>
-	</Rules>
-</VisualStudioToolFile>
diff --git a/winbuild/Version.rules b/winbuild/Version.rules
deleted file mode 100644
index 3dfdf04..0000000
--- a/winbuild/Version.rules
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-	Name="version"
-	Version="8.00"
-	>
-	<Rules>
-		<CustomBuildRule
-			Name="Version"
-			DisplayName="Version"
-			CommandLine="python "$(InputPath)" $(IntDir)"
-			Outputs="$(IntDir)\$(InputName).cpp"
-			FileExtensions="*.py"
-			AdditionalDependencies="$(ProjectDir)..\configure"
-			ExecutionDescription="Executing Version ..."
-			ShowOnlyRuleProperties="false"
-			>
-		</CustomBuildRule>
-	</Rules>
-</VisualStudioToolFile>
diff --git a/winbuild/doxyindexer.vcproj b/winbuild/doxyindexer.vcproj
deleted file mode 100644
index 499741f..0000000
--- a/winbuild/doxyindexer.vcproj
+++ /dev/null
@@ -1,363 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="doxyindexer"
-	ProjectGUID="{E543983A-D5BF-4865-B4A1-6D7EF2E1051C}"
-	RootNamespace="doxyindexer"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\bin\Debug"
-			IntermediateDirectory=".\Debug\doxyindexer"
-			ConfigurationType="1"
-			CharacterSet="1"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(XAPIAN_DIR)\include",..\qtools"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-				ProgramDatabaseFileName=".\Debug\doxyindexer\$(TargetName).pdb"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="qtools.lib xapian.lib uuid.lib rpcrt4.lib ws2_32.lib"
-				OutputFile="..\bin\Debug\doxyindexer.exe"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(XAPIAN_DIR)\Debug";Debug"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Debug\doxyindexer\$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="..\bin\Debug64"
-			IntermediateDirectory=".\Debug64\doxyindexer"
-			ConfigurationType="1"
-			CharacterSet="1"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(XAPIAN_DIR)\include",..\qtools"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-				ProgramDatabaseFileName=".\Debug64\doxyindexer\$(TargetName).pdb"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="qtools.lib xapian.lib uuid.lib rpcrt4.lib ws2_32.lib"
-				OutputFile="..\bin\Debug64\doxyindexer.exe"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""$(XAPIAN_DIR)\Debug64";Debug64"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Debug64\doxyindexer\$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="..\bin\Release"
-			IntermediateDirectory=".\Release\doxyindexer"
-			ConfigurationType="1"
-			CharacterSet="1"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories=""$(XAPIAN_DIR)\include",..\qtools"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-				ProgramDatabaseFileName=".\Release\doxyindexer\$(TargetName).pdb"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="qtools.lib xapian.lib uuid.lib rpcrt4.lib ws2_32.lib"
-				OutputFile="..\bin\Release\doxyindexer.exe"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(XAPIAN_DIR)\Release";Release"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Release\doxyindexer\$(TargetName).pdb"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="..\bin\Release64"
-			IntermediateDirectory=".\Release64\doxyindexer"
-			ConfigurationType="1"
-			CharacterSet="1"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories=""$(XAPIAN_DIR)\include",..\qtools"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-				ProgramDatabaseFileName=".\Release64\doxyindexer\$(TargetName).pdb"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="qtools.lib xapian.lib uuid.lib rpcrt4.lib ws2_32.lib"
-				OutputFile="..\bin\Release64\doxyindexer.exe"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(XAPIAN_DIR)\Release64";Release64"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Release64\doxyindexer\$(TargetName).pdb"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\addon\doxysearch\doxyindexer.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/winbuild/doxysearch.vcproj b/winbuild/doxysearch.vcproj
deleted file mode 100644
index a21168c..0000000
--- a/winbuild/doxysearch.vcproj
+++ /dev/null
@@ -1,359 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="doxysearch"
-	ProjectGUID="{F3F3408F-F6F7-46C7-BF1E-1FA056E0AE20}"
-	RootNamespace="doxysearch"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\bin\Debug"
-			IntermediateDirectory=".\Debug\doxysearch"
-			ConfigurationType="1"
-			CharacterSet="1"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(XAPIAN_DIR)\include""
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-				ProgramDatabaseFileName=".\Debug\doxysearch\$(TargetName).pdb"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="xapian.lib uuid.lib rpcrt4.lib ws2_32.lib"
-				OutputFile="..\bin\Debug\doxysearch.cgi"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(XAPIAN_DIR)\Debug""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Debug\doxysearch\$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="..\bin\Debug64"
-			IntermediateDirectory=".\Debug64\doxysearch"
-			ConfigurationType="1"
-			CharacterSet="1"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(XAPIAN_DIR)\include""
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-				ProgramDatabaseFileName=".\Debug64\doxysearch\$(TargetName).pdb"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="xapian.lib uuid.lib rpcrt4.lib ws2_32.lib"
-				OutputFile="..\bin\Debug64\doxysearch.cgi"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""$(XAPIAN_DIR)\Debug64""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Debug64\doxysearch\$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="..\bin\Release"
-			IntermediateDirectory=".\Release\doxysearch"
-			ConfigurationType="1"
-			CharacterSet="1"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories=""$(XAPIAN_DIR)\include""
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-				ProgramDatabaseFileName=".\Release\doxysearch\$(TargetName).pdb"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="xapian.lib uuid.lib rpcrt4.lib ws2_32.lib"
-				OutputFile="..\bin\Release\doxysearch.cgi"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(XAPIAN_DIR)\Release""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Release\doxysearch\$(TargetName).pdb"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="..\bin\Release64"
-			IntermediateDirectory=".\Release64\doxysearch"
-			ConfigurationType="1"
-			CharacterSet="1"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories=""$(XAPIAN_DIR)\include""
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-				ProgramDatabaseFileName=".\Release64\doxysearch\$(TargetName).pdb"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="xapian.lib uuid.lib rpcrt4.lib ws2_32.lib"
-				OutputFile="..\bin\Release64\doxysearch.cgi"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(XAPIAN_DIR)\Release64""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile=".\Release64\doxysearch\$(TargetName).pdb"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\addon\doxysearch\doxysearch.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/winbuild/iconv.vcproj b/winbuild/iconv.vcproj
deleted file mode 100644
index 1d50d39..0000000
--- a/winbuild/iconv.vcproj
+++ /dev/null
@@ -1,468 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="iconv"
-	ProjectGUID="{B6BB4771-8A4E-4656-AC08-1EF8AC182F69}"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\Release"
-			IntermediateDirectory=".\Release"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories="iconv/windows;iconv/include;iconv/libcharset/include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;LIBCHARSET_STATIC;HAVE_STRING_H;"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile=".\Release/iconv.pch"
-				AssemblerListingLocation=".\Release/"
-				ObjectFile=".\Release/"
-				ProgramDataBaseFileName=".\Release/"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\iconv.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release/iconv.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory=".\Release64"
-			IntermediateDirectory=".\Release64"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories="iconv/windows;iconv/include;iconv/libcharset/include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;LIBCHARSET_STATIC;HAVE_STRING_H;"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile=".\Release64/iconv.pch"
-				AssemblerListingLocation=".\Release64/"
-				ObjectFile=".\Release64/"
-				ProgramDataBaseFileName=".\Release64/"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\iconv64.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release64/iconv.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			>
-			<File
-				RelativePath="iconv\lib\iconv.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="iconv\libcharset\lib\localcharset.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="iconv"
-	ProjectGUID="{B6BB4771-8A4E-4656-AC08-1EF8AC182F69}"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\Release"
-			IntermediateDirectory=".\Release"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories="iconv/windows;iconv/include;iconv/libcharset/include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;LIBCHARSET_STATIC;HAVE_STRING_H;"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile=".\Release/iconv.pch"
-				AssemblerListingLocation=".\Release/"
-				ObjectFile=".\Release/"
-				ProgramDataBaseFileName=".\Release/"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\iconv.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release/iconv.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory=".\Release64"
-			IntermediateDirectory=".\Release64"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories="iconv/windows;iconv/include;iconv/libcharset/include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;LIBCHARSET_STATIC;HAVE_STRING_H;"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile=".\Release64/iconv.pch"
-				AssemblerListingLocation=".\Release64/"
-				ObjectFile=".\Release64/"
-				ProgramDataBaseFileName=".\Release64/"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\iconv64.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release64/iconv.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			>
-			<File
-				RelativePath="iconv\lib\iconv.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="iconv\libcharset\lib\localcharset.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/winbuild/moc.rules b/winbuild/moc.rules
deleted file mode 100644
index efe0f7f..0000000
--- a/winbuild/moc.rules
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<VisualStudioToolFile
-	Name="Run Moc"
-	Version="8.00"
-	>
-	<Rules>
-		<CustomBuildRule
-			Name="moc"
-			DisplayName="Moc"
-			CommandLine="$(QTDIR)/bin/moc.exe "$(InputPath)" -o moc_$(InputName).cpp"
-			Outputs="moc_$(InputName).cpp"
-			AdditionalDependencies="$(QTDIR)/bin/moc.exe"
-			FileExtensions="*.h"
-			ExecutionDescription="Moc'ing $(InputPath)"
-			>
-			<Properties>
-			</Properties>
-		</CustomBuildRule>
-	</Rules>
-</VisualStudioToolFile>
diff --git a/winbuild/pack_the_distribution_for_windows.py b/winbuild/pack_the_distribution_for_windows.py
deleted file mode 100644
index dc2c3d9..0000000
--- a/winbuild/pack_the_distribution_for_windows.py
+++ /dev/null
@@ -1,234 +0,0 @@
-#!python2
-
-from __future__ import print_function
-
-import os
-import re
-import shutil
-import subprocess
-import sys
-import textwrap
-
-
-def gitSHA_date_time():
-    cmd = 'git rev-parse --short HEAD'
-    p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-    output = p.communicate()[0]
-    output = output.decode('ASCII')
-    p.wait()
-    sha = output.strip()
-
-    cmd = 'git show -s --format="%ci" ' + sha
-    p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-    output = p.communicate()[0]
-    output = output.decode('ASCII')
-    p.wait()
-    date = output.strip()
-    lst = date.split()               # string like '2013-06-21 09:23:47 +0200'
-    dstamp = lst[0].replace('-', '') # '20130621' for the date
-    tstamp = lst[1].replace(':', '') # '092347' for the time
-
-    return sha, dstamp, tstamp
-
-
-def getDoxygenVersion():
-    # ... from the VERSION file.
-    sdir, fname = getThisScriptPathAndName()
-    version_fname = os.path.join(sdir, '..', 'VERSION')
-
-    with open(version_fname) as f:
-        lst = f.readlines()
-
-    doxver = lst[0].strip()
-
-    m = re.match(r'^(?P<ver>[0-9.]+)(-(?P<date>\d{8}))?', doxver)
-    assert m
-    ver = m.group('ver')
-    return ver
-
-
-def getThisScriptPathAndName():
-    script_fname = os.path.realpath(__file__)
-    sdir, fname = os.path.split(script_fname)
-    return sdir, fname
-
-
-def getEmptyDistribDir():
-    # Get this script full path, name, and the script subdir name
-    # (for checking the location).
-    sdir, fname = getThisScriptPathAndName()
-    subdir = os.path.basename(sdir)
-    assert subdir == 'winbuild'
-
-    # The distribution directory will be a subdirectory of the "../__put"
-    # (created if it does not exist, not the part of the git repo).
-    target_dir = os.path.normpath(os.path.join(sdir, '..', '__put'))
-    if not os.path.exists(target_dir):
-        os.mkdir(target_dir)
-    assert os.path.isdir(target_dir)
-
-    # The distribution subdir is composed out of 'Doxygen-', version stamp,
-    # timestamp, and commit id (partial SHA). Ignore the date from the VERSION
-    # file, take the commit date.
-    ver = getDoxygenVersion()
-    sha, dstamp, tstamp = gitSHA_date_time()
-    dist_subdir = 'Doxygen-' + ver + '-' + dstamp + tstamp
-    dist_dir = os.path.join(target_dir, dist_subdir)
-    print(dist_dir)
-    if os.path.isdir(dist_dir):
-        print("Removing the existing '{}'".format(dist_dir))
-        shutil.rmtree(dist_dir)
-    assert not os.path.exists(dist_dir)
-    print("Creating the new '{}'".format(dist_dir))
-    os.mkdir(dist_dir)
-    assert os.path.isdir(dist_dir)
-
-    return dist_dir
-
-
-def copyBinaries(dist_dir, subdir):
-    '''Copy the Windows binaries (doxygen.exe only) to the dist_dir directory.'''
-
-    # Source file should exist.
-    sdir, fname = getThisScriptPathAndName()
-    src = os.path.normpath(os.path.join(sdir, '..', 'bin', subdir, 'doxygen.exe'))
-    if os.path.isfile(src):
-        # Destination directory must not exist. It must be created first.
-        dst_dir = os.path.normpath(os.path.join(dist_dir, 'bin', subdir))
-        assert not os.path.isdir(dst_dir)
-        os.makedirs(dst_dir)
-
-        # Copy the file.
-        print("Copying '{}'".format(src))
-        shutil.copy2(src, dst_dir)
-    else:
-        print("The binary '" + src + "'")
-        print('was not found. It will not be present in the distribution.')
-
-
-def getBinariesZipBareName():
-    ver = getDoxygenVersion()
-    sha, dstamp, tstamp = gitSHA_date_time()
-    fname = 'doxygenw{}_{}.zip'.format(dstamp, ver.replace('.', '_'))
-    return fname
-
-
-def getTranslatorReportZipBareName():
-    ver = getDoxygenVersion()
-    sha, dstamp, tstamp = gitSHA_date_time()
-    fname = 'tr{}_{}.zip'.format(dstamp, ver.replace('.', '_'))
-    return fname
-
-
-def zipBinaries(distr_dir):
-    # Build the zip filename. It is to be located at the same level as distr_dir.
-    zip_bare_name = getBinariesZipBareName()
-    dst, distr_subdir = os.path.split(distr_dir)
-    zip_full_name = os.path.join(dst, zip_bare_name)
-
-    if os.path.isfile(zip_full_name):
-        print("Removing the existing '{}'".format(zip_full_name))
-        os.remove(zip_full_name)
-
-    # Change the working directory to destination directory and zip from
-    # there using the bare names so that the full path is not zipped inside.
-    wd = os.getcwd()
-    os.chdir(dst)
-    print("Zipping new '{}'".format(zip_full_name))
-    subprocess.call('zip -r {} {}'.format(zip_bare_name, distr_subdir), shell=True)
-    os.chdir(wd)  # back to the original working directory
-
-
-def buildAndZipTranslatorReport(distr_dir):
-    # Build the translator report zip filename. It is to be located at the same
-    # level as distr_dir.
-    zip_bare_name = getTranslatorReportZipBareName()
-    dst, subdir = os.path.split(distr_dir)
-    zip_full_name = os.path.join(dst, zip_bare_name)
-
-    if os.path.isfile(zip_full_name):
-        print("Removing the existing '{}'".format(zip_full_name))
-        os.remove(zip_full_name)
-    print("Zipping new '{}'".format(zip_full_name))
-
-    # Change the working directory to the doc one and generate
-    # the translator report.
-    sdir, fname = getThisScriptPathAndName()
-    docdir = os.path.join(sdir, '..', 'doc')
-    assert os.path.isdir(docdir)
-    wd = os.getcwd()
-    os.chdir(docdir)
-    subprocess.call('python translator.py', shell=True)
-
-    # Zip the generated translator_report.txt.
-    subprocess.call('zip -r {} {}'.format(zip_full_name,
-                                          'translator_report.txt'), shell=True)
-
-    os.chdir(wd)  # back to the original working directory
-
-
-def mailto():
-
-    # Information for the letter.
-    ver = getDoxygenVersion()
-    sha, dstamp, tstamp = gitSHA_date_time()
-    doxzipname = getBinariesZipBareName()
-    trzipname = getTranslatorReportZipBareName()
-
-    subject = 'Windows binaries available for {}-{} at SourceForge'.format(ver, dstamp)
-    subject = subject.replace(' ', '%20')
-
-    body = textwrap.dedent('''\
-        Hi,
-
-        If interested, you can download the doxygen binaries
-        compiled for MS Windows from
-
-          http://sourceforge.net/projects/doxygen/files/snapshots/doxygen-1.8-svn/windows
-
-        This is the place where you should find also the next
-        releases.  Name of the archive file is
-
-          {}
-
-        The related translator report can be found inside the directory
-
-          http://sourceforge.net/projects/doxygen/files/snapshots/doxygen-1.8-svn/translator_reports/
-
-        Name of the archive file is
-
-          {}
-
-        The binaries are NOT created automatically, so it may
-        happen that some newer sources were not compiled
-        because I am not present to do that or I forgot... ;)
-
-        Regards,
-            Petr
-
-        --
-        Petr Prikryl (prikryl at atlas dot cz)''').format(doxzipname, trzipname)
-    body = body.replace('\n', '%0d')
-
-    # Make the mailto URI and launch the mailer.
-    to_addr = 'doxygen-users at lists.sourceforge.net'
-    mailtoURI = 'mailto:%s?subject=%s&body=%s' % (to_addr, subject, body)
-    os.startfile(mailtoURI)
-
-
-if __name__ == '__main__':
-    # Create the empty directory for the distribution files.
-    dist_dir = getEmptyDistribDir()
-
-    # Copy the compiled binaries to the distribution directory and zip them.
-    copyBinaries(dist_dir, 'Debug')
-    copyBinaries(dist_dir, 'Debug64')
-    copyBinaries(dist_dir, 'Release')
-    copyBinaries(dist_dir, 'Release64')
-    zipBinaries(dist_dir)
-
-    # The translator report...
-    buildAndZipTranslatorReport(dist_dir)
-
-    # Launch the mailer with the generated message body.
-    mailto()
\ No newline at end of file
diff --git a/winbuild/qtools.vcproj b/winbuild/qtools.vcproj
deleted file mode 100644
index 6e94d3f..0000000
--- a/winbuild/qtools.vcproj
+++ /dev/null
@@ -1,1583 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="qtools"
-	ProjectGUID="{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\Release\qtools"
-			IntermediateDirectory=".\Release\qtools"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories="..\qtools"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile=".\Release\qtools/qtools.pch"
-				AssemblerListingLocation=".\Release\qtools/"
-				ObjectFile=".\Release\qtools/"
-				ProgramDatabaseFileName=".\Release\qtools\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\Release\qtools.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release\qtools/qtools.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory=".\Release64\qtools"
-			IntermediateDirectory=".\Release64\qtools"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories="..\qtools"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile=".\Release64\qtools/qtools.pch"
-				AssemblerListingLocation=".\Release64\qtools/"
-				ObjectFile=".\Release64\qtools/"
-				ProgramDatabaseFileName=".\Release64\qtools\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\Release64\qtools.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release64\qtools/qtools.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\Debug\qtools"
-			IntermediateDirectory=".\Debug\qtools"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=""
-				Optimization="0"
-				AdditionalIncludeDirectories="..\qtools"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				PrecompiledHeaderFile=".\Debug\qtools/qtools.pch"
-				AssemblerListingLocation=".\Debug\qtools/"
-				ObjectFile=".\Debug\qtools/"
-				ProgramDatabaseFileName=".\Debug\qtools\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\Debug\qtools.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug\qtools/qtools.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory=".\Debug64\qtools"
-			IntermediateDirectory=".\Debug64\qtools"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			BuildLogFile="$(IntDir)\$(TargetName)BuildLog.htm"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=""
-				Optimization="0"
-				AdditionalIncludeDirectories="..\qtools"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				PrecompiledHeaderFile=".\Debug64\qtools/qtools.pch"
-				AssemblerListingLocation=".\Debug64\qtools/"
-				ObjectFile=".\Debug64\qtools/"
-				ProgramDatabaseFileName=".\Debug64\qtools\$(TargetName).pdb"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile=".\Debug64\qtools.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug64\qtools/qtools.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			>
-			<File
-				RelativePath="..\qtools\qbuffer.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qcollection.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qdatastream.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qdatetime.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qdir.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qdir_win32.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qfile.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qfile_win32.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qfileinfo.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qfileinfo_win32.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qgarray.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qgcache.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qgdict.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qglist.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qglobal.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qgstring.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qgvector.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qiodevice.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qmap.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qmutex.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qmutex_win32.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qregexp.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qstring.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qstringlist.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qtextcodec.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qtextstream.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qthread.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qthread_win32.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qutfcodec.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qwaitcondition_win32.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qxml.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\qtools\qcstring.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			>
-			<File
-				RelativePath="..\qtools\qarray.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qasciidict.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qbuffer.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qcache.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qcollection.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qconfig.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qcstring.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qdatastream.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qdatetime.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qdict.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qdir.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qfeatures.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qfile.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qfiledefs_p.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qfileinfo.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qgarray.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qgcache.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qgdict.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qgeneric.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qglist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qglobal.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qgstring.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qgvector.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qintdict.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qiodevice.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qlist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qmap.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qmodules.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qmutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qmutex_p.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qptrdict.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qqueue.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qregexp.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qshared.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qsortedlist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qstack.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qstring.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qstringlist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qstrlist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qstrvec.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qtextcodec.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qtextstream.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qthread.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qthread_p.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qtl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qutfcodec.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qvaluelist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qvaluestack.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qvector.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qwaitcondition.h"
-				>
-			</File>
-			<File
-				RelativePath="..\qtools\qxml.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/winbuild/unistd.py b/winbuild/unistd.py
deleted file mode 100644
index 93b9341..0000000
--- a/winbuild/unistd.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# 
-
-import sys
-import os
-
-f1 = open(os.path.join(sys.argv[1],'unistd.h'),'w')
-
-f1.write("#ifndef UNISTD_H\n")
-f1.write("#define UNISTD_H\n")
-f1.write("/* this is a dummy file, that is needed for compiling files that are\n")
-f1.write(" * generated with flex under Windows 95/NT.\n")
-f1.write(" */\n")
-f1.write("#if defined(_MSC_VER)\n")
-f1.write("  #include <io.h>\n")
-f1.write("#endif\n")
-f1.write("#endif\n")

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/doxygen.git



More information about the Reproducible-commits mailing list